偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

一文讀懂Service Mesh:邊車模式簡(jiǎn)介

網(wǎng)絡(luò) 網(wǎng)絡(luò)管理
早期的很多系統(tǒng)都是單體服務(wù)的,就是把所有組件都塞在一個(gè)應(yīng)用內(nèi),但是隨著軟件復(fù)雜性和并發(fā)用戶數(shù)的急劇增加,單體應(yīng)用無(wú)論是從開(kāi)發(fā)效率和運(yùn)維管理方面都已經(jīng)不能適應(yīng)時(shí)代的發(fā)展了。

自從2016年Service Mesh(服務(wù)網(wǎng)格)的概念被提出以來(lái),短短幾年時(shí)間就受到了廣大程序員們的熱烈歡迎?為什么Service Mesh這么容易被接受呢?原因很簡(jiǎn)單,那就是它切中了早期微服務(wù)架構(gòu)的痛點(diǎn)。從而極大地解放了生產(chǎn)力。要理解它是如何解決了程序員們的生產(chǎn)力的,我們先從早期微服務(wù)框架的痛點(diǎn)開(kāi)始說(shuō)起。

一、微服務(wù)架構(gòu)的產(chǎn)生與問(wèn)題

早期的很多系統(tǒng)都是單體服務(wù)的,就是把所有組件都塞在一個(gè)應(yīng)用內(nèi),但是隨著軟件復(fù)雜性和并發(fā)用戶數(shù)的急劇增加,單體應(yīng)用無(wú)論是從開(kāi)發(fā)效率和運(yùn)維管理方面都已經(jīng)不能適應(yīng)時(shí)代的發(fā)展了。于是把各種服務(wù)獨(dú)立出來(lái),每個(gè)服務(wù)只關(guān)注自己的業(yè)務(wù)領(lǐng)域,與其它服務(wù)松耦合的微服務(wù)就應(yīng)運(yùn)而生了。

圖片

微服務(wù)架構(gòu)具有以下幾個(gè)優(yōu)點(diǎn):

1、單?職責(zé):拆分后的單個(gè)微服務(wù),通常只負(fù)責(zé)單個(gè)高內(nèi)聚自閉環(huán)功能,因此很易于開(kāi)發(fā)、理解和維護(hù)。

2、架構(gòu)靈活:不同微服務(wù)應(yīng)用之間在技術(shù)選型層面幾乎是獨(dú)立的,可以?由選擇最適合的技術(shù)棧。

3、部署隔離:相比巨無(wú)霸單體應(yīng)用,單個(gè)微服務(wù)應(yīng)用的代碼和產(chǎn)物體積大大減少,更容易持續(xù)集成和快速部署;同時(shí),通過(guò)進(jìn)程級(jí)別的隔離,也不再像單體應(yīng)用一樣只能同生共死,故障隔離效果顯著提升。

4、獨(dú)?擴(kuò)展:?jiǎn)误w應(yīng)用時(shí)代,某個(gè)模塊如果存在資源瓶頸(e.g. CPU/內(nèi)存),只能跟隨整個(gè)應(yīng)用一起擴(kuò)容,白白浪費(fèi)很多資源。微服務(wù)化后,擴(kuò)展的粒度細(xì)化到了微服務(wù)級(jí)別,可以更精確地按需獨(dú)立擴(kuò)展。

但是,微服務(wù)帶來(lái)很多優(yōu)點(diǎn)的時(shí)候,也出現(xiàn)了很多新的問(wèn)題,最大的問(wèn)題,就在于服務(wù)間通信的問(wèn)題,具體來(lái)講,就是如下幾個(gè)問(wèn)題:

  • 如何找到服務(wù)的提供??
  • 如何保證遠(yuǎn)程調(diào)?的可靠性?
  • 如何降低服務(wù)調(diào)?的延遲?
  • 如何保證服務(wù)調(diào)?的安全性?

