溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Istio核心流程是怎么實現(xiàn)的

發(fā)布時間:2021-12-31 16:43:13 來源:億速云 閱讀:133 作者:iii 欄目:開發(fā)技術(shù)

本篇內(nèi)容介紹了“Istio核心流程是怎么實現(xiàn)的”的有關(guān)知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

一、通用交互流程

Istio核心流程是怎么實現(xiàn)的

圖示:

  • 灰色圓形,為業(yè)務(wù)服務(wù)

  • 紫色六邊形,為Envoy代理

二者相生相伴。

起初,上游調(diào)用方ServiceA訪問下游服務(wù)提供方ServiceB的V1版本,在ServiceB的V2版本部署好之后,調(diào)用方如何知道“SvcA切分1%的流量至SvcB的V2版本”這個指令的呢?

整個過程主要分為三大步驟:

  • 用戶在控制平面的后臺,通過Pilot的API,修改A到B的路由策略(標(biāo)號1);

  • Pilot將路由策略固化存儲,以便未來新注冊的調(diào)用方A能夠知道當(dāng)前***的路由策略;對于已經(jīng)存在的調(diào)用方A,Pilot則通過主動通知的方式告之調(diào)用方A對應(yīng)的Envoy(標(biāo)號2);

  • Envoy作為數(shù)據(jù)平面,實施***的路由策略(標(biāo)號3),在本例中,即將1%的流量導(dǎo)給灰度版本Bv2;

二、服務(wù)發(fā)現(xiàn)與負(fù)載均衡

Istio核心流程是怎么實現(xiàn)的

講了通用的流控策略實施通用流程,而服務(wù)發(fā)現(xiàn)與負(fù)載均衡,只是一個種策略實施的特例:

  • 提供服務(wù)的SvcB新增一個Pod(標(biāo)號1);

  • 在Pilot后臺修改SvcB的集群配置(標(biāo)號2);

  • Pilot將SvcB的***信息同步給該配置的訂閱方(標(biāo)號3),即SvcB的調(diào)用方SvcA對應(yīng)的Proxy;

  • SvcA對應(yīng)的Proxy增加到SvcB的鏈接(標(biāo)號4),并實施負(fù)載均衡;

畫外音:實際是鏈接到SvcB對應(yīng)的Proxy。

整個過程,與使用配置中心來實施服務(wù)發(fā)現(xiàn)基本類似。

三、請求的入口及出口

Istio核心流程是怎么實現(xiàn)的

ServiceMesh的核心,是技術(shù)基礎(chǔ)設(shè)施與業(yè)務(wù)服務(wù)的解耦,服務(wù)A調(diào)用服務(wù)B,再次強(qiáng)調(diào):

  • 一個容器Pod內(nèi)的一個服務(wù),服務(wù)進(jìn)程(SrvA/SrvB)和邊車進(jìn)程(Proxy)是相生相伴的,他們之間的交互是本地交互(標(biāo)號1)

  • 跨容器Pod之間的遠(yuǎn)程調(diào)用,必須通過Proxy進(jìn)行(標(biāo)號2)

言下之意,服務(wù)A調(diào)用服務(wù)B,請求的流程是:

SvcA -> SvcA Proxy -> SvcB Proxy -> SvcB

響應(yīng)的流程則反過來:

SvcB -> SvcB Proxy -> SvcA Proxy -> SvcA

跨網(wǎng)之間調(diào)用,請求的入口和出口,都是Proxy。

四、Pilot內(nèi)部結(jié)構(gòu)

Istio核心流程是怎么實現(xiàn)的

Pilot它的內(nèi)部結(jié)構(gòu)并不復(fù)雜:

  • Pilot的核心,是各種流控策略的維護(hù),Abstract Model;

  • 必然,Pilot需要提供接口給用戶,增刪查改這些策略,Rules API;

  • 一方面,Pilot需要保持各類底層基礎(chǔ)設(shè)施的兼容性,Platform Adapter;

  • 另一方面,Pilot又需要保持不同Proxy實接口的兼容性,Envoy API;

這么設(shè)計的好處是:

  • Istio設(shè)計時已經(jīng)考慮了異構(gòu)的基礎(chǔ)設(shè)施,不管底層是K8s還是其他體系,都可以兼容

  • 任何第三方可以實現(xiàn)自己的proxy,只要符合相關(guān)的API標(biāo)準(zhǔn),都可以和Pilot集成

Pilot與Envoy的配合,是Istio的核心,如此一來:

  • 服務(wù)發(fā)現(xiàn)(discovery)

  • 負(fù)載均衡(load balancing)

  • 故障恢復(fù)(failure recovery)

  • 服務(wù)度量(metrics)

  • 服務(wù)監(jiān)控(monitoring)

  • A/B測試(A/B testing)

  • 灰度發(fā)布(canary rollouts)

  • 限流限速(rate limiting)

等很多能力都可以實現(xiàn)了。

MerviceMesh并沒有大家想的復(fù)雜。

“Istio核心流程是怎么實現(xiàn)的”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI