来源素文宅博客:http://blog.yoodb.com/yoodb/article/detail/1339 
微服务越来越多地用于开发领域,因为开发人员致力于创建更大,更复杂的应用程序,这些应用程序作为较小的服务组合而更好地开发和管理,可将工作在一起,实现更大的应用程序范围的功能。工具正在上升,以满足使用逐块方法思考和构建应用程序的需求,与同时考虑整个应用程序相比。下面本站素文宅博客为大家讲述一下Java五大微服务器,使用这些功能的好处以及相关的代码示例。

什么是微服务 
微服务是一种面向服务的架构风格(Java开发人员最重要的技能之一),如小编个人网站素文宅博客http://blog.yoodb.com,其中应用程序被构建为不同的小型服务而不是整个应用程序的集合。您可以使用多个独立的应用程序来独立运行,并且可以使用不同的编码或编程语言来创建。大而复杂的应用程序可以由可自行执行的更简单和独立的程序组成。这些较小的程序组合在一起,以提供大型单片应用程序的所有功能。

微服务捕获用户的业务场景,它通常由只有少数成员的工程团队开发,可以用任何编程语言编写并且可以使用任何框架。每个涉及的程序都是独立版本化,执行和缩放。这些微服务器可以与其他微服务器交互,并且可以具有唯一的URL或名称,同时即使遇到故障时始终可用和一致。

微服务的好处是什么? 
使用微服务使得较小的应用程序不依赖于相同的编码语言,开发人员可以使用他们最熟悉的编程语言。这有助于开发人员以更低的成本和更少的错误更快地提出一个程序。灵活性和低成本也可以来自于将这些较小的程序重用于其他项目,从而使其更有效率。

Java的微服务框架示例 
可用于开发Java的微服务框架,其中包括如下: 
spring Boot:这可能是最好的Java微服务框架,它可以用于反转控制,面向对象编程等语言。 
Jersey :开源框架支持Java中的JAX-RS API非常容易使用。 
Swagger:帮助用户记录API,并为用户提供开发门户,允许用户测试API。 
用户还可以考虑的其他内容包括:Dropwizard,Ninja Web Framework,Play Framework,RestExpress,Restlet,Restx和SparkFramework。

如何使用Microservices With Spring Boot创建 
Spring Boot使用户可以通过嵌入式服务器将Java应用程序与自己的应用程序一起使用。不必再使用其他JavaEE容器。

Spring Boot项目包括: 
1) Spring IO平台:版本化应用程序的企业级分发 
2) Spring框架:用于事务管理,依赖注入,数据访问,消息传递和Web应用程序 
3) Spring Cloud:用于分布式系统,用于构建或部署您的微服务器 
4) Spring数据:对于与数据访问相关的微服务,无论是映射减少,关系还是非关系 
5) Spring Batch:用于批处理作业等操作 
6) Spring Security:用于授权和身份验证支持 
7) Spring REST文档:用于记录RESTful服务 
8) Spring Social:用于连接社交媒体API 
9) Spring Mobile:适用于移动网络应用

快速搭建Spring Boot框架,详细参考资料http://blog.yoodb.com/yoodb/article/detail/297,参考示例代码:

import org.springframework.boot.*;
import org.springframework.boot.autoconfigure.*;
import org.springframework.stereotype.*;
import org.springframework.web.bind.annotation.*;
@RestController
@EnableAutoConfiguration
public class Example {
@RequestMapping("/")
String home() {
return "Hello World!";
}
public static void main(String[] args) throws Exception {
SpringApplication.run(Example.class, args);
}
}

Jersey 
Jersey RESTful框架是开源的,它基于JAX-RS规范。Jersey应用程序可以扩展现有的JAX-RS实现并添加功能和实用程序,使RESTful服务更简单,并使客户端开发变得更加轻松。

Jersey最好的一点是它有很好的文档,完善的案例。性能方面快捷并且路由简单,关于如何入门Jersey文档是参考资料:https://stackify.com/soap-vs-rest/,而文档资料详情见http://www.oracle.com/splash/java.net/maintenance/index.html。参考示例代码:

