AVt天堂网 手机版,亚洲va久久久噜噜噜久久4399,天天综合亚洲色在线精品,亚洲一级Av无码毛片久久精品

當前位置:首頁 > 科技  > 軟件

九個問答牢記 RocketMQ 架構

來源: 責編: 時間:2023-12-18 17:37:28 264觀看
導讀RocketMQ是Java兄弟們常用的消息中間件,雖說常用,但對于RocketMQ架構經常忘記。究其原因就l兩點:忙于業務開發然后長時間不看則忘了、不理解架構設計的根本原因記不牢。本文用大白話描述架構設計過程,牢記RocketMQ架構。

RocketMQ是Java兄弟們常用的消息中間件,雖說常用,但對于RocketMQ架構經常忘記。究其原因就l兩點:忙于業務開發然后長時間不看則忘了、不理解架構設計的根本原因記不牢。本文用大白話描述架構設計過程,牢記RocketMQ架構。pYi28資訊網——每日最新資訊28at.com

pYi28資訊網——每日最新資訊28at.com

一、架構的思考過程

首先,在記框架的原理和架構時,要先把握全局的脈絡,在思考為什么這么設計,最后才是思考細節,這樣才能記得牢。本文通過層層追問的方式,一步步解說RocketMQ架構設計的原因。pYi28資訊網——每日最新資訊28at.com

1、基本形態

(1) 如果你是RocketMQ的開發者,讓你來設計一個消息中間件,你會設計哪些角色?pYi28資訊網——每日最新資訊28at.com

答:起碼要設計3個角色:pYi28資訊網——每日最新資訊28at.com

  • 消息中轉站:Broker,Broker是核心,負責:接受消息、存儲消息、處理消費者的消費請求、備份容災等。
  • 生產者:Producer,生產消息然后投遞到Broker。
  • 消費者:Consumer,從Broker中消費消息。

pYi28資訊網——每日最新資訊28at.com

2.消息怎么存

(2) 有了基本形態后,我們知道,具體的消息肯定是存在Broker里,那消息在Broker里應該怎么存儲呢?pYi28資訊網——每日最新資訊28at.com

答:這里借鑒實際生活中的案例,比如物流公司在發快遞時,發往同一個城市的快遞,肯定安排在一起,然后用同一批貨車運往那個城市,這樣整個物流體系運轉是最高效的。這里就用到了聚類的方式,讓相似的事物聚到一起。pYi28資訊網——每日最新資訊28at.com

同樣的,在設計怎么存儲消息時,也用到聚類的概念,我們把相同類型的消息,放到一個邏輯空間里,這個邏輯空間就是主題Topic。pYi28資訊網——每日最新資訊28at.com

pYi28資訊網——每日最新資訊28at.com

(3) 那Topic的內部又是什么結構呢?pYi28資訊網——每日最新資訊28at.com

答:Topic的內部肯定是一個個的消息對象,那這些消息對象是以什么數據結構存在一起的呢?先發的消息,盡量要保證先被消費到,這里就用到了先進先出的數據結構-隊列,這就是消息隊列MessageQueue。所以,Topic內部是由MessageQueue組成,消息隊列內部存放著一個個的消息對象。pYi28資訊網——每日最新資訊28at.com

pYi28資訊網——每日最新資訊28at.com

3.引入集群

(4) 我們知道Broker是RocketMQ的核心,這么重要的核心掛了怎么辦?pYi28資訊網——每日最新資訊28at.com

答:既然是RocketMQ的核心,肯定要保證高可用不能掛,所以RocketMQ 會部署多臺 Broker 組成一個集群對外提供服務。pYi28資訊網——每日最新資訊28at.com

pYi28資訊網——每日最新資訊28at.com

4.再說消息怎么存

(5) RocketMQ為了保障高可用,會部署多臺Broker組成集群,那么集群場景下有多臺機器,Topic怎么存呢?pYi28資訊網——每日最新資訊28at.com

答:我們要學習毛主席的思想,“雞蛋不能放在一個籃子里”。既然是要存大量的消息,又有多臺Broker,為了分擔單臺機器性能壓力、分擔存儲容量壓力、保證數據容災,所以將不同的Topic存儲到不同的Broker里。pYi28資訊網——每日最新資訊28at.com

還是按照上面物流的例子說明,比如從北京發往南京的快遞,肯定用同一批貨車運送,快遞少則用一輛貨車,快遞多則用多輛貨車,快遞被劃分到了多個貨車上。同樣的,RocketMQ里的Topic也是分散存儲在多臺 Broker 上的,每臺Broker上存儲的消息內容是不同的。pYi28資訊網——每日最新資訊28at.com

(6) 如果不同的Topic存儲在不同的Broker里,可能某個topic數據太大了,出現數據傾斜直接干爆某個Broker怎么辦?pYi28資訊網——每日最新資訊28at.com

答:上面我們提到,Topic實際上是一個個隊列的集合,那只需要將隊列分散存儲到不同的Broker上就行了。pYi28資訊網——每日最新資訊28at.com

pYi28資訊網——每日最新資訊28at.com

(7) 如果不同的Topic分散存儲在不同的Broker里,還是有數據丟失的風險,只不過某個topic丟失的數據變小而已,這種情況的數據容災備份怎么做呢?pYi28資訊網——每日最新資訊28at.com

