最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Docker安裝部署單機(jī)版Rocket及基礎(chǔ)講解

 更新時(shí)間:2022年07月26日 14:45:23   作者:kaico2018  
RocketMQ是阿里巴巴旗下一款開源的MQ框架,經(jīng)歷過雙十一考研、Java編程語言實(shí)現(xiàn),有非常好完整生態(tài)系統(tǒng),這篇文章主要介紹了用Docker部署安裝單機(jī)版Rocket及基礎(chǔ)講解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值

前言

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

  1. 支持事務(wù)消息(能夠解決分布式事務(wù)的問題)
  2. 支持順序消息(底層已經(jīng)使用內(nèi)存隊(duì)列實(shí)現(xiàn))
  3. 支持consumer端tag過濾,減少不必要的網(wǎng)絡(luò)傳輸

Rocketmq就是對kafka實(shí)現(xiàn)的升級(jí)版本。

優(yōu)缺點(diǎn)

RocketMQ 優(yōu)點(diǎn)

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

RocketMQ 缺點(diǎn)

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

常見名詞介紹

  • provider

消息生產(chǎn)者,位于用戶的進(jìn)程內(nèi),Producer通過NameServer獲取所有Broker的路由信息,根據(jù)負(fù)載均衡策略選擇將消息發(fā)到哪個(gè)Broker,然后調(diào)用Broker接口提交消息。

  • provider group

生產(chǎn)者組,簡單來說就是多個(gè)發(fā)送同一類消息的生產(chǎn)者稱之為一個(gè)生產(chǎn)者組。

  • consumer

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

  • consumer group

消費(fèi)者組,和生產(chǎn)者類似,消費(fèi)同一類消息的多個(gè) Consumer 實(shí)例組成一個(gè)消費(fèi)者組。

  • Topic Topic

用于將消息按主題做劃分,Producer將消息發(fā)往指定的Topic,Consumer訂閱該Topic就可以收到這條消息。Topic跟發(fā)送方和消費(fèi)方都沒有強(qiáng)關(guān)聯(lián)關(guān)系,發(fā)送方可以同時(shí)往多個(gè)Topic投放消息,消費(fèi)方也可以訂閱多個(gè)Topic的消息。在RocketMQ中,Topic是一個(gè)上邏輯概念。消息存儲(chǔ)不會(huì)按Topic分開。

  • Message

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

  • Tag 標(biāo)簽

可以被認(rèn)為是對 Topic 進(jìn)一步細(xì)化。一般在相同業(yè)務(wù)模塊中通過引入標(biāo)簽來標(biāo)記不同用途的消息。

  • Broker Broker

是RocketMQ的核心模塊,負(fù)責(zé)接收并存儲(chǔ)消息,同時(shí)提供Push/Pull接口來將消息發(fā)送給Consumer。Consumer可選擇從Master或者Slave讀取數(shù)據(jù)。多個(gè)主/從組成Broker集群,集群內(nèi)的Master節(jié)點(diǎn)之間不做數(shù)據(jù)交互。Broker同時(shí)提供消息查詢的功能,可以通過MessageID和MessageKey來查詢消息。Borker會(huì)將自己的Topic配置信息實(shí)時(shí)同步到NameServer。

  • Queue Topic

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

  • Offset

是RocketMQ在存儲(chǔ)消息時(shí)會(huì)為每個(gè)Topic下的每個(gè)Queue生成一個(gè)消息的索引文件,每個(gè)Queue都對應(yīng)一個(gè)Offset記錄當(dāng)前Queue中消息條數(shù)。

  • NameServer

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

  • Producer/Consumer

通過查詢接口獲取Topic對應(yīng)的Broker的地址信息

  • Broker

注冊配置信息到NameServer, 實(shí)時(shí)更新Topic信息到NameServer

單機(jī)版安裝部署

這里用作學(xué)習(xí)使用,所以使用docker安裝,安裝速度快。

1、安裝啟動(dòng)nameserver服務(wù)

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、安裝啟動(dòng)broker服務(wù)

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

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

