最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

19 新技術(shù)引入:給團(tuán)隊(duì)分享 RocketMQ 的架構(gòu)原理和使用方式

2023-06-07 19:16 作者:儒猿課堂  | 我要投稿

新技術(shù)引入:給團(tuán)隊(duì)分享 RocketMQ 的架構(gòu)原理和使用方式


1、來(lái)自leader的技術(shù)分享任務(wù)


今天明哥上班之后,立馬找到小猛,給他布置了一個(gè)任務(wù)。


明哥說(shuō),現(xiàn)在既然已經(jīng)初步完成了MQ技術(shù)調(diào)研,確定了我們一步到位用阿里開(kāi)源的RocketMQ,那么就可以進(jìn)行下一步了,希望你能對(duì)RocketMQ技術(shù)做一些初步的研究。


第一步,可以看看RocketMQ大體上是如何運(yùn)行的,也就是他的基本原理,希望你能通過(guò)查閱資料,研究一下RocketMQ技術(shù),然后寫(xiě)一份PPT,給團(tuán)隊(duì)里的其他同學(xué)做一次技術(shù)分享。


這里我提幾個(gè)要求,就是我們想要知道的關(guān)于RocketMQ的東西有哪些。比如:

  • RocketMQ是如何集群化部署來(lái)承載高并發(fā)訪問(wèn)的?

  • 如果RocketMQ中要存儲(chǔ)海量消息,如何實(shí)現(xiàn)分布式存儲(chǔ)架構(gòu)?

我希望你能把這些問(wèn)題搞清楚。


小猛聽(tīng)完明哥的要求之后,立馬就開(kāi)始查閱了大量資料,開(kāi)始寫(xiě)他的第一份技術(shù)分享PPT了。


很快,小猛花了一整天的時(shí)間就完成了這次研究和分享PPT的編寫(xiě),然后跟團(tuán)隊(duì)成員約了一個(gè)時(shí)間集中在一個(gè)會(huì)議室里為大家進(jìn)行RocketMQ原理的分享。


2、MQ如何集群化部署來(lái)支撐高并發(fā)訪問(wèn)?


首先說(shuō)第一個(gè)問(wèn)題,MQ如何集群化部署來(lái)支撐高并發(fā)訪問(wèn)?


這里就先講一個(gè)概念,假設(shè)RocketMQ部署在一臺(tái)機(jī)器上,即使這臺(tái)機(jī)器配置很高,但是一般來(lái)說(shuō)一臺(tái)機(jī)器也就是支撐10萬(wàn)+的并發(fā)訪問(wèn)。


小猛說(shuō)著打開(kāi)一張圖。

? ? ? ? ? ?

?? ? ? ? ? ?

那么這個(gè)時(shí)候,假設(shè)有大量的系統(tǒng)都要往RocketMQ里高并發(fā)的寫(xiě)入消息,可能達(dá)到每秒有幾十萬(wàn)請(qǐng)求,這個(gè)時(shí)候怎么辦呢?


沒(méi)關(guān)系,RocketMQ是可以集群化部署的,可以部署在多臺(tái)機(jī)器上,假設(shè)每臺(tái)機(jī)器都能抗10萬(wàn)并發(fā),然后你只要讓幾十萬(wàn)請(qǐng)求分散到多臺(tái)機(jī)器上就可以了,讓每臺(tái)機(jī)器承受的QPS不超過(guò)10萬(wàn)不就行了。


小猛說(shuō)著打開(kāi)了下一張圖。

? ? ? ? ? ?

?? ? ? ? ? ?

這其實(shí)就是RocketMQ集群化部署抗下高并發(fā)的主要原理,當(dāng)然,具體怎么做才能讓系統(tǒng)的流量分散在RocketMQ部署的多臺(tái)機(jī)器上,這個(gè)以后再找機(jī)會(huì)做一個(gè)比較詳細(xì)的分享,今天主要先講大體上的一個(gè)架構(gòu)原理。


3、MQ如果要存儲(chǔ)海量消息應(yīng)該怎么做?


