服務網格是一個獨立的基礎設施層,用來處理服務之間的通信。
典型的服務網格通常提供了一組輕量級的網絡代理,代理會在應用無感知的情況下,同應用並行部署、運行。
Istio特性如下:
- 連接: 對網格內部的服務之間的調用產生的流量進行智能管理,以此為基礎,對微服務的部署、測試和升級提供保障
- 安全:認證、加密、和鑒權支持,在不入侵代碼的情況下,加固現有服務,提高安全性。
- 策略:在控制面定制策略,並在服務中實施。
- 觀察:對服務間調用進行跟蹤和測量,並獲取服務的狀態信息。
2.1 連接
網格內部調用(A -> B)
出站連接(B -> 外部雲服務)
入站連接(用戶 -> 服務A)
流量分割(服務A的版本1分別調用服務B的版本1和版本2)
按照調用方的服務版本進行路由
此外,還有一些潛在需求:
(1)在網格內部的服務之間如何根據實際需求對服務調用進行路由,條件可能包括:
調用的源和目的的服務;
調用內容;
認證身份;
(2)如何應對網絡故障和網絡服務。
(3)如何處理服務之間不同版本的關系。
(4)怎樣對出站連接進行控制。
(5)怎么樣對入站連接啟動后續的連接鏈條。
與流量相關的問題,還引發了幾個關鍵的功能需求:
(1)服務的注冊和發現
(2)負載均衡策略
(3)服務流量特征
(4)動態流量分配:
2.2 安全
通信加密、服務身份認證和服務訪問控制(授權和鑒權)功能。
2.3 策略
調用頻率的限制、對服務互訪的控制以及針對流量的一些限制和變更能力。
Istio中使用Mixer作為策略的執行者,Envoy的每次調用,在邏輯上都會通過Mixer進行事先預檢和事后報告,這樣Mixer就有了對流量的部分控制能力;
2.4 觀察
監控和跟蹤。
關注調用成功率、響應時間、調用量、傳輸量等。
面對數量眾多的服務,對各種級別和層次的指標進行采樣、采集和匯總。
分布式跟蹤。