啟動(dòng)broker服務(wù)

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、安裝啟動(dòng)控制臺(tái)

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

集群部署

集群部署原理圖

broker主備

主:

備:同步主節(jié)點(diǎn)的數(shù)據(jù),當(dāng)主節(jié)點(diǎn)宕機(jī)之后,可以從被變?yōu)橹鞅WC高可用。

在rocketmq中分為多主多從實(shí)現(xiàn)對我們topic數(shù)據(jù)實(shí)現(xiàn)分片存儲(chǔ)。

四種集群部署方式

  • 單個(gè)Master節(jié)點(diǎn), 缺點(diǎn)就是如果宕機(jī)之后可能整個(gè)服務(wù)不可用;
  • 多個(gè)Master節(jié)點(diǎn),分?jǐn)偞娣盼覀兊南?,缺點(diǎn):沒有Slave節(jié)點(diǎn),主的Master節(jié)點(diǎn)宕機(jī)之后消息數(shù)據(jù)可能會(huì)丟失的;
  • 多個(gè)Master和Slave節(jié)點(diǎn) 采用異步形式 效率非常高 數(shù)據(jù)可能短暫產(chǎn)生延遲(毫秒級(jí)別的)
  • 多個(gè)Master和Slave節(jié)點(diǎn) 采用同步形式, 效率比較低、數(shù)據(jù)不會(huì)產(chǎn)生延遲。

集群部署

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

配置文件說明:

#集群名稱,可以區(qū)分不同集群,不同的業(yè)務(wù)可以建多個(gè)集群,多個(gè)broker的配置文件中的該值必須一樣
brokerClusterName=kaico

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

#與fileReservedTim巳參數(shù)呼應(yīng),表明在幾點(diǎn)做消息刪除動(dòng)作,默認(rèn)值04 表示凌晨4 點(diǎn)。
deleteWhen=04
namesrvAddr=mqnameserver1:9876;mqnameserver2:9876
autoCreateTopicEnable=true  #是否自動(dòng)創(chuàng)建主題(true為允許自動(dòng)創(chuàng)建集群)
#topic默認(rèn)創(chuàng)建的隊(duì)列數(shù)
defaultTopicQueueNums=4
#是否允許Broker自動(dòng)創(chuàng)建訂閱組,建議線下開啟,線上關(guān)閉,默認(rèn)【true】
autoCreateSubscriptionGroup=true
#Broker 監(jiān)聽的端口號(hào),如果一臺(tái)機(jī)器上啟動(dòng)了多個(gè)Broker , 則要設(shè)置不同的端口號(hào),避免沖突。
listenPort=10911
brokerIp=192.168.1.1

1、首先啟動(dòng)兩個(gè)nameserver服務(wù)

2、啟動(dòng)多個(gè)broker服務(wù)(這里安排兩個(gè))

第一個(gè)broker配置文件

brokerClusterName=kaico  #集群名稱
brokerName=broker-a     #broker的名稱
brokerId=0              #master節(jié)點(diǎn)的標(biāo)識(shí)(0表示是master節(jié)點(diǎn))
namesrvAddr=mqnameserver1:9876;mqnameserver2:9876   #nameServer集群

第二個(gè)broker配置文件

brokerClusterName=kaico  #集群名稱
brokerName=broker-b     #broker的名稱
brokerId=0              #master節(jié)點(diǎn)的標(biāo)識(shí)(0表示是master節(jié)點(diǎn))
namesrvAddr=mqnameserver1:9876;mqnameserver2:9876   #nameServer集群

啟動(dòng)方式:

  1. 先啟動(dòng)nameServer服務(wù)
  2. 再去啟動(dòng)broker,在啟動(dòng)broker的命令中可以指定nameServer的連接信息。

