91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

RocketMQ集群部署方式總結

發布時間:2020-08-03 03:42:54 來源:網絡 閱讀:19568 作者:Leexide 欄目:軟件技術

1 RocketMQ網絡部署圖

RocketMQ網絡部署圖如下圖所示:
RocketMQ集群部署方式總結

1.1 RocketMQ網絡部署特點:
  • NameServer是一個幾乎無狀態節點,可集群部署,節點之間無任何信息同步。
  • Broker部署相對復雜,Broker分為Master與Slave,一個Master可以對應多個Slave,但是一個Slave只能對應一個Master,Master與Slave的對應關系通過指定相同的BrokerName,不同的BrokerId來定義,BrokerId為0表示Master,非0表示Slave。Master也可以部署多個。每個Broker與NameServer集群中的所有節點建立長連接,定時注冊Topic信息到所有 NameServer。
  • Producer與NameServer集群中的其中一個節點(隨機選擇)建立長連接,定期從Name Server取Topic路由信息,并向提供Topic服務的Master建立長連接,且定時向Master發送心跳。Producer完全無狀態,可集群部署。
  • Consumer與NameServer集群中的其中一個節點(隨機選擇)建立長連接,定期從Name Server取Topic路由信息,并向提供Topic服務的Master、Slave建立長連接,且定時向Master、Slave發送心跳。Consumer既可以從Master訂閱消息,也可以從Slave訂閱消息,訂閱規則由Broker配置決定。

2 NameServer集群

NameServer集群如下:

NameServer集群 IP地址
NameServer-1 192.168.1.101
NameServer-2 192.168.1.102

分別啟動

nohup sh mqnamesrv &
tail -f -n 500 $ROCKETMQ_HOME/logs/rocketmqlogs/namesrv.log

3 RocketMQ配置文件

眾所周知,RocketMQ有多種集群部署方式,它們的配置文件也是分開的,如下:

[root@rocketmq01 conf]# ls -rlt /usr/local/rocketmq/conf
total 32
-rw-r--r-- 1 root root   949 Sep 19  2017 broker.conf
drwxr-xr-x 2 root root    60 Sep 19  2017 2m-noslave
drwxr-xr-x 2 root root   118 Sep 19  2017 2m-2s-sync
drwxr-xr-x 2 root root   118 Sep 19  2017 2m-2s-async
-rw-r--r-- 1 root root  3720 Apr 21 07:56 logback_namesrv.xml
-rw-r--r-- 1 root root  3718 Apr 21 07:56 logback_filtersrv.xml
-rw-r--r-- 1 root root 15146 Apr 21 07:56 logback_broker.xml
-rw-r--r-- 1 root root  3789 Apr 21 07:56 logback_tools.xml

說明:

  • 2m-noslave: 多Master模式
  • 2m-2s-sync: 多Master多Slave模式,同步雙寫
  • 2m-2s-async:多Master多Slave模式,異步復制

RocketMQ默認提供的配置文件都是最基本的,很多配置都是默認值,在生產環境中我們需要根據實際情況進行修改。樣例配置如下:

#所屬集群名字
brokerClusterName=rocketmq-cluster
#broker名字,注意此處不同的配置文件填寫的不一樣
brokerName=broker-a|broker-b
#0表示Master,>0表示Slave
brokerId=0
#nameServer地址,分號分割
namesrvAddr=192.168.1.101:9876;192.168.1.102:9876
#在發送消息時,自動創建服務器不存在的topic,默認創建的隊列數
defaultTopicQueueNums=4
#是否允許 Broker 自動創建Topic,建議線下開啟,線上關閉
autoCreateTopicEnable=true
#是否允許 Broker 自動創建訂閱組,建議線下開啟,線上關閉
autoCreateSubscriptionGroup=true
#Broker 對外服務的監聽端口
listenPort=10911
#刪除文件時間點,默認凌晨 4點
deleteWhen=04
#文件保留時間,默認 48 小時
fileReservedTime=120
#commitLog每個文件的大小默認1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每個文件默認存30W條,根據業務情況調整
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#檢測物理文件磁盤空間
diskMaxUsedSpaceRatio=88
#存儲路徑
storePathRootDir=/usr/local/alibaba-rocketmq/store
#commitLog 存儲路徑
storePathCommitLog=/usr/local/alibaba-rocketmq/store/commitlog
#消費隊列存儲路徑存儲路徑
storePathConsumeQueue=/usr/local/alibaba-rocketmq/store/consumequeue
#消息索引存儲路徑
storePathIndex=/usr/local/alibaba-rocketmq/store/index
#checkpoint 文件存儲路徑
storeCheckpoint=/usr/local/alibaba-rocketmq/store/checkpoint
#abort 文件存儲路徑
abortFile=/usr/local/alibaba-rocketmq/store/abort
#限制的消息大小
maxMessageSize=65536
#flushCommitLogLeastPages=4
#flushConsumeQueueLeastPages=2
#flushCommitLogThoroughInterval=10000
#flushConsumeQueueThoroughInterval=60000
#Broker 的角色
#- ASYNC_MASTER 異步復制Master
#- SYNC_MASTER 同步雙寫Master
#- SLAVE
brokerRole=ASYNC_MASTER
#刷盤方式
#- ASYNC_FLUSH 異步刷盤
#- SYNC_FLUSH 同步刷盤
flushDiskType=ASYNC_FLUSH
#checkTransactionMessageEnable=false
#發消息線程池數量
#sendMessageThreadPoolNums=128
#拉消息線程池數量
#pullMessageThreadPoolNums=128

