Spring Cloud教程-使用Eureka和Ribbon分发调用
使用Eureka和Ribbon分发调用
在前一节中,我们已经在Eureka命名服务器中注册了currency-exchange-service
和currency-conversion-service
。
当CurrencyCalculationService
(currency-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的响应。
步骤9: 在端口8001上再次运行CurrencyExchangeServiceApplication.java
的另一个实例。
步骤10: 再次刷新Eureka服务器。我们看到有两个运行在端口8000和8001上的currency-exchange-service实例。
步骤11: 刷新URL http://localhost:8100/currency-converter-feign/from/EUR/to/INR/quantity/1000
。
当我们刷新Eureka服务器时,它会不断更改端口。
步骤12: 关闭CurrencyExchangeServiceApplication8000。
步骤13: 再次刷新URL http://localhost:8100/currency-converter-feign/from/EUR/to/INR/quantity/1000
。它返回端口8001的响应。
因此,即使同一服务的实例关闭或被其他原因中断,服务也永远不会下线。