微型服务每天都在更换庞然大物。因此,让我们探索 Java 开发人员如何在他们喜欢的框架的帮助下使用它们
Java Microservices 越来越多地用于开发领域,因为开发人员致力于创建更大、更复杂的应用程序,这些应用程序可以作为较小的服务的组合进行更好的开发和管理,这些服务可以协同工作,以实现更大的、应用程序范围的功能。工具正在兴起,以满足使用一件一件的方法来思考和构建应用程序的需要,坦率地说,比起一次性考虑整个应用程序,这种方法不那么令人难以置信。今天,我们将介绍 微服务 、使用此功能的好处以及一些代码示例。
你最喜欢哪个 Java 微服务?
什么是微服务?
Java Microservices 是一组用 Java 编程语言(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。
如何创建使用 DropWizard
DropWizard 将成熟和稳定的 Java 库集成在轻量级包中,您可以将其用于自己的应用程序。它使用 Jetty 表示 HTTP, Jersey 表示 REST,Jackson 表示 JSON ,以及 Metrics、 Guava、 Logback、 Hibernate 验证器、 Apache httpClient、 Liquibase、 Mustache、 Joda Time 和 Freemarker。
您可以使用 Maven 安装 DropWizard 应用程序。如何安装?
在 POM 中,使用最新版本的 DropWizard 添加 drowizard.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 库在这里。
示例代码:
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;
}
}
Microservices With Spring Boot
SpringBoot 提供了 Java 应用程序,可以通过嵌入式服务器与自己的应用程序一起使用。它使用 Tomcat ,因此您不必使用 JavaEE 容器。在这个链接中有一个示例 Spring Boot 教程。
您可以在这里找到所有 SpringBoot 项目,并且您将认识到 SpringBoot 具有应用程序所需的所有基础结构。如果您正在为安全、配置或大数据编写应用程序,这并不重要; 有一个针对它的 SpringBoot 项目。
Spring Boot 包含了:
- Spring IO Platform : 针对版本化应用程序的企业级分发
- Spring Framework Spring 框架 : 用于交易管理、依赖注入、数据访问、信息传递和网络应用程序。
- Spring Cloud :用于分布式系统,并用于构建或部署您的微服务
- Spring Data : 对于与数据访问相关的微服务,可以是 map-reduce 、关系型或非关系型
- Spring Batch : 用于高水平的批处理操作
- Spring Security : 获得授权和认证支持
- Spring REST Docs : 用于记录 RESTful 服务
- Spring Social : 连接到社交媒体 API
- Spring Mobile : 移动网络应用程序
import org.springframework.boot.*;
import org.springframework.boot.autoconfigure.*;
import org.springframework.stereotype.*;
import org.springframework.web.bind.annotation.*;
@RestController
@EnableAutoConfiguration
public class Example {
@ Request Mapping("/")
String home() {
return "Hello World!";
Jersey
Jersey RESTful 框架是开源的,它基于 JAX-RS 规范。Jersey 的应用程序可以扩展现有的 JAX-RS 实现,并添加使 RESTful 服务更简单的特性和实用程序,以及使客户机开发更容易。
Jersey 最棒的地方在于它有大量的示例文档。它也很快,并有极其容易的路由。
关于如何开始使用 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 很容易与其他库一起使用,比如 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 和其他主要平台。
Restlet 有一个陡峭的 学习曲线 ,封闭的社区会让它变得更糟,但是你可以从 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";
}
}