于是,為了解決這些問(wèn)題,微服務(wù)技術(shù)特有的通信語(yǔ)義就出現(xiàn)了,如熔斷策略、負(fù)載均衡、服務(wù)發(fā)現(xiàn)、認(rèn)證和授權(quán)、quota限制、trace和監(jiān)控等等,服務(wù)根據(jù)業(yè)務(wù)需求來(lái)實(shí)現(xiàn)一部分所需的通信語(yǔ)義。

但是,這樣做的問(wèn)題也非常明顯,那就是,在這個(gè)過(guò)程中,開(kāi)發(fā)人員需要花費(fèi)大量的時(shí)間去編寫與業(yè)務(wù)功能無(wú)關(guān)的代碼。雖然框架本身屏蔽了分布式系統(tǒng)通信的一些通用功能實(shí)現(xiàn)細(xì)節(jié),但開(kāi)發(fā)者卻要花更多精力去掌握和管理復(fù)雜的框架本身,在實(shí)際應(yīng)用中,去追蹤和解決框架出現(xiàn)的問(wèn)題也絕非易事。

另外,開(kāi)發(fā)框架通常只支持一種或幾種特定的語(yǔ)言,沒(méi)有框架支持的語(yǔ)言編寫的服務(wù),很難融入面向微服務(wù)的架構(gòu)體系,想因地制宜地用多種語(yǔ)言實(shí)現(xiàn)架構(gòu)體系中的不同模塊也很難做到。同時(shí)框架以lib庫(kù)的形式和服務(wù)聯(lián)編,復(fù)雜項(xiàng)目依賴時(shí)的庫(kù)版本兼容問(wèn)題非常棘手框架庫(kù)的升級(jí)也無(wú)法對(duì)服務(wù)透明,服務(wù)會(huì)因?yàn)楹蜆I(yè)務(wù)無(wú)關(guān)的lib庫(kù)升級(jí)而被迫升級(jí)。

于是,為了解決這些問(wèn)題,Service Mesh誕生了。

圖片

二、Service Mesh:微服務(wù)時(shí)代的TCP/IP協(xié)議

Serice Mesh的誕生,就是為了將微服務(wù)時(shí)代的通信語(yǔ)義剝離出來(lái),從而使得微服務(wù)本身更加關(guān)注業(yè)務(wù)邏輯,它為每個(gè)微服務(wù)提供了一個(gè)代理,而這個(gè)代理如同TCP/IP協(xié)議一樣,把微服務(wù)時(shí)代所需要的通信語(yǔ)義放在一個(gè)層面完成,從而使得業(yè)務(wù)開(kāi)發(fā)者們從繁重的工作中解放出來(lái)。而這個(gè)代理,就是大名鼎鼎的Sidecar(邊車)模式了。

Sidecar原意是指從二戰(zhàn)時(shí)開(kāi)始被廣泛使用起來(lái)的挎斗摩托車。這個(gè)名字也是一種著名的飾以紅櫻桃的混合雞尾酒,同時(shí)也指在三人以上多人運(yùn)動(dòng)中,在旁邊處于輔助地位或者拍攝的人。

在Service Mesh中,監(jiān)視、日志、限流、熔斷、服務(wù)注冊(cè)、協(xié)議轉(zhuǎn)換、冪等……" 這些功能,其實(shí)都是大同小異,是完全可以做成標(biāo)準(zhǔn)化的組件和模塊的。在這種情況下,邊車就像一個(gè)微服務(wù)的 Agent,這個(gè)服務(wù)所有對(duì)外的進(jìn)出通訊都通過(guò)這個(gè) Agent 來(lái)完成。這樣,我們就可以在這個(gè) Agent 上做很多文章了。

這樣,所有的微服務(wù)通過(guò)Sidecar連接起來(lái)之后,就像一個(gè)網(wǎng)格一樣,這也是Service Mesh名稱的由來(lái)。

圖片

那么,Sidecar具體的作用是什么呢?我們以Service Mesh概念的提出者Buoyant出品的Linkerd為例,來(lái)解析一下邊車模式的服務(wù)流程。在Linkerd里面,一個(gè)服務(wù)請(qǐng)求的處理流程包括以下幾個(gè)部分:

