推送服務(PushKit)是華為提供的消息推送平臺,建立了從云端到終端的消息推送通道。通過集成推送服務,您可以向客戶端應用實時推送消息,讓應用更精準觸達用戶,是開發者提升用戶感知度和活躍度的一件利器。
華為云 GaussDB(forCassandra)是一款基于計算存儲分離架構的分布式數據庫,致力于提供穩定可靠、超高并發,兼容 Cassandra 生態、彈性伸縮、一鍵部署、快速恢復、監控告警的分布式數據庫服務,在 Push 業務的高效架構建設中,起到了關鍵的作用。
業務挑戰
Push 服務能夠協助開發者快速觸達用戶,其提供的系統級通道推送速度每秒最高可達百萬級,消息量每日百億級,并且支持實時消息回執。如此高到達率的背后,是因為 Push 使用了大量分布式架構、高性能隊列、大數據分析、數據庫、AI 等技術,用來支撐實時推送、精準送達業務的高效開展。
Push 的主要業務鏈路是發送上行消息和下行消息,接下來我們從發送下行消息流程來了解業務在哪些場景上用到了數據庫,以及對數據庫的要求有哪些?
下行消息交互圖如下所示:
當用戶設備網絡條件良好且不擁堵的情況下,華為 Push 服務器在收到消息后,會先將消息存入高性能隊列中,然后隊列消費消息發送給用戶設備。但是當用戶設備處于弱網、網絡異常,或不在線、熄屏狀態時,消息無法到達設備,或此時發送消息價值較低。Push 業務為了保障消息不丟失,以及提升消息的有效率,利用數據庫為底座,來支持離線消息緩存能力。
離線消息緩存是指當消息到達華為 Push 平臺后,如果設備不在線,華為 Push 平臺會將消息緩存起來,等到設備上線后,華為 Push 平臺會將緩存的消息再次推送給用戶。如果用戶很長時間不在線,這些緩存的消息默認保存 24 小時,最長保存 15 天,超期的消息會被 Push 平臺丟棄。
此時,在數據庫的選型上就需要考慮以下幾個問題:
推送速度每秒百萬級,極端場景下,大部分寫入數據庫,會有每秒百萬寫入請求,數據庫需要具備超高的寫入能力;
當設備恢復正常狀態時,消息會從數據庫中讀出發送給用戶,消息的實時性會直接影響到消息的價值,此時就要求數據庫的讀時延低且長尾時延穩定;
推送的消息中,多與時事熱點相關,容易引發流量突增,且不可預知,這就要求數據庫具有快速彈性伸縮的能力;
為達成 AI 智能推送的能力,可能需要對數據庫中的數據進行數據挖掘和分析,從而實施智能推送策略,數據庫需支持與主流大數據引擎兼容的接口和解決方案。
為什么選擇 GaussDB(forCassandra)?
基于以上挑戰,Push 業務經過一系列技術選型,最終選擇了 GaussDB(forCassandra)數據庫。GaussDB(forCassandra)憑借豐富強大的特性,可以幫助 Push 業務很好地應對消息緩存的挑戰:
從請求量上看,GaussDB(forCassandra)輕松支持千萬級并發訪問,高并發不在話下;
從時延上看,GaussDB(forCassandra)除了本身具備超低時延的能力外,在并發量大的情況下,可通過擴容和規格變更,增加分區和負載均衡保證業務時延基本無變化;
從彈性伸縮上看,GaussDB(forCassandra)基于存算分離架構,支持秒級存儲擴容,分鐘級計算擴容,輕松應對流量高峰;
從兼容能力看,GaussDB(forCassandra)支持 CQL 語法和靈活的數據定義,同時兼容主流的批式/流式處理引擎(Spark/Flink 等),且提供動態增量+全量的解決方案,供大數據分析引擎接入,充分滿足不同類型數據的接入需求。
如何利用 GaussDB(forCassandra)提升消息緩存體驗
下面,我們將從具體的幾個技術改進來聊聊,GaussDB(forCassandra)是如何幫助 Push 業務獲得更好的消息緩存體驗。
降本增效
降低 Push 集群對數據庫請求量:
表結構設計時,將同一用戶設備的多條信息存入同一 partition 中
在讀取時,可使用范圍查詢將同一用戶設備的多條信息批量查出,且時延較低
在寫入時,使用 Batch 寫入,降低客戶端與數據庫的交互次數
降低存儲使用量:業務科通過 TTL、范圍刪除、單行刪除等多種手段,根據業務情況靈活使用達到數據消亡的目的,降低存儲用量。
彈性伸縮,熱點無憂
每當出現重大新聞,各大應用均產生了海量的推送消息,Push 業務收到消息后,流量激增,集群規模難以支撐巨大的流量。但依靠 GaussDB(forCassandra)的快速擴容能力,Push 業務實現了分鐘級別的計算擴容,業務不受影響,而且當流量回歸正常后,可以進行縮容降低成本。
超強可靠性,底座無憂
GaussDB(forCassandra)不僅在讀寫性能上表現優異,在數據可靠性上也表現突出。因為采用多節點分布式架構,當任意盤或節點出現故障,讀寫操作會自動切換至其他節點,理論上可以達到 N-1 個節點故障容忍,即集群任一節點存活即可提供完整服務。同時還支持異地雙活,實現業務恢復和故障恢復解耦,Region 級高可用。
綜上所述,GaussDB(forCassandra)為 Push 業務提供了高效、穩定、安全的數據庫底座,助力 Push 業務實現了離線消息緩存架構。我們相信,借助 GaussDB(forCassandra),Push 業務在消息推送領域,會為開發者提供更優質的服務和工具,助力企業提升業務價值和用戶體驗。
審核編輯黃宇
-
華為云
+關注
關注
3文章
2445瀏覽量
17410
發布評論請先 登錄
相關推薦
評論