1.9 服務網格(Service Mesh)
服務網格是用于處理服務到服務通信的專用基礎設施層。它負責通過包含現代云原生應用程序的復雜服務拓撲來可靠地傳遞請求。實際上,服務網格通常實現為多個輕量級網絡代理,這些代理與應用程序代碼一起部署,但不需要知道應用程序。
服務網格作為獨立層的概念與云原生應用程序的興起有關。在云原生架構中,借助于Kubernetes這樣的編排器,單個應用程序可能包含數百個服務,每個服務可能有數千個實例,并且每個實例可能處于不斷變化的狀態。這就使得這些服務實例間的通信不僅非常復雜,而且確保端到端的性能和可靠性至關重要。
目前,服務網格已成為云原生堆棧的關鍵組件。Paypal、Ticketmaster和Credit Karm等高流量公司都為其生產應用程序添加了服務網格,2017年1月,Linkerd(云原生應用程序的開源服務網格)成為云原生計算基金會的官方項目,同年5月IBM和Google共同發布開源Istio。
服務網格并沒有給軟件開發和部署帶來新功能,它解決的是其他工具已經解決過的問題,只不過這次是針對云原生架構下的Kubernetes環境的實現。服務網格的主要特點有:
● 應用程序間通信的中間層。
● 輕量級網絡代理。
● 應用程序無感知。
● 解耦應用程序的重試/超時、監控、追蹤和服務發現。
目前兩款流行的服務網格開源軟件Istio和Linkerd都已經在Kubernetes中集成,但是Istio的接受度和采用量更多一些。
Istio是一個源代碼開放的平臺,用于管理和保護微服務。Istio與編排器(如Kubernetes)配合使用,可管理和控制服務之間的通信。
Istio使用伴生模式來運行。伴生模式(Envoy代理)是一個單獨進程,與應用程序一起使用。伴生可管理與服務之間的所有往來通信,并將公共級別的功能應用于所有服務,與用于構建服務的編程語言或框架無關。實際上,Istio提供了一種機制,以集中方式配置路由和安全策略,以分散方式通過伴生來應用這些策略。
在大多數情況下,本書建議使用Istio提供的功能,而不要使用不同編程語言或框架提供的類似功能。例如,基礎架構能以更一致的方式對負載均衡和其他路由策略進行定義、管理和強制實施。
在某些情況下,與分布式跟蹤一樣,Istio和應用程序級別的庫是互補的,可以同時使用這兩者來改進操作。對于分布式跟蹤,Istio只能確保在請求中包含跟蹤信息;應用程序庫提供了有關請求之間關系的重要上下文。將Istio與支持庫或框架庫一起使用時,可使讀者對系統請求的路由過程有一個總體了解。
Istio從最高層上擴展了Kubernetes平臺,提供了額外的管理概念、可視性和安全性。Istio的功能可以細分為以下四個類別:
● 流量管理:控制微服務之間的流量,以執行流量分割、故障恢復和金絲雀發布。
● 安全性:在微服務之間提供基于身份的強認證、授權和加密。
● 可觀察性:收集度量值和日志,以更好地了解集群中運行的應用程序。
● 策略:強制實施訪問控制、速率限制和配額,以保護應用程序。
具體內容可以參閱Istio官方文檔。
- Mastering Proxmox(Third Edition)
- Hands-On Machine Learning on Google Cloud Platform
- Hadoop 2.x Administration Cookbook
- 走入IBM小型機世界
- Blockchain Quick Start Guide
- 數控銑削(加工中心)編程與加工
- 基于多目標決策的數據挖掘方法評估與應用
- 走近大數據
- Word 2007,Excel 2007辦公應用融會貫通
- Salesforce Advanced Administrator Certification Guide
- 和機器人一起進化
- DynamoDB Applied Design Patterns
- PostgreSQL High Performance Cookbook
- 大數據:從基礎理論到最佳實踐
- 巧學活用Photoshop