用尤里卡和领事实施服务发现模式
#java #microservices

在上一篇文章中,我们查看了微服务中的发现服务器以及它解决的问题是什么。在帖子中,我们将使用尤里卡(Eureka)实施服务发现模式,并带有Spring Boot。

Netflix Eureka

Netflix Eureka是实现服务发现的最流行的开源解决方案之一。尤里卡(Eureka)也是弹簧云工具的一部分,提供快速简便的配置以开始。

让我们设置Discovery Server。创建一个仅具有以下依赖项的Spring Boot应用程序。您可以使用Spring Initializer站点轻松创建应用程序。如果您不使用Spring Initializer网站,请确保添加云依赖性。

<dependency>
   <groupId>org.springframework.cloud</groupId>
   <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>

下一步是添加 @enableeurekaserver 在应用程序的主类顶部注释。添加此注释是可选的。它不会影响发现服务器功能。它仅用于代码可读性。

添加了依赖关系和弹簧启动,可为自动配置提供明智的默认设置,我们可以运行该应用程序,并且可以正常工作。但是,您会在控制台中看到一些错误消息,因为默认情况下,发现服务器也充当发现客户端,并试图在其他发现服务器上注册自身。在此演示中,我们只有一台发现服务器。我们必须配置我们的发现服务器,以使其不充当客户端本身。

配置Discovery Server可以通过两种方式来编程,通过定义bean或定义 application.properties > application.yml 文件。建议在YML文件中进行。

spring:
  application:
    name: discovery-client

server:
  port: 8761

eureka:
  client:
    register-with-eureka: false
    fetch-registry: false

在YML文件中,Discovery Server端口设置为 8761 ,如默认端口。尤里卡客户端属性 register-with-eureka fetch-registry 设置为false。

将寄存器 - eureka属性设置为false,停止发现服务器向其他发现服务器注册,并将 fetch-registry设置为false false stop offers stops offers stops offection stops offers offers offection stop offection stop stop offection serve specoxende server以从其他发现fetch登记服务服务器由于此演示中只有一个发现服务器。

现在,让S设置Discovery客户端,可以通过Discovery Server发现。 Discovery客户端是我们提供服务作为微服务的Spring Boot应用程序。您可以创建一个新的Spring Boot应用程序或使用现有应用程序充当发现客户的发现客户端。

您要做的就是添加以下依赖关系,我们准备运行该应用程序。

<dependency>
   <groupId>org.springframework.cloud</groupId>
   <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>

在application.yml文件中,更改应用程序的名称以在服务注册表中查看相同名称。

spring:
  application:
    name: discovery-client

server:
  port: 9000

现在两个应用程序都在运行,请访问Localhost:8761浏览器中的8761。我们可以看到我们的客户端应用程序已成功地在Discovery Server上注册。

Image description
我们已经配置了Discovery Server和Discovery客户端,并使用最小配置来设置Discovery Service机制。话虽如此,Netflix Eureka具有许多其他功能,例如加载平衡,并且有大量配置可使服务安全,高度可用且有弹性。

查看GitHub repository是否相同。

Hashicorp领事

领事是Hashcorp开发的工具,该工具以开发Terraform而闻名。除了服务发现外,领事还提供一个钥匙值商店,集中配置,网络安全性和其他几个功能。但是在这篇文章中,我们只对它的服务发现方面感兴趣。

为了开始领事,我们可以旋转Docker容器或从官方网站下载可执行文件。

让我们看看如何运行Docker容器。首先,使用下面的命令提取领事图像。

$ docker pull hashicorp/consul

创建并运行默认端口8500的容器,并在下面命令

$ docker run --name consul -d -p 8500:8500 hashicorp/consul

可以通过直接运行可执行文件下载的可执行文件。

可以完成。

提取.exe文件和在显示文件的目录中运行以下命令

.\consul agent -dev -enable-script-checks -node=web -ui

注意我在Windows上运行命令。对于其他操作系统,请查看官方文档

现在访问 localhost:8500/ui 查看Web UI。在“服务”部分中,您可以看到运行的领事发现服务器的一个实例。

Image description
要使微服务注册到注册表中,请在pom.xml文件中添加以下依赖项

<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
   <groupId>org.springframework.cloud</groupId>
   <artifactId>spring-cloud-starter-consul-discovery</artifactId>
</dependency>

通过将领事发现依赖性添加到我们应用程序的类Path,Spring-Boot自动配置的应用程序将其注册在领事服务注册表中。

另外,我们需要Web依赖关系,因为服务发现机制正在通过** http **协议进行。

您可以在应用程序的主类别上添加可选的 @enablediscoveryclient 注释。在 应用程序中

spring:
  application:
    name: discovery-client

server:
  port: 900

现在,如果我们运行该应用程序并查看领事Web UI。我们可以看到我们的应用程序已在服务登记册中注册。

Image description

查看GitHub repository。


如果您喜欢这篇文章,请考虑留下反应并跟随更多。