開發與維運

ASM和服務網格

隨著微服務的日漸流行以及容器基礎架構的逐步成熟,服務網格Service Mesh 正在吸引越來越多的架構師的關注,成為當下最炙手可熱的技術之一,在Service Mesh的各種實現當中,Istio受到的關注最多。

阿里雲基於Istio提供了ASM(阿里雲服務網格服務),支持對多個K8S集群的統一管理。
1.jpg

(上圖來自阿里雲官網有關ASM的介紹)

除了支持阿里雲上的K8S集群外,還支持對雲下IDC的集群的統一管理。

2.jpg

(上圖來自阿里雲官網有關ASM的介紹)

這樣一來通過ASM即可實現一個統一的混合雲管控平臺,在這樣一個混合雲中,ASM到底能夠做哪些事情,能夠做到什麼程度還要去看ASM背後的Istio,Istio主要的功能包括:

  • 流量管理、流量管理是Istio最重要的功能,包括服務的路由、流量的轉移、服務限流降級等。
  • 安全、安全方面的功能包括認證和授權。
  • 控制策略、包括限流、黑白名單等。
  • 觀測、包括指標、日誌、鏈路追蹤等。

ASM/Istio實現流量控制的核心原理是通過容器組(POD)的Sidecar容器對服務的流量進行透明的代理和接管,從而將與業務邏輯無關的服務路由、請求、重試等功能從服務的代碼中剝離。

和網絡設備的實現類似,在服務網格中用於承載數據通信的部分被稱為服務網格的數據平面,用於整體協調控制的部分被稱為服務網格的控制平面。
3.jpg

在上圖中有兩個微服務,服務器A要調用服務B,服務A所在的容器通過同一個容器組(POD)中的Sidcar容器發起調用請求(這裡的容器組可以看作一臺服務器,容器組內的每一個容器可以看作是服務器上運行的一個進程),請求被路由到服務B所在的容器組,該請求被容器組的Sidecar容器接受後再轉發給服務B所在的容器,這兩個Sidecar容器可以看作我們經常使用的Nginx代理服務器,只不過更輕量和高效,Sidecar容器的控制和管理無需我們操心,由服務網格的控制平面自動完成,我們在部署服務A和服務B時也無需關注Sidecar容器的部署,部署也是Istio通過Kubernetes的自動注入機制自動完成。

透過控制平面和數據平面的相互協作,服務網格有關於流量管理、安全、控制、觀測方面的功能都能夠一一實現。

在Istio和服務網格出現之前,實現上述功能的方案還有類似於Spring Cloud這樣的框架,而且Spring Cloud的成功案例多如牛毛,相對而言Istio的優勢主要是能夠使用除Java之外的語言來實現微服務,服務的實現語言可以根據需要自由選擇。假如希望在一個項目中同時使用Spring Cloud和Istio則可以聯合使用阿里雲ASM和MSE(微服務引擎),通過相互的服務註冊發現和路由來打通SpringCloud和Istio兩個微服務治理體系。

4.jpg

(上圖來自阿里雲官網有關ASM的介紹)

以上就是阿里雲ASM和服務網格的概要介紹,希望對大家有所幫助。

Leave a Reply

Your email address will not be published. Required fields are marked *