一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

您好,歡迎來(lái)電子發(fā)燒友網(wǎng)! ,新用戶?[免費(fèi)注冊(cè)]

您的位置:電子發(fā)燒友網(wǎng)>源碼下載>java源碼下載>

實(shí)例分析Java微服務(wù)框架和優(yōu)勢(shì)

大小:0.9 MB 人氣: 2017-09-28 需要積分:3
?本文首先簡(jiǎn)單介紹了微服務(wù)的概念以及使用微服務(wù)所能帶來(lái)的優(yōu)勢(shì),然后結(jié)合實(shí)例介紹了幾個(gè)常見的Java微服務(wù)框架。
  微服務(wù)在開發(fā)領(lǐng)域的應(yīng)用越來(lái)越廣泛,因?yàn)殚_發(fā)人員致力于創(chuàng)建更大、更復(fù)雜的應(yīng)用程序,而這些應(yīng)用程序作為微小服務(wù)的組合能夠更好地得以開發(fā)和管理。這些微小的服務(wù)可以組合在一起工作,并實(shí)現(xiàn)更大、應(yīng)用更廣泛的功能?,F(xiàn)在出現(xiàn)了很多的工具來(lái)滿足使用逐段法而不是一次性地設(shè)計(jì)和構(gòu)建應(yīng)用程序的所有需求。今天,我們來(lái)看一下什么是微服務(wù)、使用微服務(wù)的好處,以及幾個(gè)代碼示例。
  微服務(wù)是什么?
  微服務(wù)是一種面向服務(wù)的架構(gòu)風(fēng)格(Java開發(fā)人員最重要的技能之一),其中,應(yīng)用程序被構(gòu)建為多個(gè)不同的小型服務(wù)的集合而不是單個(gè)應(yīng)用程序。與單個(gè)程序不同的是,微服務(wù)讓你可以同時(shí)運(yùn)行多個(gè)獨(dú)立的應(yīng)用程序,而這些獨(dú)立的應(yīng)用程序可以使用不同的編碼或編程語(yǔ)言來(lái)創(chuàng)建。龐大而又復(fù)雜的應(yīng)用程序可以由多個(gè)可自行執(zhí)行的簡(jiǎn)單而又獨(dú)立的程序所組成。這些較小的程序組合在一起,可以提供龐大的單程序所具備的所有功能。
  微服務(wù)捕獲了你的業(yè)務(wù)場(chǎng)景,回答了“你想要試著解決什么問題”這個(gè)問題。微服務(wù)的開發(fā)團(tuán)隊(duì)的成員數(shù)量比較少,而且可以用任何語(yǔ)言、任何框架進(jìn)行開發(fā)。每個(gè)相關(guān)的程序都是獨(dú)立地版本化、執(zhí)行和擴(kuò)展。這些微服務(wù)可以與其他微服務(wù)進(jìn)行交互,并且具有唯一的URL或名字,同時(shí),即使遇到故障,也能始終保持可用性和一致性。
  微服務(wù)能帶來(lái)哪些好處?
  使用微服務(wù)能帶來(lái)多個(gè)好處,其中有一個(gè)好處是,由于這些較小的應(yīng)用程序無(wú)需使用相同的編程語(yǔ)言,因此,開發(fā)人員可以使用他們最熟悉的語(yǔ)言。這有助于開發(fā)人員用更低的成本和更少的錯(cuò)誤來(lái)開發(fā)程序。靈活性和低成本這兩個(gè)特點(diǎn)也表現(xiàn)在可以將這些較小的程序重用在其他項(xiàng)目中,從而使其更有效率。
  幾個(gè)Java微服務(wù)框架的例子
  這里有幾個(gè)可用于Java開發(fā)的微服務(wù)框架:
  Spring Boot:這可能是最好的Java微服務(wù)框架了,它適用于控制反轉(zhuǎn)、面向切面編程等等。
  Jersey:這個(gè)開源框架支持Java的JAX-RS API,使用起來(lái)非常容易。
  Swagger:在為你提供開發(fā)門戶網(wǎng)頁(yè)的同時(shí),能幫助你生成API文檔,以允許用戶測(cè)試你的API。
  你也可以考慮使用其他一些框架,包括:Dropwizard、Ninja Web框架、Play框架、RestExpress、Restlet、Restx和Spark Framework。
  如何使用DropWizard來(lái)創(chuàng)建微服務(wù)
  DropWizard將成熟穩(wěn)定的Java庫(kù)集成在一個(gè)輕量級(jí)的包中,你可以在自己的應(yīng)用程序中使用這個(gè)包。它使用了Jetty for HTTP、Jersey for REST和Jackson for JSON,以及Metrics、Guava、Logback、Hibernate Validator、Apache HttpClient、Liquibase、Mustache、Joda Time和Freemarker。
  你可以使用Maven來(lái)設(shè)置Dropwizard應(yīng)用程序。怎么做呢?
  在你的POM文件中,添加一個(gè)dropwizard.version屬性,值為DropWizard的最新版本。
  《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》
  這將為你設(shè)置一個(gè)Maven項(xiàng)目。在這里,你可以創(chuàng)建配置類、應(yīng)用程序類、表現(xiàn)類,資源類或一個(gè)健康檢查,還可以構(gòu)建Fat JARS,然后運(yùn)行應(yīng)用程序。
  在此鏈接中可以查看Dropwizard用戶手冊(cè),這個(gè)鏈接是GitHub庫(kù)。
  示例代碼:
  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;
  }
  }
  Spring Boot微服務(wù)
  Spring Boot讓你可以通過嵌入式服務(wù)器將它提供的Java應(yīng)用程序與你自己的應(yīng)用程序一起使用。它使用了Tomcat,因此你不必使用其他的Java EE容器。Spring Boot的教程示例可以訪問這里。
  你可以在這里找到所有的Spring Boot工程,你會(huì)發(fā)現(xiàn)Spring Boot擁有你的應(yīng)用程序所需的所有基礎(chǔ)架構(gòu)。無(wú)論你是在編寫安全類、配置類或是大數(shù)據(jù)類的應(yīng)用程序,總能找到對(duì)應(yīng)的Spring Boot工程。
  Spring Boot的工程包括:
  Spring IO Platform:用于版本化應(yīng)用程序的企業(yè)級(jí)分發(fā)。
  Spring Framework:用于事務(wù)管理、依賴注入、數(shù)據(jù)訪問、消息傳遞和Web應(yīng)用程序。
  Spring Cloud:用于分布式系統(tǒng),用于構(gòu)建或部署你的微服務(wù)。
  Spring Data:用于與數(shù)據(jù)訪問相關(guān)的微服務(wù),不管是映射還是歸約,關(guān)系型還是非關(guān)系型。
  Spring Batch:用于高級(jí)別的批量操作。
  Spring Security:用于授權(quán)和認(rèn)證支持。
  Spring REST文檔:用于RESTful服務(wù)文檔化。
  Spring Social:用于連接社交媒體API。
  Spring Mobile:適用于移動(dòng)網(wǎng)絡(luò)應(yīng)用。
  示例代碼:
  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規(guī)范。Jersey應(yīng)用程序可以擴(kuò)展現(xiàn)有的JAX-RS實(shí)現(xiàn),并通過添加功能和實(shí)用工具,使得RESTful服務(wù)更為簡(jiǎn)單,客戶端開發(fā)變得更加輕松。
  Jersey最好的一點(diǎn)是,它的文檔很詳細(xì),有很多例子。它的速度很快,路由也非常簡(jiǎn)單。
  關(guān)于如何開始使用Jersey的文檔在這里,而更多的文檔可以在這里找到。
  你可以嘗試運(yùn)行下面的示例代碼:
  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可以很容易地與其他庫(kù)一起使用,如Netty或Grizzly,它支持異步連接。它不需要servlet容器。然而,它確實(shí)很粗魯?shù)匾蕾囎⑷雽?shí)現(xiàn)。
  Play框架
  Play框架可以讓你很方便地使用Scala和Java來(lái)構(gòu)建、創(chuàng)建和部署Web應(yīng)用程序。對(duì)于需要并行處理遠(yuǎn)程調(diào)用的RESTful應(yīng)用程序來(lái)說(shuō),Play框架是理想的選擇。它是模塊化的,支持異步。Play框架的社區(qū)也是所有微服務(wù)框架中最大的社區(qū)之一。
  你可以嘗試運(yùn)行下面的示例代碼:
  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可以幫助開發(fā)人員創(chuàng)建遵循RESTful架構(gòu)模式的快速而又可擴(kuò)展的Web API。它具有不錯(cuò)的路由和過濾功能,可用于Java SE/EE、OSGi、Google AppEngine(Google Compute的一部分)、Android和其他主要的平臺(tái)。
  由于它的社區(qū)是封閉的,因此Restlet的學(xué)習(xí)曲線比較陡峭,但是你可以從StackOverflow上獲得幫助。
  示例代碼:
  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”;
  }
  }
  有關(guān)微服務(wù)更多的資源和教程
  要進(jìn)一步閱讀有關(guān)微服務(wù)的信息以及教程,請(qǐng)?jiān)L問以下資源:
  An Introduction to Microservices, Part 1(https://auth0.com/blog/an-introduction-to-microservices-part-1/)
  Build an API for microservices in 5 minutes(http://www.javaworld.com/article/2952103/enterprise-java/build-an-api-for-microservices-in-5-minutes.html)
  Microservices Tutorials(https://www.codementor.io/microservices/tutorial)
  Microservice Architecture – A Quick Guide(https://www.javacodegeeks.com/2014/06/microservice-architecture-a-quick-guide.html)
  Introduction to Microservices(https://www.nginx.com/blog/introduction-to-microservices/)


非常好我支持^.^

(0) 0%

不好我反對(duì)

(0) 0%

      發(fā)表評(píng)論

      用戶評(píng)論
      評(píng)價(jià):好評(píng)中評(píng)差評(píng)

      發(fā)表評(píng)論,獲取積分! 請(qǐng)遵守相關(guān)規(guī)定!

      ?