這篇文章主要為大家展示了“kubernetes中什么是Service Mesh”,內(nèi)容簡(jiǎn)而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“kubernetes中什么是Service Mesh”這篇文章吧。
創(chuàng)新互聯(lián)服務(wù)項(xiàng)目包括防城港網(wǎng)站建設(shè)、防城港網(wǎng)站制作、防城港網(wǎng)頁(yè)制作以及防城港網(wǎng)絡(luò)營(yíng)銷(xiāo)策劃等。多年來(lái),我們專(zhuān)注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢(shì)、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,防城港網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到防城港省份的部分城市,未來(lái)相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!一:什么是Service Mesh
1.可以將Service Mesh比作是程序或者微服務(wù)間的TCP/IP,負(fù)責(zé)服務(wù)之間的網(wǎng)絡(luò)調(diào)用,限流,熔斷和監(jiān)控。對(duì)于編寫(xiě)應(yīng)用程序來(lái)說(shuō)一般無(wú)須關(guān)心 TCP/IP 這一層(比如通過(guò) HTTP 協(xié)議的 RESTful 應(yīng)用),同樣使用 Service Mesh 也就無(wú)須關(guān)系服務(wù)之間的那些原來(lái)是通過(guò)應(yīng)用程序或者其他框架實(shí)現(xiàn)的事情,比如 Spring Cloud、OSS,現(xiàn)在只要交給 Service Mesh 就可以了。
2.Service Mesh有如下幾個(gè)特點(diǎn):
a. 應(yīng)用程序間通信的中間層
b.輕量級(jí)的網(wǎng)絡(luò)代理
c.應(yīng)用程序無(wú)感知
d.解耦應(yīng)用程序的重試,超時(shí),監(jiān)控,追蹤和服務(wù)發(fā)現(xiàn)
3.Service Mesh的架構(gòu)
Service mesh 作為 sidecar 運(yùn)行,對(duì)應(yīng)用程序來(lái)說(shuō)是透明,所有應(yīng)用程序間的流量都會(huì)通過(guò)它,所以對(duì)應(yīng)用程序流量的控制都可以在 serivce mesh 中實(shí)現(xiàn)。
二:為何使用Service Mesh
1.Service mesh 并沒(méi)有給我們帶來(lái)新功能,它是用于解決其他工具已經(jīng)解決過(guò)的問(wèn)題,只不過(guò)這次是在 Cloud Native 的 kubernetes 環(huán)境下的實(shí)現(xiàn)。
2.在傳統(tǒng)的 MVC 三層 Web 應(yīng)用程序架構(gòu)下,服務(wù)之間的通訊并不復(fù)雜,在應(yīng)用程序內(nèi)部自己管理即可,但是在現(xiàn)今的復(fù)雜的大型網(wǎng)站情況下,單體應(yīng)用被分解為眾多的微服務(wù),服務(wù)之間的依賴(lài)和通訊十分復(fù)雜。
3.在 Cloud Native 架構(gòu)下,容器的使用給予了異構(gòu)應(yīng)用程序的更多可行性,kubernetes 增強(qiáng)的應(yīng)用的橫向擴(kuò)容能力,用戶可以快速的編排出復(fù)雜環(huán)境、復(fù)雜依賴(lài)關(guān)系的應(yīng)用程序,同時(shí)開(kāi)發(fā)者又無(wú)須過(guò)分關(guān)心應(yīng)用程序的監(jiān)控、擴(kuò)展性、服務(wù)發(fā)現(xiàn)和分布式追蹤這些繁瑣的事情而專(zhuān)注于程序開(kāi)發(fā),賦予開(kāi)發(fā)者更多的創(chuàng)造性。
三:Service Mesh如何工作
Linkerd 為例講解 service mesh 如何工作:
1.Linkerd 將服務(wù)請(qǐng)求路由到目的地址,根據(jù)其中的參數(shù)判斷是到生產(chǎn)環(huán)境還是測(cè)試環(huán)境,是路由到本地環(huán)境還是公有云環(huán)境?所有的這些路由信息可以動(dòng)態(tài)配置,可以是全局配置也可以為某些服務(wù)單獨(dú)配置。
2.當(dāng) Linkerd 確認(rèn)了目的地址后,將流量發(fā)送到相應(yīng)服務(wù)發(fā)現(xiàn)端點(diǎn)(在 kubernetes 中是 service),然后 service 會(huì)將服務(wù)轉(zhuǎn)發(fā)給后端的實(shí)例(Pod)。
3.Linkerd 根據(jù)它觀測(cè)到最近請(qǐng)求的延遲時(shí)間,選擇出所有應(yīng)用程序的實(shí)例中響應(yīng)最快的實(shí)例。
4.Linkerd 將請(qǐng)求發(fā)送給該實(shí)例,同時(shí)記錄響應(yīng)類(lèi)型和延遲數(shù)據(jù)。
5.如果該實(shí)例掛了、不響應(yīng)了或者進(jìn)程不工作了,Linkerd 將把請(qǐng)求發(fā)送到其他實(shí)例上重試。
6.如果該實(shí)例持續(xù)返回 error,Linkerd 會(huì)將該實(shí)例從負(fù)載均衡池中移除,稍后再周期性得重試。
7.如果請(qǐng)求的截止時(shí)間已過(guò),Linkerd 主動(dòng)失敗該請(qǐng)求,而不是再次嘗試添加負(fù)載。
8.Linkerd 以 metric 和分布式追蹤的形式捕獲上述行為的各個(gè)方面,這些追蹤信息將發(fā)送到集中 metric 系統(tǒng)。
四:Istio 與 Linkerd
當(dāng)前的Service Mesh實(shí)現(xiàn)主要有兩大陣營(yíng),Linkerd和Istio。
Feature | Istio | Linkerd |
---|---|---|
部署架構(gòu) | Envoy/Sidecar | DaemonSets |
易用性 | 復(fù)雜 | 簡(jiǎn)單 |
支持平臺(tái) | kuberentes | kubernetes/mesos/Istio/local |
當(dāng)前版本 | 0.3.0 | 1.3.3 |
是否已有生產(chǎn)部署 | 否 | 是 |
下圖是Istio和Linkerd架構(gòu)的不同,Istio是使用Sidecar模式,將Envoy植入到Pod中,而Linkerd則是在每臺(tái)node上都以DaemonSet的方式運(yùn)行。
以上是“kubernetes中什么是Service Mesh”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司行業(yè)資訊頻道!