天天看點

如何實作用戶端負載均衡? | 帶你讀《Spring Cloud Alibaba(2019)》之五

上一篇:Nacos如何整合SpringCloud ?| 帶你讀《Spring Cloud Alibaba(2019)》之四 如何建構一個微服務項目? | 帶你讀《Spring Cloud Alibaba(2019)》之六

本文來自于《精通Spring Cloud Alibaba》課程的整理,講師為餘勝軍,

點選檢視視訊内容

本文系志願者整理,供配合學習中心課程使用,不做商業用途。

SpringCloud負載均衡器說明

在SpringCloud第一代中使用Ribbon、SpringCloud第二代中直接采用自研發loadbalancer即可,預設使用的Ribbon。

使用方式非常簡單:

@Bean
    @LoadBalanced
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }           

LoadBalancerClient負載均衡器

@RequestMapping("/loadBalancerClient")
public Object loadBalancerClient() {
    return loadBalancerClient.choose("meitemayikt-member");
}           

底層預設原理是調用ribbon的實作用戶端負載均衡器。

如何實作用戶端負載均衡? | 帶你讀《Spring Cloud Alibaba(2019)》之五

本地負載均衡與Nginx 的差別

本地負載均衡

本地負載均衡器基本的概念:我們的消費者服務從我們的注冊中心擷取到叢集位址清單,緩存到本地,然後本地采用負載均衡政策(輪訓、随機、hash一緻性、權重等),實作本地的rpc遠端的。

本地負載均衡器有:

自己寫、ribbon SpringleCloud第一代中loadbalancerSpringCloud自己研發。

如何選擇ribbon還是loadbalancer

SpringCloud Rest或者Openfeign都是預設支援ribbon。

本地負載均衡器與Nginx 的差別

Nginx是用戶端所有的請求統一都交給我們的Nginx處理,讓後再由Nginx實作負載均衡轉發,屬于伺服器端負載均衡器。

本地負載均衡器是從注冊中心擷取到叢集位址清單,本地實作負載均衡算法,即本地負載均衡器。屬于用戶端負載均衡器。

應用場景:

Nginx屬于伺服器負載均衡,應用于Tomcat/Jetty伺服器等,而我們的本地負載均衡器,應用于在微服務架構中rpc架構中,rest、openfeign、dubbo。

如何實作用戶端負載均衡? | 帶你讀《Spring Cloud Alibaba(2019)》之五
如何實作用戶端負載均衡? | 帶你讀《Spring Cloud Alibaba(2019)》之五

SPringleCloud rest或者openfeign用戶端預設都是ribbon實作調用

@loadbalancer實際上是我們的springcloud自己寫的。

loadbalancerClientSpringCloud根據服務id擷取負載均衡器rpc位址。

如何實作用戶端負載均衡? | 帶你讀《Spring Cloud Alibaba(2019)》之五

搜尋 maven倉庫,對比分析

ribbon在某一時間段頻繁更新。

如何實作用戶端負載均衡? | 帶你讀《Spring Cloud Alibaba(2019)》之五

spring-cloud-loadbalancer:版本幾乎一直在更新。

如何實作用戶端負載均衡? | 帶你讀《Spring Cloud Alibaba(2019)》之五