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