自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Istio流控,服務(wù)發(fā)現(xiàn),負(fù)載均衡,核心流程是如何實(shí)現(xiàn)的?

開(kāi)發(fā) 開(kāi)發(fā)工具 架構(gòu)
灰度發(fā)布的過(guò)程在《Istio,灰度發(fā)布》一文中已經(jīng)有過(guò)描述,今天重點(diǎn)說(shuō)說(shuō)Pilot和Envoy的交互流程與內(nèi)部結(jié)構(gòu)。

前情提要:

Istio架構(gòu)體系中,流控(Traffic Management)雖然是數(shù)據(jù)平面的Envoy Proxy實(shí)施的,但整個(gè)架構(gòu)的核心其實(shí)在于控制平面的Pilot。

灰度發(fā)布的過(guò)程在《Istio,灰度發(fā)布》一文中已經(jīng)有過(guò)描述,今天重點(diǎn)說(shuō)說(shuō)Pilot和Envoy的交互流程與內(nèi)部結(jié)構(gòu)。

[[267516]]

一、通用交互流程

圖示:

  • 灰色圓形,為業(yè)務(wù)服務(wù)
  • 紫色六邊形,為Envoy代理

二者相生相伴。

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

整個(gè)過(guò)程主要分為三大步驟:

  • 用戶在控制平面的后臺(tái),通過(guò)Pilot的API,修改A到B的路由策略(標(biāo)號(hào)1);
  • Pilot將路由策略固化存儲(chǔ),以便未來(lái)新注冊(cè)的調(diào)用方A能夠知道當(dāng)前***的路由策略;對(duì)于已經(jīng)存在的調(diào)用方A,Pilot則通過(guò)主動(dòng)通知的方式告之調(diào)用方A對(duì)應(yīng)的Envoy(標(biāo)號(hào)2);
  • Envoy作為數(shù)據(jù)平面,實(shí)施***的路由策略(標(biāo)號(hào)3),在本例中,即將1%的流量導(dǎo)給灰度版本Bv2;

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

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

  • 提供服務(wù)的SvcB新增一個(gè)Pod(標(biāo)號(hào)1);
  • 在Pilot后臺(tái)修改SvcB的集群配置(標(biāo)號(hào)2);
  • Pilot將SvcB的***信息同步給該配置的訂閱方(標(biāo)號(hào)3),即SvcB的調(diào)用方SvcA對(duì)應(yīng)的Proxy;
  • SvcA對(duì)應(yīng)的Proxy增加到SvcB的鏈接(標(biāo)號(hào)4),并實(shí)施負(fù)載均衡;

畫(huà)外音:實(shí)際是鏈接到SvcB對(duì)應(yīng)的Proxy。

整個(gè)過(guò)程,與使用配置中心來(lái)實(shí)施服務(wù)發(fā)現(xiàn)基本類似。

三、請(qǐng)求的入口及出口

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

  • 一個(gè)容器Pod內(nèi)的一個(gè)服務(wù),服務(wù)進(jìn)程(SrvA/SrvB)和邊車進(jìn)程(Proxy)是相生相伴的,他們之間的交互是本地交互(標(biāo)號(hào)1)
  • 跨容器Pod之間的遠(yuǎn)程調(diào)用,必須通過(guò)Proxy進(jìn)行(標(biāo)號(hào)2)

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

  1. SvcA -> SvcA Proxy -> SvcB Proxy -> SvcB 

響應(yīng)的流程則反過(guò)來(lái):

  1. SvcB -> SvcB Proxy -> SvcA Proxy -> SvcA 

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

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

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

  • Pilot的核心,是各種流控策略的維護(hù),Abstract Model;
  • 必然,Pilot需要提供接口給用戶,增刪查改這些策略,Rules API;
  • 一方面,Pilot需要保持各類底層基礎(chǔ)設(shè)施的兼容性,Platform Adapter;
  • 另一方面,Pilot又需要保持不同Proxy實(shí)接口的兼容性,Envoy API;

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

  • Istio設(shè)計(jì)時(shí)已經(jīng)考慮了異構(gòu)的基礎(chǔ)設(shè)施,不管底層是K8s還是其他體系,都可以兼容
  • 任何第三方可以實(shí)現(xiàn)自己的proxy,只要符合相關(guān)的API標(biāo)準(zhǔn),都可以和Pilot集成

Pilot與Envoy的配合,是Istio的核心,如此一來(lái):

  • 服務(wù)發(fā)現(xiàn)(discovery)
  • 負(fù)載均衡(load balancing)
  • 故障恢復(fù)(failure recovery)
  • 服務(wù)度量(metrics)
  • 服務(wù)監(jiān)控(monitoring)
  • A/B測(cè)試(A/B testing)
  • 灰度發(fā)布(canary rollouts)
  • 限流限速(rate limiting)

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

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

思路比結(jié)論重要。

【本文為51CTO專欄作者“58沈劍”原創(chuàng)稿件,轉(zhuǎn)載請(qǐng)聯(lián)系原作者】

戳這里,看該作者更多好文

責(zé)任編輯:趙寧寧 來(lái)源: 51CTO專欄
相關(guān)推薦

2020-04-15 22:18:55

架構(gòu)負(fù)載均衡分布式

2019-09-10 09:58:19

Dubbo負(fù)載均衡Hash

2019-09-19 09:03:13

Docker負(fù)載均衡服務(wù)

2025-04-15 10:00:00

Feign負(fù)載均衡微服務(wù)

2011-11-22 21:26:59

pfSense配置Web服務(wù)器負(fù)載均衡

2010-05-10 17:52:30

實(shí)現(xiàn)負(fù)載均衡

2019-09-19 14:57:27

Docker語(yǔ)言技術(shù)

2013-12-13 09:52:58

VDI服務(wù)器負(fù)載均衡

2019-11-29 08:05:26

連接池負(fù)載均衡互聯(lián)網(wǎng)架構(gòu)

2023-02-13 16:39:45

Kubernetes容器負(fù)載均衡器

2015-11-03 11:15:54

負(fù)載均衡微服務(wù)web

2022-04-27 08:23:34

微服務(wù)負(fù)載均衡

2023-07-04 07:45:11

gogRPC服務(wù)

2009-07-22 10:25:37

2009-01-10 18:53:01

服務(wù)器ServerDNS

2021-09-07 09:18:18

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

2010-05-05 22:40:21

apache服務(wù)器負(fù)載均衡

2021-08-23 06:59:22

Nacos負(fù)載均衡客戶端

2010-05-10 15:22:57

實(shí)現(xiàn)負(fù)載均衡

2010-04-20 14:31:29

負(fù)載均衡功能
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)