Spring Boot的微服务实现示例

1.简介

我们已经完成了Microservice演示 ,很高兴看到它收到了精彩的反馈。 希望我们现在都对基础有所了解。 本教程将指导我们所有人进行实际的Microservices实现,因此每次要求创建它时,我们都会有很好的指导。

2.了解服务注册表

传统上,当我们使用REST服务时,通常会为我们提供服务实例的网络位置(通常是静态的REST服务URL)。 但是,随着微服务架构的出现,这种传统已经改变。 让我们来了解如何!

在微服务架构中,由于自动缩放,故障和升级,将动态分配/更改服务实例的网络位置。 为了适应这种动态性,引入了服务发现机制

因此,有两种主要的服务发现模式–

  • 客户端发现
  • 服务器端发现

客户端发现

在客户端服务发现中,客户端使用单独的负载平衡机制查询服务注册表并确定可用的服务实例。 负载平衡通常与Service Registry配合使用,以平衡可用服务实例之间的请求。 使用返回的负载平衡实例之一完成每个HTTP请求。

Spring Boot的微服务实现示例_第1张图片

主要缺点之一是客户端与Service Discovery紧密耦合,并且需要在客户端编写Service Discovery逻辑。

服务器端发现

客户端通过抽象层查询发现服务,该抽象层实际上是负载平衡器,或者可以说是路由器,它查询服务注册表并将HTTP请求路由到可用的服务实例。 服务发现的详细信息从客户端抽象(或隐藏),因此客户端无需编写发现逻辑,从而导致客户端与服务发现之间更理想的松散耦合。

Spring Boot的微服务实现示例_第2张图片

那么什么是服务注册表?

服务注册表是服务发现机制的关键部分。 服务注册表是可用服务实例的数据库。 服务注册表可确保其高度可用并与服务实例的网络位置保持最新。 客户端可以缓存从服务注册表获得的网络位置,但是随着网络位置的不断变化,缓存数据很快就会过时。 为了解决这个问题,Service Registry服务器(由服务器集群组成)负责维护一致性并不断刷新服务实例的网络位置(通常每30秒刷新一次)。

Netflix Eureka是服务注册中心最常见的例子之一。 它提供了一个REST API来注册(使用POST请求)和查询(使用HTTP GET请求)服务实例。

Netflix通过在每个Amazon EC2可用性区域中运行一台或多台Eureka服务器来实现高可用性。 每个Eureka依次在具有弹性IP地址的EC2实例上运行。 DNS TEXT记录用于存储Eureka群集配置(映射到Eureka服务器的网络位置列表),以便在Eureka服务器启动时,查询DNS以检索Eureka群集配置(Eureka服务器的网络位置)并分配本身未使用的弹性IP地址。

Hashicorp的ConsulApache Zookeeper是Service Registry的其他示例。

Netflix Ribbon是与Eureka一起使用的IPC(进程间通信)客户端,用于在可用服务实例之间平衡请求的负载。 @LoadBalanced注释将RestTemplate配置为使用Ribbon ,该Ribbon已配置为使用Eureka客户端来查询服务发现并获取可用的服务实例。

3.微服务实现

我们将使用Spring Boot查看有关微服务的简单演示。 希望我们更接近微服务概念。

要创建微服务系统,我们需要确保以下步骤–

  1. 创建尤里卡发现服务器
    • 使用Spring Boot,只需一个注释@EnableEurekaServer即可完成工作。
  2. 创建生产者微服务
    • 在发现服务中注册自己
    • @EnableDiscoveryClient激活Netflix Eureka DiscoveryClient实施
  3. 创建消费者微服务,该消费者查找在发现服务中注册的生产者服务实例
    • 在发现服务中注册自己
    • @EnableDiscoveryClient激活Netflix Eureka DiscoveryClient实施
    • 使用智能RestTemplate请求生产者微服务的DiscoveryClient实例。
  4. 然后,我们可以通过首先启动Eureka服务来测试端到端结果 。 Eureka服务启动后,一个接一个地启动发现客户端。

4.测试应用程序

发现服务和发现客户端启动后,我们可以检查发现客户端是否已在Eureka发现服务器上正确注册。

http://本地主机:1111 /

Spring Boot的微服务实现示例_第3张图片

使用Spring Boot,所有的实现变得非常容易,只需在最少的手动配置下,在正确的位置进行正确的注释即可。

我们现在将尝试如下所述运行该应用程序–

http:// localhost:8080 /

Spring Boot的微服务实现示例_第4张图片

5.下载源代码

下载源代码

翻译自: https://www.javacodegeeks.com/2017/12/microservices-implementation-example-spring-boot.html

你可能感兴趣的:(网络,java,数据库,分布式,linux)