2者優缺點對比分析「服務網格和微服務對比分析」

在開發應用程序時,當組織為實現快速的功能交付而根據業務需要將應用程序分解為多個較小的服務組件時,此時的服務組件即為微服務(MicroServices)。簡單來講,微服務是一種分佈式模塊化開發方法。與傳統的單體應用方式相比,微服務架構將每個微服務視為獨立的實體/模塊,從根本上有助於簡化其代碼和相關基礎架構的維護。應用程序的每個微服務還可以使用不同的技術編寫,還可以獨立地部署,優化和管理。

儘管從理論上講,微服務架構特別有利於複雜的大型應用程序的構建,但是,它也被廣泛用於小型應用程序的構建(例如,簡單的購物車),還能夠滿足進一步擴展的需求。

微服務架構的好處

  • 可以通過不同的技術棧來開發和部署應用程序中的各個微服務。
  • 每個微服務都可以獨立優化,部署或擴展。
  • 更好的故障處理和錯誤檢測。

微服務架構的組件

在微服務架構上運行的現代雲原生應用程序依賴於以下關鍵組件:

  • 容器化(類似Docker的平台)-通過將服務分成多個進程來進行有效的管理和部署。
  • 編排(類似Kubernetes之類的平台)-用於配置,分配和管理服務的可用系統資源。
  • 服務網格(類似Istio的平台)-通過服務代理網格進行服務間通信,以連接,管理和保護微服務(關於Istio可以到這裡查看詳細信息)。

以上三個是微服務架構中最重要的組件,這些組件允許雲原生中的應用程序在負載下擴展,甚至在故障期間也能執行。

微服務架構的複雜性

大型應用程序分解為多個微服務時,每個微服務可能使用不同的技術棧(開發語言,數據庫等),需要把這些環境來形成一個複雜的體系結構進行管理。儘管Docker容器化通過將每個微服務劃分為在單獨的容器中運行,來幫助管理和部署單個微服務,但是由於必須處理整體系統運行狀況,容錯和多個故障點,因此服務間通信仍然非常複雜。

讓我們通過購物車如何在微服務架構上工作來了解這一點。這裡的微服務有庫存服務,支付網關服務,基於客戶訪問歷史的產品建議算法服務等。儘管所有這些服務在理論上都保持為獨立的微型模塊,但它們確實需要彼此交互。

所以, 服務到服務的通信才使微服務成為可能。

為什麼我們需要服務網格?

既然你知道了微服務體系結構中服務到服務通信的重要性,那麼很明顯,通信通道需要保持無故障,安全,高可用性和健壯性。而這恰恰是服務網格作為基礎結構組件出現的地方,它通過實現多個服務代理來確保受控的服務到服務通信。服務網格負責不同服務之間的通信,而不是添加新功能。

在服務網格中,與單個服務一起部署的代理可以實現服務之間的通信,這被廣泛稱為Sidecar模式。Sidecar(代理)被設計為處理服務間通信的任何功能,例如負載均衡,斷路器,服務發現等。

通過服務網格,你可以:

  • 維護,配置和保護應用程序中所有或選定的微服務之間的通信。
  • 在微服務中配置和執行網絡功能,例如網絡彈性,負載均衡,網絡中斷,服務發現等。
  • 網絡功能與業務邏輯相分離,耦合性低。因此,開發人員可以專註於應用程序的業務邏輯,而與網絡通信相關的所有或大部分工作都由服務網格來處理。
  • 由於服務到服務的代理通信使用的是諸如HTTP1.x / 2.x,gRPC等標準協議,因此開發人員可以使用任何技術來開發單個服務。

服務網格架構的組件

微服務的業務邏輯

業務邏輯包含微服務的核心應用程序邏輯和基礎代碼,以及服務到服務的集成邏輯。由於微服務架構的優勢,因此可以在任何平台上編寫業務邏輯,並且業務邏輯完全獨立於其他服務。

基本網絡功能

這包括微服務使用基本網絡功能來發起請求並與服務網格代理連接。儘管微服務中的主要網絡功能是通過服務網格來處理的,但是給定的服務必須包含基本網絡功能才能與Sidecar代理連接。

應用網絡功能

與基本網絡功能不同,此組件是通過服務代理維護和管理網絡的關鍵功能,包括網絡中斷,負載均衡,服務發現等。

服務網格控制平面(Control Plane)

所有服務網格代理,都由控制平面集中管理和控制。通過控制平面,你可以指定身份驗證策略,度量標準生成策略,並在整個網格中配置服務代理。

使用Istio實施服務網格

儘管有其他幾種服務網格,但最受歡迎的是Istio。我們將使用Istio探索雲原生應用程序的Service Mesh架構。

如以上各節所述,在微服務體系結構中, Istio通過形成基礎結構層來實現此目的,以連接,保護和控制分佈式服務之間的通信。Istio 在每個服務旁邊部署一個 Istio代理(稱為Istio sidecar),而該服務本身的代碼更改幾乎很少或沒有。所有服務間流量都定向到Istio代理,該代理使用策略控制服務間通信,同時實施部署,故障注入和斷路器的基本策略。

Istio的核心能力

  • 通過身份驗證和授權來保護服務間通信。
  • 支持訪問控制,資源配額和資源分配的策略層。
  • 支持HTTP,gRPC,WebSocket和TCP通信的負載均衡。
  • 集群內所有流量的度量,日誌和跟蹤,包括集群的入口和出口。
  • 通過故障轉移,故障注入和路由規則,來配置和控制服務間通信。

Istio不依賴與任何平台,這意味着它可以在多種環境中運行,包括雲,本地,Kubernetes等。Istio當前支持:

  • Kubernetes上的服務部署
  • 在 Consul註冊的服務
  • 在單個虛擬機上運行的服務

核心Istio組件

快速讀懂微服務與Service Mesh(服務網格)

Istio服務網格由數據平面和控制平面組成。

  • 在數據平面(Data Plane)由多個服務代理(通過 Envoy)組成,而微服務之間Sidecar的通信是通過 策略控制和遙測收集 (通過 Mixer )實現。
  • 在控制平面通過Pilot
    , Citadel 和 Galley 管理和配置Sidecar代理之間的通信。Citadel 用於密鑰和證書管理。Pilot
    將授權策略和安全命名信息分發給代理 —
    主要用於服務發現和服務配置(服務訪問規則維護),Pilot中的adapter機制可以適配各種服務發現組件(Eureka、Consul、Kubenetes),最好的是Kubernetes。Galley
    驗證規則(Pilot、Mixer、Citadel配置的規則)。

控制平面主要是對數據平面組件的管理和維護,因此形成了Istio Service Mesh最重要的層。

原創文章,作者:投稿專員,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/281318.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
投稿專員的頭像投稿專員
上一篇 2024-12-21 13:17
下一篇 2024-12-21 13:17

相關推薦

發表回復

登錄後才能評論