答:這時候就會用到Broker的主-從架構,Broker按角色分為Master和Slave,主從之間會定期地進行數據同步。Master 負責響應客戶端的讀寫請求、存儲消息、處理消費者請求等,而 Slave 只負責同步 Master 的數據。pYi28資訊網——每日最新資訊28at.com

pYi28資訊網——每日最新資訊28at.com

5.說說NameServer

(8) Broker既然是集群,那生產者在投遞消息時,總得知道有哪些Broker吧,總得知道要往哪個Broker里投遞消息吧,這又要怎么做呢?pYi28資訊網——每日最新資訊28at.com

答:RocketMQ引入了NameServer的概念,NameServer相當于大管家,RocketMQ里的所有基礎信息它都知道。NameServer 存儲了RocketMQ 集群的元數據。NameServer 中存放的元數據主要有:pYi28資訊網——每日最新資訊28at.com

  • 集群里都有哪些Broker?
  • 有哪些生產者?
  • 有哪些消費者?
  • 集群里都有哪些 Topic?
  • 這些 Topic 的消息隊列分別存在哪些 Broker 上?

(9) 那Nameserver如何知道這些消息呢?pYi28資訊網——每日最新資訊28at.com

答:類似古時候某個人去府里當差,當差之前要把自己的所有信息登記在冊。同樣的,Broker、Producer、Consumer在啟動時也會將數據注冊到 NameServer。pYi28資訊網——每日最新資訊28at.com

Broker 在啟動時會將自己注冊到 NameServer 上,通過心跳持續更新元數據。同樣的,Producer、Consumer也會和NameServer建立連接、動態交互集群中的數據,這樣即方便上報自己的信息和也方便獲取集群里的其他信息。pYi28資訊網——每日最新資訊28at.com

pYi28資訊網——每日最新資訊28at.com

至此,RocketMQ的架構圖已經成型,每一個部件這么設計的原因也很清晰。pYi28資訊網——每日最新資訊28at.com

二、總結

RocketMQ里的核心角色有4個:Broker、Producer、Consumer、NameServer,消息存儲的核心對象有兩個:Topic、MessageQueue。pYi28資訊網——每日最新資訊28at.com

為了保證數據不丟失和數據不傾斜,同一個Topic里的MessageQueue會分散存儲在不同的Broker里。pYi28資訊網——每日最新資訊28at.com

本文鏈接:http://www.tebozhan.com/showinfo-26-48755-0.html九個問答牢記 RocketMQ 架構

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: C++17中的并行功能:提升性能的新利器

下一篇: Golang清晰代碼指南

標簽:
  • 熱門焦點
  • 鴻蒙OS 4.0公測機型公布:甚至連nova6都支持

    華為全新的HarmonyOS 4.0操作系統將于今天下午正式登場,官方在發布會之前也已經正式給出了可升級的機型產品,這意味著這些機型會率先支持升級享用。這次的HarmonyOS 4.0支持
  • 7月安卓手機好評榜:三星S23Ultra好評率第一

    性能榜和性價比榜之后,我們來看最后的安卓手機好評榜,數據來源安兔兔評測,收集時間2023年7月1日至7月31日,僅限國內市場。第一名:三星Galaxy S23 Ultra好評率:95.71%在即將迎來新
  • 5月iOS設備性能榜:M1 M2依舊是榜單前五

    和上個月一樣,沒有新品發布的iOS設備性能榜的上榜設備并沒有什么更替,僅僅只有跑分變化而產生的排名變動,剛剛開始的蘋果WWDC2023,推出的產品也依舊是新款Mac Pro、新款Mac Stu
  • JavaScript 混淆及反混淆代碼工具

    介紹在我們開始學習反混淆之前,我們首先要了解一下代碼混淆。如果不了解代碼是如何混淆的,我們可能無法成功對代碼進行反混淆,尤其是使用自定義混淆器對其進行混淆時。什么是混
  • Python異步IO編程的進程/線程通信實現

    這篇文章再講3種方式,同時講4中進程間通信的方式一、 Python 中線程間通信的實現方式共享變量共享變量是多個線程可以共同訪問的變量。在Python中,可以使用threading模塊中的L
  • 梁柱接棒兩年,騰訊音樂闖出新路子

    文丨田靜 出品丨牛刀財經(niudaocaijing)7月5日,企鵝FM發布官方公告稱由于業務調整,將于9月6日正式停止運營,這意味著騰訊音樂長音頻業務走向消亡。騰訊在長音頻領域還在摸索。為
  • 微博大門常打開,迎接海外畫師漂洋東渡

    作者:互聯網那些事“起猛了,我能看得懂日語了”。“為什么日本人說話我能聽懂?”“中文不像中文,日語不像日語,但是我竟然看懂了”…&hell
  • 三星Galaxy Z Fold5今日亮相:厚度縮減但仍略顯厚重

    據官方此前宣布,三星將于7月26日也就是今天在韓國首爾舉辦Unpacked活動,屆時將帶來帶來包括Galaxy Buds 3、Galaxy Watch 6、Galaxy Tab S9、Galaxy
  • 2022爆款:ROG魔霸6 冰川散熱系統持續護航

    喜逢開學季,各大商家開始推出自己的新產品,進行打折促銷活動。對于忠實的端游愛好者來說,能夠擁有一款夢寐以求的筆記本電腦是一件十分開心的事。但是現在的
Top