RocketMq消息隊列實(shí)施計劃方案_第1頁
RocketMq消息隊列實(shí)施計劃方案_第2頁
RocketMq消息隊列實(shí)施計劃方案_第3頁
已閱讀5頁,還剩8頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、. .消息隊列實(shí)施方案1、背景異步解耦合、給前端系統(tǒng)提供最高效的反應(yīng)2、常見消息隊列對比2、 1 ActiveMqActiveMQ是一個完全支持JMS1.1和 J2EE 1.4 規(guī)的 JMS Provider實(shí)現(xiàn)優(yōu)點(diǎn):Java 語言支持集群模式缺點(diǎn):性能在消息中間件中處于下游2、 2 RabbitmqRabbitmq是基于 AMQP 使用 erlang 語言實(shí)現(xiàn)的消息隊列系統(tǒng)優(yōu)點(diǎn):1、完整的消息隊列系統(tǒng),支持多種消息隊列模式,包括競爭消費(fèi);2 、支持集群模式,擴(kuò)展集群容量和性能比較方便,集成了集群的監(jiān)控和管理;3 、支持消息的持久化;缺點(diǎn):1、需要學(xué)習(xí)比較復(fù)雜的接口和協(xié)議,比較耗費(fèi)時間;2 、

2、性能不是特別理想大概在1wqps 左右;3 、使用 Erlang 語言,語言基礎(chǔ);2、 3 KafkaKafka是 LinkedIn開發(fā)的一個高性能、分布式的消息發(fā)布訂閱系統(tǒng)。優(yōu)點(diǎn):1、分布式集群可以透明的擴(kuò)展,增加新的服務(wù)器進(jìn)集群。2 、高性能。單機(jī)寫入TPS 約在百萬條 / 秒3 、容錯。數(shù)據(jù)都會復(fù)制到幾臺服務(wù)器上。缺點(diǎn):1、復(fù)雜性。 Kafka 需要 zookeeper 集群的支持, Topic 通常需要人工來創(chuàng)建,部署和維護(hù)較一般消息隊列成本更高a. .定位于日志傳輸、存在消息丟失的肯能、消息亂序3 、消息發(fā)送錯誤無重試2、 4 RocketMQRockerMq 是阿里公司中間件團(tuán)隊參

3、考 Kafka 思想,用 Java 語言實(shí)現(xiàn)的消息傳輸系統(tǒng)優(yōu)點(diǎn):1、較高性能,單機(jī)寫入TPS 單實(shí)例約 7 萬條 / 秒2 、容錯,多種集群模式、可以解決容錯問題3 、消息重試發(fā)送4 、順序消息可以嚴(yán)格執(zhí)行缺點(diǎn):1、消息重復(fù)、消費(fèi)端需要做去重操作2、 5 選用結(jié)論從項(xiàng)目業(yè)務(wù)與團(tuán)隊技術(shù)偏向考慮, 我們應(yīng)該需要一種數(shù)據(jù)安全性比較高, 保證每個消息都會被執(zhí)行;有容錯機(jī)制、支持集群模式高可用;性能不錯,可以在毫秒級處理消息;支持順序消息的消息中間件, RockerMq 可以滿足這些要求。3、 RockerMq簡介3、 1 RockerMq產(chǎn)品介紹參考阿里公司提供的RocketMQ開發(fā)指南,最新版針對v

4、3.2.43、 2 RockerMq 集群3、2、1部署方式Rockermq 共有四種部署方式,分別是:1、單個Master一旦Broker重啟或者宕機(jī)時,會導(dǎo)致整個服務(wù)不可用2、多Master模式一個集群無 Slave,全是 Master ,例如 2 個 Master 戒者 3 個 Master 優(yōu)點(diǎn):1、配置簡單,2 、容錯,單個Master宕機(jī)或重啟維護(hù)對應(yīng)用無影響,在磁盤配置為RAID10時,即使機(jī)器宕機(jī)不可恢復(fù)情況下,由于RAID10磁盤非??煽?,在同步刷盤時消息不會丟,異步刷盤丟失少量消息,3 、性能最高。3、多Master多 Slave 模式,異步復(fù)制每個Master配置一個或多

5、個Slave,有多對Master-Slave , HA (高可用集群)采用異步a. .復(fù)制方式,主備有短暫消息延遲,毫秒級。優(yōu)點(diǎn):1、即使磁盤損壞,消息丟失的非常少,消息實(shí)時性不會被影響,因?yàn)镸aster宕機(jī)后,消費(fèi)者仍然可以從Slave 消費(fèi),此過程對應(yīng)用透明。不需要人工干預(yù)。性能同多Master模式幾乎一樣。缺點(diǎn):1、 Master 宕機(jī),磁盤損壞時,因?yàn)橹鱾溆卸虝合⒀舆t,未復(fù)制到slave 的消息會丟失。2 、目前 master 宕機(jī)后,備機(jī)不能自動切換為主機(jī)。 只有 master 可以接收消息, 若所有 master 宕機(jī),將不能接收消息4、多Master多 Slave 模式,同步雙

