自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

從源碼上看,RocketMQ 5.0 跟 RocketMQ 4.x相比增加了哪幾個(gè)模塊

開發(fā) 架構(gòu)
本文從源碼角度講述了 RocketMQ 5.0 主要的變化。為了更好地?fù)肀г圃?RocketMQ 5.0 架構(gòu)上發(fā)生了比較大的變化,實(shí)現(xiàn)計(jì)算存儲(chǔ)相分離,并且引入 bazel 進(jìn)行構(gòu)建。

大家好,我是君哥。

今天來介紹一下 RocketMQ 5.0 源碼上的變化。

RocketMQ 5.0 是一個(gè)里程碑式的版本,經(jīng)歷了近 5 年的打磨,代碼變更達(dá)到 60%。

首先看一下源碼中模塊的變化,如下圖:

圖片

從圖中可以看到,RocketMQ 5.0 主要增加了 4 個(gè)模塊兒,下面介紹一下這 4 個(gè)模塊兒。

1、bazel

bazel 是 Google 開源的構(gòu)建工具,目前廣泛用于云計(jì)算領(lǐng)域的開源軟件(如 Kubernetes)構(gòu)建,它有如下特點(diǎn):1.支持增量式編譯、支持緩存、支持分布式擴(kuò)展;2.bazel 可以清晰地以依賴關(guān)系圖的方式展現(xiàn)出當(dāng)前的依賴關(guān)系,比 makefile 更加方便;3.bazel支持多語(yǔ)言構(gòu)建。

RocketMQ 5.0 引入了 bazel 構(gòu)建。

2、container

在 RocketMQ 4.x 時(shí)代,如果采用 Master-Slave 架構(gòu),Broke 節(jié)點(diǎn)一旦掛了,是不能自動(dòng)切換的。RocketMQ 5.0 對(duì)這個(gè)架構(gòu)進(jìn)行了改進(jìn),引入了 BrokerContainer 的概念,一個(gè) BrokerContainer 中可以部署多個(gè) Broker,這些 Broker 擁有獨(dú)立的端口,功能完全獨(dú)立,并且可以共享同一個(gè)節(jié)點(diǎn)的資源。如下圖:

圖片

有創(chuàng)造性的是,在一個(gè) BrokerContainer 中可以交叉部署 Master 和 Slave 節(jié)點(diǎn),如下圖兩節(jié)點(diǎn)對(duì)等部署:

圖片

這樣做有即使 Node1 節(jié)點(diǎn)掛了,Node2 節(jié)點(diǎn)中的 Broker1 可以提供讀功能,并不會(huì)丟消息,而 Broker2 則可以繼續(xù)提供讀寫功能。

3、controller

RocketMQ 5.0 引入了 DLedger Controller 架構(gòu),解決傳統(tǒng) DLedger 架構(gòu)的不足。

(1)傳統(tǒng) DLedger

在 RocketMQ 4.x 中,如果采用 DLedger 架構(gòu)部署,Broker 掛掉后,是可以自動(dòng)實(shí)現(xiàn)主從切換的。但這樣需要用 Raft Commitlog 來取代 RocketMQ 自身的 Commitlog,因?yàn)橹挥羞@樣 Commitlog 才會(huì)具有選舉的能力。Broker 主節(jié)點(diǎn)掛掉后,從節(jié)點(diǎn)依照 DLedger 協(xié)議進(jìn)行內(nèi)部協(xié)商,選舉出新的主節(jié)點(diǎn),自動(dòng)完成主備切換。

不過這樣存在幾個(gè)問題:

1.消息日志副本數(shù)必須是 3 個(gè)以上,這個(gè)是 Raft 協(xié)議自動(dòng)選主的要求,造成資源浪費(fèi);

2.Raft 選主過程中必須有多數(shù)節(jié)點(diǎn)同意才能選主成功,副本數(shù)越多時(shí)間開銷會(huì)越大,這會(huì)加大 ACK 延時(shí);

3.CommitLog 主從同步需要使用 DLedger 庫(kù),也就是說 CommitLog 被看作是 Raft log 進(jìn)行復(fù)制,這樣 RocketMQ 原生的零拷貝、堆外內(nèi)存的優(yōu)勢(shì)無法使用了。

(2)DLedgerController

通過引入 DLedger Controller 架構(gòu),RocketMQ 將 DLedger 選主切換的能力獨(dú)立成一個(gè)可以拔插的組件,這樣 Master-Slave 架構(gòu)也可以具有 Failover 的能力。

DLedger Controller 可以獨(dú)立部署,也可以部署在 NameServer 中,共享 NameServer 資源。

部署在 NameServer:

圖片

獨(dú)立部署:

圖片

4、Proxy

RocketMQ 5.0 為了更好地?fù)肀г圃瑢?shí)現(xiàn)了計(jì)算和存儲(chǔ)相分離。把計(jì)算相關(guān)的功能抽象到了 Proxy,協(xié)議適配、權(quán)限管理、消息管理等。Broker 則專注于存儲(chǔ),架構(gòu)如下圖:?

圖片

這樣 RocketMQ 可以更好地上云,更好地進(jìn)行資源調(diào)度。?

5、總結(jié)

本文從源碼角度講述了 RocketMQ 5.0 主要的變化。

為了更好地?fù)肀г圃?RocketMQ 5.0 架構(gòu)上發(fā)生了比較大的變化,實(shí)現(xiàn)計(jì)算存儲(chǔ)相分離,并且引入 bazel 進(jìn)行構(gòu)建。

在高可用方面,RocketMQ 5.0  對(duì)傳統(tǒng)的基于 DLedger 的高可用進(jìn)行了改造,同時(shí)引入了 BrokerContainer 對(duì)等部署方案。

希望本文對(duì)你理解新版本的 RocketMQ 有所幫助。

責(zé)任編輯:姜華 來源: 君哥聊技術(shù)
相關(guān)推薦

2021-02-02 16:34:12

useMemo性能優(yōu)化函數(shù)

2020-06-12 15:06:12

GoogleCBRSWi-Fi

2010-10-19 11:30:16

IT培訓(xùn)

2024-11-08 08:34:59

RocketMQ5.Remoting通信

2023-04-11 08:35:22

RocketMQ云原生

2012-04-30 20:44:55

2022-05-23 09:18:55

RocketMQ存儲(chǔ)中間件

2021-08-07 15:29:48

區(qū)塊鏈比特幣技術(shù)

2015-10-19 17:36:19

MOST內(nèi)核Linux

2023-01-16 18:22:53

Discourse開源

2009-06-11 17:18:23

EJB3.1Singleton B

2016-11-15 15:16:39

Linux操作系統(tǒng)Windows

2023-05-16 08:31:09

BrokerReef版本

2020-05-15 19:25:09

HTML5JavaScript前端

2022-02-10 10:52:09

網(wǎng)絡(luò)攻擊網(wǎng)絡(luò)安全漏洞

2020-12-29 09:37:41

漏洞網(wǎng)絡(luò)安全網(wǎng)絡(luò)攻擊

2022-01-22 19:32:16

QQ手機(jī)QQ移動(dòng)應(yīng)用

2021-03-24 07:16:57

RocketMQ源碼解析Topic

2017-11-08 09:02:23

CIO信息化轉(zhuǎn)型

2023-12-15 14:57:39

ReactNativeFabric
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)