日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Istio分层架构?80%的人有误解

發布時間:2025/3/21 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Istio分层架构?80%的人有误解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前篇:

《ServiceMesh究竟解決什么問題》

《什么是Istio,ServiceMesh最流行落地》

Istio是ServiceMesh的產品化落地:

  • 它幫助微服務之間建立連接,幫助研發團隊更好的管理與監控微服務,并使得系統架構更加安全

  • 幫助微服務分層解耦,解耦后的proxy層能夠更加專注于提供基礎架構能力,例如:

(1)服務發現(discovery)

(2)負載均衡(load balancing)

(3)故障恢復(failure recovery)

(4)服務度量(metrics)

(5)服務監控(monitoring)

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

(7)灰度發布(canary rollouts)

(8)限流限速(rate limiting)

(9)訪問控制(access control)

(10)身份認證(end-to-end authentication)

等功能。

  • 它使得業務工程團隊與基礎架構團隊都更加高效的工作,各自專注于自己的工作,更好的彼此賦能

今天來說一下Istio的核心架構設計

關于Istio的架構設計,官網用了這樣一句話:

邏輯上,Istio分為:

  • 數據平面(data plane)

  • 控制平面(control plane)

這兩個詞,是Istio架構核心,但又是大家被誤導最多的地方。

數據平面和控制平面,不是ServiceMesh和Istio第一次提出,它是計算機網絡,報文路由轉發里很成熟的概念:

  • 數據平面(data plane):一般用來做快速轉發

  • 控制平面(control plane):為快速轉發提供必要的信息

畫外音:上兩圖為路由器架構。

它的設計原則是:

  • 在一個路由設備里,轉發是最重要的工作,它具備最高的優先級,數據平面(data plane)的設計核心就是高效轉發,如何在最短的時間里處理最多的包,往往使用高效內存管理、隊列管理、超時管理等技術實現在硬件里

  • 控制平面(control plane)則不然,它要實現路由協議,設備管理,IGMP,ARP協議的,它更偏向于控制與應用,往往由軟件實現

畫外音:

IGMP(Internet GroupManagement Protocol),一個組播協議;

ARP(Address ResolutionProtocol),這個大家比較熟悉,根據IP地址獲取MAC地址;

Istio的架構核心與路由器非常類似:

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

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

(1)高效轉發;

(2)接收和實施來自mixer的策略;

  • 控制平面(底下的大紅框),核心是控制與應用,核心職責是:

(1)管理和配置邊車代理;

(2)通過mixer實施策略與收集來自邊車代理的數據;

畫外音:

(1)sidecar proxy,原文使用的是envoy,后文envoy表示代理;

(2)mixer,不確定要怎么翻譯了,有些文章叫“混音器”,后文直接叫mixer;

(3)pilot,galley,citadel,不敢翻譯為飛行員,廚房,堡壘,后文直接用英文;

如架構圖所示,該兩層架構中,有五個核心組件。

數據平面,有一個核心組件:

Envoy (proxy)

Envoy的核心職責是高效轉發,更具體的,它具備這樣一些能力:

(1)服務發現

(2)負載均衡

(3)安全傳輸

(4)多協議支持,例如HTTP/2,gRPC

(5)斷路器(Circuit breakers)

(6)健康檢查

(7)百分比分流路由

(8)故障注入(Fault injection)

(9)系統度量

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

斷路器設計

它是軟件架構設計中,一個服務自我保護,或者說降級的設計思路。

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

故障注入設計

它是軟件架構設計中,一種故意引入故障,以擴大測試覆蓋范圍,保障系統健壯性的方法,主要用于測試。

國內大部分互聯網公司,架構設計中不太會考慮故障注入,在操作系統內核開發與調試,路由器開發與調試中經常使用,可以用來模擬內存分配失敗、磁盤IO錯誤等一些非常難出現的異常,以確保測試覆蓋度。

控制平面,有四個核心組件:

Mixer

Mixer的一些核心能力是:

(1)跨平臺,作為其他組件的adapter,實現Istio跨平臺的能力;

(2)和Envoy通訊,實時各種策略

(3)和Envoy通訊,收集各種數據

Mixer的設計核心在于“插件化”,這種模型使得Istio能夠適配各種復雜的主機環境,以及后端基礎設施。

Pilot

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

(1)為Envoy提供服務發現能力;

(2)為Envoy提供各種智能路由管理能力,例如A/B測試,灰度發布;

(3)為Envoy提供各種彈性管理能力,例如超時,重試,斷路策略;

Pilot的設計核心在于“標準化”,它會將各種流控的控制命令轉化為Envoy能夠識別的配置,并在運行時,將這些指令擴散到所有的Envoy。Pilot將這些能力抽象成通用配置的好處是,所有符合這種標準的Envoy都能夠接入到Pilot來。

潛臺詞是,任何第三方可以實現自己的proxy,只要符合相關的API標準,都可以和Pilot集成。

Citadel

Citadel組件,它提供終端用戶身份認證,以及服務到服務的訪問控制。總之,這是一個和安全相關的組件。

Galley

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

花邊:為什么80%的中文用戶對Istio的二層架構的了解是錯的?

很多朋友問我,通過什么渠道學習最新的技術知識,我的回答一直是,英文官網

畫外音:本文所有信息來源于Istio1.1英文官網。

我在百度搜了下Istio,80%的資料,將二層架構翻譯為:

  • 數據面板

  • 控制面板

畫外音:大家可以百度搜一下“istio 控制面板”

一開始我極其蒙圈,因為“數據平面”和“控制平面”是非常成熟的翻譯,路由器就是使用這個二層架構,ServiceMesh使用相同的架構設計進行解耦,應該不需要創造性翻譯呀。

后來,我懂了:

  • 控制平面(control?plane)

  • 控制面板(control?panel)

半吊子英語的程序員,二手的技術文檔,真害人,唉。

總結

Istio采用二層架構,五大模塊,進行微服務ServiceMesh解耦:

  • 數據平面,主要負責高效轉發

(1)envoy模塊:即proxy;

  • 控制平面,主要負責控制與應用

(2)mixer模塊:支持跨平臺,標準化API的adapter;

(3)pilot模塊:控制與配置envoy的大部分策略;

(4)citadel模塊:安全相關;

(5)galley模塊:與底層平臺(例如:K8S)配置解耦;

實施與控制分離,經典的架構設計方法,GOT?

思路比結論重要。

總結

以上是生活随笔為你收集整理的Istio分层架构?80%的人有误解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。