日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

目錄
  • 前言
  • 優缺點
  • 常見名詞介紹
  • 單機版安裝部署
  • 集群部署
  • 四種集群部署方式
  • 集群部署

前言

目前主流的MQ主要是Rocketmq、kafka、Rabbitmq,Rocketmq相比于Rabbitmq、kafka具有主要優勢特性有:

  1. 支持事務消息(能夠解決分布式事務的問題)
  2. 支持順序消息(底層已經使用內存隊列實現)
  3. 支持consumer端tag過濾,減少不必要的網絡傳輸

Rocketmq就是對kafka實現的升級版本。

優缺點

RocketMQ 優點

  • 單機吞吐量:十萬級
  • 可用性:非常高,分布式架構
  • 消息可靠性:經過參數優化配置,消息可以做到 0 丟失
  • 功能支持:MQ 功能較為完善,還是分布式的,擴展性好
  • 支持 10 億級別的消息堆積,不會因為堆積導致性能下降
  • 源碼是 Java,方便結合公司自己的業務進行二次開發
  • 天生為金融互聯網領域而生,對于可靠性要求很高的場景,尤其是電商里面的訂單扣款,以及業務削峰,在大量交易涌入時,后端可能無法及時處理的情況
  • RoketMQ 在穩定性上可能更值得信賴,這些業務場景在阿里雙11已經經歷了多次考驗

RocketMQ 缺點

  • 支持的客戶端語言不多,目前僅支持 Java 及 C++,而且 C++ 還不成熟
  • 沒有在 MQ 核心中去實現 JMS 等接口,有些系統要遷移需要修改大量代碼

常見名詞介紹

  • provider

消息生產者,位于用戶的進程內,Producer通過NameServer獲取所有Broker的路由信息,根據負載均衡策略選擇將消息發到哪個Broker,然后調用Broker接口提交消息。

  • provider group

生產者組,簡單來說就是多個發送同一類消息的生產者稱之為一個生產者組。

  • consumer

消息消費者,位于用戶進程內。Consumer通過NameServer獲取所有broker的路由信息后,向Broker發送Pull請求來獲取消息數據。Consumer可以以兩種模式啟動,廣播(Broadcast)和集群(Cluster),廣播模式下,一條消息會發送給所有Consumer,集群模式下消息只會發送給一個Consumer。

  • consumer group

消費者組,和生產者類似,消費同一類消息的多個 Consumer 實例組成一個消費者組。

  • Topic Topic

用于將消息按主題做劃分,Producer將消息發往指定的Topic,Consumer訂閱該Topic就可以收到這條消息。Topic跟發送方和消費方都沒有強關聯關系,發送方可以同時往多個Topic投放消息,消費方也可以訂閱多個Topic的消息。在RocketMQ中,Topic是一個上邏輯概念。消息存儲不會按Topic分開。

  • Message

代表一條消息,使用MessageId唯一識別,用戶在發送時可以設置messageKey,便于之后查詢和跟蹤。一個 Message 必須指定 Topic,相當于寄信的地址。Message 還有一個可選的 Tag 設置,以便消費端可以基于 Tag 進行過濾消息。也可以添加額外的鍵值對,例如你需要一個業務 key 來查找 Broker 上的消息,方便在開發過程中診斷問題。

  • Tag 標簽

可以被認為是對 Topic 進一步細化。一般在相同業務模塊中通過引入標簽來標記不同用途的消息。

  • Broker Broker

是RocketMQ的核心模塊,負責接收并存儲消息,同時提供Push/Pull接口來將消息發送給Consumer。Consumer可選擇從Master或者Slave讀取數據。多個主/從組成Broker集群,集群內的Master節點之間不做數據交互。Broker同時提供消息查詢的功能,可以通過MessageID和MessageKey來查詢消息。Borker會將自己的Topic配置信息實時同步到NameServer。

  • Queue Topic

Queue Topic和Queue是1對多的關系,一個Topic下可以包含多個Queue,主要用于負載均衡。發送消息時,用戶只指定Topic,Producer會根據Topic的路由信息選擇具體發到哪個Queue上。Consumer訂閱消息時,會根據負載均衡策略決定訂閱哪些Queue的消息。

  • Offset

是RocketMQ在存儲消息時會為每個Topic下的每個Queue生成一個消息的索引文件,每個Queue都對應一個Offset記錄當前Queue中消息條數。

  • NameServer

NameServer可以看作是RocketMQ的注冊中心,它管理兩部分數據:集群的Topic-Queue的路由配置;Broker的實時配置信息。其它模塊通過Nameserver提供的接口獲取最新的Topic配置和路由信息。

  • Producer/Consumer

通過查詢接口獲取Topic對應的Broker的地址信息

  • Broker

注冊配置信息到NameServer, 實時更新Topic信息到NameServer

