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

關(guān)于消息中間件RocketMQ的基本概念及功能

 更新時(shí)間:2023年05月20日 09:19:40   作者:叫我二蛋  
這篇文章主要介紹了關(guān)于消息中間件RocketMQ的基本概念及功能,RocketMQ作為一款純java、分布式、隊(duì)列模型的開(kāi)源消息中間件,支持事務(wù)消息、順序消息、批量消息、定時(shí)消息、消息回溯等,需要的朋友可以參考下

背景

RocketMQ是阿里巴巴在2012年開(kāi)發(fā)的分布式消息中間件,專(zhuān)為萬(wàn)億級(jí)超大規(guī)模的消息處理而設(shè)計(jì),具有高吞吐量、低延遲、海量堆積、順序收發(fā)等特點(diǎn)。

2015年,RocketMQ在消息傳遞方面迎來(lái)了一批重量級(jí)功能發(fā)布,包括事務(wù)消息、SQL過(guò)濾、軌跡追蹤、定時(shí)消息、高可用多活等,以滿(mǎn)足阿里巴巴日益豐富的業(yè)務(wù)場(chǎng)景。同年,RocketMQ被捐贈(zèng)給Apache基金會(huì),并入選孵化器項(xiàng)目,旨在未來(lái)為更多開(kāi)發(fā)者服務(wù)。

2017年從Apache基金會(huì)畢業(yè)后,RocketMQ被指定為頂級(jí)項(xiàng)目(TLP)。

架構(gòu)模型

RocketMQ基于kafka的設(shè)計(jì)使用Java重寫(xiě),其架構(gòu)模型如下圖:

在這里插入圖片描述

  • NameServer Cluster 可以對(duì)應(yīng)Kafka中的Zookeeper Cluster。
  • 多個(gè)Broker Master 可以對(duì)應(yīng)Kafka中的分區(qū)承載體。
  • Broker Slave 可以對(duì)應(yīng)Kafka中的replica承載體。

NameServer 名字服務(wù)器

NameServer是一個(gè)簡(jiǎn)單的 Topic 路由注冊(cè)中心,支持 Topic、Broker 的動(dòng)態(tài)注冊(cè)與發(fā)現(xiàn)。主要包括兩個(gè)功能:

  • Broker管理,NameServer接受Broker集群的注冊(cè)信息并且保存下來(lái)作為路由信息的基本數(shù)據(jù)。然后提供心跳檢測(cè)機(jī)制,檢查Broker是否還存活;
  • 路由信息管理,每個(gè)NameServer將保存關(guān)于 Broker 集群的整個(gè)路由信息和用于客戶(hù)端查詢(xún)的隊(duì)列信息。Producer和Consumer通過(guò)NameServer就可以知道整個(gè)Broker集群的路由信息,從而進(jìn)行消息的投遞和消費(fèi)。

NameServer通常會(huì)有多個(gè)實(shí)例部署,各實(shí)例間相互不進(jìn)行信息通訊。Broker是向每一臺(tái)NameServer注冊(cè)自己的路由信息,所以每一個(gè)NameServer實(shí)例上面都保存一份完整的路由信息。當(dāng)某個(gè)NameServer因某種原因下線了,客戶(hù)端仍然可以向其它NameServer獲取路由信息。

Broker 代理服務(wù)器

Broker主要負(fù)責(zé)消息的存儲(chǔ)、投遞和查詢(xún)以及服務(wù)高可用保證。

在 Master-Slave 架構(gòu)中,Master可以部署多個(gè),一個(gè)Master可以對(duì)應(yīng)多個(gè)Slave,但是一個(gè)Slave只能對(duì)應(yīng)一個(gè)Master。Master 與 Slave 的對(duì)應(yīng)關(guān)系通過(guò)指定相同的BrokerName,不同的BrokerId 來(lái)定義,BrokerId為0表示Master,非0表示Slave。

生產(chǎn)者