現(xiàn)在來(lái)說(shuō)第二個(gè)問(wèn)題,MQ會(huì)收到大量的消息,這些消息并不是立馬就會(huì)被所有的消費(fèi)方獲取過(guò)去消費(fèi)的,所以一般MQ都得把消息在自己本地磁盤(pán)存儲(chǔ)起來(lái),然后等待消費(fèi)方獲取消息去處理。


既然如此,MQ就得存儲(chǔ)大量的消息,可能是幾百萬(wàn)條,可能幾億條,甚至萬(wàn)億條,這么多的消息在一臺(tái)機(jī)器上肯定是沒(méi)法存儲(chǔ)的,RocketMQ是如何分布式存儲(chǔ)海量消息的呢?


延續(xù)上面的圖,其實(shí)發(fā)送消息到MQ的系統(tǒng)會(huì)把消息分散發(fā)送給多臺(tái)不同的機(jī)器,假設(shè)一共有1萬(wàn)條消息,分散發(fā)送給10臺(tái)機(jī)器,可能每臺(tái)機(jī)器就是接收到1000條消息,如下圖:

? ? ? ? ? ?

?? ? ? ? ? ?

其次,每臺(tái)機(jī)器上部署的RocketMQ進(jìn)程一般稱之為Broker,每個(gè)Broker都會(huì)收到不同的消息,然后就會(huì)把這批消息存儲(chǔ)在自己本地的磁盤(pán)文件里


這樣的話,假設(shè)你有1億條消息,然后有10臺(tái)機(jī)器部署了RocketMQ的Broker,理論上不就可以讓每臺(tái)機(jī)器存儲(chǔ)1000萬(wàn)條消息了嗎?


小猛接著打開(kāi)下一張圖。

? ? ? ? ? ?

? ? ? ? ? ? ?

所以本質(zhì)上RocketMQ存儲(chǔ)海量消息的機(jī)制就是分布式的存儲(chǔ)


所謂分布式存儲(chǔ),就是把數(shù)據(jù)分散在多臺(tái)機(jī)器上來(lái)存儲(chǔ),每臺(tái)機(jī)器存儲(chǔ)一部分消息,這樣多臺(tái)機(jī)器加起來(lái)就可以存儲(chǔ)海量消息了!


4、高可用保障:萬(wàn)一Broker宕機(jī)了怎么辦?


小猛繼續(xù)說(shuō)下一個(gè)問(wèn)題,要是任何一臺(tái)Broker突然宕機(jī)了怎么辦?那不就會(huì)導(dǎo)致RocketMQ里一部分的消息就沒(méi)了嗎?這就會(huì)導(dǎo)致MQ的不可靠和不可用,這個(gè)問(wèn)題怎么解決?


RocketMQ的解決思路是Broker主從架構(gòu)以及多副本策略。


簡(jiǎn)單來(lái)說(shuō),Broker是有Master和Slave兩種角色的,小猛打開(kāi)一張圖。

? ? ? ? ? ?

?? ? ? ? ? ?

Master Broker收到消息之后會(huì)同步給Slave Broker,這樣Slave Broker上就能有一模一樣的一份副本數(shù)據(jù)!


這樣同一條消息在RocketMQ整個(gè)集群里不就有兩個(gè)副本了,一個(gè)在Master Broker里,一個(gè)在Slave Broker里!


這個(gè)時(shí)候如果任何一個(gè)Master Broker出現(xiàn)故障,還有一個(gè)Slave Broker上有一份數(shù)據(jù)副本,可以保證數(shù)據(jù)不丟失,還能繼續(xù)對(duì)外提供服務(wù),保證了MQ的可靠性和高可用性


5、數(shù)據(jù)路由:怎么知道訪問(wèn)哪個(gè)Broker?


現(xiàn)在又有一個(gè)問(wèn)題了,對(duì)于系統(tǒng)來(lái)說(shuō),要發(fā)送消息到MQ里去,還要從MQ里消費(fèi)消息


