天天看點

推薦Java五大微伺服器及其代碼示例教程

微服務越來越多地用于開發領域,因為開發人員緻力于建立更大,更複雜的應用程式,這些應用程式作為較小的服務組合而更好地開發和管理,可将工作在一起,實作更大的應用程式範圍的功能。工具正在上升,以滿足使用逐塊方法思考和建構應用程式的需求,與同時考慮整個應用程式相比。下面為大家講述一下Java五大微伺服器,使用這些功能的好處以及相關的代碼示例。

<a href="http://s1.51cto.com/oss/201710/24/35ce62a8a52dab70f7bfd22bf429e86f.jpg-wh_651x-s_300461122.jpg" target="_blank"></a>

什麼是微服務

微服務是一種面向服務的架構風格(Java開發人員最重要的技能之一),其中應用程式被建構為不同的小型服務而不是整個應用程式的集合。您可以使用多個獨立的應用程式來獨立運作,并且可以使用不同的編碼或程式設計語言來建立。大而複雜的應用程式可以由可自行執行的更簡單和獨立的程式組成。這些較小的程式組合在一起,以提供大型單片應用程式的所有功能。

微服務捕獲使用者的業務場景,它通常由隻有少數成員的工程團隊開發,可以用任何程式設計語言編寫并且可以使用任何架構。每個涉及的程式都是獨立版本化,執行和縮放。這些微伺服器可以與其他微伺服器互動,并且可以具有唯一的URL或名稱,同時即使遇到故障時始終可用和一緻。

微服務的好處是什麼?

使用微服務使得較小的應用程式不依賴于相同的編碼語言,開發人員可以使用他們最熟悉的程式設計語言。這有助于開發人員以更低的成本和更少的錯誤更快地提出一個程式。靈活性和低成本也可以來自于将這些較小的程式重用于其他項目,進而使其更有效率。

Java的微服務架構示例

可用于開發Java的微服務架構,其中包括如下:

Spring Boot:這可能是最好的Java微服務架構,它可以用于反轉控制,面向對象程式設計等語言。

Jersey :開源架構支援Java中的JAX-RS API非常容易使用。

Swagger:幫助使用者記錄API,并為使用者提供開發門戶,允許使用者測試API。

使用者還可以考慮的其他内容包括:Dropwizard,Ninja Web Framework,Play Framework,RestExpress,Restlet,Restx和Spark Framework。

如何使用Microservices With Spring Boot建立

Spring Boot使使用者可以通過嵌入式伺服器将Java應用程式與自己的應用程式一起使用。不必再使用其他Java EE容器。

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架構,參考示例代碼:

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最好的一點是它有很好的文檔,完善的案例。性能方面快捷并且路由簡單,參考示例代碼:

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。它具有良好的路由和過濾功能,可用于Java SE/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屬性

&lt;properties&gt; 

    &lt;dropwizard.version&gt;LATEST VERSION&lt;/dropwizard.version&gt; 

&lt;/properties&gt; 

&lt;!--Then list the dropwizard-core library:--&gt; 

&lt;dependencies&gt; 

    &lt;dependency&gt; 

        &lt;groupId&gt;io.dropwizard&lt;/groupId&gt; 

        &lt;artifactId&gt;dropwizard-core&lt;/artifactId&gt; 

        &lt;version&gt;${version}&lt;/version&gt; 

    &lt;/dependency&gt; 

&lt;/dependencies&gt; 

Maven項目設定完成後,可以建立配置類,應用程式類,表示類,資源類或運作狀況檢查,還可以建構Fat JARS,然後運作應用程式。

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; 

    private String defaultName = "Stranger"; 

    public String getTemplate() { 

        return template; 

    public String getDefaultName() { 

        return defaultName; 

本文作者:佚名

來源:51CTO

繼續閱讀