GIAC 大會(huì)丨螞蟻金服于雨 :管中窺豹,談 2021 云原生技術(shù)發(fā)展及未來(lái)趨勢(shì)

- 作者簡(jiǎn)介 -
于雨(github @AlexStocks),dubbogo 社區(qū)負(fù)責(zé)人,一個(gè)有十一年服務(wù)端基礎(chǔ)架構(gòu)和中間件研發(fā)一線(xiàn)工作經(jīng)驗(yàn)的程序員。
陸續(xù)參與和改進(jìn)過(guò) Redis/Pika/Pika-Port/etcd/Muduo/Dubbo/dubbo-go/Sentinel-go 等知名項(xiàng)目,目前在螞蟻集團(tuán)可信原生技術(shù)部大規(guī)模 k8s 集群調(diào)度團(tuán)隊(duì)從事容器編排工作,參與維護(hù)全球規(guī)模最大的 Kubernetes 生產(chǎn)集群之一,致力于打造規(guī)模化、金融級(jí)、可信的云原生基礎(chǔ)設(shè)施。

- 前言 -
本人有幸擔(dān)任了 2021 年 GIAC 會(huì)議云原生專(zhuān)場(chǎng)的出品人兼講師,組織了前后四個(gè)場(chǎng)子的演講,在這個(gè)過(guò)程中個(gè)人同時(shí)作為聽(tīng)眾從這些同行的演講中學(xué)到了很多非常有用的知識(shí)。本文算是對(duì) 2021 GIAC 云原生專(zhuān)場(chǎng)的側(cè)記,管中窺豹,以觀 2021 年云原生技術(shù)發(fā)展現(xiàn)狀及未來(lái)一段時(shí)間內(nèi)的趨勢(shì)。
亞馬遜的資深技術(shù)專(zhuān)家黃帥的《一個(gè)云原生服務(wù)的爆炸半徑治理》 快手基礎(chǔ)架構(gòu)中心服務(wù)網(wǎng)格負(fù)責(zé)人姜濤的《快手中間件 Mesh 化實(shí)踐》 Tetrate 可觀測(cè)性工程師柯振旭的《使用 SkyWalking 監(jiān)控 Kubernetes 事件》 本人以 Dubbogo 社區(qū)負(fù)責(zé)人出品的《Dubbogo 3.0:Dubbo 在云原生時(shí)代的基石》

- 云原生服務(wù)的爆炸半徑 -

服務(wù)粒度適中 微服務(wù)的服務(wù)粒度并不是拆分的越細(xì)越好。如果服務(wù)粒度過(guò)細(xì),會(huì)導(dǎo)致服務(wù)數(shù)量過(guò)多,其第一個(gè)后果就是導(dǎo)致一個(gè)組織內(nèi)幾乎無(wú)人能搞清楚服務(wù)整體邏輯的來(lái)龍去脈,增加維護(hù)人員的負(fù)擔(dān):大家只敢小修小補(bǔ)無(wú)人敢做出大幅度的優(yōu)化改進(jìn)。 服務(wù)粒度過(guò)細(xì)的第二個(gè)后果是造成整體微服務(wù)單元體指數(shù)級(jí)增加,造成容器編排部署成本上升。適中的服務(wù)粒度要兼顧架構(gòu)體系的進(jìn)化與部署成本的降低。
充分隔離 進(jìn)行服務(wù)編排時(shí),獲取數(shù)據(jù)中心的電源和網(wǎng)絡(luò)拓?fù)湫畔?,保證強(qiáng)相關(guān)系統(tǒng)之間部署做到“不遠(yuǎn)”且“不近”。 “不近”是指同一個(gè)服務(wù)的副本不在使用同一個(gè)電源的同一個(gè)機(jī)柜部署,也不在使用了同一個(gè)網(wǎng)絡(luò)平面的 Azone 內(nèi)部署?!安贿h(yuǎn)”是指部署距離不能太遠(yuǎn),例如多副本可以同城多 IDC 部署。使用這兩個(gè)原則兼顧性能與系統(tǒng)可靠性。
隨機(jī)分區(qū) 所謂的隨機(jī)分區(qū)這塊,其實(shí)質(zhì)就是在混合服務(wù)請(qǐng)求,保證某個(gè)服務(wù)的請(qǐng)求可以走多通道【隊(duì)列】,保證在某些通道掛掉的情況下不影響某個(gè)服務(wù)的請(qǐng)求處理,應(yīng)用隨機(jī)分區(qū)技術(shù),將用戶(hù)打散在多個(gè) Cell 中,大幅度降低爆炸半徑。 與 K8s APF 公平限流算法中的洗牌分片(Shuffle Sharding)頗為相似。
混沌工程 通過(guò)持續(xù)內(nèi)化的混沌工程實(shí)踐,提前踩雷,盡量減少“故障點(diǎn)”,提升系統(tǒng)可靠性。

- 使用 SkyWalking 監(jiān)控 Kubernetes 事件 -




- 快手中間件 Mesh 化實(shí)踐 -


統(tǒng)一運(yùn)維,提高可觀測(cè)性與穩(wěn)定性,進(jìn)行故障注入和流量錄制等; 對(duì) Envoy 等做了二次開(kāi)發(fā),只傳輸變更的數(shù)據(jù)、按需獲取,解決單實(shí)例服務(wù)數(shù)過(guò)多的問(wèn)題; 對(duì)協(xié)議棧和序列化協(xié)議做了大量的優(yōu)化; 實(shí)施了面向失敗設(shè)計(jì),Service Mesh 可以 fallback 為直連模式。
成本問(wèn)題:復(fù)雜環(huán)境下的統(tǒng)一部署與運(yùn)維。 復(fù)雜度問(wèn)題:規(guī)模大、性能要求高、策略復(fù)雜。 落地推廣:對(duì)業(yè)務(wù)來(lái)說(shuō)不是強(qiáng)需求。
首先務(wù)必保證系統(tǒng)穩(wěn)定性,不急于鋪開(kāi)業(yè)務(wù)量; 搭車(chē)公司重大項(xiàng)目,積極參與業(yè)務(wù)架構(gòu)升級(jí); 基于 WASM 擴(kuò)展性,與業(yè)務(wù)共建; 選取典型落地場(chǎng)景,樹(shù)立標(biāo)桿項(xiàng)目。


- Dubbogo 3.0:Dubbo 在云原生時(shí)代的基石 -

機(jī)器規(guī)格:大規(guī)模服務(wù)下機(jī)器規(guī)格難免異構(gòu)【如受超賣(mài)影響】,即使同規(guī)格機(jī)器老化速度也不一樣; 服務(wù)拓?fù)鋸?fù)雜:分布式服務(wù)拓?fù)浣Y(jié)構(gòu)在不斷進(jìn)化; 服務(wù)流量不均衡:有洪峰有波谷; 依賴(lài)的上游服務(wù)能力不確定性:緩存/db 能力實(shí)時(shí)變化。

limit 一段時(shí)間內(nèi)的 qps 上限。 rt_noload 一段時(shí)間窗口內(nèi)的 RT 最小值。 rt 一段時(shí)間內(nèi)的平均 RT,或者可直接取值 P50 RT。

- 場(chǎng)外 -

