dledger原理源碼分析系列(一)-架構,核心組件和rpc組件

簡介

? ? ? dledger是openmessaging的一個組件, raft算法實現,用于分布式日志,本系列分析dledger如何實現raft概念,以及dledger在rocketmq的應用

本系列使用dledger v0.40

本文分析dledger的架構,核心組件;rpc組件

關鍵詞

Raft

Openmessaging

參考資料

In Search of an Understandable Consensus Algorithm ?raft論文簡版

技術架構

  • 應用/client? client是dledger提供給應用訪問節點的組件
  • rpc服務

rpc服務內置rpc client/rpc server,對外接收外部rpc訪問,包括client和節點間通訊;對內,解釋rpc請求,轉發給Server;對外,發送rpc請求到其他節點

  • Server

主程序,負責節點啟動,其他組件的啟動;寫入日志請求初步處理等

  • Elector

選舉類,負責集群主節點選舉

  • EntryPusher

日志寫入器,內置分發器和處理器,分發器主節點用于復制日志到跟隨者;處理器跟隨者使用,寫入日志

  • 存儲

存儲日志條木,有兩個實現,基于內存和基于文件

  • 快照/狀態機

新版本的dledger提供狀態機,dledger成為通用的raft組件,不再是轉為rocketmq使用

啟動

本節分析節點啟動,下圖是典型的dledger啟動代碼

  1. 構建和初始Server,Server代表節點
  2. 注冊狀態機,若需要的話
  3. 注冊自定義的處理器,擴展rpc服務,若有的話
  4. Metrics組件初始化
  5. 啟動server

? ? ?Server啟動,負責啟動核心組件

? ? ?6. 優雅關機

rpc

本節介紹dledger的rpc模塊,dledger選主,日志寫入和復制通過來來回回的rpc完成,本節介紹dledger業務層面的rpc設計

節點間通訊

上圖節點間通訊模型

RaftProtocol/RaftProtocolHanlder? raft服務接口/處理器接口,raft服務接口定義外部,包括client和節點間訪問接口;處理器定義raft處理服務接口

ClientProtocol/ ClientProtocolHanlder 日志服務接口/處理器接口,日志服務接口定義外部,包括client和節點間訪問接口;處理器定義日志處理服務接口

RpcService 內置rpc client/rpc server, 對內使用NettyRemotingServer接收rpc請求,解釋rpc請求,轉發給Server;對外,使用NettyRemotingClient發送rpc請求到其他節點

Server ?handler的真正實現者

技術架構圖很直觀的展示rpc調用關系

客戶端通訊

Client組件是應用用于集成dledger,應用可使用client組件訪問集群

MetadataUpdate 定時更新leaderId,讓Client訪問領導者節點

DLedgerClientProtocol 定義了訪問集群的接口

擴展機制

Dledger提供rpc擴展機制,通過增加rpc處理器,DLedgerRpcService提供方法注冊用戶定義處理器

?系列文章

  • 架構,核心組件和rpc組件 完成
  • 心跳和選舉 TBD
  • 日志寫入/復制和存儲? 包括日志寫入和復制,日志存儲組件
  • 集成rocketmq? rocketmq使用dledger實現消息存儲復制;broker控制器 元數據復制
  • 快照/狀態機
  • 集群成員變更? 成員變更管理,節點的上線下線發現,dledger v0.4未實現,但計劃中,未來版本實現
  • jraft? “double check” ?多重分析,jraft比較忠實實現了raft算法,在dledger基礎上,再研究jraft對raft更深入的認識

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

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

相關文章

【pytorch16】MLP反向傳播

鏈式法則回顧 多輸出感知機的推導公式回顧 只與w相關的輸出節點和輸入節點有關 多層多輸入感知機 擴展為多層感知機的話,意味著還有一些層(理解為隱藏層σ函數),暫且設置為 x j x_{j} xj?層 對于 x j x_{j} xj?層如果把前面的…

迅捷PDF編輯器合并PDF

迅捷PDF編輯器是一款專業的PDF編輯軟件,不僅支持任意添加文本,而且可以任意編輯PDF原有內容,軟件上方的工具欄中還有豐富的PDF標注、編輯功能,包括高亮、刪除線、下劃線這些基礎的,還有規則或不規則框選、箭頭、便利貼…

【護眼小知識】護眼臺燈真的護眼嗎?防近視臺燈有效果嗎?

當前,近視問題在人群中愈發普遍,據2024年的統計數據顯示,我國兒童青少年的總體近視率已高達52.7%。并且近視背后潛藏著諸多眼部并發癥的風險,例如視網膜脫離、白內障以及開角型青光眼等,嚴重的情況甚至可能引發失明。為…

PMP--知識卡片--波士頓矩陣

文章目錄 記憶黑話概念作用圖示 記憶 一說到波士頓就聯想到波士頓龍蝦,所以波士頓矩陣跟動物有關,狗,牛。 黑話 你公司的現金牛業務,正在逐漸變成瘦狗,應盡快采取收割策略;問題業務的儲備太少&#xff0…

必須掌握的Linux的九大命令

ifconfig 命令用于配置和查看網絡接口的參數。 ping 命令用于測試主機之間的網絡連通性。 telnet用于通過Telnet協議連接到遠程主機。 telnet 127.0.0.1 8000 telnet example.com telnet example.com 8080 iostat 命令用于報告 CPU 統計信息和 I/O 設備負載。 iostat&…

護眼熱點:臺燈護眼是真的嗎?一起來看臺燈的功能作用有哪些

如今近視問題日益嚴峻,尤為引人矚目的是,高度近視學生群體占比已逼近10%的警戒線,且這一比例伴隨著學齡的增長而悄然攀升——從幼兒園6歲孩童中那令人憂慮的1.5%,到高中階段驚人的17.6%,每一組數據都敲響了保護兒童視力…

