開發與維運

客戶端負載均衡器Ribbon

本文來自於《精通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的實現客戶端負載均衡器。

image.png

本地負載均衡與Nginx 的區別

本地負載均衡

本地負載均衡器基本的概念:我們的消費者服務從我們的註冊中心獲取到集群地址列表,緩存到本地,然後本地採用負載均衡策略(輪訓、隨機、hash一致性、權重等),實現本地的rpc遠程的。

本地負載均衡器有:
自己寫、ribbon SpringleCloud第一代中loadbalancerSpringCloud自己研發。
如何選擇ribbon還是loadbalancer
SpringCloud Rest或者Openfeign都是默認支持ribbon。

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

Nginx是客戶端所有的請求統一都交給我們的Nginx處理,讓後再由Nginx實現負載均衡轉發,屬於服務器端負載均衡器。
本地負載均衡器是從註冊中心獲取到集群地址列表,本地實現負載均衡算法,即本地負載均衡器。屬於客戶端負載均衡器。
應用場景:
Nginx屬於服務器負載均衡,應用於Tomcat/Jetty服務器等,而我們的本地負載均衡器,應用於在微服務架構中rpc框架中,rest、openfeign、dubbo。

image.png
image.png

SPringleCloud rest或者openfeign客戶端默認都是ribbon實現調用

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

loadbalancerClientSpringCloud根據服務id獲取負載均衡器rpc地址。

image.png

搜索 maven倉庫,對比分析
ribbon在某一時間段頻繁更新。

image.png

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

image.png

Leave a Reply

Your email address will not be published. Required fields are marked *