日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

消息負(fù)載均衡策略

更新時(shí)間:

云消息隊(duì)列 RocketMQ 版的消息負(fù)載均衡策略針對(duì)生產(chǎn)者和消費(fèi)者有所差異。對(duì)消費(fèi)者而言,消息負(fù)載均衡策略在一定程度上影響消息堆積。

背景信息

隨著SDK版本的升級(jí),云消息隊(duì)列 RocketMQ 版的負(fù)載均衡策略也有所優(yōu)化,根據(jù)SDK版本,負(fù)載均衡策略可分為:

負(fù)載均衡策略(客戶端Java v2.x.x.Final和C++ v3.x.x)

前提條件

  • TCP協(xié)議Java SDK:

    • SDK版本:升級(jí)至2.x.x.Final版本

    • 實(shí)例所屬地域:華東1(杭州)、華北1(青島)、華北2(北京)、華北3(張家口)、華北5(呼和浩特)、華南1(深圳)、西南1(成都)、德國(guó)(法蘭克福)和印度尼西亞(雅加達(dá))。

  • TCP協(xié)議C++ SDK:

    • SDK版本:升級(jí)至3.x.x版本

    • 實(shí)例所屬地域:所有地域均支持。

優(yōu)勢(shì)

客戶端Java v2.x.x.Final和C++ v3.x.x版本的負(fù)載均衡策略有以下優(yōu)勢(shì):

  • 消息消費(fèi)更加靈活,不再按照Queue維度消費(fèi),同一Queue的消息可以被多個(gè)消費(fèi)者消費(fèi)。

  • 當(dāng)消費(fèi)者個(gè)數(shù)多于Queue的個(gè)數(shù)時(shí),也不會(huì)產(chǎn)生消費(fèi)者空轉(zhuǎn)的現(xiàn)象,避免資源浪費(fèi)。

生產(chǎn)者負(fù)載均衡策略

  • 無(wú)序消息(普通消息、事務(wù)消息、定時(shí)和延時(shí)消息):Producer將消息以輪詢的方式發(fā)送至Queue,如下圖所示:生產(chǎn)者-普通消息

    圖中Msg1、Msg2代表第一條消息、第二條消息,生產(chǎn)者會(huì)把第一條消息發(fā)送至Queue 1,然后第二條消息發(fā)送至Queue 2,第三條消息發(fā)送至Queue 3,以此類(lèi)推,第四條消息又發(fā)送至Queue 1,循環(huán)往復(fù)。

  • 順序消息:相同Sharding Key的消息被發(fā)送至同一個(gè)Queue,如下圖所示:生產(chǎn)者-順序消息

    圖中ShardingKey為1的消息都同時(shí)被發(fā)送到Queue1中,同樣Sharding Key為2的消息同時(shí)被發(fā)送至Queue 2中。

消費(fèi)者負(fù)載均衡策略

  • 無(wú)序消息:云消息隊(duì)列 RocketMQ 版Broker按照消息維度將Topic中的所有消息平均分配給消費(fèi)者集群中的多個(gè)消費(fèi)者處理。

    客戶端Java v2.x.x.Final和C++ v3.x.x版本的負(fù)載均衡不再按照Queue維度消費(fèi),同一Queue的消息可以被多個(gè)消費(fèi)者消費(fèi)。具體示例如下圖所示:消費(fèi)者-普通消息

    圖中每一個(gè)Queue中的多條消息都可同時(shí)被不同的消費(fèi)者消費(fèi),例如Queue 2中的四條消息被分配給了Consumer 1、Consumer 2、Consumer 3及Consumer 4消費(fèi)。

  • 順序消息:消息消費(fèi)根據(jù)Sharding Key負(fù)載均衡,不同Sharding Key的消息可被均衡的負(fù)載到多個(gè)Queue中消費(fèi),且為保證順序消息的語(yǔ)義,相同Sharding Key的消息會(huì)被同一個(gè)消費(fèi)者消費(fèi),具體示例如下圖所示:順序消息消費(fèi)策略

    說(shuō)明
    • 3-1:該圖標(biāo)背景色表示消息屬于Queue 1;Msg2-1表示該消息為Queue1中的第2條消息,且消息的ShardingKey為1。

    • 3-2:該圖標(biāo)背景色表示消息屬于Queue 2;Msg3-2表示該消息為Queue2中的第3條消息,且消息的ShardingKey為2。

    圖中Msg1-1、Msg2-1和Msg3-1這三條消息的Sharding Key都是1,因此被同一個(gè)消費(fèi)者Consumer 1消費(fèi),同樣Sharding Key都為2的消息同時(shí)被Consumer 2消費(fèi)。

    Msg4-3和Msg4-4的Sharding Key不同,分別為3和4,因此可被分配給不同的消費(fèi)者消費(fèi)。

負(fù)載均衡策略(客戶端Java v1.x.x.Final和C++ v1.x.x/v2.x.x)

生產(chǎn)者負(fù)載均衡策略

與客戶端Java v2.x.x.Final和C++ v3.x.x的負(fù)載均衡策略相同,具體示例,請(qǐng)參見(jiàn)負(fù)載均衡策略(客戶端Java v2.x.x.Final和C++ v3.x.x)

  • 無(wú)序消息:Producer的消息以輪詢的方式發(fā)送至Queue。

  • 順序消息:相同Sharding Key的消息被發(fā)送至同一個(gè)Queue。

消費(fèi)者負(fù)載均衡策略

說(shuō)明

無(wú)序消息和順序消息的負(fù)載均衡策略相同。

云消息隊(duì)列 RocketMQ 版包含Broker和Name Server等節(jié)點(diǎn),其中Broker節(jié)點(diǎn)負(fù)責(zé)將Topic的路由信息上報(bào)至Name Server節(jié)點(diǎn)。

假設(shè)目前云消息隊(duì)列 RocketMQ 版只有一個(gè)Broker節(jié)點(diǎn),消息從Producer發(fā)送至云消息隊(duì)列 RocketMQ 版的Topic,默認(rèn)會(huì)將這些Topic下的消息均衡負(fù)載至8個(gè)Queue(邏輯概念)。云消息隊(duì)列 RocketMQ 版Broker會(huì)將這些Queue再平均分配至屬于同一個(gè)Group ID的消費(fèi)者集群。

云消息隊(duì)列 RocketMQ 版中,一個(gè)Queue只能同時(shí)被分配至一個(gè)消費(fèi)者消費(fèi)。因此,每臺(tái)消費(fèi)者機(jī)器處理的Queue的數(shù)量有以下幾種可能:

  • 若消費(fèi)者機(jī)器數(shù)量大于Queue的數(shù)量,則超出Queue數(shù)量的機(jī)器會(huì)處理0個(gè)Queue上的消息,如下圖所示:消費(fèi)者-1

  • 若消費(fèi)者機(jī)器數(shù)量等于Queue的數(shù)量,則每臺(tái)機(jī)器會(huì)處理1個(gè)Queue上的消息,如下圖所示:消費(fèi)者-2

  • 若消費(fèi)者機(jī)器數(shù)量小于Queue的數(shù)量,則每臺(tái)機(jī)器會(huì)處理多個(gè)Queue上的消息,如下圖所示:消費(fèi)者-3

因?yàn)橄M(fèi)者負(fù)載均衡策略是以Queue為粒度維護(hù),如果消費(fèi)者集群中一臺(tái)機(jī)器處理變慢,可能是機(jī)器硬件、系統(tǒng)、遠(yuǎn)程RPC調(diào)用或Java GC等原因?qū)е路峙渲链藱C(jī)器上的Queue的消息不能及時(shí)處理,則整個(gè)Queue上的消息都會(huì)堆積。