新聞中心
Istio是ServiceMesh的產(chǎn)品化落地:

創(chuàng)新互聯(lián)建站是一家集網(wǎng)站建設(shè),農(nóng)安企業(yè)網(wǎng)站建設(shè),農(nóng)安品牌網(wǎng)站建設(shè),網(wǎng)站定制,農(nóng)安網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營(yíng)銷(xiāo),網(wǎng)絡(luò)優(yōu)化,農(nóng)安網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長(zhǎng)自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。
- 它幫助微服務(wù)之間建立連接,幫助研發(fā)團(tuán)隊(duì)更好的管理與監(jiān)控微服務(wù),并使得系統(tǒng)架構(gòu)更加安全
- 它幫助微服務(wù)分層解耦,解耦后的proxy層能夠更加專注于提供基礎(chǔ)架構(gòu)能力,例如:
(1)服務(wù)發(fā)現(xiàn)(discovery)
(2)負(fù)載均衡(load balancing)
(3)故障恢復(fù)(failure recovery)
(4)服務(wù)度量(metrics)
(5)服務(wù)監(jiān)控(monitoring)
(6)A/B測(cè)試(A/B testing)
(7)灰度發(fā)布(canary rollouts)
(8)限流限速(rate limiting)
(9)訪問(wèn)控制(access control)
(10)身份認(rèn)證(end-to-end authentication)
等功能。
- 它使得業(yè)務(wù)工程團(tuán)隊(duì)與基礎(chǔ)架構(gòu)團(tuán)隊(duì)都更加高效的工作,各自專注于自己的工作,更好的彼此賦能
今天來(lái)說(shuō)一下Istio的核心架構(gòu)設(shè)計(jì)。
關(guān)于Istio的架構(gòu)設(shè)計(jì),官網(wǎng)用了這樣一句話:
邏輯上,Istio分為:
- 數(shù)據(jù)平面(data plane)
- 控制平面(control plane)
這兩個(gè)詞,是Istio架構(gòu)核心,但又是大家被誤導(dǎo)最多的地方。
數(shù)據(jù)平面和控制平面,不是ServiceMesh和Istio第一次提出,它是計(jì)算機(jī)網(wǎng)絡(luò),報(bào)文路由轉(zhuǎn)發(fā)里很成熟的概念:
- 數(shù)據(jù)平面(data plane):一般用來(lái)做快速轉(zhuǎn)發(fā)
- 控制平面(control plane):為快速轉(zhuǎn)發(fā)提供必要的信息
畫(huà)外音:上兩圖為路由器架構(gòu)。
它的設(shè)計(jì)原則是:
- 在一個(gè)路由設(shè)備里,轉(zhuǎn)發(fā)是最重要的工作,它具備最高的優(yōu)先級(jí),數(shù)據(jù)平面(data plane)的設(shè)計(jì)核心就是高效轉(zhuǎn)發(fā),如何在最短的時(shí)間里處理最多的包,往往使用高效內(nèi)存管理、隊(duì)列管理、超時(shí)管理等技術(shù)實(shí)現(xiàn)在硬件里。
- 控制平面(control plane)則不然,它要實(shí)現(xiàn)路由協(xié)議,設(shè)備管理,IGMP,ARP協(xié)議的,它更偏向于控制與應(yīng)用,往往由軟件實(shí)現(xiàn)。
畫(huà)外音:
IGMP(Internet GroupManagement Protocol),一個(gè)組播協(xié)議;
ARP(Address ResolutionProtocol),這個(gè)大家比較熟悉,根據(jù)IP地址獲取MAC地址。
Istio的架構(gòu)核心與路由器非常類(lèi)似:
- 服務(wù)(最上面的小紅框),通過(guò)本地通訊與proxy交互
- 數(shù)據(jù)平面,由一系列proxy組成(中間一層的兩個(gè)小紅框),核心職責(zé)是:
(1)高效轉(zhuǎn)發(fā);
(2)接收和實(shí)施來(lái)自mixer的策略;
- 控制平面(底下的大紅框),核心是控制與應(yīng)用,核心職責(zé)是:
(1)管理和配置邊車(chē)代理;
(2)通過(guò)mixer實(shí)施策略與收集來(lái)自邊車(chē)代理的數(shù)據(jù);
畫(huà)外音:
(1)sidecar proxy,原文使用的是envoy,后文envoy表示代理;
(2)mixer,不確定要怎么翻譯了,有些文章叫“混音器”,后文直接叫mixer;
(3)pilot,galley,citadel,不敢翻譯為飛行員,廚房,堡壘,后文直接用英文;
如架構(gòu)圖所示,該兩層架構(gòu)中,有五個(gè)核心組件。
數(shù)據(jù)平面,有一個(gè)核心組件:
Envoy (proxy)
Envoy的核心職責(zé)是高效轉(zhuǎn)發(fā),更具體的,它具備這樣一些能力:
(1)服務(wù)發(fā)現(xiàn)
(2)負(fù)載均衡
(3)安全傳輸
(4)多協(xié)議支持,例如HTTP/2,gRPC
(5)斷路器(Circuit breakers)
(6)健康檢查
(7)百分比分流路由
(8)故障注入(Fault injection)
(9)系統(tǒng)度量
大部分能力是RPC框架都具備,或者比較好理解的,這里面重點(diǎn)介紹下斷路器和故障注入。
斷路器設(shè)計(jì)
它是軟件架構(gòu)設(shè)計(jì)中,一個(gè)服務(wù)自我保護(hù),或者說(shuō)降級(jí)的設(shè)計(jì)思路。
舉個(gè)例子:當(dāng)系統(tǒng)檢測(cè)出某個(gè)接口有大量超時(shí)時(shí),斷路器策略可以終止對(duì)這個(gè)接口的調(diào)用(斷路器打開(kāi)),經(jīng)過(guò)一段時(shí)間后,再次嘗試調(diào)用,如果接口不再超時(shí),則慢慢恢復(fù)調(diào)用(斷路器關(guān)閉)。
故障注入設(shè)計(jì)
它是軟件架構(gòu)設(shè)計(jì)中,一種故意引入故障,以擴(kuò)大測(cè)試覆蓋范圍,保障系統(tǒng)健壯性的方法,主要用于測(cè)試。
國(guó)內(nèi)大部分互聯(lián)網(wǎng)公司,架構(gòu)設(shè)計(jì)中不太會(huì)考慮故障注入,在操作系統(tǒng)內(nèi)核開(kāi)發(fā)與調(diào)試,路由器開(kāi)發(fā)與調(diào)試中經(jīng)常使用,可以用來(lái)模擬內(nèi)存分配失敗、磁盤(pán)IO錯(cuò)誤等一些非常難出現(xiàn)的異常,以確保測(cè)試覆蓋度。
控制平面,有四個(gè)核心組件:
Mixer
Mixer的一些核心能力是:
(1)跨平臺(tái),作為其他組件的adapter,實(shí)現(xiàn)Istio跨平臺(tái)的能力;
(2)和Envoy通訊,實(shí)時(shí)各種策略
(3)和Envoy通訊,收集各種數(shù)據(jù)
Mixer的設(shè)計(jì)核心在于“插件化”,這種模型使得Istio能夠適配各種復(fù)雜的主機(jī)環(huán)境,以及后端基礎(chǔ)設(shè)施。
Pilot
Pilot作為非常重要的控制平面組件,其核心能力是:
(1)為Envoy提供服務(wù)發(fā)現(xiàn)能力;
(2)為Envoy提供各種智能路由管理能力,例如A/B測(cè)試,灰度發(fā)布;
(3)為Envoy提供各種彈性管理能力,例如超時(shí),重試,斷路策略;
Pilot的設(shè)計(jì)核心在于“標(biāo)準(zhǔn)化”,它會(huì)將各種流控的控制命令轉(zhuǎn)化為Envoy能夠識(shí)別的配置,并在運(yùn)行時(shí),將這些指令擴(kuò)散到所有的Envoy。Pilot將這些能力抽象成通用配置的好處是,所有符合這種標(biāo)準(zhǔn)的Envoy都能夠接入到Pilot來(lái)。
潛臺(tái)詞是,任何第三方可以實(shí)現(xiàn)自己的proxy,只要符合相關(guān)的API標(biāo)準(zhǔn),都可以和Pilot集成。
Citadel
Citadel組件,它提供終端用戶身份認(rèn)證,以及服務(wù)到服務(wù)的訪問(wèn)控制??傊?,這是一個(gè)和安全相關(guān)的組件。
Galley
Gally組件,它是一個(gè)配置獲取、校驗(yàn)、處理、分發(fā)的組件,它的設(shè)計(jì)核心在于“解耦”,它將“從底層平臺(tái)(例如:K8S)獲取用戶配置”與Istio解耦開(kāi)來(lái)。
花邊:為什么80%的中文用戶對(duì)Istio的二層架構(gòu)的了解是錯(cuò)的?
很多朋友問(wèn)我,通過(guò)什么渠道學(xué)習(xí)最新的技術(shù)知識(shí),我的回答一直是,英文官網(wǎng)。
畫(huà)外音:本文所有信息來(lái)源于Istio1.1英文官網(wǎng)。
我在百度搜了下Istio,80%的資料,將二層架構(gòu)翻譯為:
- 數(shù)據(jù)面板
- 控制面板
畫(huà)外音:大家可以百度搜一下“istio 控制面板”
一開(kāi)始我極其蒙圈,因?yàn)椤皵?shù)據(jù)平面”和“控制平面”是非常成熟的翻譯,路由器就是使用這個(gè)二層架構(gòu),ServiceMesh使用相同的架構(gòu)設(shè)計(jì)進(jìn)行解耦,應(yīng)該不需要?jiǎng)?chuàng)造性翻譯呀。
后來(lái),我懂了:
- 控制平面(control plane)
- 控制面板(control panel)
半吊子英語(yǔ)的程序員,二手的技術(shù)文檔,真害人,唉。
總結(jié)
Istio采用二層架構(gòu),五大模塊,進(jìn)行微服務(wù)ServiceMesh解耦:
- 數(shù)據(jù)平面,主要負(fù)責(zé)高效轉(zhuǎn)發(fā)
(1)envoy模塊:即proxy;
- 控制平面,主要負(fù)責(zé)控制與應(yīng)用
(2)mixer模塊:支持跨平臺(tái),標(biāo)準(zhǔn)化API的adapter;
(3)pilot模塊:控制與配置envoy的大部分策略;
(4)citadel模塊:安全相關(guān);
(5)galley模塊:與底層平臺(tái)(例如:K8S)配置解耦;
實(shí)施與控制分離,經(jīng)典的架構(gòu)設(shè)計(jì)方法,GOT?
思路比結(jié)論重要。
新聞標(biāo)題:Istio分層架構(gòu)?80%的人有誤解
當(dāng)前鏈接:http://m.fisionsoft.com.cn/article/dppesse.html


咨詢
建站咨詢
