訊息佇列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 雙十一中“乘風破浪”。