package org.glassfish.jersey.examples.helloworld;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
@Path("helloworld")
public class HelloWorldResource {
public static final String CLICHED_MESSAGE = "Hello World!";
@GET
@Produces("text/plain")
public String getHello() {
return CLICHED_MESSAGE;
}
}

Jersey 非常容易与其他libraries一起使用,如Netty或Grizzly,支持异步连接不需要servlet容器,然而它有一个不依赖注入的实现。

Play Framework 
Play Framework为用户提供了使用Scala和Java构建,创建和部署Web应用程序的更加简单的方法。Play Framework是RESTful应用程序的理想选择,需要您并行处理远程调用。它也非常模块化,支持异步。Play Framework也是所有微服务框架中最大的社区之一。

参考示例代码:

package controllers;
import play.mvc.*;
public class Application extends Controller {
public static void index() {
render();
}
public static void sayHello(String myName) {
render(myName);
}
}

Restlet 
Restlet帮助开发人员创建遵循RESTful架构模式的快速和可扩展的Web API。它具有良好的路由和过滤功能,可用于javaSE/EE,OSGi,Google AppEngine(Google Compute部分),Android和其他主要平台。

参考示例代码:

package firstSteps;
import org.restlet.resource.Get;
import org.restlet.resource.ServerResource;
/**
* Resource which has only one representation.
*/
public class HelloWorldResource extends ServerResource {
@Get
public String represent() {
return "hello, world";
}
}

DropWizard 
DropWizard将成熟稳定的Java库集成在轻量级包中,可用于自己的应用程序。它使用Jetty for HTTP,Jersey for REST和Jackson for JSON,以及Metrics,Guava,Logback,hibernate Validator,Apache HttpClient,Liquibase,Mustache,Joda Time和Freemarker。

您可以使用Maven设置Dropwizard应用程序在pom.xml文件中,使用最新版本的DropWizard添加一个dropwizard.version属性

<properties>
<dropwizard.version>LATEST VERSION</dropwizard.version>
</properties>
<!--Then list the dropwizard-core library:-->
<dependencies>
<dependency>
<groupId>io.dropwizard</groupId>
<artifactId>dropwizard-core</artifactId>
<version>${version}</version>
</dependency>
</dependencies>

Maven项目设置完成后,可以创建配置类,应用程序类,表示类,资源类或运行状况检查,还可以构建Fat JARS,然后运行应用程序。

在此链接中查看Dropwizard用户手册,GitHub地址:https://github.com/dropwizard/dropwizard,参考示例代码:

package com.example.helloworld;
import com.yammer.dropwizard.config.Configuration;
import com.fasterxml.jackson.annotation.JsonProperty;
import org.hibernate.validator.constraints.NotEmpty;
public class HelloWorldConfiguration extends Configuration {
@NotEmpty
@JsonProperty
private String template;
@NotEmpty
@JsonProperty
private String defaultName = "Stranger";
public String getTemplate() {
return template;
}
public String getDefaultName() {
return defaultName;
}
}

