什么是Service Mesh
Service Mesh被譯作服務(wù)網(wǎng)格筹麸,實(shí)質(zhì)是一種網(wǎng)絡(luò)代理服務(wù)活合。網(wǎng)絡(luò)代理代理就是中介,可以對請求進(jìn)行攔截修改竹捉,最簡單的例子就是電信運(yùn)營商在流量中插入廣告芜辕。
Service Mesh 可以看做是傳統(tǒng)代理的升級版,用來解決現(xiàn)在微服務(wù)框架中出現(xiàn)的問題(網(wǎng)絡(luò)相關(guān))块差,可以把 Service Mesh 看做是分布式的微服務(wù)代理侵续。
傳統(tǒng)意義的代理的主體更強(qiáng)調(diào)底層網(wǎng)絡(luò)數(shù)據(jù)倔丈,而Service Mesh 等強(qiáng)調(diào)程序級別的api級別的通用功能,和業(yè)務(wù)邏輯有一定關(guān)心状蜗,是以應(yīng)用(服務(wù))為具體核心服務(wù)對象的需五。是把和網(wǎng)絡(luò)api基本配置相關(guān)的通用功能獨(dú)立出來。
Service Mesh 是把和網(wǎng)絡(luò)相關(guān)轧坎、但不依賴于具體流程宏邮、可以獨(dú)立抽象出來的功能抽出一層,并提供一個(gè)公共的數(shù)據(jù)和控制面板缸血,方便用戶使用蜜氨。
Service Mesh 為獨(dú)立的異構(gòu)微服務(wù)體系提供統(tǒng)一的網(wǎng)絡(luò)相關(guān)標(biāo)準(zhǔn)服務(wù),方便服務(wù)管理捎泻,并且提高開發(fā)效率飒炎,同時(shí)增加其可維護(hù)性。Service Mesh 可以為遺留的老項(xiàng)目套上一層殼笆豁,可以在不改變代碼的情況下為其添加提安全郎汪,容錯(cuò)等高級服務(wù),減輕維護(hù)負(fù)擔(dān)闯狱。
Service Mesh 是整個(gè)網(wǎng)絡(luò)層管理煞赢,不是只針對服務(wù)api ,還包括數(shù)據(jù)庫redis等等哄孤,是全面的網(wǎng)絡(luò)層控制照筑。
Service Mesh 功能
四個(gè)層面
- 連接(Connect):智能控制服務(wù)之間的調(diào)用流量,能夠?qū)崿F(xiàn)灰度升級录豺、AB 測試和紅黑部署等功能
- 安全加固(Secure):自動(dòng)為服務(wù)之間的調(diào)用提供認(rèn)證朦肘、授權(quán)和加密。
- 控制(Control):應(yīng)用用戶定義的 policy双饥,保證資源在消費(fèi)者中公平分配媒抠。
- 觀察(Observe):查看服務(wù)運(yùn)行期間的各種數(shù)據(jù),比如日志咏花、監(jiān)控和 tracing趴生,了解服務(wù)的運(yùn)行情況。
具體功能
服務(wù)注冊與發(fā)現(xiàn)
身份驗(yàn)證與授權(quán)
服務(wù)的伸縮控制
反向代理與負(fù)載均衡
路由控制
流量切換
日志管理
性能度量昏翰、監(jiān)控與調(diào)優(yōu)
分布式跟蹤
過載保護(hù)
服務(wù)降級
服務(wù)部署與版本升級策略支持
錯(cuò)誤處理
解決方案 istio
https://github.com/istio/istio
istio 是對envoy的封裝苍匆,通過k8s資源文件來描述和使用,使用更方便棚菊,提供了一個(gè)控制面板浸踩,對k8s 和envoy提供了適配接口,增加了數(shù)據(jù)監(jiān)控接口(普羅米修斯)统求。
Envoy 也提供了 MySQL检碗、Redis据块、MongoDB、DynamoDB 的協(xié)議支持折剃,
成為整個(gè)網(wǎng)絡(luò)層面的一個(gè)基礎(chǔ)設(shè)施另假,用以管控所有應(yīng)用層面的出/入口流量。
Service Mesh 將會成為解決異構(gòu)系統(tǒng)通信