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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

云原生系列「五」我为啥又看上了serviceMesh?

發布時間:2024/10/5 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 云原生系列「五」我为啥又看上了serviceMesh? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

上一篇文章,說到為什么不看好服務網格,核心是沒有強大的運維監控以及性能問題,那么lstio的出現讓那個我們看到了一線曙光。因為實際生產活動中,各種運營上報、https證書各種對接、各種監控指標采集、流控策略下發,往往十分耗散開發人員的精力,使得我們無法專注于業務開發,為什么說大公司拉通多,就是這么來的。那么我想lstio就是為了來解決這種問題的。據說lstio的代理能力和已經和nginx差不多,不過沒經過太多生產實踐,還可以觀望下。畢竟

服務網格是一個專用的基礎設施層,旨在“在微服務架構中實現可靠、快速和安全的服務間調用”。它不是一個“服務”的網格,而是一個“代理”的網格,服務可以插入這個代理,從而使網絡抽象化。在典型的服務網格中,這些代理作為一個?sidecar(邊車)被注入到每個服務部署中。服務不直接通過網絡調用服務,而是調用它們本地的?sidecar?代理,而?sidecar?代理又代表服務管理請求,從而封裝了服務間通信的復雜性。相互連接的?sidecar?代理集實現了所謂的數據平面,這與用于配置代理和收集指標的服務網格組件(控制平面)形成對比。

關于sidecar我們在下一篇文章中來介紹。

總而言之,Service Mesh?的基礎設施層主要分為兩部分:

  • 控制平面
  • 數據平面

當前流行的兩款開源服務網格?Istio?和 Linkerd 實際上都是這種構造;接下來我們通過介紹lstio來進一步了解這種基礎設施:

使用Istio實施服務網格

盡管有其他幾種服務網格,但最受歡迎的是Istio。我們將使用Istio探索云原生應用程序的Service Mesh架構。

如以上各節所述,在微服務體系結構中, Istio通過形成基礎結構層來實現此目的,以連接,保護和控制分布式服務之間的通信。Istio 在每個服務旁邊部署一個 Istio代理(稱為Istio sidecar),而該服務本身的代碼更改幾乎很少或沒有。所有服務間流量都定向到Istio代理,該代理使用策略控制服務間通信,同時實施部署,故障注入和斷路器的基本策略。

Istio的核心能力

  • 流量管理:這是 Istio 的最基本的功能。
  • 策略控制:通過 Mixer 組件和各種適配器來實現,實現訪問控制系統、遙測捕獲、配額管理和計費等。
  • 可觀測性:通過 Mixer 來實現。
  • 安全認證:Citadel 組件做密鑰和證書管理

核心Istio組件

?從 2017 年 5 月發布以來,Istio?經歷了四個重要的版本和由此劃分的三個發展階段。在不到三年的產品迭代過程中,出現了兩次重大的架構變動。我們來簡要分析一下這個變遷歷程。

  • 0.1 版本:2017 年 5 月發布。作為第二代?Service Mesh?的開創者,宣告了?Istio?的誕生,也燃起了網格市場的硝煙與戰火。
  • 1.0 版本:發布于 2018 年 7 月,對外宣傳生產環境可用。從 0.1 到 1.0 版本,開發時間經歷了一年多,但持續的發布了多個 0.x 版本,這一階段處于快速迭代期。
  • 1.1 版本:發布于 2019 年 3 月,號稱企業級可用的版本。一個小的版本號變化居然耗費了半年之久,其主要原因是出現了第一次架構重構,這一階段算是調整期。
  • 1.5 版本:發布于 2020 年 3 月,再次進行架構的重建,將多組件整合為單體形態的 istiod。從 1.1 到 1.5 版本的一年中,Istio?開始遵循季節性發布,進入了產品的穩定發展期

雖然又變成了單體,但是從職責劃分上我們還是可以從組件化去分析:?

Istio的控制平面和Envoy的數據平面共同構成了一個引人注目的服務網格實現。兩者都擁有蓬勃發展和充滿活力的社區,并且面向下一代服務架構。Istio是獨立于平臺的,可運行于各種環境中,包括跨云、內部部署、Kubernetes、Mesos等。你可以在Kubernetes 上部署Istio或在具有Consul的Nomad上部署。Istio目前支持在Kubernetes上部署的服務、使用Consul注冊的服務以及在虛擬機上部署的服務。

控制平面

控制平面部分包括了Pilot、Mixer、Citadel和Galley四個組件

  • Pilot

? Istio的Pilot組件用于管理流量,可以控制服務之間的流量流動和API調用,通過Pilot可以更好地了解流量,以便在問題出現之前發現問題。這使得調用更加可靠、網絡更加強健,即使遇到不利條件也能讓應用穩如磐石。借助Istio的Pilot,你能夠配置熔斷器、超時和重試等服務級屬性,并設置常見的連續部署任務,如金絲雀發布、A/B測試和基于百分比拆分流量的分階段發布。Pilot為Envoy代理提供服務發現功能,為智能路由和彈性能力(如超時、重試、熔斷器等)提供流量管理功能。Pilot將控制流量行為的高級路由規則轉換為特定于Envoy代理的配置,并在運行時將它們傳播到Envoy。此外,Istio提供了強大的開箱即用故障恢復功能,包括超時、支持超時預算和變量抖動的重試機制、發往上游服務的并發連接和請求數限制、對負載均衡池中的每個成員進行的定期主動運行狀況檢查,以及被動運行狀況檢查。