圖片

1、動(dòng)態(tài)路由:根據(jù)上游服務(wù)請(qǐng)求參數(shù),確定下游目標(biāo)服務(wù);除了常規(guī)的服務(wù)路由策略,Linkerd還可以通過(guò)這一層動(dòng)態(tài)路由能力,支持灰度發(fā)布、A/B測(cè)試、環(huán)境隔離等非常有價(jià)值的場(chǎng)景。

2、服務(wù)發(fā)現(xiàn):確定目標(biāo)服務(wù)后,下一步就是獲取對(duì)應(yīng)的實(shí)例的地址列表(e.g. 查詢service registry)。

3、負(fù)載均衡:如果列表中有多個(gè)地址,Linkerd會(huì)通過(guò)負(fù)載均衡算法(e.g. Least Loaded、Peak EWMA)選擇其中?個(gè)合適的低延遲實(shí)例。

4、執(zhí)行請(qǐng)求:發(fā)送請(qǐng)求到上一步所選擇的實(shí)例,并記錄延遲和響應(yīng)結(jié)果。

5、重試處理:如果請(qǐng)求未響應(yīng),則選擇另?個(gè)實(shí)例重試(前提:Linkerd知道該請(qǐng)求是冪等的)。

6、熔斷處理:如果發(fā)往某個(gè)實(shí)例的請(qǐng)求經(jīng)常失敗,則主動(dòng)從地址列表中剔除該實(shí)例。

7、超時(shí)處理:如果請(qǐng)求超期(在給定的deadline時(shí)間點(diǎn)之前仍未返回),則主動(dòng)返回失敗響應(yīng)。

8、可觀測(cè)性:Linkerd會(huì)持續(xù)收集和上報(bào)上述各種行為數(shù)據(jù),包括Metrics和Tracing。

而這些服務(wù),就類似于TCP服務(wù)提供的網(wǎng)絡(luò)傳輸處理邏輯了,類似于TCP服務(wù)解決了網(wǎng)絡(luò)傳輸中通用的流量控制問(wèn)題,將技術(shù)棧下移,從服務(wù)的實(shí)現(xiàn)中抽離出來(lái),成為操作系統(tǒng)網(wǎng)絡(luò)層的一部分一樣,Service Mesh也將微服務(wù)間通信所需要的通用功能剝離出來(lái),將技術(shù)棧單獨(dú)抽出一層,從而成為分布式系統(tǒng)的一部分。

三、主流Service Mesh實(shí)現(xiàn)

目前主流的Service Mesh實(shí)現(xiàn)包括Linkerd、Envoy、Istio、Conduit等。

責(zé)任編輯:武曉燕 來(lái)源: 活在信息時(shí)代
相關(guān)推薦

2022-11-06 21:14:02

數(shù)據(jù)驅(qū)動(dòng)架構(gòu)數(shù)據(jù)

2022-09-21 16:56:16

設(shè)計(jì)模式微服務(wù)架構(gòu)

2023-12-22 19:59:15

2021-08-04 16:06:45

DataOps智領(lǐng)云

2022-09-22 09:00:46

CSS單位

2025-04-03 10:56:47

2018-09-28 14:06:25

前端緩存后端

2022-10-20 08:01:23

2023-11-27 17:35:48

ComponentWeb外層

2022-07-05 06:30:54

云網(wǎng)絡(luò)網(wǎng)絡(luò)云原生

2023-05-20 17:58:31

低代碼軟件

2022-12-01 17:23:45

2021-12-29 18:00:19

無(wú)損網(wǎng)絡(luò)網(wǎng)絡(luò)通信網(wǎng)絡(luò)

2022-07-26 00:00:03

語(yǔ)言模型人工智能

2023-07-19 08:46:00

導(dǎo)航地圖

2022-02-08 10:41:20

Service MeAPI GatewaLinux

2017-05-04 20:29:12

HTTP服務(wù)器TCP

2025-01-10 08:10:00

2017-05-15 11:10:10

大數(shù)據(jù)聚類算法
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)