6、寫每個 Master 配置一個或多個 Slave,有多對 Master-Slave , HA 采用同步雙寫方式, 主備都寫成功,才返回成功。優(yōu)點(diǎn):數(shù)據(jù)與服務(wù)都無單點(diǎn), Master 宕機(jī)情 冴下,消費(fèi)者可以從 slave 消費(fèi)、消息無延遲,服務(wù)可用性與數(shù)據(jù)可用性都非常高缺點(diǎn):1、性能比異步復(fù)制模式略低,収送單個消息的RT(返回時間)會略高。2 、目前 master 宕機(jī)后,備機(jī)不能自動切換為主機(jī)。 只有 master 可以接收消息, 若所有 master 宕機(jī),將不能接收消息選用結(jié)論由于我們需要保證消息中間件的高可用性,消息不丟失、消息無延遲,所以我們選擇“多 Master 多 Slave 模

7、式,同步雙寫”模式。并且選擇同步刷盤。a. .3、2、2 多 Master 多 Slave 模式多 master 多 slave 模式網(wǎng)絡(luò)結(jié)構(gòu)圖主要組件有: Name Server 、 Broker 、 Producer 、Consumer1、Name Server 是一個幾乎無狀態(tài)節(jié)點(diǎn), 可集群部署, 節(jié)點(diǎn)之間無信息同步、 記錄 Topic 路由信息。2 、Broker 分為 Master 和 Slave,一個 Master 可以對應(yīng)多個 Slave,但是一個 Slave 只能對應(yīng)一個 Master 。3 、Producer 與 Name Server集群中的其中一個節(jié)點(diǎn)(隨機(jī)選擇) 建立長

8、連接, 定期從 NameServer 獲取 Topic路由信息,并向提供 Topic 服務(wù)的 Master建立長連接, 定時向Master發(fā)送心跳。 Producer 只可以向Master 發(fā)送消息。 Producer完全無狀態(tài),可集群部署。4 、 Consumer與 NameServer 集群中的其中一個節(jié)點(diǎn)(隨機(jī)選擇)建立長連接,定期從Name Server 獲取 Topic 路由信息,并與提供Topic 服務(wù)的 Master 、 Slave 建立長連接, 并定時向 Master 、Slave 収送心跳。 Consumer 既可以從Master訂閱消息,也可以從Slave 訂閱消息,訂閱規(guī)

9、則由Broker 配置決定a. .3、 3 集群搭建linux 環(huán)境下部署 rocketMq 多 master 多 slave 模式、同步雙寫模式集群,暫定為 2 個 master ,2 個 slave3、3、1 安裝條件4 臺 linux 服務(wù)器、分為 master-a 、 slave-a ; master-b 、 slave-b 服務(wù)器防火墻開啟 9876 , 10911 lokkit -p 9876:tcp -p 10911:tcp服務(wù)器支持wget 命令服務(wù)器安裝jdk ,不低于使用的rocketMq的支持版本3、3、2 安裝步驟4 臺 linux 服務(wù)器、分為 master-a 、

10、slave-a ; master-b 、 slave-b 假設(shè) ip 分別為:master-a =slavea=master-b =slave-b=3、3、2、1 master-a1 從 github 下載 RocketMQ安裝包或源碼自編譯安裝wget https:/github./alibaba/RocketMQ/releases/download/v3.2.6/alibaba-rocketmq-3.2.6.tar.gz2 解壓縮、并創(chuàng)建數(shù)據(jù)、日志目錄tar xvfalibaba-rocketmq-3.2.2.

11、tar.gz3 配置環(huán)境變量:系統(tǒng)變量:Vi /etc/profile或者修改當(dāng)前用戶的環(huán)境變量例如: export ROCKETMQ_HOME=/opt/RocketMQ/alibaba-rocketmqexport PATH=$PATH:$ROCKETMQ_HOME/binsource 命令是環(huán)境變量生效4 修改 mq 集群的 master-a配置修改文件 $ROCKETMQ_HOME/conf/2m-2s-sync/pertiesa. .不是強(qiáng)制必須使用這個文件,使用者可以自行定義# brokerClusterName=DefaultClusterbrokerNa

12、me=broker-a# 歸屬 master-slave 組的名字brokerId=0#0 表示為 master-slave 組中為masternamesrvAddr=:9876;:9876;:9876;:9876 #nameservdefaultTopicQueueNums=4autoCreateTopicEnable=trueautoCreateSubscriptionGroup=truelistenPort=10911 #Broker對外服務(wù)的監(jiān)聽端口deleteWhen=04fileReservedTime

