欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

背景

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

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

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

架構(gòu)模型

RocketMQ基于kafka的設(shè)計(jì)使用Java重寫,其架構(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è)信息并且保存下來作為路由信息的基本數(shù)據(jù)。然后提供心跳檢測(cè)機(jī)制,檢查Broker是否還存活;
  • 路由信息管理,每個(gè)NameServer將保存關(guān)于 Broker 集群的整個(gè)路由信息和用于客戶端查詢的隊(duì)列信息。Producer和Consumer通過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因某種原因下線了,客戶端仍然可以向其它NameServer獲取路由信息。

Broker 代理服務(wù)器

Broker主要負(fù)責(zé)消息的存儲(chǔ)、投遞和查詢以及服務(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)系通過指定相同的BrokerName,不同的BrokerId 來定義,BrokerId為0表示Master,非0表示Slave。

生產(chǎn)者

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

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

主題

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

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

隊(duì)列

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

  • 存儲(chǔ)順序性:隊(duì)列天然具備順序性,即消息按照進(jìn)入隊(duì)列的順序?qū)懭氪鎯?chǔ),同一隊(duì)列間的消息天然存在順序關(guān)系,隊(duì)列頭部為最早寫入的消息,隊(duì)列尾部為最新寫入的消息。消息在隊(duì)列中的位置和消息之間的順序通過位點(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ì)粒度消息分類屬性,可以在主題層級(jí)之下做消息類型的細(xì)分。

消息位點(diǎn)

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

消費(fèi)者

消費(fè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)過的最新一條消息的位點(diǎn),即消費(fèi)位點(diǎn)。可以通過重置消費(fèi)位點(diǎn)來實(shí)現(xiàn)一些功能,比如,業(yè)務(wù)回溯,糾正處理。

消費(fèi)者分組

消費(fèi)者分組承載多個(gè)消費(fèi)行為一致的消費(fèi)者的負(fù)載均衡分組。和消費(fèi)者不同,消費(fèi)者分組并不是運(yùn)行實(shí)體,而是一個(gè)邏輯資源,通過消費(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)參見消費(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ī)則進(jìn)行消息匹配和消費(fèi)進(jìn)度維護(hù)。通過配置訂閱關(guān)系,可控制如下傳輸行為:

  • 消息過濾規(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)文章

  • SpringBoot整合aws的示例代碼

    SpringBoot整合aws的示例代碼

    本文通過實(shí)例代碼給大家介紹SpringBoot整合aws的全過程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2021-12-12
  • Java SpringBoot自動(dòng)裝配原理詳解

    Java SpringBoot自動(dòng)裝配原理詳解

    這篇文章主要介紹了詳解Spring Boot自動(dòng)裝配的原理,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-09-09
  • java字符串中${}或者{}等的占位符替換工具類

    java字符串中${}或者{}等的占位符替換工具類

    今天小編就為大家分享一篇關(guān)于java字符串中${}或者{}等的占位符替換工具類,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2018-12-12
  • JAVA操作HDFS案例的簡(jiǎn)單實(shí)現(xiàn)

    JAVA操作HDFS案例的簡(jiǎn)單實(shí)現(xiàn)

    本篇文章主要介紹了JAVA操作HDFS案例的簡(jiǎn)單實(shí)現(xiàn),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-08-08
  • spring boot集成shiro詳細(xì)教程(小結(jié))

    spring boot集成shiro詳細(xì)教程(小結(jié))

    這篇文章主要介紹了spring boot 集成shiro詳細(xì)教程,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-01-01
  • Eclipse添加servlet模板過程代碼詳解

    Eclipse添加servlet模板過程代碼詳解

    這篇文章主要介紹了Eclipse添加servlet模板過程代碼詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-07-07
  • Idea中如何調(diào)出Run dashboard 或services窗口

    Idea中如何調(diào)出Run dashboard 或services窗口

    這篇文章主要介紹了Idea中如何調(diào)出Run dashboard 或services窗口問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • Java使用arthas修改日志級(jí)別詳解

    Java使用arthas修改日志級(jí)別詳解

    在我們線上環(huán)境中,一般不會(huì)開啟debug級(jí)別的日志,為了提高性能?info和warning級(jí)別的日志也一般不會(huì)打印出來,那么如果遇到線上問題,除了使用arthas定位問題,想通過查詢?nèi)罩緛韺?shí)現(xiàn)問題定位,如何查看logger信息,更新logger?level呢,下面我們來了解arthas修改日志級(jí)別
    2022-06-06
  • 詳解Java語言中的抽象類與繼承

    詳解Java語言中的抽象類與繼承

    這篇文章主要為大家詳細(xì)介紹了Java語言中的抽象類與繼承的相關(guān)資料,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Java有一定的幫助,感興趣的小伙伴快跟隨小編一起了解一下
    2022-10-10
  • Springboot注解@Value讀取配置文件參數(shù)詳解

    Springboot注解@Value讀取配置文件參數(shù)詳解

    Spring Boot提供了靈活的配置文件讀取機(jī)制,主要有兩種方式,第一種是使用@Value注解直接在類屬性上讀取application.yml文件中的配置,這種方式簡(jiǎn)單直接,但需要為每個(gè)配置項(xiàng)單獨(dú)設(shè)置屬性,第二種方式是通過@PropertySource注解讀取自定義的Properties文件
    2024-11-11

最新評(píng)論