SpringCloud之Ribbon基礎認識-服務負載均衡

0、Ribbon基本認識

  1. Spring Cloud Ribbon 是基于 Netflix Ribbon 實現的一套客戶端 負載均衡的工具。

  2. Ribbon 主要功能是提供客戶端負載均衡算法和服務調用

  3. Ribbon 客戶端組件提供一系列完善的配置項如連接超時,重試等。

  4. Ribbon 會基于某種規則(如簡單輪詢,隨機連接等)去連接指定服務

  5. 程序員很容易使用 Ribbon 的負載均衡算法實現負載均衡

  6. 一句話: Ribbon: 負載均衡+RestTemplate 調用

官網地址: https://github.com/Netflix/ribbon

Ribbon 目前進入維護模式, 未來替換方案 是 Spring Cloud LoadBalancer

?1、LB(Load Balance)

  1. 集中式 LB
    • 即在服務的消費方和提供方之間使用獨立的LB設施(可以是硬件,如F5,也可以是軟件,如Nginx),由該設施負責把訪問請求通過某種策略轉發至服務的提供方;
    • LB(Load Balance 負載均衡)
  2. 進程內 LB
    • 將LB邏輯集成到消費方,消費方從服務注冊中心獲知有哪些服務地址可用,然后再從這些地址中選擇出一個合適的服務地址。
    • Ribbon就屬于進程內LB,它只是一個類庫,集成于消費方進程,消費方通過它來獲取到服務提供方的地址
    • 取出來的服務存入jvm并且??定時更新??:默認每30秒(可配置)重新拉取列表,保證數據新鮮度,如果取出來的服務地址有不能用的也會自動選擇其他的能夠使用的

?2、Ribbon機制和架構

  1. 先選擇 EurekaServer,它優先選擇在同一個區域內負載較少的 server
  2. 再根據用戶指定的策略,在從 server 取到的服務注冊列表中選擇一個地址
  3. Ribbon 提供了多種策略∶ 比如輪詢、隨機和根據響應時間加權。

?3、Ribbon常見負載算法

策略名描述特點
BestAvailableRule選擇一個最小的并發請求的server。逐個考察Server,如果Server被tripped(跳閘)不能用了,則忽略,再選擇其中ActiveRequestsCount最小的server。??低延遲優先??,適合對響應速度敏感的場景。但是一個一個的看,對服務方來說有一點的資源開銷。
AvailabilityFilteringRule過濾掉那些因為一直連接失敗的被標記為circuit tripped的后端server,并過濾掉那些高并發的的后端server(active connections超過配置的閾值)。??高可用性??,自動排除故障或過載節點。
WeightedResponseTimeRule根據響應時間分配一個weight,響應時間越長,weight越小,被選中的可能性越低。??動態權重??,優先選擇響應快的節點。
RetryRule對選定的負載均衡策略機上重試機制。在一個配置時間段內當選擇server不成功,則一直嘗試使用subRule的方式選擇一個可用的server,達到一定閾值則不再嘗試。??容錯性強??,適合臨時性故障恢復。
RoundRobinRule輪詢index,選擇index對應位置的server。??公平分配??,按順序輪詢,簡單均衡但無視節點狀態。Ribbon默認是這個
RandomRule隨機選擇一個server。在index上隨機,選擇index對應位置的server。??無狀態隨機??,適合低復雜度場景。
ZoneAvoidanceRule復合判斷server所在區域的性能和server的可用性選擇性server。??區域感知??,兼顧性能和跨區域容災,各方面綜合考量。

舉例配置(Config)如下 :

@Configuration
public class RibbonRule {//配置注入自己的負載均衡算法@Beanpublic IRule myRibbonRule() {//這里返回的是RandomRule,當然也可以自己指定return new RandomRule();}
}

在啟動類上加如下注解:

//指定Ribbon的負載均衡算法
@RibbonClient(name = "MEMBER_SERVICE_PROVIDER_URL",configuration = RibbonRule.class)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/79915.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/79915.shtml
英文地址,請注明出處:http://en.pswp.cn/web/79915.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

