日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

RocketMQ实战(一)

發(fā)布時間:2023/12/20 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 RocketMQ实战(一) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

阿里巴巴有2大核心的分布式技術(shù),一個是OceanBase,另一個就是RocketMQ。在實際項目中已經(jīng)領(lǐng)教過RocketMQ的強(qiáng)大,本人計劃寫一個RocketMQ實戰(zhàn)系列,將涵蓋RocketMQ的簡介,環(huán)境搭建,初步使用、API詳解、架構(gòu)分析、管理員集群操作等知識。

What is RocketMQ?

RocketMQ作為一款分布式的消息中間件(阿里的說法是不遵循任何規(guī)范的,所以不能完全用JMS的那一套東西來看它),經(jīng)歷了Metaq1.x、Metaq2.x的發(fā)展和淘寶雙十一的洗禮,在功能和性能上遠(yuǎn)超ActiveMQ。

1.要知道RocketMQ原生就是支持分布式的,而ActiveMQ原生存在單點性。

2.RocketMQ可以保證嚴(yán)格的消息順序,而ActiveMQ無法保證!

3.RocketMQ提供億級消息的堆積能力,這不是重點,重點是堆積了億級的消息后,依然保持寫入低延遲!

4.豐富的消息拉取模式(Push or Pull)

Push好理解,比如在消費(fèi)者端設(shè)置Listener回調(diào);而Pull,控制權(quán)在于應(yīng)用,即應(yīng)用需要主動的調(diào)用拉消息方法從Broker獲取消息,這里面存在一個消費(fèi)位置記錄的問題(如果不記錄,會導(dǎo)致消息重復(fù)消費(fèi))。

5.在Metaq1.x/2.x的版本中,分布式協(xié)調(diào)采用的是Zookeeper,而RocketMQ自己實現(xiàn)了一個NameServer,更加輕量級,性能更好!

6.消息失敗重試機(jī)制、高效的訂閱者水平擴(kuò)展能力、強(qiáng)大的API、事務(wù)機(jī)制等等(后續(xù)詳細(xì)介紹)

?

初步理解Producer/Consumer Group

ActiveMQ中并沒有Group這個概念,而在RocketMQ中理解Group的機(jī)制很重要。


Group機(jī)制

想過沒有,通過Group機(jī)制,讓RocketMQ天然的支持消息負(fù)載均衡!

比如某個Topic有9條消息,其中一個Consumer Group有3個實例(3個進(jìn)程 OR 3臺機(jī)器),那么每個實例將均攤3條消息!(注意RocketMQ只有一種模式,即發(fā)布訂閱模式。)

?

install RocketMQ

?

RocketMQ的Broker集群部署模式還挺多的,比如單Master模式、多Master模式、多Master多Slave模式(異步復(fù)制)、多Master多Slave模式(同步雙寫)等。明確個概念,RocketMQ Slave不可以寫,可以讀,類似于MySQL的主從機(jī)制。

單Master模式:

無需多言,一旦單個broker重啟或宕機(jī),一切都結(jié)束了!很顯然,線上不可以使用。

多Master模式:

全是Master,沒有Slave。當(dāng)然,一個broker宕機(jī)了,應(yīng)用是無影響的,缺點在于宕機(jī)的Master上未被消費(fèi)的消息在Master沒有恢復(fù)之前不可以訂閱。

多Master多Slave模式(異步復(fù)制):

多對Master-Slave,高可用!采用異步復(fù)制的方式,主備之間短暫延遲,MS級別。Master宕機(jī),消費(fèi)者可以從Slave上進(jìn)行消費(fèi),不受影響,但是Master的宕機(jī),會導(dǎo)致丟失掉極少量的消息。

多Master多Slave模式(同步雙寫):

和上面的區(qū)別點在于采用的是同步方式,也就是在Master/Slave都寫成功的前提下,向應(yīng)用返回成功,可見不論是數(shù)據(jù),還是服務(wù)都沒有單點,都非常可靠!缺點在于同步的性能比異步稍低。

?

這里我將采用2個Master的方式進(jìn)行搭建演示,會了雙Master,其他的將很簡單。(多Master在實際中也是非常常用的,如果并發(fā)非常大,考慮多Master多Slave模式)


雙Master模式架構(gòu)

在192.168.99.121/122機(jī)器上各一個NameServer、Master進(jìn)程。

以192.168.99.121為例:

第一步,修改/etc/hosts文件


hosts配置

?


確保相互之間可以ping通

第二步,解壓并創(chuàng)建存儲路徑

tar -xvf alibaba-rocketmq-3.2.6.tar.gz

mkdir -p alibaba-rocketmq/store/{commitlog,consumequeue,index}

第三步,配置文件


broker-x.properties

?


配置項

上面已經(jīng)將實際中常用的配置項給出來了!

第四步,修改日志配置文件


注意到logback.*.xml配置文件中:


需要替換${user.name}

可以使用sed進(jìn)行替換:

sed -i 's#${user.home}#/software/alibaba-rocketmq#g' *.xml

第五步,修改啟動腳本中的JVM參數(shù)


vim runbroker.sh/rumserver.sh

注意,在這里我將JVM的堆的初始化和最大大小統(tǒng)一設(shè)置為1G,并將新生代大小設(shè)置為512M。主要是考慮到我的虛擬機(jī)內(nèi)存,實際上在線上是可以走默認(rèn)的4G堆內(nèi)存的。

第六步,啟動NameServer

nohup sh mqnamesrv &

?


NameServer

?


nameserver啟動日志

第七步,啟動broker-X


啟動broker

注意觀察日志:


broker.log

?


進(jìn)程與端口

第八步:RocketMQ Console

把rocketmq-console.war部署到Tomcat下即可。

?


解壓WAR包

?


在解壓WAR包后的CLASS下更改config.properties

?


好久不見,TOM貓

?


rocketmq管控臺

這個管控臺實際上還是比較簡陋的,我們使用比較多的是mqadmin操作命令,后續(xù)會介紹。

OK,到這里,雙Master的搭建已經(jīng)完成了!




來源:http://www.jianshu.com/p/3afd610a8f7d ?

?

轉(zhuǎn)載于:https://www.cnblogs.com/master-yao/p/7764576.html

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎

總結(jié)

以上是生活随笔為你收集整理的RocketMQ实战(一)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。