1. 程式人生 > 其它 >全網首發Spring5祕籍手冊+知識導圖,絕對乾貨

全網首發Spring5祕籍手冊+知識導圖,絕對乾貨

全網首發Spring5祕籍手冊+知識導圖,絕對乾貨

NameServer的部署

關於NameServer,我們之前的文章已經詳細講解過了叢集化的內容,這裡直接把它部署到三臺機器上,作為一個高可用叢集

Broker的部署

Broker的部署我們之前也有講到過,主要使用的是4.5版本後的Dledger自動化切換主從的叢集

Broker與NameServer之間的通訊協議是什麼呢?http、rpc還是tcp呢?

其實它們之間採用的是TCP長連線通訊,也就是說Broker會跟每個NameServer建立TCP長連線,然後定時通過TCP長連線傳送心跳請求過去。

訪問MQ的系統(生產者和消費者)的部署

一定會有大量的系統訪問RocketMQ,因為RocketMQ就是為此而生的,有些系統自己本身既是生產者又是消費者,所以這些系統的部署也要考慮進去。

對這些系統部署的考慮,其實不應該是搞MQ的部門來考慮的,如果系統本身是自己公司的,可以提出一些建議,讓生產者和消費者都叢集化部署,保證高可用。但如果是第三方系統,那就無法插手了,我們能做到的只有考慮第三方系統崩潰,無法與MQ正常通訊的情況下,如何讓MQ正常運轉。

Topic是什麼

Topic是mq的核心資料模型,如果直接翻譯是主題的意思,但是聽到主題的解釋,是不是一臉懵逼,是不是瞬間想到的是手機主題,電腦主題。

所以它不能直譯,它表達的就是一個資料集合的含義,集合的是同一類的資料,不同型別的資料存到不同的Topic中。

所以系統無論是要寫入訊息還是讀取資料,最開始都是要先定義Topic的,然後再從定義的Topic中獲取同類型的資料。

那麼Topic是如何在Broker中儲存的呢?

儲存的方式其實就是分散式儲存。我們在定義Topic的時候指定它裡面的資料分佈到多臺的Broker上進行儲存,這裡要注意的一點是,實際上分佈的物件是MasterBroker,SlaveBroker會向MasterBroker拉取資料,作為一個副本存在。而Broker在向NameServer傳送心跳的時候,會把Topic儲存在哪些Broker中的資訊告訴NameServer。

生產者如何傳送訊息給Broker

前邊我們聊過,傳送訊息前首先是定義Topic,然後傳送訊息的時候是要指定你要傳送到哪個Topic中去的。

既然我們知道了要傳送到哪個Topic中,下一步就是要定位Topic的位置,如何定位呢?就是與NameServer建立Tcp長連線,定時拉取註冊資訊,可以獲取到這個Topic目前被分配到哪些Broker中。然後就可以根據負載均衡演算法,選定一臺Broker(具體的負載均衡演算法後邊文章再介紹)。

選定了Broker後,就可以再與Broker建立Tcp長連線,通過Tcp長連線傳送訊息給Broker中的Topic。

而Broker在接收到訊息後,就會把訊息儲存到磁碟中,再往後就是SlaveBroker與MasterBroker資料同步,形成副本,保證高可用了。

整個過程就是這樣的。

消費者如何從Broker上消費訊息

說完了生產者傳送訊息的過程,我們再來聊聊消費者消費訊息的過程。

其實消費者消費訊息的過程和生產者是類似的,同樣第一步也是定義Topic,然後從NameServer獲取資訊,定位到Topic所在的多個Broker,之後負載均衡定位到要訪問的Broker,與Broker建立連接獲取訊息。

這裡唯一不同的就是,再獲取訊息的時候是可能在MasterBroker上獲取的,也可能在SlaveBroker上獲取,要依據當時的情況而定。

整體架構總結

最後我們再來看一看這套架構,是可以實現完全的高可用的。

NameServer叢集化部署,Broker叢集化部署,還可以通過Dledger自動化切換主從,生產者消費者也是叢集部署,隨便掛了一臺不受影響。

而且這套架構也不怕高併發,高併發下的訊息可以分佈到多個Broker下處理,減少系統壓力。

然後我們的叢集可以儲存海量的訊息,因為儲存方式是分散式儲存的。

最後,這套架構是具有可擴充套件性的,如果業務需求併發量增大,也是可以擴充套件Broker的數量以支援更高的併發和更大的儲存的。

這樣我們的RocketMQ的生產部署架構就算完成了。

好了,今天就說到這裡,歡迎小夥伴們一起走入訊息中介軟體的世界。

總結

一般像這樣的大企業都有好幾輪面試,所以自己一定要花點時間去收集整理一下公司的背景,公司的企業文化,俗話說「知己知彼百戰不殆」,不要盲目的去面試,還有很多人關心怎麼去跟HR談薪資。

這邊給大家一個建議,如果你的理想薪資是30K,你完全可以跟HR談33~35K,而不是一下子就把自己的底牌暴露了出來,不過肯定不能說的這麼直接,比如原來你的公司是25K,你可以跟HR講原來的薪資是多少,你們這邊能給到我的是多少?你說我這邊希望可以有一個20%漲薪。

最後再說幾句關於招聘平臺的,總之,簡歷投遞給公司之前,請確認下這家公司到底咋樣,先去百度瞭解下,別被坑了,每個平臺都有一些居心不良的廣告黨等著你上鉤,千萬別上當!!!

提供【免費】的Java架構學習資料,學習技術內容包含有:Spring,Dubbo,MyBatis, RPC, 原始碼分析,高併發、高效能、分散式,效能優化,微服務 高階架構開發等等。

Java全套進階資料點這裡免費領取

還有Java核心知識點+全套架構師學習資料和視訊+一線大廠面試寶典+面試簡歷模板可以領取+阿里美團網易騰訊小米愛奇藝快手嗶哩嗶哩面試題+Spring原始碼合集+Java架構實戰電子書。