當 DeepSeek 遇見區塊鏈:一場顛覆式的應用革命

目錄 一、DeepSeek 與區塊鏈的初印象二、技術融合:創新的基石2.1 強化學習優化智能合約2.2 混合專家系統適配多鏈2.3 語義理解增強合規性 三、應用實踐:重塑行業格局3.1 DeFi 協議智能化躍遷3.2 GameFi 經濟深度進化3.3 供應鏈金融信任增強 四、面臨挑戰…

vue3項目中使用CodeMirror組件的詳細教程,中文幫助文檔,使用手冊

簡介 這是基于 Vue 3 開發的 CodeMirror 組件。該組件基于 CodeMirror 5 開發,僅支持 Vue 3。 除了支持官方提供的各種語法模式外,還額外添加了日志輸出展示模式,開箱即用,但不一定適用于所有場景。 如需完整文檔和更多使用案例…

LeetCode熱題100--240.搜索二維矩陣--中等

1. 題目 編寫一個高效的算法來搜索 m x n 矩陣 matrix 中的一個目標值 target 。該矩陣具有以下特性: 每行的元素從左到右升序排列。 每列的元素從上到下升序排列。 示例 1: 輸入:matrix [[1,4,7,11,15],[2,5,8,12,19],[3,6,9,16,22],[1…

2025爬蟲實戰技巧:高效數據采集方案

2025爬蟲實戰技巧:高效數據采集方案 ?? 本文核心價值 HTTPS請求鏈路加密逆向解析動態Cookie生成機制破解Cloudflare等高級防護繞過方案分布式爬蟲架構設計要點目錄 2025爬蟲實戰技巧:高效數據采集方案?? 本文核心價值一、現代反爬機制技術解析1.1 主流平臺防護體系1.2 反…

綁定 SSH key(macos)

在 macOS 上綁定 Gitee 或 GitHub 的 SSH Key,通常分為以下幾步操作,包括生成 SSH key、添加到 ssh-agent,并配置到 Gitee 或 GitHub 平臺。 1. 檢查是否已有 SSH Key ls -al ~/.ssh 看看是否已有 id_rsa 或 id_ed25519 等文件。如果沒有就…

Tailwind CSS v4 主題化實踐入門(自定義 Theme + 主題模式切換)?

ok,經過學習Tailwindcss我決定將此專欄建設成為一個Tailwindcss實戰專欄,我將在專欄內完成5050挑戰:50天50個Tailwindcss練習項目,歡迎大家訂閱!!! Tailwind CSS v4 帶來了更強大的主題定制能力…

SAF利用由Varjo和AFormX開發的VR/XR模擬器推動作戰訓練

通過將AFormX的先進軍用飛行模擬器與Varjo的行業領先的VR/XR硬件相結合,斯洛文尼亞武裝部隊正以經濟高效、沉浸式的訓練方式培訓戰斗機飛行員,以提高其戰術準備和作戰效率。 挑戰:獲得戰術軍事航空訓練的機會有限 軍事航空訓練長期以來一直…

VUE中通過DOM導出PDF

最終效果 前端導出PDF的核心在于樣式的繪制上,這里其實直接使用CSS進行繪制和布局就行,只不過需要計算好每頁DIV盒子的大小,防止一頁放不下造成樣式錯亂。 項目依賴 項目是Vue3 TS npm i html2canvas1.4.1 npm i jspdf3.0.1工具類(htmlToPdf…

SpringAI框架中的RAG模塊詳解及應用示例

SpringAI框架中的RAG模塊詳解及應用示例 RAG(Retrieval-Augmented Generation)可以通過檢索知識庫,克服大模型訓練完成后參數凍結的局限性,攜帶知識讓大模型根據知識進行回答。SpringAI框架提供了模塊化的API來支持RAG&#xff0…

MySQL-數據查詢(測試)-05-(12-1)

1-數據準備: CREATE TABLE 員工信息表 (員工編號 VARCHAR(10) PRIMARY KEY,姓名 VARCHAR(20),學歷 VARCHAR(20),出生日期 DATE,性別 INT,工作年限 INT,地址 VARCHAR(100),電話號碼 VARCHAR(20),員工部門號 INT ); INSERT INTO 員工信息表 (員工編號, 姓名, 學歷, 出…

5G網絡:能源管理的“智能電網“革命,Python如何成為關鍵推手?

5G網絡:能源管理的"智能電網"革命,Python如何成為關鍵推手? 大家好,我是Echo_Wish。今天咱們聊一個既硬核又接地氣的話題——5G網絡如何用Python代碼重構全球能源管理。 不知道你們有沒有注意過: ? 家里裝了智能電表后,電費突然變"聰明"了,谷時充…

AI背景下,如何重構你的產品?

當AI敲門時,你的產品準備好開門了嗎? 最近和做產品的老張聊天,他愁眉苦臉地說:"現在AI這么火,我們的產品就像個老古董,用戶都跑隔壁用AI產品去了。“這話讓我想起三年前另一個朋友,當時區…

互聯網大廠Java面試實戰:從Spring Boot到微服務的技術問答與解析

💪🏻 1. Python基礎專欄,基礎知識一網打盡,9.9元買不了吃虧,買不了上當。 Python從入門到精通 😁 2. 畢業設計專欄,畢業季咱們不慌忙,幾百款畢業設計等你選。 ?? 3. Python爬蟲專欄…

Apollo學習——aem問題

執行aem指令出現一下問題 lxflxf:~/MYFile/apollo_v10.0 $aem enter permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get "http://%2Fvar%2Frun%2Fdocker.sock/v1.49/containers/json?filters%7B%22name%22%…

數字IC后端零基礎入門基礎理論(Day2)

數字IC后端零基礎入門基礎理論(Day1) Placement Blockage: cell擺放阻擋層。它是用來引導工具做placement的一種物理約束或手段,目的是希望工具按照我們的要求來做標準單元的擺放。 它主要有三種類型,分別是hard placement bloc…

如何遠程執行腳本不留痕跡

通常我們在做遠程維護的時候,會有這么一個需求,就是我想在遠程主機執行一個腳本,但是這個腳本我又不想保留在遠程主機上,那么有人就說了,那就復制過去再登錄遠程執行不就行了嗎?嗯嗯,但是這還不…

【Lua】java 調用redis執行 lua腳本

【Lua】java 調用redis執行 lua腳本 public Object executeLuaScript(String script, List<String> keys, Object... args) {// 注意: 這里 Long.class 是返回值類型, 一定要指定清楚 不然會報錯return this.redisTemplate.execute(RedisScript.of(j腳本, Long.class), k…

利用混合磁共振成像 - 顯微鏡纖維束成像技術描繪結構連接組|文獻速遞-深度學習醫療AI最新文獻

Title 題目 Imaging the structural connectome with hybrid MRI-microscopy tractography 利用混合磁共振成像 - 顯微鏡纖維束成像技術描繪結構連接組 01 文獻速遞介紹 通過多種模態繪制大腦結構能夠增進我們對大腦功能、發育、衰老以及疾病的理解&#xff08;漢森等人&am…

Shell腳本實踐(修改文件,修改配置文件,執行jar包)

1、前言 需要編寫一個shell腳本支持 1、修改.so文件名 2、修改配置文件 3、執行jar包 2、代碼解析 2.1、修改.so文件名 so_file_dir="/opt/casb/xxx/lib" # 處理.so文件 cd "$so_file_dir" || { echo "錯誤: 無法進入目錄 $so_file_dir"; exit …

基于GPUGEEK 平臺進行深度學習

一、平臺簡介 GPUGEEK 是一個專注于提供 GPU 算力租賃服務的平臺&#xff0c;在人工智能與深度學習領域為用戶搭建起便捷的算力橋梁。它整合了豐富多樣的 GPU 資源&#xff0c;涵蓋 RTX - 4090、RTX - 3090、A100 - PCIE 等多種型號&#xff0c;滿足不同用戶在模型訓練、數據處…