成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

消息的發(fā)送-RocketMQ知識(shí)體系(二)

網(wǎng)絡(luò) 通信技術(shù)
本文講講講RocketMQ生產(chǎn)端的那些事兒,消息的發(fā)送相關(guān)的原理。RocketMQ 客戶端的消息發(fā)送可以分為業(yè)務(wù)層,消息處理層和通信層。

[[410032]]

上一篇認(rèn)識(shí)了一下RocketMQ,本文講講講RocketMQ生產(chǎn)端的那些事兒,消息的發(fā)送相關(guān)的原理。

消息發(fā)送的流程

RocketMQ 客戶端的消息發(fā)送可以分為以下三層:

業(yè)務(wù)層:直接調(diào)用 MQ Client 發(fā)送 API 的業(yè)務(wù)代碼;

消息處理層:RocketMQ Client 獲取業(yè)務(wù)發(fā)送的消息對(duì)象后,一系列的參數(shù)檢查、消息發(fā)送準(zhǔn)備、參數(shù)包裝等操作;

通信層:RocketMQ 基于 Netty 封裝的一個(gè) RPC 通信服務(wù),RocketMQ 的各個(gè)組件之間的通信全部使用這個(gè)模塊;

大概的流程:

  • Broker啟動(dòng)時(shí),向NameServer注冊(cè)信息
  • 客戶端調(diào)用producer發(fā)送消息時(shí),會(huì)先從NameServer獲取該topic的路由信息。消息頭code為GET_ROUTEINFO_BY_TOPIC
  • 從NameServer返回的路由信息,包括topic包含的隊(duì)列列表和broker列表
  • Producer端根據(jù)查詢策略,選出其中一個(gè)隊(duì)列,用于后續(xù)存儲(chǔ)消息
  • 每條消息會(huì)生成一個(gè)唯一id,添加到消息的屬性中。屬性的key為UNIQ_KEY
  • 對(duì)消息做一些特殊處理,比如:超過(guò)4M會(huì)對(duì)消息進(jìn)行壓縮
  • producer向Broker發(fā)送rpc請(qǐng)求,將消息保存到broker端。消息頭的code為SEND_MESSAGE或SEND_MESSAGE_V2(配置文件設(shè)置了特殊標(biāo)志)

消息的數(shù)據(jù)結(jié)構(gòu)

消息(Message)

消息系統(tǒng)所傳輸信息的物理載體,生產(chǎn)和消費(fèi)數(shù)據(jù)的最小單位,每條消息必須屬于一個(gè)主題。RocketMQ 中每個(gè)消息擁有唯一的 Message ID,且可以攜帶具有業(yè)務(wù)標(biāo)識(shí)的 Key。系統(tǒng)提供了通過(guò) Message ID 和 Key 查詢消息的功能。

核心字段配置

其他Message配置

Producer配置

消息發(fā)送方式

Rocketmq提供三種方式可以發(fā)送普通消息:同步、異步、和單向發(fā)送。

  • 同步:發(fā)送方發(fā)送消息后,收到服務(wù)端響應(yīng)后才發(fā)送下一條消息
  • 異步:發(fā)送一條消息后,不等服務(wù)端返回就可以繼續(xù)發(fā)送消息或者后續(xù)任務(wù)處理。發(fā)送方通過(guò)回調(diào)接口接收服務(wù)端響應(yīng),并處理響應(yīng)結(jié)果。
  • OneWay:發(fā)送方發(fā)送消息,不等待服務(wù)端返回響應(yīng)且沒(méi)有回調(diào)函數(shù)觸發(fā),即只發(fā)送請(qǐng)求不需要應(yīng)答。

發(fā)送方式對(duì)比:發(fā)送吞吐量,單向>異步>同步。但單向發(fā)送可靠性差存在丟失消息可能,選型根據(jù)實(shí)際需求確定。

2、消息類型

消息客戶端提供多種SDK:普通、順序、事務(wù)、延時(shí)消息

Producer負(fù)載均衡

producer在發(fā)送消息時(shí),默認(rèn)輪詢所有queue,消息就會(huì)被發(fā)送到不同的queue上。而queue可以分布在不同的broker上。

生產(chǎn)者高可用

【應(yīng)用場(chǎng)景】

假如現(xiàn)在有個(gè)由三個(gè) broker 節(jié)點(diǎn)組成的集群,有 topic1,默認(rèn)在每個(gè) broker 上創(chuàng)建 4 個(gè)隊(duì)列,分別是:master-a(q0,q1,q2,q3)、master-b(q0,q1,q2,q3)、master-c(q0,q1,q2,q3),上一次發(fā)送消息到 master-a 的 q0 隊(duì)列,此時(shí) master-a 宕機(jī)了,如果繼續(xù)發(fā)送 topic1 消息,如果避免再次發(fā)送到 master-a?