那么大家怎么知道有哪些Broker?怎么知道要連接到哪一臺(tái)Broker上去發(fā)送和接收消息?這是一個(gè)大問(wèn)題!


所以RocketMQ為了解決這個(gè)問(wèn)題,有一個(gè)NameServer的概念,他也是獨(dú)立部署在幾臺(tái)機(jī)器上的,然后所有的Broker都會(huì)把自己注冊(cè)到NameServer上去,NameServer不就知道集群里有哪些Broker了?


如下圖所示:

? ? ? ? ? ?

? ? ? ? ? ? ?

然后對(duì)于我們的系統(tǒng)而言,如果他要發(fā)送消息到Broker,會(huì)找NameServer去獲取路由信息,就是集群里有哪些Broker等信息


如果系統(tǒng)要從Broker獲取消息,也會(huì)找NameServer獲取路由信息,去找到對(duì)應(yīng)的Broker獲取消息。


小猛說(shuō)著打開(kāi)了最后一張圖。

? ? ? ? ? ?

? ? ? ? ? ??

基本上這個(gè)就是RocketMQ最基本的一個(gè)架構(gòu)原理圖。


6、后續(xù)的疑問(wèn)。。。


小猛分享完之后,滿心歡喜的期望大家都給他一陣熱烈的掌聲,結(jié)果沒(méi)想到的是其他的兄弟聽(tīng)完之后,每個(gè)人都有一種沉思的表情,似乎有很多的不解,突然大家開(kāi)始七嘴八舌的問(wèn)小猛很多的問(wèn)題:


“小猛,大的架構(gòu)原理是知道了,但是發(fā)送消息的時(shí)候面對(duì)N多臺(tái)機(jī)器,到底應(yīng)該向哪一臺(tái)上面的Broker發(fā)送過(guò)去?”


“小猛,RocketMQ的數(shù)據(jù)模型是什么,我們發(fā)送消息過(guò)去的時(shí)候,是發(fā)送到什么里面去,隊(duì)列還是什么?”


”小猛,RocketMQ接收到數(shù)據(jù)之后是直接寫(xiě)磁盤(pán)嗎,那性能會(huì)不會(huì)太差了?”


”小猛,小猛,哎,你怎么不說(shuō)話了。。。。”


小猛聽(tīng)著大家七嘴八舌的提問(wèn),真是汗顏,自己才剛剛了解了一些基本原理,還難以解答這么多的問(wèn)題??!


這時(shí)明哥出來(lái)打了圓場(chǎng),大家稍安勿躁,稍安勿躁,我正式給小猛一個(gè)任務(wù),讓他來(lái)作為我們團(tuán)隊(duì)的RocketMQ技術(shù)先鋒,大家的問(wèn)題后續(xù)小猛慢慢研究清楚了,然后給大家多做分享,一定讓大家對(duì)RocketMQ有一個(gè)透徹的了解,大家覺(jué)得怎么樣?


大家一聽(tīng),一起大喊:小猛,靠你了?。?/p>


小猛瞬間腦門(mén)黑線,真是壓力山大啊。。。。

End

專欄版權(quán)歸公眾號(hào)儒猿技術(shù)窩所有

未經(jīng)許可不得傳播,如有侵權(quán)將追究法律責(zé)任

19 新技術(shù)引入:給團(tuán)隊(duì)分享 RocketMQ 的架構(gòu)原理和使用方式的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
黄骅市| 贵定县| 西林县| 宁晋县| 明溪县| 韩城市| 孟连| 和平区| 华安县| 德保县| 锡林郭勒盟| 灵武市| 大兴区| 锡林郭勒盟| 望都县| 灌南县| 芜湖市| 南平市| 东乡族自治县| 永善县| 志丹县| 镇安县| 崇信县| 岚皋县| 永德县| 子洲县| 兴仁县| 涪陵区| 炎陵县| 开封市| 庆元县| 兴隆县| 舟曲县| 从江县| 获嘉县| 舒兰市| 策勒县| 晴隆县| 娄底市| 穆棱市| 高碑店市|