服務網格istio概念應知應會

1、背景html

最近架構組基於istio開發了服務網格(Service Mesh)平臺,藉此機會把相關的背景知識作一次學習和記錄,方便回頭查看。後端

第一版的效果:安全

2、istio網絡

官方手冊:https://istio.io/latest/zh/docs/concepts/what-is-istio/架構

stio是Google/IBM/Lyft聯合開發的開源項目。負載均衡

官方定義爲:框架

Istio:一個鏈接,管理和保護微服務的開放平臺。運維

Istio來自希臘語,英文意思是」Sail」, 翻譯爲中文是「啓航」。它的圖標以下:微服務

能夠類比Google的另一個相關產品:Kubernetes,名字也是一樣起源於古希臘,是船長或者駕駛員的意思。下圖是Kubernetes的圖標:post

 

一、Service Mesh簡介

istio做爲實現Service Mesh的一個開源項目,首先要對Service Mesh有了解。

在過去的幾年中,微服務架構已成爲軟件設計中流行的樣式。在這種架構中,咱們將應用程序分解爲可獨立部署的服務。這些服務一般是輕量級的,多語言的,而且一般由各類職能團隊進行開發部署。當某些服務數量增長,難以管理且愈來愈複雜時,微服務架構將一直有效。但這也在管理安全性,網絡流量控制和可觀察性等各個方面帶來了挑戰。

Service Mesh能夠很好地幫助應對這些挑戰。

  • Service Mesh 用於描述組成應用程序的微服務及其之間的交互。隨着服務數量的增長和複雜性的增長,擴展和管理變得愈來愈困難。Service Mesh能夠爲微服務架構提供服務發現,負載均衡,故障恢復,指標和監視。
  • Service Mesh 一般還可以知足更復雜的需求,例如A/B測試,金絲雀發佈,速率限制,訪問控制和端到端身份驗證。
  • Service Mesh 提供了一種輕鬆建立服務網絡的方式,該網絡具備負載均衡,服務到服務的身份驗證,監視等功能,而微服務代碼更改不多或沒有更改。

二、爲何使用 Istio?

Istio 提供一種簡單的方式來爲已部署的服務創建網絡,該網絡具備負載均衡、服務間認證、監控等功能,而不須要對服務的代碼作任何改動。簡單的說,有了Istio,你的服務

就再也不須要任何微服務開發框架(典型如Spring Cloud,Dubbo),也再也不須要本身手動實現各類複雜的服務治理功能(不少是Spring Cloud和Dubbo也不能提供的,須要自

己動手)。只要服務的客戶端和服務端能夠進行簡單的直接網絡訪問,就能夠經過將網絡層委託Istio,從而得到一系列的完備功能。

能夠近似的理解爲:Istio = 微服務框架 + 服務治理。

Istio的關鍵功能:

  • HTTP、gRPC、WebSocket 和 TCP 流量的自動負載均衡。
  • 經過豐富的路由規則、重試、故障轉移和故障注入,能夠對流量行爲進行細粒度控制。
  • 可插入的策略層和配置 API,支持訪問控制、速率限制和配額。
  • 對出入集羣入口和出口中全部流量的自動度量指標、日誌記錄和跟蹤。
  • 經過強大的基於身份的驗證和受權,在集羣中實現安全的服務間通訊。
  • Istio 旨在實現可擴展性,知足各類部署需求。

核心功能
Istio 在服務網絡中統一提供了許多關鍵功能:

流量管理

經過簡單的規則配置和流量路由,您能夠控制服務之間的流量和 API 調用。Istio 簡化了斷路器、超時和重試等服務級別屬性的配置,而且能夠輕鬆設置 A/B測試、金絲雀部署和基於百分比的流量分割的分階段部署等重要任務。

經過更好地瞭解您的流量和開箱即用的故障恢復功能,您能夠在問題出現以前先發現問題,使調用更可靠,而且使您的網絡更增強大——不管您面臨什麼條件。

安全

Istio 的安全功能使開發人員能夠專一於應用程序級別的安全性。Istio 提供底層安全通訊信道,並大規模管理服務通訊的認證、受權和加密。使用Istio,服務通訊在默認狀況下是安全的,它容許您跨多種協議和運行時一致地實施策略——全部這些都不多或根本不須要應用程序更改。

雖然 Istio 與平臺無關,但將其與 Kubernetes(或基礎架構)網絡策略結合使用,其優點會更大,包括在網絡和應用層保護 pod 間或服務間通訊的能力。

可觀察性

Istio 強大的跟蹤、監控和日誌記錄可以讓您深刻了解服務網格部署。經過 Istio 的監控功能,能夠真正瞭解服務性能如何影響上游和下游的功能,而其自定義儀表板能夠提供對全部服務性能的可視性,並讓您瞭解該性能如何影響您的其餘進程。

Istio 的 Mixer 組件負責策略控制和遙測收集。它提供後端抽象和中介,將 Istio 的其他部分與各個基礎架構後端的實現細節隔離開來,併爲運維提供對網格和基礎架構後端之間全部交互的細粒度控制。

全部這些功能可讓您能夠更有效地設置、監控和實施服務上的 SLO。固然,最重要的是,您能夠快速有效地檢測和修復問題。

平臺支持

Istio 是獨立於平臺的,旨在運行在各類環境中,包括跨雲、內部部署、Kubernetes、Mesos 等。您能夠在 Kubernetes 上部署 Istio 或具備 Consul 的 Nomad 上部署。Istio 目前支持:

在 Kubernetes 上部署的服務
使用 Consul 註冊的服務
在虛擬機上部署的服務

集成和定製

策略執行組件能夠擴展和定製,以便與現有的 ACL、日誌、監控、配額、審計等方案集成。 

好文推薦:

https://www.cnblogs.com/xishuai/p/microservices-and-service-mesh.html(微服務(Microservices)和服務網格(Service Mesh)架構概念整理

https://www.kubernetes.org.cn/5556.html(詳解Istio實踐之熔斷和限流工做原理

https://blog.csdn.net/luanpeng825485697/article/details/84560659(istio簡介和基礎組件原理(服務網格Service Mesh))

https://blog.csdn.net/chenhaifeng2016/article/details/78609208(深度剖析Service Mesh服務網格新生代Istio)

https://zhuanlan.zhihu.com/p/101723832(微服務之服務治理:Envoy 全局 gRPC 限速服務 lyft/ratelimit 詳解)

https://www.jianshu.com/p/bed143a1c886(istio 簡介)

http://www.uml.org.cn/wfw/201909063.asp(Istio是啥?一文帶你完全瞭解!)

https://servicemesh.es/

相關文章
相關標籤/搜索