4 Broker集群部署

Broker集群部署有幾種不同的方式。這里的Slave不可寫,但可讀,類似于MySQL的主備方式。

4.1 單個Master

這種方式風險較大,一旦Broker重啟或者宕機時,會導致整個服務不可用,不建議線上環境使用

4.2 多Master模式

一個集群無Slave,全是Master,例如2個Master或者3個Master。

brokerName brokerId brokerRole IP地址
broker-a 0 ASYNC_MASTER 192.168.1.101
broker-b 0 ASYNC_MASTER 192.168.1.102

優點:
配置簡單,單個Master宕機或重啟維護對應用無影響,在磁盤配置為RAID10時,即使機器宕機不可恢復情況下,由于RAID10磁盤非常可靠,消息也不會丟失(異步刷盤丟失少量消息,同步刷盤一條不丟)。性能最高。

缺點:
單臺機器宕機期間,這臺機器上未被消費的消息在機器恢復之前不可訂閱,消息實時性會受到影響。

啟動步驟:
第一步:先啟動NameServer集群

第二步:在192.168.1.101,啟動第一個Master

nohup sh mqbroker -c $ROCKETMQ_HOME/conf/2m-noslave/broker-a.properties >/dev/null 2>&1 &
tail -f -n 500 $ROCKETMQ_HOME/logs/rocketmqlogs/broker.log

第三步:在192.168.1.102,啟動第二個Master

nohup sh mqbroker -c $ROCKETMQ_HOME/conf/2m-noslave/broker-b.properties >/dev/null 2>&1 &
tail -f -n 500 $ROCKETMQ_HOME/logs/rocketmqlogs/broker.log
4.3 多Master多Slave模式,異步復制

每個Master配置一個Slave,有多對Master-Slave,HA采用異步復制方式,主備有短暫消息延遲,毫秒級。

brokerName brokerId brokerRole IP地址
broker-a 0 ASYNC_MASTER 192.168.1.101
broker-a 1 SLAVE 192.168.1.102
broker-b 0 ASYNC_MASTER 192.168.1.103
broker-b 1 SLAVE 192.168.1.104

優點:即使磁盤損壞,消息丟失的非常少,且消息實時性不會受影響,因為Master 宕機后,消費者仍然可以從Slave消費,此過程對應用透明。不需要人工干預。性能同多 Master 模式幾乎一樣。

缺點:Master宕機,磁盤損壞情況,會丟失少量消息。

啟動步驟
第一步:先啟動NameServer集群

第二步:在192.168.1.101,啟動第一個Master

nohup sh mqbroker -c $ROCKETMQ_HOME/conf/2m-2s-async/broker-a.properties >$ROCKETMQ_HOME/log/mq.log >/dev/null 2>&1 &
tail -f -n 500 $ROCKETMQ_HOME/logs/rocketmqlogs/broker.log

第三步:在192.168.1.102,啟動第一個Slave

nohup sh mqbroker -c $ROCKETMQ_HOME/conf/2m-2s-async/broker-a-s.properties >$ROCKETMQ_HOME/log/mq.log >/dev/null 2>&1 &
tail -f -n 500 $ROCKETMQ_HOME/logs/rocketmqlogs/broker.log

第四步:在192.168.1.103,啟動第二個Master

nohup sh mqbroker -c $ROCKETMQ_HOME/conf/2m-2s-async/broker-b.properties >$ROCKETMQ_HOME/log/mq.log >/dev/null 2>&1 &
tail -f -n 500 $ROCKETMQ_HOME/logs/rocketmqlogs/broker.log

第五步:在機器 192.168.1.104,啟動第二個Slave

nohup sh mqbroker -c $ROCKETMQ_HOME/conf/2m-2s-async/broker-b-s.properties >$ROCKETMQ_HOME/log/mq.log >/dev/null 2>&1 &
4.4 多Master多Slave模式,同步雙寫
每個Master配置一個Slave,有多對Master-Slave,HA采用同步雙寫方式,主備都寫成功,向應用才返回成功。
brokerName
brokerId brokerRole IP地址
broker-a 0 SYNC_MASTER 192.168.1.101
broker-a 1 SLAVE 192.168.1.102
broker-b 0 SYNC_MASTER 192.168.1.103
broker-b 1 SLAVE 192.168.1.104

優點:數據與服務都無單點,Master宕機情況下,消息無延遲,服務可用性與數據可用性都非常高。

缺點:性能比異步復制模式略低,大約低10%左右,發送單個消息的RT會略高。目前主宕機后,備機不能自動切換為主機,后續會支持自動切換功能。

啟動步驟:
第一步:先啟動NameServer集群

第二步:在192.168.1.101,啟動第一個Master

nohup sh mqbroker -c $ROCKETMQ_HOME/conf/2m-2s-sync/broker-a.properties >$ROCKETMQ_HOME/log/mq.log >/dev/null 2>&1 &
tail -f -n 500 $ROCKETMQ_HOME/logs/rocketmqlogs/broker.log

第三步:在192.168.1.102,啟動第一個Slave

nohup sh mqbroker -c $ROCKETMQ_HOME/conf/2m-2s-sync/broker-a-s.properties >$ROCKETMQ_HOME/log/mq.log >/dev/null 2>&1 &
tail -f -n 500 $ROCKETMQ_HOME/logs/rocketmqlogs/broker.log

第四步:在192.168.1.103,啟動第二個Master

nohup sh mqbroker -c $ROCKETMQ_HOME/conf/2m-2s-sync/broker-b.properties >$ROCKETMQ_HOME/log/mq.log >/dev/null 2>&1 &
tail -f -n 500 $ROCKETMQ_HOME/logs/rocketmqlogs/broker.log

第五步:在192.168.1.104,啟動第二個Slave

nohup sh mqbroker -c $ROCKETMQ_HOME/conf/2m-2s-sync/broker-b-s.properties >$ROCKETMQ_HOME/log/mq.log >/dev/null 2>&1 &
tail -f -n 500 $ROCKETMQ_HOME/logs/rocketmqlogs/broker.log

注意事項:以上Broker與Slave配對是通過指定相同的brokerName參數來配對,Master的 BrokerId必須是0,Slave的BrokerId必須是大于0的數。另外一個Master下面可以掛載多個Slave,同一Master下的多個Slave 通過指定不同的BrokerId來區分。

4.5 總結

1、異步復制和同步雙寫總結
RocketMQ集群部署方式總結

2、集群方式對比

集群方式 運維特點 消息可靠性(master宕機情況) 服務可用性(master宕機情況) 其他特點 備注
單Master 結構簡單,擴容方便,機器要求低 同步刷盤消息一條都不會丟 整體可用,未被消費的消息無法取得,影響實時性 性能最高
多Master 異步有毫秒級丟失,同步雙寫不丟失 差評,主備不能自動切換,且備機只能讀不能寫,會造成服務整體不可寫 不考慮,除非自己提供主從切換的方案
Master-Slave(異步復制) 結構復雜,擴容方便 故障時會丟失消息 整體可用,實時性影響毫秒級別
該組服務只能讀不能寫 性能很高 適合消息可靠性中等,實時性中等的要求
Master-Slave(同步雙寫) 結構復雜,擴容方便 不丟消息 整體可用,不影響實時性,該組服務只能讀不能寫 性能比異步低10%,所以實時性也并不比異步方式太高 適合消息可靠性略高,實時性中等、性能要求不高的需求

5 高可用演練場景

RocketMQ高可用演練場景

項目 發送消息 發送消息過程中 接收消費消息
停用一個namesrv 不影響通信 不影響通信 不影響通信
停用全部namesrv 影響通信 不影響通信 影響通信,啟動任意的namesrv可恢復
停用單個master broker 不影響通信 不影響通信 不影響通信
停用全部master broker 影響通信 影響通信,無法恢復 影響通信
停用一個slave broker 不影響通信 不影響通信 不影響通信
停用全部slave broker 不影響通信 影響通信,數秒恢復 不影響通信,數秒恢復

下面的是我的公眾號二維碼,歡迎關注。文章轉載請注明出處www.leexide.com
RocketMQ集群部署方式總結

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

晋中市| 顺平县| 达尔| 绵阳市| 永福县| 大英县| 万载县| 顺平县| 星子县| 鄂温| 宿松县| 高碑店市| 海原县| 木兰县| 中山市| 磴口县| 金乡县| 宁武县| 高淳县| 和平县| 澳门| 裕民县| 甘德县| 永清县| 莱芜市| 无极县| 杭锦后旗| 苏尼特左旗| 岳池县| 石城县| 玉田县| 随州市| 都昌县| 贞丰县| 上饶县| 隆尧县| 岑溪市| 克拉玛依市| 康定县| 西平县| 本溪|