📅  最后修改于: 2021-01-11 02:27:56             🧑  作者: Mango
Netflix Ribbon是Netflix开源软件(Netflix OSS)的一部分。它是一个提供客户端负载平衡的云库。它是Netflix家族的成员,因此会自动与Netflix Service Discovery (Eureka)进行交互。
功能区主要提供客户端负载平衡算法。它是客户端负载平衡器,可控制HTTP和TCP客户端的行为。重要的一点是,当我们使用Feign时, Ribbon也适用。
负载平衡有两种类型
让我们在项目中配置Ribbon服务器。
第1步:转到项目currency-conversion-service 。
步骤2:打开pom.xml文件并添加功能区依赖项。
org.springframework.cloud
spring-cloud-starter-netflix-ribbon
添加依赖项后,我们需要在代理上启用功能区。
步骤3:打开CurrencyExchangeServiceProxy.java文件。通过添加注释@RibbonClient来启用Ribbon ,并指定我们要与之交谈的服务的名称。功能区客户端为客户端提供声明式配置。
@RibbonClient(name="currency-exchange-service")
CurrencyExchangeServiceProxy.java
package com.javatpoint.microservices.currencyconversionservice;
import org.springframework.cloud.netflix.ribbon.RibbonClient;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
//@FeignClient(name="currency-exchange-service", url="localhost:8000")
//Enabling feign
@FeignClient(name="currency-exchange-service")
//enabling ribbon
@RibbonClient(name="currency-exchange-service")
public interface CurrencyExchangeServiceProxy
{
@GetMapping("/currency-exchange/from/{from}/to/{to}") //where {from} and {to} are path variable
public CurrencyConversionBean retrieveExchangeValue(@PathVariable("from") String from, @PathVariable("to") String to); //from map to USD and to map to INR
}
步骤4:在注释@FeignClient中,删除属性URL 。因为我们不需要与一种特定的服务进行交谈。我们将在application.properties文件中配置该URL。
步骤5:打开项目currency-conversion-service的application.properties文件并配置服务器。我们必须配置的属性是:
name-of-the-application.ribbon.listOfServers=URLs
我们已经配置了我们要调用的currency-exchange-service的两个实例。
currency-exchange-service.ribbon.listOfServers=http://localhost:8000, http://localhost:8001
application.properties
spring.application.name=currency-conversion-service
server.port=8100
currency-exchange-service.ribbon.listOfServers=http://localhost:8000, http://localhost:8001
我们有两个CurrentExchangeExchangeApplication.java实例,如下图所示:
首先,在端口8000上运行CurrencyExchangeServiceApplication,然后在端口8001上运行CurrencyExchangeServiceApplication。
在两个端口上运行CurrencyExchangeServiceApplication之后,通过发送请求http:// localhost:8100 / currency-converter-feign / from / EUR / to / INR / quantity / 10000来运行CurrencyConversionServiceApplication.java。它返回以下响应。
在上图中,端口8000表示货币兑换服务正在端口8000上运行并正在处理当前请求。
现在,刷新页面。除了端口号和数量外,我们得到了相同的响应,因为我们更改了请求中的数量。
在上图中,端口8001表示货币兑换服务正在端口8001上运行并正在处理当前请求。
让我们通过一个图了解负载均衡:
在上图中,Ribbon在三个活动的CurrencyExchangeServices之间分配负载。 CurrencyExchangeService1在端口8000上运行,CurrencyExchangeService2在端口8001上运行,依此类推。因此,使用Ribbon通过CurrencyCalculationService进行的任何调用都将分配给这三个服务。