生產(chǎn)者用來(lái)構(gòu)建并傳輸消息到服務(wù)端的運(yùn)行實(shí)體。生產(chǎn)者通常被集成在業(yè)務(wù)系統(tǒng)中,將業(yè)務(wù)消息按照要求封裝成消息并發(fā)送至服務(wù)端。投遞的過(guò)程支持快速失敗和重試,并且支持以下幾個(gè)形式:

  • 普通消息
  • 順序消息
  • 事務(wù)消息
  • 延遲消息
  • 批量消息

主題

主題是消息傳輸和存儲(chǔ)的頂層容器,用于標(biāo)識(shí)同一類(lèi)業(yè)務(wù)邏輯的消息。 主題的作用主要如下:

  • 定義數(shù)據(jù)的分類(lèi)隔離: 建議將不同業(yè)務(wù)類(lèi)型的數(shù)據(jù)拆分到不同的主題中管理,通過(guò)主題實(shí)現(xiàn)存儲(chǔ)的隔離性和訂閱隔離性。
  • 定義數(shù)據(jù)的身份和權(quán)限:消息本身是匿名無(wú)身份的,同一分類(lèi)的消息使用相同的主題來(lái)做身份識(shí)別和權(quán)限管理。

隊(duì)列

隊(duì)列是消息存儲(chǔ)和傳輸?shù)膶?shí)際容器,也是消息的最小存儲(chǔ)單元。隊(duì)列的主要作用如下:

  • 存儲(chǔ)順序性:隊(duì)列天然具備順序性,即消息按照進(jìn)入隊(duì)列的順序?qū)懭氪鎯?chǔ),同一隊(duì)列間的消息天然存在順序關(guān)系,隊(duì)列頭部為最早寫(xiě)入的消息,隊(duì)列尾部為最新寫(xiě)入的消息。消息在隊(duì)列中的位置和消息之間的順序通過(guò)位點(diǎn)(Offset)進(jìn)行標(biāo)記管理。

消息

消息是最小數(shù)據(jù)傳輸單元。具備如下特點(diǎn):

  • 消息不可變性:消息本質(zhì)上是已經(jīng)產(chǎn)生并確定的事件,一旦產(chǎn)生后,消息的內(nèi)容不會(huì)發(fā)生改變。
  • 消息持久化:RocketMQ 會(huì)默認(rèn)對(duì)消息進(jìn)行持久化,保證消息的可回溯性和系統(tǒng)故障場(chǎng)景下的可恢復(fù)性。

消息標(biāo)簽

消息標(biāo)簽是RocketMQ提供的細(xì)粒度消息分類(lèi)屬性,可以在主題層級(jí)之下做消息類(lèi)型的細(xì)分。

消息位點(diǎn)

消息是按到達(dá)RocketMQ服務(wù)端的先后順序存儲(chǔ)在指定主題的多個(gè)隊(duì)列中,每條消息在隊(duì)列中都有一個(gè)唯一的Long類(lèi)型坐標(biāo),這個(gè)坐標(biāo)被定義為消息位點(diǎn)。

消費(fèi)者

消費(fèi)者中用來(lái)接收并處理消息的運(yùn)行實(shí)體。消費(fèi)者通常被集成在業(yè)務(wù)系統(tǒng)中,從服務(wù)端獲取消息,并將消息轉(zhuǎn)化成業(yè)務(wù)可理解的信息,供業(yè)務(wù)邏輯處理。有以下幾個(gè)功能:

  • 支持以推(push),拉(pull)兩種模式對(duì)消息進(jìn)行消費(fèi)。
  • 支持集群方式和廣播方式的消費(fèi)。

消費(fèi)位點(diǎn)

