天天看點

騎士卡:基于Kafka搭建消息中心,上億消息推送輕松完成

作者:折松,阿裡雲解決方案架構師

全球購騎士卡是國内領先的會員制特權電商平台,彙聚國内外“吃喝玩樂買”超300項會員專屬優惠特權。全球購騎士卡基于移動互聯生活方式,打通線上、線下消費場景,彙集時下熱門、高頻的商品及服務優惠。會員可享全國超萬家大型商超購物8折起、全國加油7折起、熱門電商平台專屬4折起、大牌美食餐飲5折起等,滿足使用者吃、喝、玩、樂、買各場景的消費需求。截至2020年,全球購騎士卡已累計服務使用者超5000萬名。2020年4月,全球購騎士卡完成A輪數千萬美元融資;同年5月,全球購騎士卡完成數千萬美元A+輪融資。

新的需求

全球購騎士特權業務的飛速發展,目前每天平均發送的短信量達到了約200萬+,需要PUSH的推送量達到了約1億+,通過微信推送量達到了5000萬+。是以,如何構造建設一個高性能、高穩定性、可擴充的消息中心迫在眉睫。

消息中心技術選型主要參考以下因素:

  • 削峰填谷能力:消息中心需要處理各條業務線的通知和營銷任務的資訊,而這些資訊根據轉化的需要,很大可能會集中化地在短期内進行推送,是以需要系統有削峰填谷的能力。
  • 接口通用能力:消息中心的接入方不希望被綁定在某個接口上,不需要對該接口進行維護可以供多個業務方進行發送處理。
  • 靈活類型劃分:消息中心需要支援靈活的業務分類配置, 因為我們消息中心這裡的業務配置非常多,大類就有短信、PUSH、微信推送,短信裡又分通知、驗證碼和營銷類别,而PUSH又區分APNS、管道服務商等第三方通道,以及Android廠商通道。
  • 穩定處理能力:所依賴的技術産品運作穩定,因為處于消息中心的通道位置,不能忍受産品本身的穩定性波動帶來的業務損失。
  • 叢集擴充能力:所依賴的技術産品沒有擴容瓶頸,對于我們的業務繼續發展有擴充的足夠空間,可以快速進行業務擴容訴求。

新的解法

騎士卡:基于Kafka搭建消息中心,上億消息推送輕松完成

使用消息中間件來做消息中心的通道是顯現而見的目标選項,綜合對比多種消息的産品,由于騎士卡并沒有需要順序消息、事務消息等高階功能,而是重點關注以下這些功能點:

  • 隊列的擴充能力: 在這方面,RabbitMQ的單Queue的處理能力不容易擴充;而RocketMQ的Topic是有ConsumerQueue的參數來進行配置擴容的,在Broker的配置檔案裡指定,但是對Broker層面生效的;而Kafka的Partition可以每個Topic擁有不同的取值。這樣在分類靈活性方面,Kafka是最優的選擇,RocketMQ次之。
  • 通用的接入方式:本質上RabbitMQ、RocketMQ、Kafka都是私有協定的方式接入,比較雲上商業版本的接入方式,對于Kafka支援最純粹友好,可以使用官方的接入方式進行接入。
  • 消息的吞吐能力:在各類消息的對比測試中, 因為Kafka本身的處理機制原因,都是由用戶端進行拉消息,整個broker的處理方式比别的消息中間件要簡潔,而Kafka的讀寫能力/吞吐量都是最大的。
  • 叢集穩定性能力:雲上的消息産品都很友好地保持業務的連續性來進行升配操作,并且對于商業版本的Kafka做了Broker上的優化,存儲上的優化,運維上的優化後,不需要擔心自建叢集出現的不穩定問題,完全滿足騎士卡的需求。

業務價值

使用Kafka建構消息中心,對騎士卡來說最重要的是保障了業務的穩健。利用Kafka的吞吐能力,自定義的partition設定(擴充),通過彈性擴充消費者執行個體的方式,自消息中心上線以來,一直運作平穩,沒有出現過影響業務的故障。

同時,系統運維起來十分簡單。利用雲上的Kafka能力,避免了測試期自建叢集莫名其妙的Broker故障,不需要投入額外的資源來保障消息中間件正常工作。并且可以通過白屏化的更新操作來比對騎士卡的業務發展,也可以按需要來快速調整執行個體數。

值得一提的是,使用雲産品Kafka,無論在生産環境還是本地開發測試環境,都可以直接使用雲産品,最大限度減少通用産品依賴,讓團隊專注于業務的開拓實作,極大的提升了團隊工作效率。

“在全球購騎士卡消息中心的搭建過程中,我們使用阿裡雲的Kafka完成了消息中心高吞吐量,穩定以及可擴充的目标。目前,消息中心作為業務營運推廣的基石,發揮着重要作用,對于新業務的接入,通過消息隊列的配置修改即可完成,對現有業務可以做到無侵入,盡可能的減少了故障發生的可能。”

——騎士卡CTO

關聯産品:

消息隊列 Kafka

掃碼了解更多技術内容與客戶案例:

騎士卡:基于Kafka搭建消息中心,上億消息推送輕松完成

繼續閱讀