偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

SM,Istio,聞所未聞?實施與控制分離的架構(gòu)設(shè)計方法!

開發(fā) 架構(gòu)
要聊 ServiceMesh,就不得不提 Istio,它是 ServiceMesh 的最流行實踐,今天聊聊 Istio。

上一章《SM,它解決什么問題?》聊了ServiceMesh的緣起。要聊ServiceMesh,就不得不提Istio,它是ServiceMesh的最流行實踐,今天聊聊Istio。

什么是Istio?

Istio是ServiceMesh的落地化產(chǎn)品,它:

  • 幫助微服務(wù)之間建立連接,幫助研發(fā)團(tuán)隊更好的管理與監(jiān)控微服務(wù),并使得系統(tǒng)架構(gòu)更加安全;

畫外音:Istio helps you to connect, secure, control, and observe microservices.

  • 幫助微服務(wù)分層解耦,解耦后的proxy層能夠更加專注于提供基礎(chǔ)架構(gòu)能力,例如:服務(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), 訪問控制(access control), 身份認(rèn)證(end-to-end authentication)...

  • 使得業(yè)務(wù)工程團(tuán)隊與基礎(chǔ)架構(gòu)團(tuán)隊都更加高效的工作,各自專注于自己的工作,更好的彼此賦能;

畫外音:說的還是解耦。

為什么要用Istio?

Istio官網(wǎng)是這么說的:

(1) 可以通過,在現(xiàn)有服務(wù)器新增部署邊車代理(sidecar proxy),應(yīng)用程序不用改代碼,或者只需要改很少的代碼,就能實現(xiàn)上述N項基礎(chǔ)功能;

畫外音:你信了么?

(2) 可以通過,控制后臺,簡單改改配置,點點按鈕,就能管理和查看上述N項基礎(chǔ)功能;

(3) 以下特性,Istio在這個環(huán)節(jié)里進(jìn)行了附加說明:

  •  支持多協(xié)議,HTTP, gRPC, WebSocket, TCP
  •  通過路由、重試、故障轉(zhuǎn)移對流量進(jìn)行細(xì)粒度流控
  •  通過可插拔策略層以及可配置API,能夠支持流量訪問控制、限速、配額管理
  •  自動度量、日志收集、調(diào)用跟蹤
  •  服務(wù)到服務(wù)的身份認(rèn)證

Istio的核心特性是什么?

Istio強(qiáng)調(diào)了它提供的五項關(guān)鍵特性:

(1) 流控(traffic management)

斷路器(circuit breakers)、超時、重試、高可用、多路由規(guī)則、AB測試、灰度發(fā)布、按照百分比分配流量等。

(2) 安全(security)

加密、身份認(rèn)證、服務(wù)到服務(wù)的權(quán)限控制、K8S里容器到容器的權(quán)限控制等。

(3) 可觀察(observability)

追蹤、監(jiān)控、數(shù)據(jù)收集,通過控制后臺全面了解上行下行流量,服務(wù)鏈路情況,服務(wù)運(yùn)行情況,系統(tǒng)性能情況,國內(nèi)微服務(wù)架構(gòu)體系,這一塊做得不夠好。

(4) 平臺無關(guān)系(platform support)

K8s,物理機(jī),自己的虛機(jī)都沒問題。

(5) 集成與定制(integration and customization)

可定制化擴(kuò)展功能。

Istio的特性,對于國外很多通過RESTful提供內(nèi)網(wǎng)服務(wù)的公司,很有吸引力,但相對于國內(nèi)微服務(wù)架構(gòu),未必達(dá)到了很好的拉攏效果:

  • 國內(nèi)基本都是TCP的RPC框架,多協(xié)議支持未必是必須的;
  • RPC框架里,路由、重試、故障轉(zhuǎn)移、負(fù)載均衡、高可用都是最基礎(chǔ)的;
  • 流控、限速、配額管理,是服務(wù)治理的內(nèi)容,在微服務(wù)架構(gòu)初期是錦上添花;
  • 自動度量,系統(tǒng)入口出口數(shù)據(jù)收集,調(diào)用跟蹤,可觀察和可操控的后臺確實是最吸引人的;
  • 服務(wù)到服務(wù)的身份認(rèn)證,微服務(wù)基本是內(nèi)網(wǎng)訪問,在架構(gòu)初期也只是錦上添花;