一條消息被某個(gè)消費(fèi)者消費(fèi)完成后不會(huì)立即從隊(duì)列中刪除,RocketMQ會(huì)基于每個(gè)消費(fèi)者分組記錄消費(fèi)過(guò)的最新一條消息的位點(diǎn),即消費(fèi)位點(diǎn)??梢酝ㄟ^(guò)重置消費(fèi)位點(diǎn)來(lái)實(shí)現(xiàn)一些功能,比如,業(yè)務(wù)回溯,糾正處理。

消費(fèi)者分組

消費(fèi)者分組承載多個(gè)消費(fèi)行為一致的消費(fèi)者的負(fù)載均衡分組。和消費(fèi)者不同,消費(fèi)者分組并不是運(yùn)行實(shí)體,而是一個(gè)邏輯資源,通過(guò)消費(fèi)者分組初始化多個(gè)消費(fèi)者實(shí)現(xiàn)消費(fèi)性能的水平擴(kuò)展以及高可用容災(zāi)。在消費(fèi)者分組中,統(tǒng)一定義以下消費(fèi)行為:

  • 訂閱關(guān)系:消費(fèi)者分組的粒度管理訂閱關(guān)系,實(shí)現(xiàn)訂閱關(guān)系的管理和追溯。
  • 投遞順序性:服務(wù)端將消息投遞給消費(fèi)者消費(fèi)時(shí),支持順序投遞和并發(fā)投遞,投遞方式在消費(fèi)者分組中統(tǒng)一配置。
  • 消費(fèi)重試策略: 消費(fèi)者消費(fèi)消息失敗時(shí)的重試策略,包括重試次數(shù)、死信隊(duì)列設(shè)置等。具體信息,請(qǐng)參見(jiàn)消費(fèi)重試。

訂閱關(guān)系

訂閱關(guān)系是RocketMQ系統(tǒng)中消費(fèi)者獲取消息、處理消息的規(guī)則和狀態(tài)配置。

由消費(fèi)者分組動(dòng)態(tài)注冊(cè)到服務(wù)端系統(tǒng),并在后續(xù)的消息傳輸中按照訂閱關(guān)系定義的過(guò)濾規(guī)則進(jìn)行消息匹配和消費(fèi)進(jìn)度維護(hù)。通過(guò)配置訂閱關(guān)系,可控制如下傳輸行為:

  • 消息過(guò)濾規(guī)則:用于控制消費(fèi)者在消費(fèi)消息時(shí),選擇主題內(nèi)的哪些消息進(jìn)行消費(fèi)。
  • 消費(fèi)狀態(tài):消費(fèi)者分組在服務(wù)端注冊(cè)訂閱關(guān)系后,當(dāng)消費(fèi)者離線并再次上線后,可以獲取離線前的消費(fèi)進(jìn)度并繼續(xù)消費(fèi)。

參考文章

RocketMQ官方文檔

