偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

58到家MQ如何快速實(shí)現(xiàn)流量削峰填谷

開發(fā) 開發(fā)工具
本文將簡(jiǎn)單介紹下,MQ要實(shí)現(xiàn)什么細(xì)節(jié),才能緩沖流量,削峰填谷。

問(wèn):為什么會(huì)有本文?

答:上一篇文章《到底什么時(shí)候該使用MQ?》引起了廣泛的討論,有朋友回復(fù)說(shuō),MQ的還有一個(gè)典型應(yīng)用場(chǎng)景是緩沖流量,削峰填谷,本文將簡(jiǎn)單介紹下,MQ要實(shí)現(xiàn)什么細(xì)節(jié),才能緩沖流量,削峰填谷。

問(wèn):站點(diǎn)與服務(wù),服務(wù)與服務(wù)上下游之間,一般如何通訊?

答:有兩種常見的方式

一種是“直接調(diào)用”,通過(guò)RPC框架,上游直接調(diào)用下游。

在某些業(yè)務(wù)場(chǎng)景之下(具體哪些業(yè)務(wù)場(chǎng)景,見《到底什么時(shí)候該使用MQ?》),可以采用“MQ推送”,上游將消息發(fā)給MQ,MQ將消息推送給下游。

問(wèn):為什么會(huì)有流量沖擊?

答:不管采用“直接調(diào)用”還是“MQ推送”,都有一個(gè)缺點(diǎn),下游消息接收方無(wú)法控制到達(dá)自己的流量,如果調(diào)用方不限速,很有可能把下游壓垮。

舉個(gè)栗子,秒殺業(yè)務(wù):

上游發(fā)起下單操作

下游完成秒殺業(yè)務(wù)邏輯(庫(kù)存檢查,庫(kù)存凍結(jié),余額檢查,余額凍結(jié),訂單生成,余額扣減,庫(kù)存扣減,生成流水,余額解凍,庫(kù)存解凍)

上游下單業(yè)務(wù)簡(jiǎn)單,每秒發(fā)起了10000個(gè)請(qǐng)求,下游秒殺業(yè)務(wù)復(fù)雜,每秒只能處理2000個(gè)請(qǐng)求,很有可能上游不限速的下單,導(dǎo)致下游系統(tǒng)被壓垮,引發(fā)雪崩。

為了避免雪崩,常見的優(yōu)化方案有兩種:

  • 業(yè)務(wù)上游隊(duì)列緩沖,限速發(fā)送
  • 業(yè)務(wù)下游隊(duì)列緩沖,限速執(zhí)行

不管哪種方案,都會(huì)引入業(yè)務(wù)的復(fù)雜性,有“緩沖流量”需求的系統(tǒng)都需要加入類似的機(jī)制(具體怎么保證消息可達(dá),見《消息總線能否實(shí)現(xiàn)消息必達(dá)?》),正所謂“通用痛點(diǎn)統(tǒng)一解決”,需要一個(gè)通用的機(jī)制解決這個(gè)問(wèn)題。

問(wèn):如何緩沖流量?

答:明明中間有了MQ,并且MQ有消息落地的機(jī)制,為何不能利用MQ來(lái)做緩沖呢?顯然是可以的。

問(wèn):MQ怎么改能緩沖流量?

答:由MQ-server推模式,升級(jí)為MQ-client拉模式。

MQ-client根據(jù)自己的處理能力,每隔一定時(shí)間,或者每次拉取若干條消息,實(shí)施流控,達(dá)到保護(hù)自身的效果。并且這是MQ提供的通用功能,無(wú)需上下游修改代碼。

問(wèn):如果上游發(fā)送流量過(guò)大,MQ提供拉模式確實(shí)可以起到下游自我保護(hù)的作用,會(huì)不會(huì)導(dǎo)致消息在MQ中堆積?

答:下游MQ-client拉取消息,消息接收方能夠批量獲取消息,需要下游消息接收方進(jìn)行優(yōu)化,方能夠提升整體吞吐量,例如:批量寫。

結(jié)論

1)MQ-client提供拉模式,定時(shí)或者批量拉取,可以起到削平流量,下游自我保護(hù)的作用(MQ需要做的)

2)要想提升整體吞吐量,需要下游優(yōu)化,例如批量處理等方式(消息接收方需要做的)

58到家架構(gòu)優(yōu)化具備整體性,需要通用服務(wù)和業(yè)務(wù)方一起優(yōu)化升級(jí)。

【本文為51CTO專欄作者“58沈劍”原創(chuàng)稿件,轉(zhuǎn)載請(qǐng)聯(lián)系原作者】

戳這里,看該作者更多好文

責(zé)任編輯:趙寧寧 來(lái)源: 51CTO專欄
相關(guān)推薦

2021-08-05 15:04:14

消息隊(duì)列后端

2022-03-07 08:13:06

MQ消息可靠性異步通訊

2025-01-20 07:00:00

2017-08-16 16:30:01

CMQ消息實(shí)踐

2025-03-27 03:40:00

分布式系統(tǒng)Kafka

2022-10-17 00:00:00

SQLMySQL數(shù)據(jù),

2023-04-26 09:16:17

2023-12-04 13:50:00

程序高并發(fā)

2017-02-16 13:46:27

可視化工具數(shù)據(jù)庫(kù)

2017-02-16 09:42:00

數(shù)據(jù)庫(kù)58到家存儲(chǔ)

2024-11-04 08:02:23

SpringRabbitMQ中間件

2021-01-20 20:37:09

AI

2022-02-07 12:10:01

消息

2021-05-07 15:28:03

Kafka客戶端Sarama

2024-06-14 15:46:46

2020-11-03 07:43:24

MQ版本號(hào)程序員

2019-09-23 10:47:52

Kafka架構(gòu)微服務(wù)

2025-01-10 08:20:00

MQ消息架構(gòu)

2024-03-22 12:10:39

Redis消息隊(duì)列數(shù)據(jù)庫(kù)

2020-03-12 09:34:05

Redis數(shù)據(jù)技術(shù)
點(diǎn)贊
收藏

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