1. 程式人生 > 實用技巧 >使用 Ribbon 實現客戶端側負載均衡

使用 Ribbon 實現客戶端側負載均衡

使用 Ribbon 實現客戶端側負載均衡

一、基本用法

一般如果匯入 Eureka Client 服務的話,自動包含了 Ribbon,所以無需再次匯入。

用法如下:

第一種:建立一個名為 RestTemplate 的 bean,併為其新增 @LoadBalanced 註解,使用該 RestTemplate 請求其他服務的介面即可實現客戶端側負載均衡,當 Eureka 和 Ribbon 聯合使用時可使用虛擬域名直接訪問微服務,如 restTemplate.getForObject("http://user-info-server/sys/info",User.class)

第二種:自動寫入一個 LoadBalancerClient 類例項,使用該例項的 choose 方法可以選擇微服務,然後可以檢視該微服務的一些資訊。

@Autowired private LoadBalancerClient loadBalancerClient;
ServiceInstance serviceInstance = this.loadBalancerClient.choose("user-info-server");
//使用 ServiceInstance 可以獲取微服務的 Host、Port

二、自定義 Ribbon 配置

Java 程式碼配置

1、建立 Ribbon 配置類

/**
* 注意:該類不應該在主程式上下文的 @ComponentScan 中
**/
@Configuration
public class RibbonConfiguration
{
    @Bean
    public IRule ribbonRule()
    {
        return new RandomRule();
    }
}

2、建立一個空類,並在其上新增 @Configuration 和 @RibbonClient 註解。

/**
* 使用 RibbonClient,為特定 name 的 Ribbon Client 自定義配置。
* 使用 @RibbonClient 的 configuration 屬性,指定 Ribbon 的配置類
**/
@Configuration
@RibbonClient(name = "user-info-server",configuration = RibbonConfiguration.class)
public class RibbonClientConfigration
{}