另外,為什么Istio代理會叫sidecar proxy?

看了上圖就容易懂了,biz和proxy相生相伴,就像摩托車(motor)與旁邊的車廂(sidecar)。后文,sidecar和proxy就指微服務(wù)進(jìn)程解耦成兩個進(jìn)程之后,提供基礎(chǔ)能力的那個代理進(jìn)程。

Istio這么牛逼,它的核心架構(gòu)如何呢?

官網(wǎng)用了這樣一句話:

邏輯上,Istio分為:

  • 數(shù)據(jù)平面(data plane);
  • 控制平面(control plane);

這兩個詞,是Istio架構(gòu)核心。

數(shù)據(jù)平面和控制平面,不是ServiceMesh和Istio第一次提出,它是計算機(jī)網(wǎng)絡(luò),報文路由轉(zhuǎn)發(fā)里很成熟的概念:

  • 數(shù)據(jù)平面(data plane):一般用來做快速轉(zhuǎn)發(fā);
  • 控制平面(control plane):為快速轉(zhuǎn)發(fā)提供必要的信息;

畫外音:上兩圖為路由器架構(gòu)。

它的設(shè)計原則是:

  • 在一個路由設(shè)備里,轉(zhuǎn)發(fā)是最重要的工作,它具備最高的優(yōu)先級,數(shù)據(jù)平面(data plane)的設(shè)計核心就是高效轉(zhuǎn)發(fā),如何在最短的時間里處理最多的包,往往使用高效內(nèi)存管理、隊列管理、超時管理等技術(shù)實現(xiàn)在硬件里;
  • 控制平面(control plane)則不然,它要實現(xiàn)路由協(xié)議,設(shè)備管理,IGMP,ARP協(xié)議的,它更偏向于控制與應(yīng)用,往往由軟件實現(xiàn);

畫外音:

  • IGMP(Internet GroupManagement Protocol),一個組播協(xié)議;
  • ARP(Address ResolutionProtocol),這個大家比較熟悉,根據(jù)IP地址獲取MAC地址;

Istio的架構(gòu)核心與路由器非常類似:

(1) 服務(wù)(最上面的小紅框),通過本地通訊與proxy交互;

(2) 數(shù)據(jù)平面,由一系列proxy組成(中間一層的兩個小紅框),核心職責(zé)是:

  •  高效轉(zhuǎn)發(fā)
  •  接收和實施來自mixer的策略

(3) 控制平面(底下的大紅框),核心是控制與應(yīng)用,核心職責(zé)是:

  •  管理和配置邊車代理
  •  通過mixer實施策略與收集來自邊車代理的數(shù)據(jù)

如架構(gòu)圖所示,該兩層架構(gòu)中,有五個核心組件。

數(shù)據(jù)平面,有幾個核心組件?

(1) Envoy (proxy)

Envoy的核心職責(zé)是高效轉(zhuǎn)發(fā),更具體的,它具備這樣一些能力:

  • 服務(wù)發(fā)現(xiàn)
  • 負(fù)載均衡
  • 安全傳輸
  • 多協(xié)議支持,例如HTTP/2,gRPC
  • 斷路器(Circuit breakers)
  • 健康檢查
  • 百分比分流路由
  • 故障注入(Fault injection)
  • 系統(tǒng)度量

大部分能力是RPC框架都具備,或者比較好理解的,這里面重點介紹下斷路器和故障注入。

(2) 斷路器設(shè)計

它是軟件架構(gòu)設(shè)計中,一個服務(wù)自我保護(hù),或者說降級的設(shè)計思路。

舉個例子:當(dāng)系統(tǒng)檢測出某個接口有大量超時時,斷路器策略可以終止對這個接口的調(diào)用(斷路器打開),經(jīng)過一段時間后,再次嘗試調(diào)用,如果接口不再超時,則慢慢恢復(fù)調(diào)用(斷路器關(guān)閉)。

(3) 故障注入設(shè)計

它是軟件架構(gòu)設(shè)計中,一種故意引入故障,以擴(kuò)大測試覆蓋范圍,保障系統(tǒng)健壯性的方法,主要用于測試。

國內(nèi)大部分互聯(lián)網(wǎng)公司,架構(gòu)設(shè)計中不太會考慮故障注入,在操作系統(tǒng)內(nèi)核開發(fā)與調(diào)試,路由器開發(fā)與調(diào)試中經(jīng)常使用,可以用來模擬內(nèi)存分配失敗、磁盤IO錯誤等一些非常難出現(xiàn)的異常,以確保測試覆蓋度。

控制平面,有幾個核心組件?

(1) Mixer

Mixer的一些核心能力是:

  • 跨平臺,作為其他組件的adapter,實現(xiàn)Istio跨平臺的能力;
  • 和Envoy通訊,實施各種策略;
  • 和Envoy通訊,收集各種數(shù)據(jù);

Mixer的設(shè)計核心在于“插件化”,這種模型使得Istio能夠適配各種復(fù)雜的主機(jī)環(huán)境,以及后端基礎(chǔ)設(shè)施。

(2) Pilot

Pilot作為非常重要的控制平面組件,其核心能力是:

  • 為Envoy提供服務(wù)發(fā)現(xiàn)能力;
  • 為Envoy提供各種智能路由管理能力,例如A/B測試,灰度發(fā)布;
  • 為Envoy提供各種彈性管理能力,例如超時,重試,斷路策略;

Pilot的設(shè)計核心在于“標(biāo)準(zhǔn)化”,它會將各種流控的控制命令轉(zhuǎn)化為Envoy能夠識別的配置,并在運(yùn)行時,將這些指令擴(kuò)散到所有的Envoy。Pilot將這些能力抽象成通用配置的好處是,所有符合這種標(biāo)準(zhǔn)的Envoy都能夠接入到Pilot來。

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

(3) Citadel

Citadel組件,它提供終端用戶身份認(rèn)證,以及服務(wù)到服務(wù)的訪問控制??傊@是一個和安全相關(guān)的組件。

(4) Galley

Galley組件,它是一個配置獲取、校驗、處理、分發(fā)的組件,它的設(shè)計核心在于“解耦”,它將“從底層平臺(例如:K8S)獲取用戶配置”與Istio解耦開來。

總結(jié)

Istio采用二層架構(gòu),五大模塊,進(jìn)行微服務(wù)ServiceMesh解耦:

(1) 數(shù)據(jù)平面,主要負(fù)責(zé)高效轉(zhuǎn)發(fā):envoy:即proxy

(2) 控制平面,主要負(fù)責(zé)控制與應(yīng)用:

  •  mixer:支持跨平臺,標(biāo)準(zhǔn)化API的adapter
  •  pilot:控制與配置envoy的大部分策略
  •  citadel:安全相關(guān)
  •  galley:與底層平臺(例如:K8S)配置解耦

實施與控制分離,經(jīng)典的架構(gòu)設(shè)計方法,你學(xué)會了嗎?

知其然,知其所以然。

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

責(zé)任編輯:趙寧寧 來源: 架構(gòu)師之路
相關(guān)推薦

2011-11-01 09:52:42

2011-09-20 09:51:43

程序員

2015-09-14 09:05:37

2018-05-10 13:42:11

Hadoop架構(gòu)大數(shù)據(jù)

2015-10-26 17:26:05

物聯(lián)網(wǎng)架構(gòu)設(shè)計工業(yè)

2022-08-22 11:45:59

架構(gòu)技術(shù)

2025-04-15 04:00:00

2021-01-11 10:19:51

安全架構(gòu)

2013-05-27 10:58:28

Tumblr架構(gòu)設(shè)計雅虎收購

2023-05-12 08:06:46

Kubernetes多云架構(gòu)

2025-01-13 00:24:49

2022-05-27 10:40:04

前后端權(quán)限控制設(shè)計

2022-03-26 18:49:29

芯片顯卡

2023-07-05 08:00:52

MetrAuto系統(tǒng)架構(gòu)

2019-04-28 11:20:01

Istio微服務(wù)架構(gòu)

2009-01-15 09:43:51

Web架構(gòu)設(shè)計緩存

2012-05-11 10:38:15

Cloud Found

2025-05-09 08:45:13

2015-06-02 04:17:44

架構(gòu)設(shè)計審架構(gòu)設(shè)計說明書

2009-07-06 10:36:41

敏捷開發(fā)
點贊
收藏

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