【Linux】靜態庫的制作和使用詳解

💐 🌸 🌷 🍀 🌹 🌻 🌺 🍁 🍃 🍂 🌿 🍄🍝 🍛 🍤 📃個人主頁 :阿然成長日記 …

代碼隨想錄算法訓練營第71天:路徑算法[1]

代碼隨想錄算法訓練營第71天:路徑算法 ? bellman_ford之單源有限最短路 卡碼網:96. 城市間貨物運輸 III(opens new window) 【題目描述】 某國為促進城市間經濟交流,決定對貨物運輸提供補貼。共有 n 個編號為 1 到 n 的城市&#xff0c…

【CT】LeetCode手撕—4. 尋找兩個正序數組的中位數

目錄 題目1- 思路2- 實現?4. 尋找兩個正序數組的中位數——題解思路 3- ACM 實現 題目 原題連接:4. 尋找兩個正序數組的中位數 1- 思路 思路 將尋找中位數 ——> 尋找兩個合并數組的第 K 大 (K代表中位數) 實現 ① 遍歷兩個數組 &am…

企業級監控系統Zabbix

文章目錄 Zabbix介紹Zabbix架構Zabbix serverZabbix agentZabbix proxy Zabbix Server的安裝Zabbix Agent的安裝監控主機流程zabbix_get自定義模板和監控項實戰用戶登錄數監控1.指定監控項命令2.重啟Agent服務3.在Server上創建監控項4.測試監控項5.查看監控項圖形 觸發器定義觸…

外泌體相關基因肝癌臨床模型預測——2-3分純生信文章復現——4.預后相關外泌體基因確定單因素cox回歸(2)

內容如下: 1.外泌體和肝癌TCGA數據下載 2.數據格式整理 3.差異表達基因篩選 4.預后相關外泌體基因確定 5.拷貝數變異及突變圖譜 6.外泌體基因功能注釋 7.LASSO回歸篩選外泌體預后模型 8.預后模型驗證 9.預后模型魯棒性分析 10.獨立預后因素分析及與臨床的…

【若依】關閉當前標簽頁并跳轉路由到其他頁面

使用場景如:當在新增/編輯路由頁面提交成功后,需要關閉當前頁,并跳轉回列表頁。 實現代碼: this.$store.dispatch("tagsView/delView", this.$route); //關閉當前頁 this.$router.replace({ path: "/xxx/xxx"…

【經驗總結】Springboot打印指定類的日志到指定文件中

原文地址:https://www.cnblogs.com/zeng1994/p/f9bff238b13a0bf8fb8bf88c41db7a34.html 以下內容已經過實踐,勘誤,總結 環境:Springboot2.5.2 公司有個項目,需要和幾個第三方系統對接。這種項目,日志一定要…

香橙派 AIpro 根據心情生成專屬音樂

香橙派 AIpro 根據心情生成專屬音樂 一、OrangePi AI pro 開發版參數介紹1.1 接口簡介1.2 OrangePi AI pro 的Linux系統功能適配情況1.3 開發板開機1.4 遠程連接到 OrangePi AIpro 二、開發環境搭建2.1 創建環境、代碼部署文件夾2.2 安裝 miniconda2.3 為 miniconda 更新國內源…

生態系統NPP及碳源、碳匯模擬技術教程

原文鏈接:生態系統NPP及碳源、碳匯模擬技術教程https://mp.weixin.qq.com/s?__bizMzUzNTczMDMxMg&mid2247608293&idx3&sn2604c5c4e061b4f15bb8aa81cf6dadd1&chksmfa826602cdf5ef145c4d170bed2e803cd71266626d6a6818c167e8af0da93557c1288da21a71&a…

【綜合能源】計及碳捕集電廠低碳特性及需求響應的綜合能源系統多時間尺度調度模型

目錄 1 主要內容 2 部分程序 3 實現效果 4 下載鏈接 1 主要內容 本程序是對《計及碳捕集電廠低碳特性的含風電電力系統源-荷多時間尺度調度方法》方法復現,非完全復現,只做了日前日內部分,并在上述基礎上改進升級為電熱綜合電源微網系統&…

vue+openlayers之幾何圖形交互繪制基礎與實踐

文章目錄 1.實現效果2.實現步驟3.示例頁面代碼3.基本幾何圖形繪制的關鍵代碼 1.實現效果 繪制點、線、多邊形、圓、正方形、長方形 2.實現步驟 引用openlayers開發庫。加載天地圖wmts瓦片地圖。在頁面上添加幾何圖形繪制的功能按鈕,使用下拉列表(sel…

程序員績效管理-進一步思考

工時管理也好、項目管理(軟件項目)也好,市面上已經很多了,你做這個和他們區別何在?大的公司一般都自己做,誰又為你買單?根據目前的反饋,主要的疑問就是這兩個問題。 進一步思考如下&…

基于JavaScript、puppeteer的爬蟲

前期準備: npm puppeteer import puppeteer from puppeteer; puppeteer文檔 第一步:啟動瀏覽器,跳轉到需要爬取的頁面 const browser await puppeteer.launch({ headless: false });const page await browser.newPage();await page.goto(url, { w…

【目標檢測實驗系列】YOLOv5模型改進:引入輕量化多維動態卷積ODConv,減少計算量的同時保持精度穩定或略微上漲!(內含源代碼,超詳細改進代碼流程)

1. 文章主要內容 本篇博客主要涉及輕量化多維動態卷積ODConv,融合到YOLOv5模型中,減少計算量的同時保持精度穩定或略微上漲。(通讀本篇博客需要7分鐘左右的時間)。 2. 介紹 ODconv沿著空間、輸入通道、輸出通道以及卷積核空間的核…