rocketmq 的解決方案:

發(fā)送失敗重試和 Broker 故障延遲規(guī)避機(jī)制。通過(guò)配置項(xiàng) retryTimesWhenSendFailed 來(lái)表示同步重試次數(shù),默認(rèn)為 2 次,加上正常發(fā)送 1 次,總共三次機(jī)會(huì);選擇隊(duì)列的方式通過(guò) sendLatencyFaultEnable 的值來(lái)控制,默認(rèn)值為 false,不啟動(dòng) broker 故障延遲機(jī)制,值為 true 時(shí)啟用 broker 故障延遲機(jī)制。

(1)發(fā)送失敗重試

RocketMQ 支持同步、異步發(fā)送,無(wú)論哪種方法都可以在失敗后重試,如果單個(gè) Broker 發(fā)生故障,重試會(huì)選擇其他 Broker 保證消息的正常發(fā)送。

失敗重試的邏輯:

(2)Broker 規(guī)避機(jī)制

RocketMQ Client 會(huì)維護(hù)一個(gè)“Broker-發(fā)送延遲”關(guān)系,根據(jù)這個(gè)關(guān)系選擇一個(gè)發(fā)送延遲級(jí)別較低的 Broker,這樣能最大限度地利用 Broker 的能力,剔除已經(jīng)宕機(jī)、不可用或發(fā)送延遲級(jí)別較高的 Broker,盡可能保證消息正常發(fā)送。

NameServer掛了怎么辦?

如果Namesrv掛了,當(dāng)新加入的生產(chǎn)消費(fèi)則獲取不到topic路由信息會(huì)報(bào)MQExecption;如果生產(chǎn)消費(fèi)緩存了生產(chǎn)者有緩存 Topic 的路由信息,如果NameServer 全部掛掉,并且,此時(shí)依然可以發(fā)送消息。

 

責(zé)任編輯:姜華 來(lái)源: 今日頭條
相關(guān)推薦

2021-07-14 17:18:14

RocketMQ消息分布式

2021-07-07 15:29:52

存儲(chǔ)RocketMQ體系

2021-07-13 11:52:47

順序消息RocketMQkafka

2021-07-09 07:15:48

RocketMQ數(shù)據(jù)結(jié)構(gòu)kafka

2021-07-16 18:44:42

RocketMQ知識(shí)

2021-07-12 10:25:03

RocketMQ數(shù)據(jù)結(jié)構(gòu)kafka

2015-07-28 17:52:36

IOS知識(shí)體系

2021-07-05 06:26:08

生產(chǎn)者kafka架構(gòu)

2017-06-22 13:07:21

2012-03-08 11:13:23

企業(yè)架構(gòu)

2017-02-27 16:42:23

Spark識(shí)體系

2017-04-03 15:35:13

知識(shí)體系架構(gòu)

2021-07-07 07:06:31

Brokerkafka架構(gòu)

2015-07-16 10:15:44

web前端知識(shí)體系

2020-10-26 08:34:18

知識(shí)體系普適性

2020-09-09 09:15:58

Nginx體系進(jìn)程

2020-03-09 10:31:58

vue前端開(kāi)發(fā)

2024-08-06 09:55:25

2017-07-25 17:34:54

大數(shù)據(jù)機(jī)器學(xué)習(xí)數(shù)據(jù)

2011-08-18 17:20:43

梭子魚(yú)知識(shí)體系
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 在线观看黄免费 | 亚洲成人午夜电影 | 日韩在线观看中文字幕 | 毛片网站在线观看视频 | 日本五月婷婷 | 男人久久天堂 | 精品久久久久久国产 | 欧美一区二区三区视频在线 | 日本三级网址 | 国产日韩精品视频 | 成人视屏在线观看 | 欧美一级一 | 亚洲精品乱码久久久久久按摩 | 中文字幕精品视频 | 国产欧美日韩在线 | 亚洲一区二区中文字幕 | 婷婷综合网| 欧美国产日韩一区二区三区 | 亚洲精品永久免费 | 高清视频一区二区三区 | 91国内精精品久久久久久婷婷 | 国产男女视频 | 成人精品在线观看 | 国产高潮好爽受不了了夜夜做 | 日日摸夜夜爽人人添av | 欧美日韩视频在线播放 | 国产精品日韩一区 | 狠狠操狠狠干 | 围产精品久久久久久久 | 四虎成人精品永久免费av九九 | www视频在线观看 | 久久tv在线观看 | 一级a爱片性色毛片免费 | 日韩三级电影在线看 | 亚洲成av人影片在线观看 | 久久视频精品在线 | 亚洲综合一区二区三区 | 可以免费观看的av片 | 国产日韩一区二区三免费高清 | 在线观看www | 乱一性一乱一交一视频a∨ 色爱av |