一、背景
最近架構組基于istio開發了服務網格(Service Mesh)平臺,借此機會把相關的背景知識做一次學習和記錄,方便回頭查看,
初版的效果:

二、istio
官方手冊:https://istio.io/latest/zh/docs/concepts/what-is-istio/
stio是Google/IBM/Lyft聯合開發的開源專案,
官方定義為:
Istio:一個連接,管理和保護微服務的開放平臺,
Istio來自希臘語,英文意思是”Sail”, 翻譯為中文是“啟航”,它的圖示如下:

可以類比Google的另外一個相關產品:Kubernetes,名字也是同樣起源于古希臘,是船長或者駕駛員的意思,下圖是Kubernetes的圖示:

1、Service Mesh簡介
istio作為實作Service Mesh的一個開源專案,首先要對Service Mesh有了解,
在過去的幾年中,微服務架構已成為軟體設計中流行的樣式,在這種架構中,我們將應用程式分解為可獨立部署的服務,這些服務通常是輕量級的,多語言的,并且通常由各種職能團隊進行開發部署,當某些服務數量增加,難以管理且越來越復雜時,微服務架構將一直有效,但這也在管理安全性,網路流量控制和可觀察性等各個方面帶來了挑戰,
Service Mesh可以很好地幫助應對這些挑戰,
- Service Mesh 用于描述組成應用程式的微服務及其之間的互動,隨著服務數量的增加和復雜性的增加,擴展和管理變得越來越困難,Service Mesh可以為微服務架構提供服務發現,負載均衡,故障恢復,指標和監視,
- Service Mesh 通常還能夠滿足更復雜的需求,例如A/B測驗,金絲雀發布,速率限制,訪問控制和端到端身份驗證,
- Service Mesh 提供了一種輕松創建服務網路的方式,該網路具有負載均衡,服務到服務的身份驗證,監視等功能,而微服務代碼更改很少或沒有更改,
2、為什么使用 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/
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/209925.html
標籤:架構設計
