国产gaysexchina男同gay,japanrcep老熟妇乱子伦视频,吃奶呻吟打开双腿做受动态图,成人色网站,国产av一区二区三区最新精品

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

2018-09-11 15:09 更新
問:為什么會有本文?
答:上一篇文章《到底什么時候該使用MQ?》引起了廣泛的討論,有朋友回復說,MQ的還有一個典型應用場景緩沖流量,削峰填谷,本文將簡單介紹下,MQ要實現(xiàn)什么細節(jié),才能緩沖流量,削峰填谷。

問:站點與服務,服務與服務上下游之間,一般如何通訊?
答:有兩種常見的方式
直接調用
一種是“直接調用”,通過RPC框架,上游直接調用下游。

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

問:為什么會有流量沖擊?
答:不管采用“直接調用”還是“MQ推送”,都有一個缺點,下游消息接收方無法控制到達自己的流量,如果調用方不限速,很有可能把下游壓垮。

舉個栗子秒殺業(yè)務
上游發(fā)起下單操作
下游完成秒殺業(yè)務邏輯(庫存檢查,庫存凍結,余額檢查,余額凍結,訂單生成,余額扣減,庫存扣減,生成流水,余額解凍,庫存解凍)

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

為了避免雪崩,常見的優(yōu)化方案有兩種:
1)業(yè)務上游隊列緩沖,限速發(fā)送
2)業(yè)務下游隊列緩沖,限速執(zhí)行

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

問:如何緩沖流量?
答:明明中間有了MQ,并且MQ有消息落地的機制,為何不能利用MQ來做緩沖呢?顯然是可以的。

問:MQ怎么改能緩沖流量?
答:由MQ-server推模式,升級為MQ-client拉模式。
MQ-client拉模式
MQ-client根據(jù)自己的處理能力,每隔一定時間,或者每次拉取若干條消息,實施流控,達到保護自身的效果。并且這是MQ提供的通用功能,無需上下游修改代碼。

問:如果上游發(fā)送流量過大,MQ提供拉模式確實可以起到下游自我保護的作用,會不會導致消息在MQ中堆積?
答:下游MQ-client拉取消息,消息接收方能夠批量獲取消息,需要下游消息接收方進行優(yōu)化,方能夠提升整體吞吐量,例如:批量寫。

結論
1)MQ-client提供拉模式,定時或者批量拉取,可以起到削平流量,下游自我保護的作用(MQ需要做的)
2)要想提升整體吞吐量,需要下游優(yōu)化,例如批量處理等方式(消息接收方需要做的)

58到家架構優(yōu)化具備整體性,需要通用服務業(yè)務方一起優(yōu)化升級。
以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號