單機版安裝部署

這里用作學習使用,所以使用docker安裝,安裝速度快。

1、安裝啟動nameserver服務

docker run -d -p 9876:9876 -v /opt/rocketmq/data/namesrv/logs:/root/logs -v /opt/rocketmq/data/namesrv/store:/root/store --name rmqnamesrv -e "MAX_POSSIBLE_HEAP=100000000" rocketmqinc/rocketmq sh mqnamesrv

2、安裝啟動broker服務

根據容器卷配置,在指定位置添加broker.conf內容 /opt/rocketmq/conf/broker.conf 。(可以不需要)

brokerClusterName = DefaultCluster
brokerName = broker-a
brokerId = 0
deleteWhen = 04
fileReservedTime = 48
brokerRole = ASYNC_MASTER
flushDiskType = ASYNC_FLUSH
brokerIP1 = docker宿主機IP

啟動broker服務

docker run -d -p 10911:10911 -p 10909:10909 -v  /opt/rocketmq/data/broker/logs:/root/logs -v  /opt/rocketmq/rocketmq/data/broker/store:/root/store -v  /opt/rocketmq/conf/broker.conf:/opt/rocketmq/conf/broker.conf --name rmqbroker --link rmqnamesrv:namesrv -e "NAMESRV_ADDR=namesrv:9876" -e "MAX_POSSIBLE_HEAP=200000000" rocketmqinc/rocketmq sh mqbroker -c /opt/rocketmq/conf/broker.conf

3、安裝啟動控制臺

docker run -d -e "JAVA_OPTS=-Drocketmq.config.namesrvAddr=nameserIP:9876 -Drocketmq.config.isVIPChannel=false" -p 8080:8080 --name rmqconsole -t styletang/rocketmq-console-ng

集群部署

集群部署原理圖

Docker安裝部署單機版Rocket及基礎講解

broker主備

主:

備:同步主節點的數據,當主節點宕機之后,可以從被變為主保證高可用。

在rocketmq中分為多主多從實現對我們topic數據實現分片存儲。

四種集群部署方式

  • 單個Master節點, 缺點就是如果宕機之后可能整個服務不可用;
  • 多個Master節點,分攤存放我們的消息,缺點:沒有Slave節點,主的Master節點宕機之后消息數據可能會丟失的;
  • 多個Master和Slave節點 采用異步形式 效率非常高 數據可能短暫產生延遲(毫秒級別的)
  • 多個Master和Slave節點 采用同步形式, 效率比較低、數據不會產生延遲。

集群部署

集群的部署主要在于配置文件,nameserver部署好之后,多個broker的配置文件中配置同一個nameserver 集群的連接信息,broker集群就搭建好了。之后 Rocketmq-console 連接其中一個nameserver就可以了。

配置文件說明:

#集群名稱,可以區分不同集群,不同的業務可以建多個集群,多個broker的配置文件中的該值必須一樣
brokerClusterName=kaico

# Broker 的名稱, Master 和Slave 通過使用相同的Broker 名稱來表明相互關系,以說明某個Slave 是哪個Master 的Slave 。
brokerName=broker-a
#  一個Master Barker 可以有多個Slave, 0 表示Master ,大于0 表示不同Slave 的ID 。
brokerId=0 

#與fileReservedTim巳參數呼應,表明在幾點做消息刪除動作,默認值04 表示凌晨4 點。
deleteWhen=04
namesrvAddr=mqnameserver1:9876;mqnameserver2:9876
autoCreateTopicEnable=true  #是否自動創建主題(true為允許自動創建集群)
#topic默認創建的隊列數
defaultTopicQueueNums=4
#是否允許Broker自動創建訂閱組,建議線下開啟,線上關閉,默認【true】
autoCreateSubscriptionGroup=true
#Broker 監聽的端口號,如果一臺機器上啟動了多個Broker , 則要設置不同的端口號,避免沖突。
listenPort=10911
brokerIp=192.168.1.1

1、首先啟動兩個nameserver服務

2、啟動多個broker服務(這里安排兩個)

第一個broker配置文件

brokerClusterName=kaico  #集群名稱
brokerName=broker-a     #broker的名稱
brokerId=0              #master節點的標識(0表示是master節點)
namesrvAddr=mqnameserver1:9876;mqnameserver2:9876   #nameServer集群

第二個broker配置文件

brokerClusterName=kaico  #集群名稱
brokerName=broker-b     #broker的名稱
brokerId=0              #master節點的標識(0表示是master節點)
namesrvAddr=mqnameserver1:9876;mqnameserver2:9876   #nameServer集群

啟動方式:

  1. 先啟動nameServer服務
  2. 再去啟動broker,在啟動broker的命令中可以指定nameServer的連接信息。

分享到:
標簽:單機版 安裝 服務器 講解 部署
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定