? Pilot將平臺特定的服務發現機制抽象化并將其合成為標準格式,符合數據平面API的任何Sidecar都可以使用這種標準格式。這種松散耦合使得Istio能夠在多種環境下運行(例如Kubernetes、Consul、Nomad),同時可保持用于流量管理的操作界面相同。Pilot中的adapter機制可以適配各種服務發現組件(Eureka、Consul、Kubenetes),最好的是Kubernetes

  • Mixer

? Istio的Mixer組件提供策略控制和遙測收集功能,將Istio的其余部分與各個后端基礎設施后端的實現細節隔離開來。Mixer是一個獨立于平臺的組件,負責在服務網格上執行訪問控制和使用策略,并從Envoy代理和其他服務收集遙測數據。代理提取請求級屬性,發送到Mixer進行評估。

? Mixer中包括一個靈活的插件模型,使其能夠接入到各種主機環境和后端基礎設施,從這些細節中抽象出Envoy代理和Istio管理的服務。利用Mixer,你可以精細控制網格和后端基礎設施后端之間的所有交互。

  • Citadel

? Istio Citadel安全功能提供強大的身份驗證功能、強大的策略、透明的TLS加密以及用于保護服務和數據的身份驗證、授權和審計(AAA)工具,Envoy可以終止或向網格中的服務發起TLS流量。為此,Citadel需要支持創建、簽署和輪換證書。Istio Citadel提供特定于應用程序的證書,可用于建立雙向TLS以保護服務之間的流量。

控制平面主要是對數據平面組件的管理和維護,因此形成了Istio Service Mesh最重要的層。

  • Galley

Galley用于驗證用戶編寫的Istio API配置。隨著時間的推移,Galley將接管Istio獲取配置、處理和分配組件的頂級責任。它負責將其他的Istio組件與從底層平臺(例如Kubernetes)獲取用戶配置的細節中隔離開來。

數據平面

摘要?Istio使用Envoy代理作為默認的開箱即用服務代理,這些Envoy代理與參與服務網格的所有應用程序實例一起運行,但不在同一個容器進程中,形成了服務網格的數據平面。只要應用程序想要與其他服務通信,就會通過服務代理Envoy進行。由此可見,Envoy代理是數據平面和整個服務網格架構中的關鍵組成部分。

Envoy代理

? Envoy最初是由Lyft開發的,用于解決構建分布式系統時出現的一些復雜的網絡問題。它于2016年9月作為開源項目提供,一年后加入了云原生計算基金會(CNCF)。Envoy是用C++語言實現的,具有很高的性能,更重要的是,它在高負載運行時也非常穩定和可靠。網絡對應用程序來說應該是透明的,當網絡和應用程序出現問題時,應該很容易確定問題的根源。正是基于這樣的一種設計理念,將Envoy設計為一個面向服務架構的七層代理和通信總線。

? 首先,Envoy是一種代理,在網絡體系架構中扮演著中介的角色,可以為網絡中的流量管理添加額外的功能,包括提供安全性、隱私保護或策略等。在服務間調用的場景中,代理可以為客戶端隱藏服務后端的拓撲細節,簡化交互的復雜性,并保護后端服務不會過載。例如,后端服務實際上是運行的一組相同實例,每個實例能夠處理一定量的負載。

? 其次,Envoy中的集群(Cluster)本質上是指Envoy連接到的邏輯上相同的一組上游主機。那么客戶端如何知道在與后端服務交互時要使用哪個實例或IP地址?Envoy作為代理起到了路由選擇的作用,通過服務發現(SDS,Service Discovery Service),Envoy代理發現集群中的所有成員,然后通過主動健康檢查來確定集群成員的健康狀態,并根據健康狀態,通過負載均衡策略決定將請求路由到哪個集群成員。而在Envoy代理處理跨服務實例的負載均衡過程中,客戶端不需要知道實際部署的任何細節。

Istio組件功能及相互協作方式

Istio 的主要組件及其相互關系大致如圖所示摘自《云原生服務網格Istio》

找了很多資料,但是偶然發現了社區,開源里面的力量太強大,感恩這個時代:

這本書給你總結的明明白白:

Pilot · Istio Handbook - Istio 服務網格進階實戰 by ServiceMesher(服務網格社區)

更多有用:

Istio:服務發現和Pilot的架構機制_琦彥-CSDN博客_istio服務注冊與發現

華為云講解:2. Istio Pilot 與服務發現_張成基-CSDN博客_istio 服務發現

總結

以上是生活随笔為你收集整理的云原生系列「五」我为啥又看上了serviceMesh?的全部內容,希望文章能夠幫你解決所遇到的問題。

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