到此這篇關(guān)于Docker安裝部署單機(jī)版Rocket及基礎(chǔ)講解的文章就介紹到這了,更多相關(guān)Docker Rocket內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Docker磁盤空間清理的方法實(shí)現(xiàn)

    Docker磁盤空間清理的方法實(shí)現(xiàn)

    在使用Docker的過程中,系統(tǒng)會(huì)逐漸積累一些無用的垃圾文件,占據(jù)寶貴的磁盤空間并影響系統(tǒng)性,本文主要介紹了Docker磁盤空間清理的方法實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-09-09
  • Docker Elasticsearch集群部署的操作過程

    Docker Elasticsearch集群部署的操作過程

    這篇文章主要介紹了Docker Elasticsearch集群部署的操作過程,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2024-03-03
  • 基于docker搭建redis集群的方法

    基于docker搭建redis集群的方法

    這篇文章主要介紹了基于docker搭建redis集群的方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-12-12
  • docker pull命令拉取鏡像失敗的解決方案

    docker pull命令拉取鏡像失敗的解決方案

    本文介紹了docker pull命令拉取鏡像失敗的解決方案,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-11-11
  • docker垃圾清理方式

    docker垃圾清理方式

    文章主要介紹了如何刪除Docker鏡像和容器、清理Docker磁盤空間以及配置Docker日志大小,通過這些方法可以有效地管理Docker資源,避免磁盤空間不足的問題
    2025-03-03
  • docker初識(shí)之五分鐘認(rèn)識(shí)docker

    docker初識(shí)之五分鐘認(rèn)識(shí)docker

    Docker 是一個(gè)開源的應(yīng)用容器引擎,讓開發(fā)者可以打包他們的應(yīng)用以及依賴包到一個(gè)可移植的容器中,然后發(fā)布到任何流行的 Linux 機(jī)器上,也可以實(shí)現(xiàn)虛擬化。通過本文學(xué)習(xí)可以快速了解docker,本文介紹的非常不錯(cuò)具有參考借鑒價(jià)值,感興趣的朋友一起看看吧
    2016-10-10
  • docker安裝portainer方法詳細(xì)步驟

    docker安裝portainer方法詳細(xì)步驟

    portainer是一款容器管理可視化界面,不想在虛擬中使用命令管理容器的小伙伴,可以選擇安裝portainer對容器進(jìn)行管理,查看日志、啟動(dòng)、停止容器等非常方便,這篇文章主要介紹了docker安裝portainer方法詳細(xì)步驟,需要的朋友可以參考下
    2022-10-10
  • Docker網(wǎng)絡(luò)配置(橋接網(wǎng)絡(luò)和自定義網(wǎng)絡(luò))自定義網(wǎng)絡(luò)設(shè)置ip方式

    Docker網(wǎng)絡(luò)配置(橋接網(wǎng)絡(luò)和自定義網(wǎng)絡(luò))自定義網(wǎng)絡(luò)設(shè)置ip方式

    這篇文章主要介紹了Docker網(wǎng)絡(luò)配置(橋接網(wǎng)絡(luò)和自定義網(wǎng)絡(luò))自定義網(wǎng)絡(luò)設(shè)置ip方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • Docker安裝redis并且設(shè)置密碼,以及進(jìn)入容器修改密碼方式

    Docker安裝redis并且設(shè)置密碼,以及進(jìn)入容器修改密碼方式

    這篇文章主要介紹了Docker安裝redis并且設(shè)置密碼,以及進(jìn)入容器修改密碼方式,
    2024-01-01
  • 如何解決報(bào)錯(cuò)unable to remove volume問題

    如何解決報(bào)錯(cuò)unable to remove volume問題

    這篇文章主要介紹了如何解決報(bào)錯(cuò)unable to remove volume問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-02-02

最新評論

临湘市| 桦川县| 通城县| 马边| 泰来县| 乌审旗| 望都县| 沽源县| 泸水县| 浦县| 颍上县| 浦城县| 石狮市| 专栏| 湟源县| 福泉市| 绥宁县| 葫芦岛市| 缙云县| 于田县| 兴国县| 买车| 景德镇市| 托克托县| 都江堰市| 湖州市| 墨脱县| 分宜县| 富源县| 安徽省| 镇康县| 崇仁县| 达孜县| 涿鹿县| 石狮市| 蕉岭县| 滦平县| 砀山县| 宣恩县| 江油市| 玉溪市|