使用 Ribbon 實現客戶端側負載均衡
阿新 • • 發佈:2020-12-02
使用 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 {}