溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

ServiceMesh的關鍵之如何理解邊車模式

發(fā)布時間:2021-10-27 10:37:03 來源:億速云 閱讀:176 作者:iii 欄目:web開發(fā)

本篇內容主要講解“ServiceMesh的關鍵之如何理解邊車模式”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“ServiceMesh的關鍵之如何理解邊車模式”吧!

一步步升級

注意:下面都是邊車模式,只不過有的邊車實在是簡陋。

<1>

大家都知道,微服務是復雜的,引入了一系列的問題,服務治理顯得尤關重要。比如日志收集、服務監(jiān)控、服務治理等。

ServiceMesh的關鍵之如何理解邊車模式

比如上面這張圖,我們在一個Linux服務器上,部署了四個進程。其中,web服務是最主要的進程,其他進程只是作為一些附加功能部署上去的。

其實,這三個圓圈,就是邊車的功能。只要把它給掛載上,上面的服務就擁有了這些功能。

但對于這三個組件的配置,是相當復雜的。我們需要很多重復的工作。

ServiceMesh的關鍵之如何理解邊車模式

<2>

上面這張圖,通過將Web應用與我們的輔助應用打包在一塊,進一步增強了  不可變性。擁有了容器的加持,我們就能夠靠約定來簡化打包和發(fā)布操作。比如,上面的各個組件就可以通過localhost直接通信。

但可惜的是,我們的這些輔助程序,都是作為docker容器里的進程去啟動的,這種 富容器模式  有諸多缺陷,不符合不可變基礎設施的理念,所以并不值得推薦。

<3>

k8s的Pod,在容器的基礎上,進一步抽象。一個Pod中可以包含多個容器。如下圖,基礎服務和Web服務可以分別獨自構建,最后以Pod作為載體,搭上便車就可以了。

ServiceMesh的關鍵之如何理解邊車模式

為了更加顯著的看到這個過程,下面這張圖以日志收集為例,介紹了兩個pod,相同日志收集docker容器的拓撲圖。

ServiceMesh的關鍵之如何理解邊車模式

從上面的演進過程我們可以看到。邊車,就是輔助或者基礎程序而已。但如何方便的管理這些附加的程序,我們有不同的組織方式。只有高度的抽象層次,才能進行方便的組裝與設計。

<4>

到此為止,我們可以看一下ServiceMesh經典的兩張圖了。

我們把Web應用(業(yè)務服務),抽象成綠色的方塊。然后把輔助組件(sidecar),抽象成藍色方塊。在一個相對簡單的環(huán)境中,我們的部署方式如下所示。

ServiceMesh的關鍵之如何理解邊車模式

由于輔助組件并不能單獨存在,所以它們都依附在綠色的服務上面。

我們抽調服務集群的血肉(Web服務),只留下它的筋骨(sidecar),就可以獲得下面這張圖,這就是ServiceMesh??梢钥吹嚼锩娴倪B接線條是非常復雜的,人工不可能完成,只能依靠平臺去管理。

ServiceMesh的關鍵之如何理解邊車模式

任何東西只要一上規(guī)模了,就體現(xiàn)了它的復雜度。這還僅僅是只有36個服務節(jié)點的拓撲圖。

不要小看這一個小小的藍色方塊。它不僅僅可以是一個輔助程序,而且可以成為基礎設施。現(xiàn)在典型的service  mesh,分為`數據平面`和`控制平面`,大多數落地的企業(yè)使用proxy方式實現(xiàn)了數據平面,對控制平面的實現(xiàn)有限。

像比較流行的Istio,通過負載均衡、服務間的身份驗證、監(jiān)控等方法,它可以輕松地創(chuàng)建一個已經部署了服務的網絡,而服務的代碼只需很少更改甚至無需更改。通過在整個環(huán)境中部署一個特殊的  sidecar代理,為服務添加 Istio 的支持,而代理會攔截微服務之間的所有網絡通信,然后使用其控制平面的功能來配置和管理 Istio。

我們看下它官方的功能描述:

  1. 為 HTTP、gRPC、WebSocket 和 TCP 流量自動負載均衡。

  2. 通過豐富的路由規(guī)則、重試、故障轉移和故障注入對流量行為進行細粒度控制。

  3. 可插拔的策略層和配置 API,支持訪問控制、速率限制和配額。

  4. 集群內(包括集群的入口和出口)所有流量的自動化度量、日志記錄和追蹤。

  5. 在具有強大的基于身份驗證和授權的集群中實現(xiàn)安全的服務間通信。

可以說,ServiceMesh將業(yè)務屬性剝離了出去,只剩下一張大網,涵蓋了所有運維和基礎服務的工作。

要用它,不能說是沒有代價的。其中有兩點比較重要:

網絡包通過層層的代理和轉發(fā)(Ambassador模式),效率會降低,排錯會變困難。

需要按照這個網格的規(guī)范進行改造,也就是寫一堆適配器(Adapter模式)。

SpringCloud的Sidecar

說到適配器,就不禁想起了SpringCloud的Sidecar。

Java里要說玩新概念,怎么能少的了Spring家族?SpringCloud同樣有一個sidecar的組件,它的maven坐標如下。

<dependency>             <groupId>org.springframework.cloud</groupId>             <artifactId>spring-cloud-netflix-sidecar</artifactId> </dependency>

它做的事情,更加像一個適配器。它能把一個普通的php或者nodejs服務,偽裝成一個正常的SpringCloud服務。

通過簡單的配置,我們就可以讓一些其他語言開發(fā)的Web應用,加入到SpringCloud體系中來。

它的使用比較簡單,在此不過多介紹。

到此,相信大家對“ServiceMesh的關鍵之如何理解邊車模式”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續(xù)學習!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI