消息队列的四大典型使用场景
關(guān)鍵詞: 消息隊列? ?業(yè)務(wù)解耦 最終一致性 錯峰流控 日志同步 Kafka RabbitMQ
聲明:本文并非原創(chuàng),轉(zhuǎn)自華為云幫助中心的分布式消息服務(wù)(DMS)的用戶指南。客戶端連接方法通用,故摘抄過來分享給大家。
?
分布式消息服務(wù)可應(yīng)用在多個領(lǐng)域,包括異步通信解耦、企業(yè)解決方案、金融支付、電信、電子商務(wù)、快遞物流、廣告營銷、社交、即時通信、手游、視頻、物聯(lián)網(wǎng)、車聯(lián)網(wǎng)等。
分布式消息服務(wù)可以應(yīng)用但不局限于以下業(yè)務(wù)場景:
- 業(yè)務(wù)解耦
將業(yè)務(wù)中依賴其他系統(tǒng)同時屬于非核心或不重要的部分使用消息通知即可,無需同步等待其他系統(tǒng)的處理結(jié)果。
如電商網(wǎng)站在促銷期間搶購訂單,搶到的商品訂單信息放入消息隊列,出庫、發(fā)貨等后續(xù)會從隊列里讀取任務(wù)信息然后執(zhí)行。
- 最終一致性
在交易或支付系統(tǒng)中,不同的子系統(tǒng)/模塊的狀態(tài)需要最終保持一致,或都成功或都失敗。子系統(tǒng)/模塊之間傳遞的數(shù)據(jù)不能丟失,需要有可靠消息傳遞,能保證業(yè)務(wù)的連續(xù)性。DMS可以用于子系統(tǒng)/模塊間的高可靠數(shù)據(jù)傳遞,實現(xiàn)兩者之間的事務(wù)最終一致,降低實現(xiàn)難度和成本。
例如用戶使用儲蓄余額購買理財產(chǎn)品。由于理財系統(tǒng)一般對理財申購交易采用日終統(tǒng)一處理,允許用戶的儲蓄余額與理財系統(tǒng)資金余額存在一定時間段的不一致,或者說中間狀態(tài),因此,可以對理財產(chǎn)品的購買支付流程使用DMS服務(wù)的消息處理機制,保證儲蓄余額與理財余額的最終一致,同時避免系統(tǒng)間對賬不平。
- 錯峰流控
在電子商務(wù)系統(tǒng)或大型網(wǎng)站中,上下游系統(tǒng)處理能力存在差異,處理能力高的上游系統(tǒng)的突發(fā)流量可能會對處理能力低的某些下游系統(tǒng)造成沖擊,需要提高系統(tǒng)的可用性的同時降低系統(tǒng)實現(xiàn)的復(fù)雜性。電商大促銷等流量洪流突然來襲時,可以通過隊列服務(wù)堆積緩存訂單等信息,在下游系統(tǒng)有能力處理消息的時候再處理,避免下游訂閱系統(tǒng)因突發(fā)流量崩潰。消息隊列提供億級消息堆積能力,3天的保留時長,消息消費系統(tǒng)可以錯峰進行消息處理。
- 日志同步
應(yīng)用通過可靠異步方式將日志消息同步到消息服務(wù),再通過其他組件對日志做實時或離線分析,也可用于關(guān)鍵日志信息收集進行應(yīng)用監(jiān)控。
使用DMS實現(xiàn)日志同步一般按以下流程:
- 日志采集客戶端,負(fù)責(zé)用戶應(yīng)用服務(wù)的日志數(shù)據(jù)采集,以發(fā)送消息方式寫入DMS消息隊列。
- DMS消息隊列,負(fù)責(zé)日志數(shù)據(jù)的接收、存儲和轉(zhuǎn)發(fā)管理。
- 日志處理應(yīng)用,訂閱并消費DMS消息隊列中的日志數(shù)據(jù)。 圖1?日志同步示意圖
?說明:上圖中Scribe、Fluent、Flume、Logstash、Rsyslog為當(dāng)前幾款主流的開源日志采集工具,Logstash、ElasticSearch、Kibana為開源日志分析工具。
- 日志同步
轉(zhuǎn)載于:https://www.cnblogs.com/husterindg/p/9115158.html
《新程序員》:云原生和全面數(shù)字化實踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
以上是生活随笔為你收集整理的消息队列的四大典型使用场景的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 5.30 Tree Traversal
- 下一篇: Android Error:Could