13、=120mapedFileSizeCommitLog=1073741824mapedFileSizeConsumeQueue=50000000destroyMapedFileIntervalForcibly=120000redeleteHangedFileInterval=120000diskMaxUsedSpaceRatio=88storePathRootDir=/opt/RocketMQ/alibaba-rocketmq/data# 數(shù)據(jù)目錄storePathCommitLog=/opt/RocketMQ/alibaba-rocketmq/logs #日志目錄maxMessageSize=

14、65536flushCommitLogLeastPages=4flushConsumeQueueLeastPages=2flushCommitLogThoroughInterval=10000flushConsumeQueueThoroughInterval=60000checkTransactionMessageEnable=falsesendMessageThreadPoolNums=128pullMessageThreadPoolNums=128brokerRole=SYNC_MASTER# 角色同步雙寫 MasterflushDiskType=SYNC_FLUSH#同步刷盤broker

15、IP1=#本機(jī) IP 地址,多網(wǎng)卡易出錯,請手工指定其他配置請參考RocketMQ開發(fā)指南,最新版針對v3.2.45 啟動 mq 集群的 master-a跳轉(zhuǎn)到 RocketMQ的 bin 目錄下>cd $ROCKETMQ_HOME/bin>nohup sh mqnamesrv &>nohup sh mqbroker-c $ROCKETMQ_HOME/conf/2m-2s-sync/perties &3、3、2、2 slave-a1 從 github 下載 RocketMQ安裝包或源碼自編譯安裝wget https:

16、/github./alibaba/RocketMQ/releases/download/v3.2.2/alibaba-rocketmq-3.2.2.tar.gz2 解壓縮、并創(chuàng)建數(shù)據(jù)、日志目錄a. .tar xvfalibaba-rocketmq-3.2.2.tar.gz3 配置環(huán)境變量例如: export ROCKETMQ_HOME=/opt/RocketMQ/alibaba-rocketmqexport PATH=$PATH:$ROCKETMQ_HOME/binsource 命令是環(huán)境變量生效4 修改 mq 集群的 slave-a 配置修改文件 $ROCKETMQ_HOME/conf/2m

17、-2s-sync/perties不是強(qiáng)制必須使用這個文件,使用者可以自行定義、只要保證配置文件的 brokerName 正確即可# brokerClusterName=DefaultClusterbrokerName=broker-a# 歸屬 master-slave 組的名字brokerId=1#1 表示在 master-slave 組中為 slavenamesrvAddr=:9876;:9876;:9876;:9876defaultTopicQueueNums=4autoCreate

18、TopicEnable=trueautoCreateSubscriptionGroup=truelistenPort=10911# 對外端口deleteWhen=04fileReservedTime=120mapedFileSizeCommitLog=1073741824mapedFileSizeConsumeQueue=50000000destroyMapedFileIntervalForcibly=120000redeleteHangedFileInterval=120000diskMaxUsedSpaceRatio=88storePathRootDir=/aifs01/users/tst

19、usr12/opt/RocketMQ/alibaba-rocketmq/data#數(shù)據(jù)存放storePathCommitLog=/aifs01/users/tstusr12/opt/RocketMQ/alibaba-rocketmq/logs # 日志存放 maxMessageSize=65536flushCommitLogLeastPages=4flushConsumeQueueLeastPages=2flushCommitLogThoroughInterval=10000flushConsumeQueueThoroughInterval=60000checkTransactionMessa

20、geEnable=falsesendMessageThreadPoolNums=128pullMessageThreadPoolNums=128brokerRole=SLAVE#角色SlaveflushDiskType=SYNC_FLUSH# 同步刷盤brokerIP1=#本機(jī) ip ,多網(wǎng)卡,建議自定義其他配置請參考RocketMQ開發(fā)指南,最新版針對v3.2.4a. .5 啟動 mq 集群的 slave-a跳轉(zhuǎn)到 RocketMQ 的 bin 目錄下>cd $ROCKETMQ_HOME/bin>nohup sh mqnamesrv &>nohu

21、p sh mqbroker-c $ROCKETMQ_HOME/conf/2m-2s-sync/perties &3、3、2、3 master-b1 從 github 下載 RocketMQ安裝包或源碼自編譯安裝wget https:/github./alibaba/RocketMQ/releases/download/v3.2.2/alibaba-rocketmq-3.2.2.tar.gz2 解壓縮、并創(chuàng)建數(shù)據(jù)、日志目錄tar xvfalibaba-rocketmq-3.2.2.tar.gz3 配置環(huán)境變量例如: export ROCKETMQ_HOME=/

