Spring Cloud教程-Eureka命名服务器
Eureka命名服务器
在上一节中,我们配置了Ribbon,并在两个服务之间分发了负载。在本节中,我们将设置Eureka命名服务器。
命名服务器
命名服务器是一种计算机应用程序,用于实现对目录服务的查询的网络服务。
Eureka命名服务器
Eureka命名服务器是一种基于REST的服务器,用于AWS云服务中的中间层服务的负载平衡和故障转移。
Eureka命名服务器是一个应用程序,其中包含所有客户端服务应用程序的信息。每个微服务都会向Eureka命名服务器注册自己。命名服务器会使用它们的端口号和IP地址注册客户端服务。它也被称为发现服务器。Eureka命名服务器与Spring Cloud捆绑在一起。它在默认端口8761上运行。它还带有基于Java的客户端组件,Eureka客户端,它使与服务的交互变得更加容易。
命名服务器的需求
我们还有另一个负载均衡应用程序,称为AWS云。由于其固有性质,服务器会上下线。没有中间层负载均衡器。Eureka命名服务器填补了客户端和中间层负载均衡器之间的差距。
假设我们想要启动另一个currency-exchange-service的实例,即CurrencyExchangeService3,并将其启动在端口8002上。这里有一个问题,Ribbon能够将负载分配给它吗?
如果Ribbon想要将负载分配给新的服务器,我们需要将其添加到配置中。根据负载的大小,我们可以增加或减少服务的实例数。
在本节中,我们将能够动态增加或减少实例的数量。
如果我们不断更改CurrencyCalulationService中的内容,基于目前有多少CurrenyExchangeService是活动的,那么维护起来会非常困难。
当我们希望使维护更加容易时,Eureka命名服务器就出现了。所有微服务的所有实例都将向Eureka命名服务器注册。每当微服务的新实例启动时,它都会向Eureka命名服务器注册自己。将微服务注册到命名服务器的过程称为服务注册。
每当一个服务想要与另一个服务通信时,假设CurrencyCalculationService想要与CurrencyExchangeService通信。CurrencyCalculationService首先与Eureka命名服务器通信。命名服务器提供当前运行的CurrencyExchangeService的实例。向其他服务提供实例的过程称为服务发现。
服务注册和服务发现是命名服务器的两个重要特性。在下一步中,我们将设置Eureka命名服务器。
设置Eureka命名服务器
在设置Eureka命名服务器时涉及许多步骤,如下所示:
- 为Eureka命名服务器创建一个组件
- 更新CurrencyCalculationService以连接到Eureka命名服务器
- 将CurrencyExchangeService连接到Eureka命名服务器
- 配置Ribbon
一旦currency-exchange-service的实例已在Eureka命名服务器上注册,我们将使用Ribbon从命名服务器查找详细信息。让我们按照上述指定的步骤进行操作:
为Eureka命名服务器创建一个组件
步骤1:打开Spring Initializr [https://start.spring.io](https://start.spring.io/)
。
步骤2:*提供*组名称。我们提供了cn.javatiku.microservices。
步骤3:*提供*Artifact Id。我们提供了netflix-eureka-naming-server。
步骤4:*添加以下依赖项:**Eureka Server,Config Client,Actuator**和*DevTools。
步骤5:*单击*Generate按钮。它会下载一个zip文件。
步骤6: 提取 zip 文件并将文件夹粘贴到Spring Tool Suite(STS)工作区,然后导入它。
文件->导入->现有的Maven项目->下一步->浏览->选择netflix-eureka-naming-server项目->完成
步骤7:*打开*NetflixEurekaNamingServerApplication.java文件,并使用注解@EnableEurekaServer启用Eureka命名服务器。
**NetflixEurekaNamingServerApplication.java**
package cn.javatiku.microservices.netflixeurekanamingserver;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
@SpringBootApplication
@EnableEurekaServer
public class NetflixEurekaNamingServerApplication
{
public static void main(String[] args) {
SpringApplication.run(NetflixEurekaNamingServerApplication.class, args);
}
}
步骤8:*打开*application.properties文件并配置应用程序名称,端口和Eureka服务器。
spring.application.name=netflix-eureka-naming-server
server.port=8761
eureka.client.register-with-eureka=false
eureka.client.fetch-registry=false
端口8761是Eureka命名服务器的默认端口。
步骤9:*将*NetflixEurekaNamingServerApplication.java文件运行为Java应用程序。
步骤10:打开浏览器,键入URL http://localhost:8761。它会显示Eureka服务器UI。
在本节中,我们已创建了一个Eureka命名服务器组件。在下一步中,我们将将微服务连接到Eureka命名服务器。