使用Eureka和Ribbon分发调用

在前一节中,我们已经在Eureka命名服务器中注册了currency-exchange-servicecurrency-conversion-service

CurrencyCalculationServicecurrency-conversion-service)调用CurrencyExchangeService时,Eureka命名服务器会查找currency-exchange-service的详细信息。

与硬编码Ribbon的URL不同,Ribbon会与Eureka命名服务器通信,获取所有微服务实例的详细信息。

步骤1: 打开文件 application.properties

在这个文件中,我们已经配置了Eureka命名服务器,并禁用了之前配置的服务器列表。在currency-conversion-service中,我们已经配置了Eureka的URL。现在,我们在两个服务中都配置了Eureka命名服务器。

现在CurrencyExchangeService开始与Eureka命名服务器通信。

application.properties

spring.application.name=currency-conversion-service  
server.port=8100  
eureka.client.service-url.default-zone=http://localhost:8761/eureka  
#currency-exchange-service.ribbon.listOfServers=http://localhost:8000, http://localhost:8001  

注意:上面的代码中,井号(#)表示注释。

需要注意的一点是,在application.properties文件中,我们没有提供currency-exchange-service的源。我们没有在currency-conversion-service中硬编码currency-exchange-service的URL。

步骤2: 关闭所有正在运行的应用程序。

步骤3: 首先运行NetflixEurekaNamingServerApplication.java

步骤4: 打开浏览器并刷新Eureka服务器。

步骤5: 在端口8000上运行一个CurrencyExchangeServiceApplication.java的实例。

步骤6: 运行CurrencyConversionServiceApplication.java

步骤7: 清空控制台并让它热身。

步骤8: 打开浏览器,输入URL http://localhost:8100/currency-converter-feign/from/EUR/to/INR/quantity/1000

当我们刷新Eureka服务器时,它始终返回端口8000的响应。

distributing-calls-using-eureka-and-ribbon.png

步骤9: 在端口8001上再次运行CurrencyExchangeServiceApplication.java的另一个实例。

步骤10: 再次刷新Eureka服务器。我们看到有两个运行在端口80008001上的currency-exchange-service实例。

distributing-calls-using-eureka-and-ribbon-1.png

步骤11: 刷新URL http://localhost:8100/currency-converter-feign/from/EUR/to/INR/quantity/1000

当我们刷新Eureka服务器时,它会不断更改端口。

步骤12: 关闭CurrencyExchangeServiceApplication8000

distributing-calls-using-eureka-and-ribbon-3.png

步骤13: 再次刷新URL http://localhost:8100/currency-converter-feign/from/EUR/to/INR/quantity/1000。它返回端口8001的响应。

因此,即使同一服务的实例关闭或被其他原因中断,服务也永远不会下线。

标签: spring, Spring教程, spring cloud, spring cloud教程, spring cloud框架, spring cloud面试题, springcloud组件, springcloud微服务架构, springcloud入门教程, springcloud主件, spring cloud架构图