Service Mesh上線需解決的問題整理
引言
越來越多的公司開始研究Service Mesh,線上大批量應(yīng)用案例的依舊很少,已經(jīng)上線的很多問題解決的并不完美,為后面迭代和穩(wěn)定性埋下隱患。目前來看整體開源生態(tài)成熟度還有需要完善,本文為筆者試水service mesh過程中發(fā)現(xiàn)的問題歸納整理。
一、目標與價值
業(yè)務(wù)側(cè)只需要引入輕量級SDK,其他基礎(chǔ)能力下沉到網(wǎng)格SideCar代理中,一個美好的愿望 “接管所有非業(yè)務(wù)關(guān)心的能力”。
1.業(yè)務(wù)賦能價值
提升開發(fā)效率:只需專注業(yè)務(wù)
加速業(yè)務(wù)探索:快速迭代上線、快速驗證
代理升級無感知:不需要費力推動業(yè)務(wù)升級或者通過卡點升級引起的各類問題
2.運維提效價值
- 治理體系統(tǒng)一:屏蔽不同語言體系治理的復(fù)雜性
- 技術(shù)演進統(tǒng)一:不必關(guān)心版本碎片化問題,能力統(tǒng)一自住演進
二、組織形態(tài)整合
如果將Service Mesh作為公司戰(zhàn)略推動,Service Mesh依賴Kubernate底座,相關(guān)人員最好整合到一個部門,統(tǒng)一運維和開發(fā)。
將Service Mesh團隊、Serverless團隊、容器團隊整合到一個部門負責(zé)云原生體系建設(shè)
其他部門配合改造和對接
三、技術(shù)問題
下面就使用最廣泛的Istio和Envoy為例就其線上運行需要解決的技術(shù)問題歸納整理。
1.注冊中心接入服務(wù)網(wǎng)格
實現(xiàn)目的: 公司已有的注冊中心接入服務(wù)網(wǎng)格(Istio),完成服務(wù)注冊與發(fā)現(xiàn)能力
基本原理: 通過Istio提供的ServiceEntry將網(wǎng)格外注冊中心接入網(wǎng)格
https://mp.weixin.qq.com/s/4bTdmaQVKi8YHhBJCbrVKQ
2.RPC框架協(xié)議兼容問題
實現(xiàn)目的: 需要實現(xiàn)網(wǎng)格內(nèi)外通信,那網(wǎng)格內(nèi)的服務(wù)調(diào)用原有服務(wù)需要支持原有的RPC協(xié)議
基本原理: 與使用的RPC框架關(guān)聯(lián),如果使用gRPC自研由于Istio原生支持HTTP/2則改動極小,如果使用dubbo或者自研RPC框架,可以通過EnvoyFilter轉(zhuǎn)換實現(xiàn),可以參考騰訊開源框架 aeraki
https://github.com/aeraki-framework/aeraki
3.網(wǎng)格流量治理問題
實現(xiàn)目的: 網(wǎng)格流量需要支持限流、熔斷等治理能力并與現(xiàn)有治理平臺融合
基本原理: 通過Envoy提供的Filter插件機制,將限流配置與EnvoyFilter規(guī)則映射完成限流,可以參考網(wǎng)易開源的slime框架
https://github.com/slime-io/slime
4.網(wǎng)格流量監(jiān)控問題
實現(xiàn)目的: 網(wǎng)格流量的監(jiān)控指標和埋點需要與原有監(jiān)控體系融合
實現(xiàn)原理: Istio提供了kiali、jaeger、grafana、prometheus相關(guān)監(jiān)控體系,將這些這表對接到原有監(jiān)控系統(tǒng)。另外一些自定義的監(jiān)控指標可以通過wasm擴展。
https://mp.weixin.qq.com/s/ZO7dZ3mddISFjB4NTJHdjQ
5.按需訂閱配置(懶加載)問題
在默認情況下,Istio會全量下發(fā)注冊中心配置信息,占用過多的內(nèi)存嚴重影響性能。常見的方案有:
社區(qū)SidecarScope的隔離
全局代理方案第一跳先去代理拿服務(wù)依賴的配置,之后不再需要跟代理通信(參考Slime提供的懶加載功能)
通過在SideCar中同時部署Agent的方式維護服務(wù)依賴關(guān)系
6.熱部署和升級問題
在對代理SideCar進行部署和升級時的處理,需要做到平滑先摘流量再部署升級。
進程級別代理方式,對數(shù)據(jù)面進行監(jiān)控、版本管理和升級
雙容器模式,一個容器運行,另外一個容器Standby;Standby容器完成升級后檢測正常后再切換
依賴應(yīng)用發(fā)布升級數(shù)據(jù)面
7.性能和穩(wěn)定性問題
數(shù)據(jù)面代理會增加耗時,據(jù)螞蟻商業(yè)版本是數(shù)據(jù)面單跳延遲在0.5ms以內(nèi),平均為0.2~0.3ms
穩(wěn)定性指標的測試