消息隊列RocketMQ應對雙十一流量洪峯的“六大武器”

語言: CN / TW / HK

作者:不周

審核校對:歲月、明鍛

編輯&排版:雯燕

“ 4982 億,58.3 萬筆/秒 ”的背後

在新冠肺炎疫情催化下,數字化生活方式漸成新常態。“4982 億,58.3 萬筆/秒”是 2020 天貓雙 11 全球狂歡節(簡稱:天貓雙 11 )對數字經濟的先發優勢和巨大潛能的直觀體現。

面對千萬級併發、萬億級的流量洪峯,背後有力支撐的便是雙十一交易核心鏈路的官方指定產品:消息隊列 RocketMQ 。

雙十一交易場景業務痛點

隨着雙十一的逐年升温,保障交易場景的穩定性已成為各企業在雙十一業務中的關鍵,每年雙十一活動的凌晨,是“萬民狂歡”的日子,同時也是各企業交易系統備受考驗的時候,保證核心交易系統的業務處理能力、有效應對每秒數十萬筆的交易訂單成為重中之重,若不能進行流量緩衝將直接引發這些系統的崩潰。避免系統崩潰的核心“祕訣”便是消息隊列 RocketMQ。

消息隊列 RocketMQ 是如何幫助各企業交易系統扛住瞬間千萬級 TPS、萬億級流量洪峯的衝擊,並保持各個應用之間的消息通暢的呢?下面為您介紹消息隊列 RocketMQ 應對雙十一流量洪峯的“六大武器”。

消息隊列 RocketMQ 的“六大武器”

雙十一的流量洪峯究竟會給用户和商家系統業務帶來哪些問題?消息隊列 RocketMQ 的“六大武器”是如何解決這些問題的呢?小編帶您初探一二:

武器一:“異步解耦”

背景:雙十一的夜晚,當用户在手機上“指點江山”時,可曾想,一個小小的購物 APP 背後其實是一個個龐大的系統,從用户選購商品的那一刻起,就要和成百個業務系統打交道,每一筆交易訂單數據都會有幾百個下游業務系統的關聯,包括物流、購物車、積分、直充、流計算分析等等,整個系統龐大而且複雜,架構設計稍有不合理,將直接影響主站業務的連續性。

面對如此複雜且龐大的系統,避免系統業務之間相互耦合影響,便要用到消息隊列 RocketMQ 的“異步解耦”功能,通過消息隊列 RocketMQ 實現上、下游業務系統松耦合,松耦合可以降低系統的複雜度,縮短用户請求的響應時間(將原多個步驟的所需時間之和壓縮到只需一條消息的時間),保證下游某個子系統的故障不影響整個鏈路。

武器二:“削峯填谷”

背景:在處理完交易業務背後龐大的系統所帶來的耦合性問題後,從用户視角出發來看,雙十一期間 0 點這個時間有成百上千萬的用户在同時點擊着購買頁面,由於用户海量請求,導致流量激增,面對如此大量的訪問流量,下游的通知系統可能無法承載海量的調用量,甚至會導致系統崩潰等問題而發生漏通知的情況。

為解決這些問題,就要用到消息隊列 RocketMQ 的“削峯填谷”功能,可在應用和下游通知系統之間加入消息隊列 RocketMQ,RocketMQ 支持高併發的消息低延遲寫入,以及無限的堆積能力,可以避免超高流量的衝擊,確保下游業務在安全水位內平滑穩定的運行。

武器三:“分佈式事務消息”

背景:通過前面的介紹瞭解到,通過消息的異步解耦,可實現消息的分佈式處理,在傳統的分佈式事務處理方式中,用户創建了一條新的訂單信息,伴着這條訂單信息的變更,在整個業務鏈條中的購物車、用户表、積分等都需要變更,系統需要藉助分佈式事務協調組件來保證多個業務調用的事務一致性。傳統的分佈式事務組件追求強一致性,性能吞吐低,系統複雜。那如何才能既實現分佈式事務,同時又不使系統過於複雜?

這個時候消息隊列 RocketMQ 的“分佈式事務消息”的功能便起到了關鍵作用,通過原創的輕量級訂單流轉事務協調能力,只需發送一條消息,就可以實現消息最終一致性的分佈式事務,同時確保訂單狀態持久化和下游調用一致。

武器四:“消息過濾”

背景:通過以上介紹會發現從客户下單到客户收到商品這一過程會生產一系列消息,按消息種類可以分為交易消息、物流消息、購物車消息等,如何保證各個種類的消息進行有效投遞並被準確消費?

這時候就要用到消息隊列 RocketMQ 的“消息過濾”功能,可以通過 Tag 給不同種類的消息定義不同的屬性,根據消息屬性設置過濾條件對消息進行過濾,只有符合過濾條件的消息才會被投遞到消費端進行消費。比如給物流消息定義地域屬性,按照地域分為杭州和上海:

  • 訂單消息
  • 物流消息
    • 物流消息且地域為杭州
    • 物流消息且地域為上海

武器五:“定時消息”

背景:除了以上系統級別中可能出現的問題外,用户自己在購物過程中可能都遇到過一些小細節,比如在點擊了購買按鈕後,會出現“請您在 30 分鐘內完成支付”的提示,如果超過 30 分鐘未支付,訂單就會自動關閉。

這個業務用到的是消息隊列 RocketMQ 的“定時消息”功能,消息隊列 RocketMQ 可以實現自定義秒級精度間隔的定時消息,通過消息觸發一些定時任務,比如在某一固定時間點向用户發送提醒消息,最終實現海量訂單狀態變更超時的中心調度。

武器六:“順序收發”

背景:在雙 11 大促中,買家業務側和交易系統本身會面臨諸多問題,賣家側也會遇到一些難點,比如,買家買了東西,賣家自己卻看不到。

為了解決這個問題,一般需要使用消息隊列的順序消息同步能力將買家表的變更訂閲同步到賣家表。此時依賴 RocketMQ 的無熱點、高性能、高可靠順序消息可以保障數據庫變更的順序同步,保證買賣家訂單同步。

總結

通過以上介紹,帶您瞭解了消息隊列 RocketMQ 的六大武器在雙十一“戰場”上的威力,2021 年“雙十一”開戰在即,消息隊列 RocketMQ 為您雙十一的業務保架護航,同時鉑金版可提供 99.99% 的服務可用性和 99.99999999% 的數據可靠性,聯繫我們,期待陪您的業務一起在 2021 雙十一中“乘風破浪”。