極光筆記|極光消息推送服務的雲原生實踐
發佈時間:2024-03-07 13:46:49 | 來源:中國網 | 作者:辛文 | 責任編輯:趙茜摘要
極光是多年深耕開發者服務領域的公司,極光推送(JPush),是國內行業的領導者。極光推送(JPush)本質上是一種軟體付費應用程式,結合當前主流雲廠商基礎施設,逐漸演進成了雲上SaaS服務。做為SaaS服務,必然要考慮雲原生架構。因此,在極光推送(JPush)日益成熟的今天,也開啟了雲原生架構的演進之路。
雲原生簡介
雲原生,即Cloud + Native,Cloud表示使用雲服務,通常結合傳統雲廠商提供的基礎設施;Native表示應用服務從服務設計開始就考慮接入雲廠商的基礎設施,充分利用雲平臺的彈性和分佈式優勢。
雲原生技術理論,經多年發展,其主要可概括歸納為以下四點:微服務、DevOps、持續交付和容器化。
其中,
微服務和容器化,主要是指以k8s為底座的微服務和容器化,利用k8s平臺的能力,快速搭建穩定性和可靠性更好的應用。
持續交付和DevOps,則是指以CI/CD為核心,結合各種發佈和運維工具,提供小步快跑,持續迭代,持續交付的全套開發、發佈及運維的自動化流程,提高運維效率,降低運維出錯風險。
總之,雲原生技術,借助雲計算平臺(通常基礎設施包括IaaS和PaaS)快速發展的東風,再結合虛擬化和分佈式框架技術的成熟和普及,傳統SaaS應用走向雲原生化已是大勢所趨。
雲原生服務的優勢
雲原生架構服務之所以備受青睞,主要因為其有如下優勢:
高效:開發人員無需依賴特定硬體,而是使用DevOps流程構建隨時可部署的容器化應用,可在不關閉應用的情況下輕鬆快速完成服務更新。
高可用:雲原生服務通過分佈式能力,使應用具備超強的彈性和高可用能力。
降成本:一方面,利用雲廠商的基礎設施,不用再購買價格高昂的伺服器;另一方面,利用雲原生服務的彈性能力,可以快速便捷的動態調整使用的資源,即根據服務的高峰期和低谷期,更合理的使用資源。
雲原生消息推送服務改造
為了適配好雲原生相關技術,極光推送(JPush)相應也進行了大規模的服務改造。其中,包括微服務架構優化,服務容器化改造,Kubernetes平臺適配,可觀測性改造,以及服務安全改造等等。
微服務架構改造
微服務架構的改造,主要包含以下幾點:
業務架構優化
1.合理的雲服務組件切換,如雲廠商的存儲和暫存服務,提升系統的穩定性
2.業務流程梳理優化,精簡調用流程
3.服務調用方式優化,合理使用RPC和消息隊列傳遞消息,兼顧性能與消息傳遞解耦能力
服務微服務化改造
1.選擇合適的微服務化框架對服務進行改造,更好的契合雲原生架構
2.優化微服務的請求失敗重試,熔斷,過載保護,以及負載均衡的策略,提升系統可靠性
3.選擇合適服務註冊中心,極光服務選擇了nacos,並線上實踐了大規模集群的管理能力
服務容器化改造
1.微服務的容器化改造,去掉如本地暫存,服務進程間共用記憶體等依賴
2.適配k8s,並搭建可視化平臺管理工具,方便快速支援k8s的線上容器管理和運維
可觀測性改造
服務的可觀測性也是雲原生服務重要的一環,可觀測性包括,監控告警、日誌和鏈路追蹤三大塊。
監控告警
1.通過Prometheus,自定義業務與資源的上報指標,並制定監控和告警規則
2.通過Grafana,將上報的監控指標整理成可視化監控大盤
3.通過消息,郵件,電話的方式上報不同級別的錯誤告警,及時做好線上問題的跟進
日誌
1.搭建ELK的系統化日誌管理平臺,方便追蹤和定位線上問題
鏈路追蹤
1.通過opentrace搭建部分關鍵服務間調用的鏈路追蹤,及時關注重要消息的軌跡
2.優化業務層消息生命週期數據,完善服務推送消息的鏈路追蹤統計
服務安全改造
極光在雲原生化服務的過程中,也非常重視安全問題,主要做了以下幾點改造:
對API進入極光服務集群的流量,嚴格執行零信任安全策略,對入網中的一切行為不信任,做到始終驗證,持續監測
使用雲廠商的DDos防護能力,為線上服務防攻擊做好保障
雲原生改造實踐收穫
通過極光服務的雲原生化改造的不斷推進落地,JPush服務也收穫頗豐:
穩定性的持續提升,SLA持續保持99.9%以上
開發和運維效率的持續提升,可以使用更少的人力維護好更大規模的服務,通過監控告警等可觀測能力快速便捷的了解系統實時的運作狀態,以及線上問題的及時跟進和修復
更好的關注資源實時使用的情況,及時控制服務成本
未來演進之路
極光推送(JPush),作為國內行業的領導者,也將持續致力於服務好我們的客戶。除了繼續迭代我們的硬産品能力,我們也還會繼續深入的完善服務的雲原生化,在服務的易用性、穩定性和效率上做持續的迭代和建設。未來,我們也將在以下幾個方面繼續努力:
基於雲原生技術,搭建更完善的服務管理髮布平臺,完善好開發和運維工具,更好的提高服務管理運維效率
由於極光消息服務體量較大,我們還會持續優化提升更大量級,更高峰值消息實時推送性能