從0到1,億級訊息推送的穩定性保障 | 得物技術
1
訊息推送簡介
1.1 什麼是訊息推送
1.2 訊息推送的價值
提升新使用者次日留存,低成本促活,對平臺的短期留存率影響顯著。
提升老使用者活躍度,push可以透過外部提醒起到拉活的作用。很多內容平臺類App的使用者push首次啟動佔比可達 10%以上,因此push對DAU的增量貢獻不容小覷。
流失使用者召回,當使用者流失後,若push許可權未關閉,透過訊息推送的方式,有可能重新喚醒使用者。
2
背景和痛點
訊息中心沒有明確訊息推送的耗時標準,業務和技術之間存在gap,業務方對於推送的訊息什麼時候到達沒有明確的心理預期。
從技術上來講訊息推送各個節點的耗時不明確,無法對各個節點的耗時做針對性的最佳化,這也就需要我們針對訊息推送的節點耗時進行監控。
訊息推送的穩定性依賴於第三方的推送通道,而三方通道對於我們來講就是個黑盒子,如何做到三方通道異常及時發現並止損也是需要考慮的問題。
在我們正常的迭代過程中有時候不可避免的會出現些異常或者有壞味道的程式碼,這些問題能不能及時發現、及時止損,能不能及時告警出來。
3
監控的實踐
3.1 SLA監控簡介
3.2 系統架構圖
3.3 時效性監控
3.3.1 節點的拆分
3.3.2 節點耗時的計算
3.3.3 節點指標的制定
目前訊息推送高峰耗時較長,各業務域對於訊息的到達時間也沒有明確的心理一個預期,另外訊息中心也無法感知推送在整個鏈路各個節點的耗時情況,無法針對節點耗時做到有針對性的最佳化,所以節點的推送量和推送耗時就是我們需要重點關注的指標。
節點的阻塞量可以讓我們及時感知到推送中存在的積壓問題,在大促期間,訊息的推送量也會達到一個高峰,訊息目前是否有堆積,處理的速度是否跟的上,是否需要臨時擴容,那麼節點的阻塞量就成了一個比較有意義的參考指標。
3.3.4 技術方案的實現
3.3.5 結果
3.4 廠商推送監控
3.4.1 監控指標制定
在做廠商監控之前,我們就已經遇到了廠商通道推送跌零的情況,這種情況下整個推送通道都掛掉了,我們要及時通知廠商進行修復,所以廠商推送跌零告警和廠商餘量監控是必須的。
從現有資料來看,廠商的推送成功率、回執成功率、點選率都穩定在一定的的區間。如果廠商推送的指標資料偏離這個區間則說明推送有異常,所以推送成功率、回執成功率、點選率的監控是必須的。
另外從業務請求傳送的使用者數來看,每天的訊息推送基本是穩定的,相對應的廠商的回執數量和點選數量也是穩定的,那麼對廠商推送成功的數量,回執的數量和點選的數量監控也有一定的參考意義。
3.4.2 技術方案實現
3.4.3 結果
4
帶來的收益
4.1 異常的及時發現
在時效性監控上線之後,發現了因廠商推送執行緒建立關閉失敗導致執行緒數逐漸上升問題,避免了線上故障的發生。
廠商異常導致推送跌零,監控發現後及時通知到廠商並止損。
發現廠商營銷訊息規則更改的異常,並及時經梳理各大廠商文件後發現除了多個廠商通道在未來一個月內也會有規則的更改,訊息平臺及時適應了廠商規則,接入廠商系統通道,做到了及時止損。
4.2 服務效能的提升
5
展望未來
考慮到業務預的推送量和推送時間是穩定的,那麼我們可以針對業務維度新增推送資料的監控,及時感知上游推送資料的變化。
其次我們可以針對各個節點的推送異常、漏斗轉化率、服務效能等做監控,進一步豐富訊息平臺的監控體系。
對於訊息推送來講也要考慮推送的轉化率問題,那麼解除安裝、遮蔽等指標也是我們需要監控的點,透過這些業務指標及時感知推送的效果,做到精細化的管控。
6
總結
時效性明確的給到了不同優先順序的耗時標準,避免了業務和技術之間的gap,業務方對於推送的耗時也有了明確的心理預期。
時效性使得節點耗時的效能問題可以一目瞭然,透過對現有節點耗時問題的最佳化,訊息服務的吞吐量實現了翻倍的提升。
廠商穩定性監控使得廠商異常可以及時感知,其中廠商穩定性監控上線後發現多起廠商推送的異常,並做到了及時的解決和止損。
SLA時效性和廠商穩定性上線後,訊息中心可以及時感覺到推送鏈路的異常和程式碼的壞味道,特別是對於新上線的程式碼,如果存在異常可以及時感知。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70024922/viewspace-2937363/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 從0到1,億級訊息推送的穩定性保障|得物技術
- 從0到1:億級訊息推送的穩定性保障攻略
- 下單穩定性治理 | 得物技術
- 前端監控穩定性資料分析實踐 | 得物技術前端
- 前端監控穩定性資料分析實踐|得物技術前端
- 如何從1到99做好產品 | 得物技術
- 這是阿里技術專家對 SRE 和穩定性保障的理解阿里
- 雙11在即,分享一些穩定性保障技術乾貨
- 從 0 到 1:我的 Flutter 技術實踐 | 掘金技術徵文Flutter
- 概念解讀穩定性保障
- 研發效能與穩定性保障
- 穩定性保障,如何慢慢放量灰度
- 如何使用Netty技術設計一個百萬級的訊息推送系統Netty
- 得物技術訊息中介軟體應用的常見問題與方案
- 阿里IM技術分享(六):閒魚億級IM訊息系統的離線推送到達率優化阿里優化
- 從前端程式設計師的視角看小程式的穩定性保障前端程式設計師
- Kubernetes 穩定性保障手冊:洞察+預案
- Kubernetes 穩定性保障手冊 -- 極簡版
- 程式設計師如何從0到1搭建自己的技術部落格程式設計師
- 如何利用 “叢集流控” 保障微服務的穩定性?微服務
- 得物直播低延遲探索 | 得物技術
- RocketMQ 之 IoT 訊息解析:物聯網需要什麼樣的訊息技術?MQ
- 存貨庫存模型升級始末|得物技術模型
- 四個步驟,教你落地穩定性保障工作
- Kubernetes 穩定性保障手冊 -- 日誌專題
- PHash從0到1
- 如何去設計前端框架能力?星巴克訊息開放專案從0到1,從點到面的思考前端框架
- 深入理解Sora技術原理|得物技術Sora
- 阿里雲訊息佇列 RocketMQ、Kafka 榮獲金融級產品穩定性測評 “先進級” 認證阿里佇列MQKafka
- 教你從0到1搭建小程式音視訊
- [譯] Flutter 從 0 到 1Flutter
- 【穩定性】從專案風險管理角度探討系統穩定性
- 設計一個百萬級的訊息推送系統
- DartVM GC 深度剖析|得物技術DartGC
- SAP QM 穩定性研究功能研習系列1 - 穩定性研究總流程
- OpenSergo & CloudWeGo 共同保障微服務執行時流量穩定性GoCloud微服務
- Kubernetes 穩定性保障手冊 -- 可觀測性專題
- 貨拉拉技術穩定性體系1.0建設實踐