什么是Service Mesh-全網(wǎng)最清晰的解釋

Service Mesh作為下一代微服務(wù)技術(shù)的代名詞,初出茅廬卻深得人心一鳴驚人,大有一統(tǒng)微服務(wù)時(shí)代的趨勢。

那么到底什么是Service Mesh官册?

一言以蔽之:Service Mesh是微服務(wù)時(shí)代的TCP協(xié)議。

有了這樣一個(gè)感性的初步認(rèn)知难捌,我們再來看到底什么是Service Mesh膝宁。

提到Service Mesh,就不得不提微服務(wù)栖榨。根據(jù)維基百科的定義:

微服務(wù) (Microservices) 是一種軟件架構(gòu)風(fēng)格昆汹,它是以專注于單一責(zé)任與功能的小型功能區(qū)塊 (Small Building Blocks) 為基礎(chǔ),利用模塊化的方式組合出復(fù)雜的大型應(yīng)用程序婴栽,各功能區(qū)塊使用與語言無關(guān)?(Language-Independent/Language agnostic) 的 API 集相互通信满粗。

目前業(yè)界跟微服務(wù)相關(guān)的開發(fā)平臺和框架更是不勝枚舉:Spring Cloud, Service Fabric愚争,Linkerd映皆,Envoy,Istio ...

這些紛繁的產(chǎn)品和Sevice Mesh有什么樣的關(guān)聯(lián)轰枝?哪些屬于Service Mesh的范疇捅彻?

為了理清這些繁復(fù)的產(chǎn)品和概念,我們先來了解下微服務(wù)和Service Mesh技術(shù)的歷史發(fā)展脈絡(luò)鞍陨。

了解清楚了技術(shù)的主要脈絡(luò)步淹,就能清晰的知道上述的各個(gè)平臺、框架屬于技術(shù)脈絡(luò)中的哪個(gè)結(jié)點(diǎn)诚撵,其間的關(guān)系也就一目了然占锯。

Phil Cal?ado的文章《Pattern: Service Mesh》助泽,詳細(xì)的介紹了從開發(fā)者視角來看,服務(wù)開發(fā)模式和Service Mesh技術(shù)的演化過程袄友,個(gè)人認(rèn)為是非常經(jīng)典的學(xué)習(xí)Service Mesh的資料晓殊。這里借用文章的脈絡(luò)磷瘤,結(jié)合自己的理解并予以簡化春缕,試圖說清楚ServiceMesh的概念和這項(xiàng)技術(shù)誕生的歷史必然性。你可以把本文當(dāng)做原文的一個(gè)中譯版本來閱讀挎塌。

時(shí)代0:開發(fā)人員想象中,不同服務(wù)間通信的方式内边,抽象表示如下:

時(shí)代1:原始通信時(shí)代

然而現(xiàn)實(shí)遠(yuǎn)比想象的復(fù)雜榴都,在實(shí)際情況中,通信需要底層能夠傳輸字節(jié)碼和電子信號的物理層來完成假残,在TCP協(xié)議出現(xiàn)之前缭贡,服務(wù)需要自己處理網(wǎng)絡(luò)通信所面臨的丟包炉擅、亂序辉懒、重試等一系列流控問題,因此服務(wù)實(shí)現(xiàn)中谍失,除了業(yè)務(wù)邏輯外眶俩,還夾雜著對網(wǎng)絡(luò)傳輸問題的處理邏輯。

時(shí)代2:TCP時(shí)代

為了避免每個(gè)服務(wù)都需要自己實(shí)現(xiàn)一套相似的網(wǎng)絡(luò)傳輸處理邏輯快鱼,TCP協(xié)議出現(xiàn)了颠印,它解決了網(wǎng)絡(luò)傳輸中通用的流量控制問題,將技術(shù)棧下移抹竹,從服務(wù)的實(shí)現(xiàn)中抽離出來线罕,成為操作系統(tǒng)網(wǎng)絡(luò)層的一部分。

時(shí)代3:第一代微服務(wù)

在TCP出現(xiàn)之后窃判,機(jī)器之間的網(wǎng)絡(luò)通信不再是一個(gè)難題钞楼,以GFS/BigTable/MapReduce為代表的分布式系統(tǒng)得以蓬勃發(fā)展。這時(shí)袄琳,分布式系統(tǒng)特有的通信語義又出現(xiàn)了询件,如熔斷策略、負(fù)載均衡唆樊、服務(wù)發(fā)現(xiàn)宛琅、認(rèn)證和授權(quán)、quota限制逗旁、trace和監(jiān)控等等嘿辟,于是服務(wù)根據(jù)業(yè)務(wù)需求來實(shí)現(xiàn)一部分所需的通信語義。

時(shí)代4:第二代微服務(wù)