到此這篇關(guān)于關(guān)于消息中間件RocketMQ的基本概念及功能的文章就介紹到這了,更多相關(guān)RocketMQ概念及功能內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java ArrayUtils數(shù)組工具類(lèi)使用詳解

    Java ArrayUtils數(shù)組工具類(lèi)使用詳解

    這篇文章主要介紹了Java ArrayUtils數(shù)組工具類(lèi)使用,?ArrayUtils?是Apache Commons Lang庫(kù)中的一個(gè)工具類(lèi),主要用于處理數(shù)組的各種操作,它提供了許多實(shí)用的方法,包括數(shù)組的創(chuàng)建、修改、查詢(xún)等操作,極大地簡(jiǎn)化了數(shù)組處理的復(fù)雜度,需要的朋友可以參考下
    2025-05-05
  • 最新JVM垃圾回收算法詳解

    最新JVM垃圾回收算法詳解

    ? 垃圾收集器對(duì)堆進(jìn)行回收前,首先要確定堆中的對(duì)象哪些還"存活",哪些已經(jīng)"死去"。有兩種算法,分別是引用計(jì)數(shù)算法(Recference?Counting)和可達(dá)性分析算法(Reachability?Analysis),這篇文章主要介紹了JVM垃圾回收算法,需要的朋友可以參考下
    2022-05-05
  • SpringBoot集成Memcached的項(xiàng)目實(shí)踐

    SpringBoot集成Memcached的項(xiàng)目實(shí)踐

    Memcached是一個(gè)高性能的分布式內(nèi)存對(duì)象緩存系統(tǒng),用于動(dòng)態(tài)Web應(yīng)用以減輕數(shù)據(jù)庫(kù)負(fù)載,本文主要介紹了SpringBoot集成Memcached的項(xiàng)目實(shí)踐,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-01-01
  • Java如何自定義類(lèi)數(shù)組的創(chuàng)建和初始化

    Java如何自定義類(lèi)數(shù)組的創(chuàng)建和初始化

    這篇文章主要介紹了Java如何自定義類(lèi)數(shù)組的創(chuàng)建和初始化,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • Java?NIO中四大核心組件的使用詳解

    Java?NIO中四大核心組件的使用詳解

    Java?NIO(New?IO)是Java?1.4版本中引入的一套全新的IO處理機(jī)制,而NIO提供了四個(gè)核心組件:Channel、Buffer、Selector和SelectionKey,本文就來(lái)簡(jiǎn)單講講這四大組件的使用吧
    2023-05-05
  • Java并發(fā)之串行線程池實(shí)例解析

    Java并發(fā)之串行線程池實(shí)例解析

    這篇文章主要介紹了Java并發(fā)之串行線程池實(shí)例解析,分享了相關(guān)代碼示例,小編覺(jué)得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2018-02-02
  • Java之Spring簡(jiǎn)單的讀取和存儲(chǔ)對(duì)象

    Java之Spring簡(jiǎn)單的讀取和存儲(chǔ)對(duì)象

    這篇文章主要介紹了Spring的讀取和存儲(chǔ)對(duì)象,獲取 bean 對(duì)象也叫做對(duì)象裝配,是把對(duì)象取出來(lái)放到某個(gè)類(lèi)中,有時(shí)候也叫對(duì)象注?,想進(jìn)一步了解的同學(xué)可以參考本文
    2023-04-04
  • 關(guān)于 Java 的數(shù)據(jù)結(jié)構(gòu)鏈表

    關(guān)于 Java 的數(shù)據(jù)結(jié)構(gòu)鏈表

    這篇文章主要介紹了關(guān)于 Java 的數(shù)據(jù)結(jié)構(gòu)鏈表的相關(guān)資料,需要的朋友可以參考下面文章內(nèi)容
    2021-09-09
  • Java高效讀取大文件實(shí)例分析

    Java高效讀取大文件實(shí)例分析

    這篇文章主要介紹了Java高效讀取大文件實(shí)例分析,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2018-01-01
  • Java1.7全網(wǎng)最深入HashMap源碼解析

    Java1.7全網(wǎng)最深入HashMap源碼解析

    HashMap 是一個(gè)散列表,它存儲(chǔ)的內(nèi)容是鍵值對(duì)(key-value)映射。HashMap 實(shí)現(xiàn)了 Map 接口,根據(jù)鍵的 HashCode 值存儲(chǔ)數(shù)據(jù),具有很快的訪問(wèn)速度,最多允許一條記錄的鍵為 nul
    2021-11-11

最新評(píng)論

黑山县| 桃园市| 漾濞| 彰化市| 长春市| 浦江县| 乌兰浩特市| 阳原县| 青海省| 绥江县| 广德县| 中西区| 沅陵县| 交口县| 和平县| 高阳县| 东安县| 二连浩特市| 留坝县| 布拖县| 探索| 延津县| 宜川县| 张家港市| 泗洪县| 青州市| 托克逊县| 周宁县| 泸定县| 岚皋县| 杂多县| 漾濞| 新河县| 杭锦后旗| 章丘市| 平阴县| 舞钢市| 进贤县| 建德市| 康保县| 庄河市|