22、opt/RocketMQ/alibaba-rocketmqexport PATH=$PATH:$ROCKETMQ_HOME/binsource 命令是環(huán)境變量生效4 修改 mq 集群的 master-b 配置修改文件 $ROCKETMQ_HOME/conf/2m-2s-sync/perties 不是強(qiáng)制必須使用這個文件,使用者可以自行定義# brokerClusterName=DefaultClusterbrokerName=broker-b# 歸屬 master-slave 組的名字brokerId=0#0 表示為 master-slave 組中為mastername

23、srvAddr=:9876;:9876;:9876;:9876 #nameserv defaultTopicQueueNums=4autoCreateTopicEnable=trueautoCreateSubscriptionGroup=truelistenPort=10911#Broker對外服務(wù)的監(jiān)聽端口deleteWhen=04fileReservedTime=120mapedFileSizeCommitLog=1073741824mapedFileSizeConsumeQueue=50000000destr

24、oyMapedFileIntervalForcibly=120000redeleteHangedFileInterval=120000diskMaxUsedSpaceRatio=88storePathRootDir=/opt/RocketMQ/alibaba-rocketmq/data# 數(shù)據(jù)目錄a. .storePathCommitLog=/opt/RocketMQ/alibaba-rocketmq/logs #日志目錄maxMessageSize=65536flushCommitLogLeastPages=4flushConsumeQueueLeastPages=2flushCommitL

25、ogThoroughInterval=10000flushConsumeQueueThoroughInterval=60000checkTransactionMessageEnable=falsesendMessageThreadPoolNums=128pullMessageThreadPoolNums=128brokerRole=SYNC_MASTER# 角色同步雙寫MasterflushDiskType=SYNC_FLUSH#同步刷盤brokerIP1=# 本機(jī) IP 地址,多網(wǎng)卡易出錯,請手工指定其他配置請參考RocketMQ開發(fā)指南,最新版針對v3.2.45 啟動

26、mq 集群的 master-b跳轉(zhuǎn)到 RocketMQ 的 bin 目錄下>cd $ROCKETMQ_HOME/bin>nohup sh mqnamesrv &>nohup sh mqbroker-c $ROCKETMQ_HOME/conf/2m-2s-sync/perties &3、3、2、4 slave-b1 從 github 下載 RocketMQ安裝包或源碼自編譯安裝wget https:/github./alibaba/RocketMQ/releases/download/v3.2.2/alibaba-rocketmq-3.2

27、.2.tar.gz2 解壓縮、并創(chuàng)建數(shù)據(jù)、日志目錄tar xvfalibaba-rocketmq-3.2.2.tar.gz3 配置環(huán)境變量例如: export ROCKETMQ_HOME=/opt/RocketMQ/alibaba-rocketmqexport PATH=$PATH:$ROCKETMQ_HOME/binsource 命令是環(huán)境變量生效4 修改 mq 集群的 slave-a 配置修改文件 $ROCKETMQ_HOME/conf/2m-2s-sync/perties不是強(qiáng)制必須使用這個文件,使用者可以自行定義、只要保證配置文件的 brokerName 正

28、確即可# brokerClusterName=DefaultClusterbrokerName=broker-b# 歸屬 master-slave 組的名字a. .brokerId=1#1 表示在 master-slave 組中為 slavenamesrvAddr=:9876;:9876;:9876;:9876defaultTopicQueueNums=4autoCreateTopicEnable=trueautoCreateSubscriptionGroup=truelistenPort=10911# 對外端口d

29、eleteWhen=04fileReservedTime=120mapedFileSizeCommitLog=1073741824mapedFileSizeConsumeQueue=50000000destroyMapedFileIntervalForcibly=120000redeleteHangedFileInterval=120000diskMaxUsedSpaceRatio=88storePathRootDir=/aifs01/users/tstusr12/opt/RocketMQ/alibaba-rocketmq/data#數(shù)據(jù)存放storePathCommitLog=/aifs01

30、/users/tstusr12/opt/RocketMQ/alibaba-rocketmq/logs # 日志存放 maxMessageSize=65536flushCommitLogLeastPages=4flushConsumeQueueLeastPages=2flushCommitLogThoroughInterval=10000flushConsumeQueueThoroughInterval=60000checkTransactionMessageEnable=falsesendMessageThreadPoolNums=128pullMessageThreadPoolNums=128brokerRole=SLAVE#角色SlaveflushDiskType=SYNC_FLUSH# 同步刷盤brokerIP1=#本機(jī) ip ,多網(wǎng)卡,建議自定義其他配置請參考RocketMQ開發(fā)指南,最新版針對v3.2.45 啟動 mq 集群的 slave-b跳轉(zhuǎn)到 RocketMQ的 bin 目錄下>cd $ROCKETMQ_HOME/bin>nohup sh mqnamesrv &>nohup sh mqbroker-c $RO

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論