推荐Java五大微服务器及其代码示例教程的更多相关文章

  1. JAVA NIO工作原理及代码示例

    简介:本文主要介绍了JAVA NIO中的Buffer, Channel, Selector的工作原理以及使用它们的若干注意事项,最后是利用它们实现服务器和客户端通信的代码实例. 欢迎探讨,如有错误敬请 ...

  2. JAVA设计模式-工厂模式(代码示例)

    结构 MySort.java 实际业务中我们可能会使用任意一种排序方法 package pers.zander.edu.arithmetic.sort; /** * 排序接口 * @author * ...

  3. TCP服务器/客户端代码示例

    TCP服务器代码: #include <errno.h> #include <string.h> #include <stdlib.h> #include < ...

  4. UDP服务器/客户端代码示例

    UDP服务器代码: #include <errno.h> #include <string.h> #include <stdlib.h> #include < ...

  5. Solr JAVA客户端SolrJ 4.9使用示例教程

    http://my.oschina.net/cloudcoder/blog/305024 简介 SolrJ是操作Solr的JAVA客户端,它提供了增加.修改.删除.查询Solr索引的JAVA接口.So ...

  6. Java基础知识强化之IO流笔记72:NIO之 NIO核心组件(NIO使用代码示例)

    1.Java NIO 由以下几个核心部分组成: Channels(通道) Buffers(缓冲区) Selectors(选择器) 虽然Java NIO 中除此之外还有很多类和组件,Channel,Bu ...

  7. Android Java使用JavaMail API发送和接收邮件的代码示例

    JavaMail是Oracle甲骨文开发的Java邮件类API,支持多种邮件协议,这里我们就来看一下Java使用JavaMail API发送和接收邮件的代码示例 使用Javamail发送邮件,必需的j ...

  8. 领域驱动开发推荐代码示例 — Microsoft NLayerApp

    简介: Microsoft NLayerApp是由微软西班牙团队出品的基于.NET 4.0的“面向领域N层分布式架构”代码示例,在codeplex上的地址是:http://microsoftnlaye ...

  9. 使用XStream注解实现Java对象与XML互相转换的代码示例

    本文记录一下使用xstream这个api的注解特性对Java对象与XML字符串相互转换的一些代码示例.    我们很多人都处理过XML文件,也有很多非常成熟的第三方开源软件.如:jdom.dom4j等 ...

随机推荐

  1. 使用Swagger服务搭建.Net Core API

    使用Swagger服务搭建.Net Core API 创建.Net Core API 新建项目.文件——新建——项目 选择应用程序模板. 设置存放路径,命名方案名称. 创建API. 搭建成功. 使用S ...

  2. 第3章(1) Linux内核相关概念

    Linux内核的组成 1. Linux内核源代码的目录结构 arch:包含和硬件体系结构相关的代码,每种平台占一个相应的目录,如 i386.arm. arm64.powerpc.mips 等.Linu ...

  3. 机器学习:eclipse中调用weka的Classifier分类器代码Demo

    weka中实现了很多机器学习算法,不管实验室研究或者公司研发,都会或多或少的要使用weka,我的理解是weka是在本地的SparkML,SparkML是分布式的大数据处理机器学习算法,数据量不是很大的 ...

  4. 设计糟糕的 RESTful API 就是在浪费时间!

    现在微服务真是火的一塌糊涂.大街小巷,逢人必谈微服务,各路大神纷纷忙着把自家的单体服务拆解成多个Web微小服务.而作为微服务之间通信的桥梁,Web API的设计就显得非常重要. HTTP是目前互联网使 ...

  5. [JZOJ5773]【NOIP2008模拟】简单数学题

    Description       话说, 小X是个数学大佬,他喜欢做数学题.有一天,小X想考一考小Y.他问了小Y一道数学题.题目如下:      对于一个正整数N,存在一个正整数T(0<T&l ...

  6. [USACO09JAN]安全出行Safe Travel 最短路,并查集

    题目描述 Gremlins have infested the farm. These nasty, ugly fairy-like creatures thwart the cows as each ...

  7. [CF544] D. Destroying Roads

    D. Destroying Roads time limit per test 2 seconds memory limit per test 256 megabytes input standard ...

  8. 一次看懂 Https 证书认证

    TLS 传输层安全性协定 TLS(Transport Layer Security),及其前身安全套接层 SSL(Secure Sockets Layer)是一种安全协议,目的是为网际网路通信,提供安 ...

  9. TCP Traffic Analyzer

    TCP Traffic Analyzer 工具yahoo 发布的一款开源网络分析工具,可以分析网络应用在服务器端与客户端之间的运行状态Yconalyzer保持与tcpdump兼容,两者生成的抓取文件能 ...

  10. RIDE的External Resources

    External Resources(外部资源):主要指不在project管辖范围内的资源文件. 通俗来说,如果是目录的project,只要不在自己目录范围内的资源文件都算外部资源:如果是文件的pro ...