亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

java開發(fā)RocketMQ消息中間件原理基礎(chǔ)詳解

 更新時間:2021年11月15日 11:27:42   作者:秋天的春  
最近 RocketMQ 剛剛上生產(chǎn)環(huán)境,閑暇之時在這里做一些分享,主要目的是讓初學(xué)者能快速上手RocketMQ,有需要的朋友可以借鑒參考下,希望能夠有所幫助

RocketMQ 是什么

Github 上關(guān)于 RocketMQ 的介紹:
RcoketMQ 是一款低延遲、高可靠、可伸縮、易于使用的消息中間件。具有以下特性:

  • 支持發(fā)布/訂閱(Pub/Sub)和點對點(P2P)消息模型
  • 在一個隊列中可靠的先進(jìn)先出(FIFO)和嚴(yán)格的順序傳遞
  • 支持拉(pull)和推(push)兩種消息模式
  • 單一隊列百萬消息的堆積能力
  • 支持多種消息協(xié)議,如 JMS、MQTT 等
  • 分布式高可用的部署架構(gòu),滿足至少一次消息傳遞語義
  • 提供 docker 鏡像用于隔離測試和云集群部署
  • 提供配置、指標(biāo)和監(jiān)控等功能豐富的 Dashboard

對于這些特性描述,大家簡單過一眼就即可,深入學(xué)習(xí)之后自然就明白了。

專業(yè)術(shù)語

 Producer

消息生產(chǎn)者,生產(chǎn)者的作用就是將消息發(fā)送到 MQ,生產(chǎn)者本身既可以產(chǎn)生消息,如讀取文本信息等。也可以對外提供接口,由外部應(yīng)用來調(diào)用接口,再由生產(chǎn)者將收到的消息發(fā)送到 MQ。

Producer Group

生產(chǎn)者組,簡單來說就是多個發(fā)送同一類消息的生產(chǎn)者稱之為一個生產(chǎn)者組。在這里可以不用關(guān)心,只要知道有這么一個概念即可。

Consumer

消息消費者,簡單來說,消費 MQ 上的消息的應(yīng)用程序就是消費者,至于消息是否進(jìn)行邏輯處理,還是直接存儲到數(shù)據(jù)庫等取決于業(yè)務(wù)需要。

Consumer Group

消費者組,和生產(chǎn)者類似,消費同一類消息的多個 consumer 實例組成一個消費者組。

Topic

Topic 是一種消息的邏輯分類,比如說你有訂單類的消息,也有庫存類的消息,那么就需要進(jìn)行分類,一個是訂單 Topic 存放訂單相關(guān)的消息,一個是庫存 Topic 存儲庫存相關(guān)的消息。

Message

Message 是消息的載體。一個 Message 必須指定 topic,相當(dāng)于寄信的地址。Message 還有一個可選的 tag 設(shè)置,以便消費端可以基于 tag 進(jìn)行過濾消息。也可以添加額外的鍵值對,例如你需要一個業(yè)務(wù) key 來查找 broker 上的消息,方便在開發(fā)過程中診斷問題。

Tag

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

Broker

Broker 是 RocketMQ 系統(tǒng)的主要角色,其實就是前面一直說的 MQ。Broker 接收來自生產(chǎn)者的消息,儲存以及為消費者拉取消息的請求做好準(zhǔn)備。

Name Server

Name Server 為 producer 和 consumer 提供路由信息。

RocketMQ 架構(gòu)

有四個集群,分別是 NameServer 集群、Broker 集群、Producer 集群和 Consumer 集群:

NameServer: 提供輕量級的服務(wù)發(fā)現(xiàn)和路由。 每個 NameServer 記錄完整的路由信息,提供等效的讀寫服務(wù),并支持快速存儲擴(kuò)展。

Broker: 通過提供輕量級的 Topic 和 Queue 機(jī)制來處理消息存儲,同時支持推(push)和拉(pull)模式以及主從結(jié)構(gòu)的容錯機(jī)制。

Producer:生產(chǎn)者,產(chǎn)生消息的實例,擁有相同 Producer Group 的 Producer 組成一個集群。

Consumer:消費者,接收消息進(jìn)行消費的實例,擁有相同 Consumer Group 的

Consumer 組成一個集群。

簡單說明一下圖中箭頭含義,從 Broker 開始,Broker Master1 和 Broker Slave1 是主從結(jié)構(gòu),它們之間會進(jìn)行數(shù)據(jù)同步,即 Date Sync。同時每個 Broker 與
NameServer 集群中的所有節(jié)
點建立長連接,定時注冊 Topic 信息到所有 NameServer 中。

Producer 與 NameServer 集群中的其中一個節(jié)點(隨機(jī)選擇)建立長連接,定期從 NameServer 獲取 Topic 路由信息,并向提供 Topic 服務(wù)的 Broker Master 建立長連接,且定時向 Broker 發(fā)送心跳。Producer 只能將消息發(fā)送到 Broker master,但是 Consumer 則不一樣,它同時和提供 Topic 服務(wù)的 Master 和 Slave
建立長連接,既可以從 Broker Master 訂閱消息,也可以從 Broker Slave 訂閱消息。

RocketMQ 集群部署模式

單 master 模式

也就是只有一個 master 節(jié)點,稱不上是集群,一旦這個 master 節(jié)點宕機(jī),那么整個服務(wù)就不可用,適合個人學(xué)習(xí)使用。

多master 模式

多個 master 節(jié)點組成集群,單個 master 節(jié)點宕機(jī)或者重啟對應(yīng)用沒有影響。

優(yōu)點:所有模式中性能最高
缺點:單個 master 節(jié)點宕機(jī)期間,未被消費的消息在節(jié)點恢復(fù)之前不可用,消息的實時性就受到影響。

注意:使用同步刷盤可以保證消息不丟失,同時 Topic 相對應(yīng)的 queue 應(yīng)該分布在集群中各個節(jié)點,而不是只在某各節(jié)點上,否則,該節(jié)點宕機(jī)會對訂閱該 topic 的應(yīng)用造成影響。

多 master 多 slave 異步復(fù)制模式

在多 master 模式的基礎(chǔ)上,每個 master 節(jié)點都有至少一個對應(yīng)的 slave。master
節(jié)點可讀可寫,但是 slave 只能讀不能寫,類似于 mysql 的主備模式。

優(yōu)點: 在 master 宕機(jī)時,消費者可以從 slave 讀取消息,消息的實時性不會受影響,性能幾乎和多 master 一樣。
缺點:使用異步復(fù)制的同步方式有可能會有消息丟失的問題。

多 master 多 slave 同步雙寫模式

同多 master 多 slave 異步復(fù)制模式類似,區(qū)別在于 master 和 slave 之間的數(shù)據(jù)同步方式。

優(yōu)點:同步雙寫的同步模式能保證數(shù)據(jù)不丟失。
缺點:發(fā)送單個消息 RT 會略長,性能相比異步復(fù)制低10%左右。

刷盤策略:同步刷盤和異步刷盤(指的是節(jié)點自身數(shù)據(jù)是同步還是異步存儲)

同步方式:同步雙寫和異步復(fù)制(指的一組 master 和 slave 之間數(shù)據(jù)的同步)

注意:要保證數(shù)據(jù)可靠,需采用同步刷盤和同步雙寫的方式,但性能會較其他方式低。

以上就是java開發(fā)RocketMQ消息中間件基礎(chǔ)詳解的詳細(xì)內(nèi)容,更多關(guān)于RocketMQ消息中間件的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • java 接口回調(diào)實例詳解

    java 接口回調(diào)實例詳解

    這篇文章主要介紹了java 接口回調(diào)實例詳解的相關(guān)資料,所謂回調(diào)就是使用java中的多態(tài),需要的朋友可以參考下
    2017-07-07
  • Java基礎(chǔ)-Java變量的聲明和作用域

    Java基礎(chǔ)-Java變量的聲明和作用域

    這篇文章主要介紹了Java變量的聲明和作用域,變量其實就是內(nèi)存中的一個存儲空間,用來存儲數(shù)據(jù),具體的相關(guān)內(nèi)容,需要的小伙伴可以參考下面文章內(nèi)容
    2022-01-01
  • 詳解Spring加載Properties配置文件的四種方式

    詳解Spring加載Properties配置文件的四種方式

    這篇文章主要介紹了詳解Spring加載Properties配置文件的四種方式,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-05-05
  • JAVA與SQL 中的null與NULL解析

    JAVA與SQL 中的null與NULL解析

    這篇文章主要介紹了JAVA與SQL 中的null與NULL解析,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • Java實現(xiàn)定時任務(wù)的方法詳解

    Java實現(xiàn)定時任務(wù)的方法詳解

    大家都用過鬧鐘,鬧鐘可以說是一種定時任務(wù)。那么,在?Java?中,如何實現(xiàn)這樣的功能呢?即如何實現(xiàn)定時任務(wù)呢?本文就來詳細(xì)和大家聊聊
    2022-10-10
  • java算法題解LeetCode35復(fù)雜鏈表的復(fù)制實例

    java算法題解LeetCode35復(fù)雜鏈表的復(fù)制實例

    這篇文章主要為大家介紹了java算法題解LeetCode35復(fù)雜鏈表的復(fù)制實例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-01-01
  • Spring @Lookup深入分析實現(xiàn)原理

    Spring @Lookup深入分析實現(xiàn)原理

    這篇文章主要介紹了Spring @Lookup實現(xiàn)原理,我們知道在spring容器中單獨的一個抽象類是不能成為一個bean的,那么有沒有辦法呢?這個時候我們可以使用Lookup注解
    2023-01-01
  • java理論基礎(chǔ)Stream元素的匹配與查找

    java理論基礎(chǔ)Stream元素的匹配與查找

    這篇文章主要為大家介紹了java理論基礎(chǔ)Stream元素的匹配與查找方法的示例說明解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2022-03-03
  • Java面向?qū)ο笾畠?nèi)部類詳解

    Java面向?qū)ο笾畠?nèi)部類詳解

    在 Java 中,允許一個類的定義位于另一個類的內(nèi)部,前者稱為內(nèi)部類,后者稱為外部類。這篇文章將總結(jié)一下內(nèi)部類的使用,感興趣的可以了解一下
    2022-10-10
  • Java多線程編程中synchronized關(guān)鍵字的基礎(chǔ)用法講解

    Java多線程編程中synchronized關(guān)鍵字的基礎(chǔ)用法講解

    Java的synchronized關(guān)鍵字用于修飾線程同步,用以線程資源共享的目的等,下面就帶來簡單的Java多線程編程中synchronized關(guān)鍵字的基礎(chǔ)用法講解
    2016-06-06

最新評論