微服务在开发领域的使用越来越多,因为开发人员致力于创建更大、更复杂的服务为了更好地开发和管理,这些服务协同工作以实现更大的应用程序范围的功能。工具不断涌现,以满足使用逐件方法思考和构建应用程序的需要。坦率地说,这种方法比一次考虑整个应用程序更令人难以置信。今天,我们将了解微服务、使用此功能的好处以及一些代码示例。什么是微服务?微服务是一种面向服务的架构风格(Java开发人员最重要的技能之一),其中应用程序被构建为不同的小服务的集合,而不是作为一个完整的应用程序。您拥有多个可以独立运行并且可以使用不同编码或编程语言创建的独立应用程序,而不是单个应用程序。大型和复杂的应用程序可以由简单且自包含的程序组成,这些程序可以自行执行。这些较小的程序一起提供了大型单体应用程序的所有功能。微服务捕获您的业务场景,回答“您要解决什么问题?”的问题。它通常由只有少数成员的工程团队开发,可以用任何编程语言编写,可以使用任何框架。涉及的每个程序都有独立的版本、实现和扩展。这些微服务可以与其他微服务交互,可以拥有唯一的URL或名称,同时即使在出现故障时也始终可用且保持一致。微服务有什么好处?使用微服务有几个好处。首先,因为这些较小的应用程序不依赖于同一种编码语言,开发人员可以使用他们最熟悉的编程语言。这有助于开发人员以更低的成本和更少的错误更快地开发程序。敏捷性和低成本也可能来自于能够在其他项目上重用这些较小的程序,从而提高效率。Java微服务框架示例有几种微服务框架可用于Java开发。其中一些是:SpringBoot:这可能是最好的Java微服务框架,可以在控制反转、面向方面编程等语言之上工作。Jersey:这个开源框架支持Java中的JAX-RSAPI,并且非常便于使用。Swagger:帮助您记录API并为您提供一个开发门户,允许用户测试您的API。您可能会考虑的其他工具包括:DooWrar、NujaWebFramework、PlayFramework、RESTExchange、RestRead、RESX和SCAPFramework。如何使用DropWizard创建DropWizard将成熟稳定的Java库组合成轻量级包,您可以将其用于自己的应用程序。它使用用于HTTP的Jetty、用于REST的Jersey、用于JSON的Jackson,以及Metrics、Guava、Logback、HibernateValidator、ApacheHttpClient、Liquibase、Mustache、JodaTime和Freemarker。您可以使用Maven设置Dropwizard应用程序。如何在POM中添加dropwizard.version属性以使用最新版本的dropwizard。LATESTVERSIONio.dropwizarddropwizard-core${version}这将为您设置一个Maven项目。从这里,您可以创建配置类、应用程序类、表示类、资源类或健康检查,您可以构建胖罐然后运行应用程序。请通过此链接(http://www.dropwizard.io/1.1.0/docs/manual/index.html)查看Dropwizard用户手册。GitHub存储库位于此处(https://github.com/dropwizard/dropwizard)。示例代码:packagecom.example.helloworld;importcom.yammer.dropwizard.config.Configuration;importcom.fasterxml.jackson.annotation.JsonProperty;importorg.hibernate.validator.constraints.NotEmpty;publicclassHelloWorldConfigurationextendsConfiguration{@NotEmpty@JsonPropertyprivateProvateStringEmplate;J@Name=“陌生人”;publicStringgetTemplate(){returntemplate;}publicStringgetDefaultName(){returndefaultName;}}使用SpringBoot的微服务SpringBoot为您提供Java应用程序,这些应用程序可以通过嵌入式服务器与您自己的应用程序一起使用。它使用Tomcat,因此您不必使用JavaEE容器。你可以在这里找到所有的springboot项目,你会发现springboot拥有你的应用程序所需的所有基础设施。编写用于安全、配置或大数据的应用程序并不重要;它有一个SpringBoot项目。SpringBoot项目包括:SpringIO平台:版本化应用程序的企业级分发。Spring框架:用于事务管理、依赖项注入、数据访问、消息传递和Web应用程序。SpringCloud:用于分布式系统,用于构建或部署微服务。Springdata:对于数据访问相关的微服务,可以是mapreduce,关系型或非关系型。SpringBatch:用于高级批处理操作。SpringSecurity:用于授权和身份验证支持。SpringREST文档:用于记录RESTful服务。SpringSocial:用于连接社交媒体API。SpringMobile:用于移动Web应用程序。示例代码:importorg.springframework.boot.*;importorg.springframework.boot.autoconfigure.*;importorg.springframework.stereotype.*;importorg.springframework.web.bind.annotation.*;@RestController@EnableAutoConfigurationpublicclassExample{@RequestMapping("/")Stringhome(){return"HelloWorld!";}publicstaticvoidmain(String[]args)throwsException{SpringApplication.run(Example.class,args);}}JerseyJerseyRESTful框架是开源的,基于JAX-RS规范.Jersey应用程序可以扩展现有的JAX-RS实现并添加使RESTful服务更简单以及客户端开发更容易的功能和实用程序。Jersey最好的一点是它有丰富的文档,充满了例子。它也很快,而且路由非常容易。有关如何开始使用Jersey的文档位于此链接:https://eclipse-ee4j.github.io/jersey/您可以尝试的示例代码:packageorg.glassfish.jersey.examples.helloworld;importjavax.ws.rs.GET;importjavax.ws.rs.Path;importjavax.ws.rs.Produces;@Path("helloworld")publicclassHelloWorldResource{publicstaticfinalStringCLICHED_MESSAGE="HelloWorld!";@GET@Produces("text/plain")publicStringgetHello(){returnCLICHED_MESSAGE;}}packageorg.glassfish.jersey.examples.helloworld;importjavax.ws.rs.GET;importjavax.ws.rs.Path;importjavax.ws.rs.Produces;@Path("helloworld")publicclassHelloWorldResource{publicstaticfinalStringCLICHED_MESSAGE="HelloWorld!";@GET@Produces("text/plain")publicStringgetHello(){returnCLICHED_MESSAGE;}}Jersey很容易与Netty或Grizzly等其他库一起使用,并且它支持异步连接。它不需要servlet容器。但是,它确实有一个未完成的依赖注入实现。PlayFrameworkPlayFramework使您可以更轻松地使用Scala和Java构建、创建和部署Web应用程序。Play框架非常适合需要并行处理远程调用的RESTful应用程序。它也是非常模块化的并且支持异步。Play框架还拥有所有微服务框架中最大的社区之一。您可以尝试的示例代码它具有良好的路由和过滤功能,可用于JavaSE/EE、OSGi、GoogleAppEngine(GoogleCompute的一部分)、Android和其他主要平台。Restlet有一个陡峭的学习曲线,封闭的社区使它变得更糟。示例代码:packagefirstSteps;importorg.restlet.resource.Get;importorg.restlet.resource.ServerResource;/***Resourcewhichhasononlyonerepresentation.*/publicclassHelloWorldResourceextendsServerResource{@GetpublicStringrepresent(){return"hello,world";}}