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

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)消息模型
  • 在一個隊列中可靠的先進先出(FIFO)和嚴格的順序傳遞
  • 支持拉(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)用程序就是消費者,至于消息是否進行邏輯處理,還是直接存儲到數(shù)據(jù)庫等取決于業(yè)務(wù)需要。

Consumer Group

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

Topic

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

Message

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

Tag

標(biāo)簽可以被認為是對 Topic 進一步細化。一般在相同業(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ù),并支持快速存儲擴展。

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

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

Consumer:消費者,接收消息進行消費的實例,擁有相同 Consumer Group 的

Consumer 組成一個集群。

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

Producer 與 NameServer 集群中的其中一個節(jié)點(隨機選擇)建立長連接,定期從 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é)點宕機,那么整個服務(wù)就不可用,適合個人學(xué)習(xí)使用。

多master 模式

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

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

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

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

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

優(yōu)點: 在 master 宕機時,消費者可以從 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ǔ)詳解的詳細內(nèi)容,更多關(guān)于RocketMQ消息中間件的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Java jvm中Code Cache案例詳解

    Java jvm中Code Cache案例詳解

    這篇文章主要介紹了Java jvm中Code Cache案例詳解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • 解決@Validated注解無效,嵌套對象屬性的@NotBlank無效問題

    解決@Validated注解無效,嵌套對象屬性的@NotBlank無效問題

    這篇文章主要介紹了解決@Validated注解無效,嵌套對象屬性的@NotBlank無效問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • 詳解Spring MVC攔截器實現(xiàn)session控制

    詳解Spring MVC攔截器實現(xiàn)session控制

    這篇文章主要介紹了詳解Spring MVC攔截器實現(xiàn)session控制,使用session監(jiān)聽,重復(fù)登錄后,強制之前登錄的session過期。有興趣的可以了解一下。
    2017-01-01
  • 詳解springboot設(shè)置默認參數(shù)Springboot.setDefaultProperties(map)不生效解決

    詳解springboot設(shè)置默認參數(shù)Springboot.setDefaultProperties(map)不生效解決

    這篇文章主要介紹了詳解springboot設(shè)置默認參數(shù)Springboot.setDefaultProperties(map)不生效解決,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • java數(shù)字和中文算數(shù)驗證碼的實現(xiàn)

    java數(shù)字和中文算數(shù)驗證碼的實現(xiàn)

    這篇文章主要介紹了java數(shù)字和中文算數(shù)驗證碼的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • java累加和校驗實現(xiàn)方式16進制(推薦)

    java累加和校驗實現(xiàn)方式16進制(推薦)

    下面小編就為大家?guī)硪黄猨ava累加和校驗實現(xiàn)方式16進制(推薦)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-11-11
  • mybatis-generator-gui 工具使用(圖形化工具)

    mybatis-generator-gui 工具使用(圖形化工具)

    基于 mybatis generator 開發(fā)一款界面工具, 本工具可以使你非常容易及快速生成 Mybatis 的 Java POJO 文件及數(shù)據(jù)庫 Mapping 文件。本文重點給大家介紹mybatis-generator-gui 工具使用,感興趣的朋友一起看看吧
    2022-03-03
  • 一文帶你深入認識JAVA中的異常

    一文帶你深入認識JAVA中的異常

    Java異常處理成為社區(qū)中討論最多的話題之一,下面這篇文章主要給大家介紹了關(guān)于JAVA中異常的相關(guān)資料,文中通過代碼介紹的非常詳細,對大家學(xué)習(xí)或者使用java具有一定的參考借鑒價值,需要的朋友可以參考下
    2024-06-06
  • SpringBoot Maven打包失敗報:class lombok.javac.apt.LombokProcessor錯誤的解決辦法

    SpringBoot Maven打包失敗報:class lombok.javac.apt.Lombo

    最新項目部署的時候,出現(xiàn)了一個maven打包失敗的問題,報:class lombok.javac.apt.LombokProcessor錯誤,所以本文給大家介紹了如何解決SpringBoot Maven 打包失?。篶lass lombok.javac.apt.LombokProcessor 錯誤,需要的朋友可以參考下
    2023-12-12
  • Java實現(xiàn)獲取內(nèi)網(wǎng)的所有IP地址

    Java實現(xiàn)獲取內(nèi)網(wǎng)的所有IP地址

    這篇文章主要介紹了如何利用Java語言實現(xiàn)獲取內(nèi)網(wǎng)的所有IP地址,文中的示例代碼講解詳細,對我們學(xué)習(xí)有一定的參考價值,快跟隨小編一起學(xué)習(xí)一下吧
    2022-06-06

最新評論

获嘉县| 云阳县| 普洱| 金堂县| 无棣县| 阜南县| 专栏| 鹤峰县| 廉江市| 通州市| 安陆市| 宁强县| 响水县| 林州市| 南安市| 沾益县| 九龙坡区| 秦安县| 长子县| 巴彦淖尔市| 伊通| 四会市| 汶川县| 贵州省| 巴东县| 桐乡市| 连山| 花莲县| 酉阳| 沿河| 丰宁| 互助| 临朐县| 澳门| 临泉县| 梁平县| 呼玛县| 绥德县| 北安市| 正宁县| 郸城县|