什么是服務(wù)網(wǎng)格?在微服務(wù)體系中又是如何使用的?
?服務(wù)網(wǎng)格這個概念出來很久了,從 2017 年被提出來,到 2018 年正式爆發(fā),很多云廠商和互聯(lián)網(wǎng)企業(yè)都在紛紛向服務(wù)網(wǎng)格靠攏。像螞蟻集團、美團、百度、網(wǎng)易等一線互聯(lián)網(wǎng)公司,都有服務(wù)網(wǎng)格的落地應(yīng)用。
1.服務(wù)網(wǎng)格
我認為,服務(wù)網(wǎng)格是微服務(wù)架構(gòu)的更進一步升級,它的核心目的是實現(xiàn)網(wǎng)絡(luò)通信與業(yè)務(wù)邏輯的分離,使得開發(fā)人員更加專注在業(yè)務(wù)的實現(xiàn)上。
服務(wù)網(wǎng)格,也就是 Service Mesh,它是專門用來處理服務(wù)通訊的基礎(chǔ)設(shè)施層。它的主要功能是處理服務(wù)之間的通信,并且負責(zé)實現(xiàn)請求的可靠性傳遞。Service Mesh,我們通常把他稱為第三代微服務(wù)架構(gòu),既然是第三代,那么意味著他是在原來的微服務(wù)架構(gòu)下做的升級。
2.演變歷史
為了更好的說明 Service Mesh,那我就不得不說一下微服務(wù)架構(gòu)部分的東西。首先,當我們把一個電商系統(tǒng)以微服務(wù)化架構(gòu)進行拆分后,會的到這樣的一個架構(gòu),其中包括 WebServer、Payment、inventory 等等。
這些微服務(wù)應(yīng)用,會被部署到 Docker 容器、或者 Kubernetes 集群。由于每個服務(wù)的業(yè)務(wù)邏輯是獨立的,比如 payment 會實現(xiàn)支付的業(yè)務(wù)邏輯、order 實現(xiàn)訂單的處理、Webserver 實現(xiàn)客戶端請求的響應(yīng)等。
所以,服務(wù)之間必須要相互通信,才能實現(xiàn)功能的完整性。比如用戶把一個商品加入購物車,請求會進入到 Webserver,然后轉(zhuǎn)發(fā)到 shopping cart 進行處理,并存到數(shù)據(jù)庫。
而在這個過程中,每個服務(wù)之間必須要知道對方的通信地址,并且當有新的節(jié)點加入進來的時候,還需要對這些通信地址進行動態(tài)維護。所以,在第一代微服務(wù)架構(gòu)中,每個微服務(wù)除了要實現(xiàn)業(yè)務(wù)邏輯以外,還需要解決上下游尋址、通訊、以及容錯等問題。
于是,在第二代微服務(wù)架構(gòu)下,引入了服務(wù)注冊中心來實現(xiàn)服務(wù)之間的尋址,并且服務(wù)之間的容錯機制、負載均衡也逐步形成了獨立的服務(wù)框架,比如主流的Spring Cloud、或者 Spring Cloud Alibaba。
在第二代微服務(wù)架構(gòu)中,負責(zé)業(yè)務(wù)開發(fā)的小伙伴不僅僅需要關(guān)注業(yè)務(wù)邏輯,還需要花大量精力去處理微服務(wù)中的一些基礎(chǔ)性配置工作,雖然 Spring Cloud 已經(jīng)盡可能去完成了這些事情,但對于開發(fā)人員來說,學(xué)習(xí) Spring Cloud,以及針對Spring Cloud 的配置和維護,仍然存在較大的挑戰(zhàn)。另外呢,也增加了整個微服務(wù)的復(fù)雜性。
實際上,我認為,“微服務(wù)中所有的這些服務(wù)注冊、容錯、重試、安全等工作,都是為了保證服務(wù)之間通信的可靠性”。于是,就有了第三代微服務(wù)架構(gòu),Service Mesh。
原本模塊化到微服務(wù)框架里的微服務(wù)基礎(chǔ)能力,被進一步的從一個 SDK 中演進成了一個獨立的代理進程-SideCar。
SideCar 的主要職責(zé)就是負責(zé)各個微服務(wù)之間的通信,承載了原本第二代微服務(wù)架構(gòu)中的服務(wù)發(fā)現(xiàn)、調(diào)用容錯、服務(wù)治理等功能。使得微服務(wù)基礎(chǔ)能力和業(yè)務(wù)邏輯迭代徹底解耦。
之所以我們稱 Service Mesh 為服務(wù)網(wǎng)格,是因為在大規(guī)模微服務(wù)架構(gòu)中,每個服務(wù)的通信都是由 SideCar 來代理的,各個服務(wù)之間的通信拓撲圖,看起來就像一個網(wǎng)格形狀。
Istio 是目前主流的 Service Mesh 開源框架。
以上就是我對服務(wù)網(wǎng)格的理解。Service Mesh 架構(gòu)其實就是云原生時代的微服務(wù)架構(gòu),對于大部分企業(yè)來說,仍然是處在第二代微服務(wù)架構(gòu)下。
所以,很多小伙伴不一定能夠知道。不過,技術(shù)是在快速迭代的,有一句話叫“時代拋棄你的時候,連一句再見也不會說”,就像有些人在外包公司干了 10 多年再出來面試,發(fā)現(xiàn)很多公司要求的技術(shù)棧,他都不會。所以,建議大家要時刻刷新自己的能力,保持競爭優(yōu)勢!
最后,我把之前分享的資料全部整理成了文字,希望能夠以此來提高各位粉絲的通過率。?