1睁冬、今日任務(wù)
- RocketMQ 是如何集群化部署承載高并發(fā)請(qǐng)求的?
- RocketMQ 是如何存儲(chǔ)海量海量信息的看疙,如何實(shí)現(xiàn)分布式存儲(chǔ)的痴突?
- RocketMQ 是如果 Master 節(jié)點(diǎn)掛掉了怎么辦?豈不是會(huì)丟失一部分?jǐn)?shù)據(jù)
- RocketMQ 是如何知道要發(fā)送到哪些 Broker 上去的狼荞?
2、MQ 如何集群化 部署承載高并發(fā)請(qǐng)求帮碰?
一臺(tái)高配置的機(jī)器相味,部署了 RocketMQ 之后,可以支持 10 萬(wàn)+并發(fā)的訪(fǎng)問(wèn)殉挽,
答案: RocketMQ 可以集群化部署丰涉,可以部署再多臺(tái)機(jī)器上面,每臺(tái)機(jī)器可以承載 10 萬(wàn)+的高并發(fā)請(qǐng)求斯碌,那么 RocketMQ 集群就可以承載幾十萬(wàn)+并發(fā)請(qǐng)求一死。
3、RocketMQ 如何存儲(chǔ)海量消息的傻唾?
RocketMQ 收到消息之后投慈,不會(huì)里面就讓消費(fèi)者進(jìn)行消費(fèi),而是先將消息存儲(chǔ)到自己的本地磁盤(pán)中冠骄,等需要消費(fèi)的時(shí)候再進(jìn)行處理伪煤。
答案:每臺(tái)機(jī)器上部署的 RocketMQ 進(jìn)程稱(chēng)之為 Broker,每個(gè) Broker 會(huì)收到不同的消息凛辣,然后每個(gè) Broker 就會(huì)將收到的消息存儲(chǔ)到自己的本地磁盤(pán)中抱既。
RocketMQ 存儲(chǔ)海量消息機(jī)制的關(guān)鍵是可以實(shí)現(xiàn)分布式存儲(chǔ),將海量消息均衡的分布在 RocketMQ 集群的各臺(tái)機(jī)器扁誓,這樣每臺(tái)機(jī)器可以存儲(chǔ)部分消息數(shù)據(jù)防泵,多臺(tái)機(jī)器既可以存儲(chǔ)海量消息蚀之。
4、RocketMQ是如何保證高可用的捷泞?如果Broker宕機(jī)了怎么辦足删?豈不是部分消息數(shù)據(jù)會(huì)丟失。
Rocket進(jìn)程簡(jiǎn)稱(chēng)為Broker肚邢,一個(gè)RocketMQ有多個(gè)Broker壹堰,每個(gè)Broker存儲(chǔ)部分消息數(shù)據(jù),如果Broker宕機(jī)了骡湖,豈不是會(huì)丟失部分的數(shù)據(jù)贱纠。
答案:RocketMQ實(shí)現(xiàn)高可用機(jī)制的關(guān)鍵是 Broker主從機(jī)制和多副本策略。Broker有兩種角色响蕴,Master 和 Slave谆焊,一個(gè)Broker最少有一個(gè)Master節(jié)點(diǎn),一個(gè)Slave節(jié)點(diǎn)浦夷。 Master Node收到消息之后辖试,會(huì)將消息同步給Slave節(jié)點(diǎn),只有Master Node收到了消息劈狐,并且成功將消息同步給了Slave節(jié)點(diǎn)罐孝,這條消息才算是真正的發(fā)送成功了。
如果Master節(jié)點(diǎn)宕機(jī)了肥缔,Slave節(jié)點(diǎn)有一份冗余消息數(shù)據(jù)莲兢,不會(huì)導(dǎo)致數(shù)據(jù)丟失,并且還能繼續(xù)對(duì)外提供服務(wù)续膳,保證MQ的高可用改艇。
5、數(shù)據(jù)路由:怎么知道要訪(fǎng)問(wèn)那些Broker
答案: RocketMQ集群有一個(gè)NameServer集群坟岔,獨(dú)立部署再其他機(jī)器上谒兄,Broker啟動(dòng)的時(shí)候,會(huì)向NameServer進(jìn)行注冊(cè)社付,NameServer包含了所有Broker節(jié)點(diǎn)的元數(shù)據(jù)信息承疲。
如果要發(fā)送數(shù)據(jù)到Broker,會(huì)先找NameServer鸥咖,從中獲取Broker信息纪隙,然后再想Broker發(fā)送消息數(shù)據(jù)。