服務網格是一種軟件架構模式,用于管理和連接微服務架構中的服務。它提供了一種方法,使得微服務之間的通信變得更加可靠、安全和靈活。服務網格通常由一組輕量級的代理程序組成,這些代理程序負責處理服務之間的通信,管理流量、安全性、監控和其他相關的任務。它們還可以提供諸如負載均衡、故障轉移和自動伸縮等功能,從而幫助確保整個微服務架構的可靠性和可伸縮性。Istio 和 Linkerd 是兩個常見的服務網格實現。
圖片
通過接收控制面發送的路由與控制信息來定向轉發或處理數據。
當談到服務網格時,這些特點是其核心功能之一,它們通過數據面和控制面的配合來實現。
服務網格的控制面是指服務網格架構中負責管理和配置數據面的部分。它通常由一組組件組成,這些組件負責實現服務發現、流量管理、安全控制、監控、故障處理等功能。控制面的主要任務是為數據面提供所需的配置信息,以確保服務網格能夠按照預期的方式運行,并滿足各種業務需求和運維要求。
圖片
管理和維護服務注冊表,跟蹤服務實例的可用性和位置,以便數據面能夠將流量正確地路由到目標服務。
配置負載均衡、路由規則、限流策略等,以確保流量能夠按照預期的方式在服務之間進行傳輸,并保證服務的可用性和性能。
實施安全策略,例如認證、授權、加密解密等,以保護服務之間的通信安全,并防止未經授權的訪問和數據泄露。
收集和分析服務之間的通信數據、性能指標和錯誤信息,以便進行故障診斷、性能優化和資源規劃。
實施故障檢測、熔斷、重試等機制,以確保在服務發生故障或不可用時能夠及時地進行處理,保障整個系統的穩定性和可靠性。
常見的服務網格控制面包括 Istio、Linkerd 控制平面等。這些控制面組件通常以集群部署方式運行,與數據面組件(如 Envoy、HAProxy 等)協同工作,共同構建出高度可靠和高度可擴展的服務網格架構。
服務網格實現了微服務業務邏輯與底層服務控制的解耦。微服務只需專注于實現自己的業務邏輯,而不必在代碼中繁瑣配置與服務通信相關的依賴庫和配置項。這種解耦使得微服務開發更加簡潔和高效。
服務網格將微服務中常見的共性需求(如流量統計、trace埋點、限流控制等)抽象出來,作為統一的實現層。這些功能由基礎架構團隊負責實現,并通過服務網格的統一部署方式,為所有微服務提供支持。這樣一來,不同微服務間不再需要重復編碼這些通用功能,極大地提高了開發效率和代碼復用性。
有了服務網格,業務開發者不再需要分心關注微服務的共性需求和底層服務控制,可以更專注地投入到業務邏輯的實現上。這使得開發人員能夠更快速、高效地迭代業務功能,加速產品上線和迭代。
服務網格的統一實現層由基礎架構團隊負責升級和維護,業務開發者無需擔心底層服務控制的變化和更新。這降低了微服務的維護成本,同時保證了整個微服務架構的穩定性和可靠性。
通過將共性需求抽象為服務網格的統一實現層,并由基礎架構團隊統一維護,服務網格提高了組織的整體效率。業務開發者能夠更專注于業務功能的實現,基礎架構團隊則負責提供穩定可靠的底層服務控制,使得整個組織能夠更快速、高效地實現業務目標。
服務網格的技術棧通常包括以下幾個方面的技術和工具
Envoy
HAProxy
NGINX
Istio
Linkerd
Consul
Prometheus
Grafana
Zipkin
Jaeger
JWT(JSON Web Token)
OAuth2
SPIFFE(Secure Production Identity Framework for Everyone)
Consul
etcd
ZooKeeper
Kong
Traefik
Ambassador
Hystrix
Istio Circuit Breaker
我們來總結一下,服務網格的技術棧涵蓋了代理和數據面、控制面、監控和指標收集、安全性和鑒權、服務發現、流量管理以及熔斷和故障處理等方面的技術和工具。
我們可以使用plantuml畫出對應的用例圖
@startumlleft to right directionactor 用戶 as Userpackage "服務網格技術棧" { usecase "代理和數據面" as Proxy usecase "控制面" as ControlPlane usecase "監控和指標收集" as Monitoring usecase "安全性和鑒權" as Security usecase "服務發現" as ServiceDiscovery usecase "流量管理" as TrafficManagement usecase "熔斷和故障處理" as CircuitBreaker User --> Proxy : 發送請求 User --> ControlPlane : 配置服務規則 User --> Monitoring : 查看監控數據 User --> Security : 進行認證和授權 User --> ServiceDiscovery : 發現可用服務 User --> TrafficManagement : 配置負載均衡 User --> CircuitBreaker : 設置故障處理策略 ControlPlane --> Proxy : 下發配置 ControlPlane --> Monitoring : 收集指標 ControlPlane --> Security : 實施安全策略 ControlPlane --> ServiceDiscovery : 更新服務列表 ControlPlane --> TrafficManagement : 配置路由規則 ControlPlane --> CircuitBreaker : 觸發熔斷 Proxy --> ControlPlane : 上報狀態 Proxy --> Monitoring : 發送監控數據 Proxy --> Security : 執行安全操作 Proxy --> ServiceDiscovery : 查詢服務列表 Proxy --> TrafficManagement : 處理流量策略 Proxy --> CircuitBreaker : 進行故障檢測 Monitoring --> ControlPlane : 提供監控數據 Monitoring --> Proxy : 收集代理狀態 Monitoring --> Security : 記錄安全事件 Monitoring --> ServiceDiscovery : 分析服務拓撲 Monitoring --> TrafficManagement : 分析流量分布 Monitoring --> CircuitBreaker : 監控故障情況}@enduml
圖片
這個用例圖描述了服務網格技術棧中各個組件之間的交互關系以及用戶如何使用這些技術來實現不同的功能。
表示使用服務網格的終端用戶或系統用戶,他們通過與不同的技術組件進行交互,來達到他們的目標。
代表了處理服務之間通信流量的組件。它們與用戶交互,處理用戶發送的請求,并向控制面報告狀態。同時,它們也與控制面、監控和指標收集、安全性和鑒權、服務發現、流量管理以及熔斷和故障處理等組件進行交互,以執行相應的功能。
負責管理和配置數據面,實現服務發現、流量管理、安全控制、監控等功能。它接收來自用戶的配置請求,并將配置信息下發到數據面,同時收集來自數據面的狀態和監控信息,以便進行相應的調整和優化。
負責收集和分析服務之間的通信數據、性能指標和錯誤信息。它與用戶交互,提供監控數據給用戶查看,并與控制面、代理和數據面等組件進行交互,以實現監控和診斷功能。
實施對服務之間通信的加密、認證和授權。它與用戶進行交互,執行安全操作,并與控制面、代理和數據面等組件進行交互,以保護服務之間的通信安全。
負責發現和注冊微服務實例,以便其他服務能夠動態地找到并與它們進行通信。它與用戶交互,提供服務發現功能,并與控制面、代理和數據面等組件進行交互,以更新服務列表和服務拓撲。
負責配置負載均衡、路由規則、限流策略等,以確保流量能夠按照預期的方式在服務之間進行傳輸。它與用戶進行交互,提供流量管理功能,并與控制面、代理和數據面等組件進行交互,以配置和調整流量策略。
負責實施故障檢測、熔斷、重試等機制,以確保在服務出現故障或不可用時能夠進行適當的處理。它與用戶進行交互,提供熔斷和故障處理功能,并與控制面、代理和數據面等組件進行交互,以監控和處理故障情況。
本文鏈接:http://www.tebozhan.com/showinfo-26-87680-0.html一篇聊透云原生中的服務網格
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com
下一篇: 基于原生的跨模塊資源訪問