為了避免每個(gè)服務(wù)都需要自己實(shí)現(xiàn)一套分布式系統(tǒng)通信的語義功能片效,隨著技術(shù)的發(fā)展红伦,一些面向微服務(wù)架構(gòu)的開發(fā)框架出現(xiàn)了,如Twitter的Finagle堤舒、Facebook的Proxygen以及Spring Cloud等等色建,這些框架實(shí)現(xiàn)了分布式系統(tǒng)通信需要的各種通用語義功能:如負(fù)載均衡和服務(wù)發(fā)現(xiàn)等,因此一定程度上屏蔽了這些通信細(xì)節(jié)舌缤,使得開發(fā)人員使用較少的框架代碼就能開發(fā)出健壯的分布式系統(tǒng)箕戳。

時(shí)代5:第一代Service Mesh

第二代微服務(wù)模式看似完美某残,但開發(fā)人員很快又發(fā)現(xiàn),它也存在一些本質(zhì)問題:

其一陵吸,雖然框架本身屏蔽了分布式系統(tǒng)通信的一些通用功能實(shí)現(xiàn)細(xì)節(jié)玻墅,但開發(fā)者卻要花更多精力去掌握和管理復(fù)雜的框架本身,在實(shí)際應(yīng)用中壮虫,去追蹤和解決框架出現(xiàn)的問題也絕非易事澳厢;

其二,開發(fā)框架通常只支持一種或幾種特定的語言囚似,回過頭來看文章最開始對微服務(wù)的定義剩拢,一個(gè)重要的特性就是語言無關(guān),但那些沒有框架支持的語言編寫的服務(wù)饶唤,很難融入面向微服務(wù)的架構(gòu)體系徐伐,想因地制宜的用多種語言實(shí)現(xiàn)架構(gòu)體系中的不同模塊也很難做到;

其三募狂,框架以lib庫的形式和服務(wù)聯(lián)編办素,復(fù)雜項(xiàng)目依賴時(shí)的庫版本兼容問題非常棘手,同時(shí)祸穷,框架庫的升級也無法對服務(wù)透明性穿,服務(wù)會因?yàn)楹蜆I(yè)務(wù)無關(guān)的lib庫升級而被迫升級;

因此以Linkerd雷滚,Envoy需曾,NginxMesh為代表的代理模式(邊車模式)應(yīng)運(yùn)而生,這就是第一代Service Mesh揭措,它將分布式服務(wù)的通信抽象為單獨(dú)一層胯舷,在這一層中實(shí)現(xiàn)負(fù)載均衡、服務(wù)發(fā)現(xiàn)绊含、認(rèn)證授權(quán)桑嘶、監(jiān)控追蹤、流量控制等分布式系統(tǒng)所需要的功能躬充,作為一個(gè)和服務(wù)對等的代理服務(wù)逃顶,和服務(wù)部署在一起,接管服務(wù)的流量充甚,通過代理之間的通信間接完成服務(wù)之間的通信請求以政,這樣上邊所說的三個(gè)問題也迎刃而解。

如果我們從一個(gè)全局視角來看伴找,就會得到如下部署圖:

如果我們暫時(shí)略去服務(wù)盈蛮,只看Service Mesh的單機(jī)組件組成的網(wǎng)絡(luò):

相信現(xiàn)在,大家已經(jīng)理解何所謂Service Mesh技矮,也就是服務(wù)網(wǎng)格了抖誉。它看起來確實(shí)就像是一個(gè)由若干服務(wù)代理所組成的錯(cuò)綜復(fù)雜的網(wǎng)格殊轴。

時(shí)代6:第二代Service Mesh

第一代Service Mesh由一系列獨(dú)立運(yùn)行的單機(jī)代理服務(wù)構(gòu)成,為了提供統(tǒng)一的上層運(yùn)維入口袒炉,演化出了集中式的控制面板旁理,所有的單機(jī)代理組件通過和控制面板交互進(jìn)行網(wǎng)絡(luò)拓?fù)洳呗缘母潞蛦螜C(jī)數(shù)據(jù)的匯報(bào)。這就是以Istio為代表的第二代Service Mesh我磁。

只看單機(jī)代理組件(數(shù)據(jù)面板)和控制面板的Service Mesh全局部署視圖如下:

至此孽文,見證了6個(gè)時(shí)代的變遷,大家一定清楚了Service Mesh技術(shù)到底是什么夺艰,以及是如何一步步演化到今天這樣一個(gè)形態(tài)芋哭。

現(xiàn)在,我們再回過頭來看Buoyant的CEO William Morgan劲适,也就是Service Mesh這個(gè)詞的發(fā)明人楷掉,對Service Mesh的定義:

服務(wù)網(wǎng)格是一個(gè)基礎(chǔ)設(shè)施層厢蒜,用于處理服務(wù)間通信霞势。云原生應(yīng)用有著復(fù)雜的服務(wù)拓?fù)洌?wù)網(wǎng)格保證請求在這些拓?fù)渲锌煽康卮┧?/i>斑鸦。在實(shí)際應(yīng)用當(dāng)中愕贡,服務(wù)網(wǎng)格通常是由一系列輕量級的網(wǎng)絡(luò)代理組成的,它們與應(yīng)用程序部署在一起巷屿,但對應(yīng)用程序透明固以。

這個(gè)定義中,有四個(gè)關(guān)鍵詞:

基礎(chǔ)設(shè)施層+請求在這些拓?fù)渲锌煽看┧?/i>:這兩個(gè)詞加起來描述了Service Mesh的定位和功能嘱巾,是不是似曾相識憨琳?沒錯(cuò),你一定想到了TCP旬昭;

網(wǎng)絡(luò)代理:這描述了Service Mesh的實(shí)現(xiàn)形態(tài)篙螟;

對應(yīng)用透明:這描述了Service Mesh的關(guān)鍵特點(diǎn),正是由于這個(gè)特點(diǎn)问拘,Service Mesh能夠解決以Spring Cloud為代表的第二代微服務(wù)框架所面臨的三個(gè)本質(zhì)問題遍略;

總結(jié)一下,Service Mesh具有如下優(yōu)點(diǎn):

屏蔽分布式系統(tǒng)通信的復(fù)雜性(負(fù)載均衡骤坐、服務(wù)發(fā)現(xiàn)绪杏、認(rèn)證授權(quán)、監(jiān)控追蹤纽绍、流量控制等等)蕾久,服務(wù)只用關(guān)注業(yè)務(wù)邏輯;

真正的語言無關(guān)拌夏,服務(wù)可以用任何語言編寫僧著,只需和Service Mesh通信即可叫编;

對應(yīng)用透明,Service Mesh組件可以單獨(dú)升級霹抛;

當(dāng)然搓逾,Service Mesh目前也面臨一些挑戰(zhàn):

Service Mesh組件以代理模式計(jì)算并轉(zhuǎn)發(fā)請求,一定程度上會降低通信系統(tǒng)性能杯拐,并增加系統(tǒng)資源開銷霞篡;

Service Mesh組件接管了網(wǎng)絡(luò)流量,因此服務(wù)的整體穩(wěn)定性依賴于Service Mesh端逼,同時(shí)額外引入的大量Service Mesh服務(wù)實(shí)例的運(yùn)維和管理也是一個(gè)挑戰(zhàn)朗兵;

歷史總是驚人的相似。為了解決端到端的字節(jié)碼通信問題顶滩,TCP協(xié)議誕生余掖,讓多機(jī)通信變得簡單可靠;微服務(wù)時(shí)代礁鲁,Service Mesh應(yīng)運(yùn)而生盐欺,屏蔽了分布式系統(tǒng)的諸多復(fù)雜性,讓開發(fā)者可以回歸業(yè)務(wù)仅醇,聚焦真正的價(jià)值冗美。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市析二,隨后出現(xiàn)的幾起案子粉洼,更是在濱河造成了極大的恐慌,老刑警劉巖叶摄,帶你破解...
    沈念sama閱讀 216,496評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件属韧,死亡現(xiàn)場離奇詭異,居然都是意外死亡蛤吓,警方通過查閱死者的電腦和手機(jī)宵喂,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,407評論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來柱衔,“玉大人樊破,你說我怎么就攤上這事∷纛恚” “怎么了哲戚?”我有些...
    開封第一講書人閱讀 162,632評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長艾岂。 經(jīng)常有香客問我顺少,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,180評論 1 292
  • 正文 為了忘掉前任脆炎,我火速辦了婚禮梅猿,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘秒裕。我一直安慰自己袱蚓,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,198評論 6 388
  • 文/花漫 我一把揭開白布几蜻。 她就那樣靜靜地躺著喇潘,像睡著了一般。 火紅的嫁衣襯著肌膚如雪梭稚。 梳的紋絲不亂的頭發(fā)上颖低,一...
    開封第一講書人閱讀 51,165評論 1 299
  • 那天,我揣著相機(jī)與錄音弧烤,去河邊找鬼忱屑。 笑死,一個(gè)胖子當(dāng)著我的面吹牛暇昂,可吹牛的內(nèi)容都是我干的莺戒。 我是一名探鬼主播,決...
    沈念sama閱讀 40,052評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼话浇,長吁一口氣:“原來是場噩夢啊……” “哼脏毯!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起幔崖,我...
    開封第一講書人閱讀 38,910評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎渣淤,沒想到半個(gè)月后赏寇,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,324評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡价认,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,542評論 2 332
  • 正文 我和宋清朗相戀三年嗅定,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片用踩。...
    茶點(diǎn)故事閱讀 39,711評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡渠退,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出脐彩,到底是詐尸還是另有隱情碎乃,我是刑警寧澤,帶...
    沈念sama閱讀 35,424評論 5 343
  • 正文 年R本政府宣布惠奸,位于F島的核電站梅誓,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜梗掰,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,017評論 3 326
  • 文/蒙蒙 一嵌言、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧及穗,春花似錦摧茴、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,668評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至猜惋,卻和暖如春丸氛,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背著摔。 一陣腳步聲響...
    開封第一講書人閱讀 32,823評論 1 269
  • 我被黑心中介騙來泰國打工缓窜, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人谍咆。 一個(gè)月前我還...
    沈念sama閱讀 47,722評論 2 368
  • 正文 我出身青樓禾锤,卻偏偏與公主長得像,于是被迫代替她去往敵國和親摹察。 傳聞我的和親對象是個(gè)殘疾皇子恩掷,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,611評論 2 353

推薦閱讀更多精彩內(nèi)容