使用Sidecar搭建異構(gòu)平臺(tái)的微服務(wù)

本文介紹Sidecar模式的特點(diǎn)彼念,及其應(yīng)用的場(chǎng)景。熟悉Native Cloud或者微服務(wù)的童鞋應(yīng)該知道腌逢,在云環(huán)境下降淮,技術(shù)棧可以是多種多樣的搏讶。那么如何能夠?qū)⑦@些異構(gòu)的服務(wù)組件串聯(lián)起來(lái)佳鳖,成為了服務(wù)治理的一個(gè)重大課題霍殴。而Sidecar模式為服務(wù)治理,提供了一種解決方案系吩。

將應(yīng)用程序的組件部署到單獨(dú)的進(jìn)程或容器中来庭,以提供隔離和封裝。此模式還可以使應(yīng)用程序由異構(gòu)組件和技術(shù)組成淑玫。

這種模式被稱為Sidecar巾腕,因?yàn)樗愃朴谶B接到摩托車的邊車。在該模式中絮蒿,邊車附加到父應(yīng)用程序并為應(yīng)用程序提供支持功能尊搬。 sidecar還與父應(yīng)用程序共享相同的生命周期,與父項(xiàng)一起創(chuàng)建和退役土涝。邊車圖案有時(shí)被稱為搭接圖案并且是分解圖案佛寿。

問(wèn)題背景

應(yīng)用程序和服務(wù)通常需要相關(guān)的功能,例如監(jiān)控但壮、日志冀泻、集中化配置和網(wǎng)絡(luò)服務(wù)等。這些外圍任務(wù)可以作為單獨(dú)的組件或服務(wù)來(lái)實(shí)現(xiàn)蜡饵。

如果它們緊密集成到應(yīng)用程序中弹渔,它們可以在與應(yīng)用程序相同的進(jìn)程中運(yùn)行,從而有效地使用共享資源溯祸。但是肢专,這也意味著它們沒(méi)有很好地隔離,并且其中一個(gè)組件的中斷可能會(huì)影響其他組件或整個(gè)應(yīng)用程序焦辅。此外博杖,它們通常需要使用與父應(yīng)用程序相同的語(yǔ)言或者技術(shù)棧來(lái)實(shí)現(xiàn)。因此筷登,組件和應(yīng)用程序彼此之間具有密切的相互依賴性剃根。

如果將應(yīng)用程序分解為服務(wù),則可以使用不同的語(yǔ)言和技術(shù)構(gòu)建每個(gè)服務(wù)前方。雖然這提供了更大的靈活性狈醉,但這意味著每個(gè)組件都有自己的依賴關(guān)系,并且需要特定于語(yǔ)言的庫(kù)來(lái)訪問(wèn)底層平臺(tái)以及與父應(yīng)用程序共享的任何資源惠险。此外舔糖,將這些功能部署為單獨(dú)的服務(wù)可能會(huì)增加應(yīng)用程序的延遲。管理這些特定于語(yǔ)言的接口的代碼和依賴關(guān)系也會(huì)增加相當(dāng)大的復(fù)雜性莺匠,尤其是對(duì)于托管、部署和管理服務(wù)十兢。

解決方案

上述問(wèn)題的解決方案是趣竣,將一組緊密結(jié)合的任務(wù)與主應(yīng)用程序共同放在一臺(tái)主機(jī)(Host)中摇庙,但會(huì)將它們部署在各自的進(jìn)程或容器中。這種方式也被稱為“Sidecar(邊車)模式”遥缕。

下圖展示了任務(wù)與主應(yīng)用程序的部署關(guān)系圖卫袒。

Sidecar模式

邊車服務(wù)不一定是應(yīng)用程序的一部分,Java進(jìn)階內(nèi)推交流群851531810而是與之相關(guān)聯(lián)单匣。它適用于父應(yīng)用程序的任何位置夕凝。Sidecar支持與主應(yīng)用程序一起部署的進(jìn)程或服務(wù)。這就像是如下圖所示的邊三輪摩托車那樣户秤,將邊車安裝在一輛摩托車上码秉,就變成了邊三輪摩托車。每輛邊三輪摩托車都有自己的邊車鸡号。類似同樣的方式转砖,邊車服務(wù)共享其父應(yīng)用程序的主機(jī)。對(duì)于應(yīng)用程序的每個(gè)實(shí)例鲸伴,邊車的實(shí)例被部署并與其一起托管府蔗。

使用邊車模式的優(yōu)點(diǎn)包括:

在運(yùn)行時(shí)環(huán)境和編程語(yǔ)言方面,邊車獨(dú)立于其主要應(yīng)用程序汞窗,因此不需要為每種語(yǔ)言開發(fā)一個(gè)邊車姓赤。

邊車可以訪問(wèn)與主應(yīng)用程序相同的資源。例如仲吏,邊車可以監(jiān)視邊車和主應(yīng)用程序使用的系統(tǒng)資源不铆。

由于它靠近主應(yīng)用程序,因此在它們之間進(jìn)行通信時(shí)沒(méi)有明顯的延遲蜘矢。

即使對(duì)于不提供可擴(kuò)展性機(jī)制的應(yīng)用程序狂男,也可以使用邊車通過(guò)將其作為自己的進(jìn)程附加到與主應(yīng)用程序相同的主機(jī)或子容器中來(lái)擴(kuò)展功能。

Sidecar模式通常與容器一起使用品腹,并稱為邊車容器岖食。有關(guān)容器方面的內(nèi)容,可以參閱https://waylau.com/ahout-docker/舞吭。

Sidecar模式的實(shí)現(xiàn)

Spring Cloud Netflix Sidecar框架提供了Sidecar模式的現(xiàn)成解決方案泡垃。Spring Cloud Netflix Sidecar框架框架可以提供對(duì)其他非Spring Cloud技術(shù)棧的微服務(wù)的治理。比如羡鸥,你可以使用Node或者Golang編寫一個(gè)Web項(xiàng)目蔑穴,這個(gè)服務(wù)同樣可以以Sidecar模式,納入到Spring Cloud管理中去惧浴。

下面是實(shí)現(xiàn)步驟存和。

1. 為Web項(xiàng)目添加健康檢查接口

提供REST接口,返回JSON格式內(nèi)容{"status" : "up"}。其中status用于描述微服務(wù)的狀態(tài)捐腿,常見的取值有UP纵朋、DOWN、OUT_OF_SERVICE和UNKNOWN等茄袖。

2. 編寫Sidecar微服務(wù)

創(chuàng)建項(xiàng)目操软,添加Eureka、Sidecar的依賴:

org.springframework.cloudspring-cloud-netflix-sidecarorg.springframework.cloudspring-cloud-starter-eureka

啟動(dòng)類上加上@EnableSidecar注解宪祥。這是一個(gè)組合注解聂薪,它整合了三個(gè)注解,分別是@EnableCircuiBreaker和@EnableDiscoveryClient蝗羊。

在配置文件中加入端口號(hào)藏澳、服務(wù)名稱、Eureka地址以及Web項(xiàng)目的端口以及健康檢查地址肘交,如:

server.port=8887spring.application.name=sidecar-mylife-serviceeureka.client.serviceUrl.defaultZone=http://localhost:8881/eureka/eureka.client.instance.prefer-ip-address=truesidecar.port=8080sidecar.health-uri=http://localhost:8080/healtheureka.instance.hostname=localhost

啟動(dòng)項(xiàng)目笆载,并訪問(wèn)8887接口,就可以訪問(wèn)到Web項(xiàng)目中的接口涯呻。

3. Sidecar的一些端點(diǎn)

以下是Sidecar的常用端點(diǎn):

/hosts/{serviceId}?指定微服務(wù)在Eureka上的實(shí)例列表

/ping?返回OK字符串

/{serviceId}?請(qǐng)求對(duì)應(yīng)的微服務(wù)

4. 部署應(yīng)用

將Sidecar與Web服進(jìn)行部署凉驻。一般是部署在相同的主機(jī)里面。

最后复罐,給大家推薦一個(gè)Java進(jìn)階內(nèi)推交流群851531810涝登,不管你在地球哪個(gè)方位,不管你參加工作幾年都?xì)g迎你的入駐Pё纭(群內(nèi)會(huì)免費(fèi)提供一些群主收藏的免費(fèi)學(xué)習(xí)書籍資料以及整理好的幾百道面試題和答案文檔U凸觥)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市乱投,隨后出現(xiàn)的幾起案子咽笼,更是在濱河造成了極大的恐慌,老刑警劉巖戚炫,帶你破解...
    沈念sama閱讀 217,542評(píng)論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件剑刑,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡双肤,警方通過(guò)查閱死者的電腦和手機(jī)施掏,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)茅糜,“玉大人七芭,你說(shuō)我怎么就攤上這事∶镒福” “怎么了狸驳?”我有些...
    開封第一講書人閱讀 163,912評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵预明,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我锌历,道長(zhǎng)贮庞,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,449評(píng)論 1 293
  • 正文 為了忘掉前任究西,我火速辦了婚禮,結(jié)果婚禮上物喷,老公的妹妹穿的比我還像新娘卤材。我一直安慰自己,他們只是感情好峦失,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,500評(píng)論 6 392
  • 文/花漫 我一把揭開白布扇丛。 她就那樣靜靜地躺著,像睡著了一般尉辑。 火紅的嫁衣襯著肌膚如雪帆精。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,370評(píng)論 1 302
  • 那天隧魄,我揣著相機(jī)與錄音卓练,去河邊找鬼。 笑死购啄,一個(gè)胖子當(dāng)著我的面吹牛襟企,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播狮含,決...
    沈念sama閱讀 40,193評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼顽悼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了几迄?” 一聲冷哼從身側(cè)響起蔚龙,我...
    開封第一講書人閱讀 39,074評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎映胁,沒(méi)想到半個(gè)月后木羹,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,505評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡屿愚,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,722評(píng)論 3 335
  • 正文 我和宋清朗相戀三年汇跨,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片妆距。...
    茶點(diǎn)故事閱讀 39,841評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡穷遂,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出娱据,到底是詐尸還是另有隱情蚪黑,我是刑警寧澤盅惜,帶...
    沈念sama閱讀 35,569評(píng)論 5 345
  • 正文 年R本政府宣布,位于F島的核電站忌穿,受9級(jí)特大地震影響抒寂,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜掠剑,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,168評(píng)論 3 328
  • 文/蒙蒙 一屈芜、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧朴译,春花似錦井佑、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,783評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至盯拱,卻和暖如春盒发,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背狡逢。 一陣腳步聲響...
    開封第一講書人閱讀 32,918評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工宁舰, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人甚侣。 一個(gè)月前我還...
    沈念sama閱讀 47,962評(píng)論 2 370
  • 正文 我出身青樓明吩,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親殷费。 傳聞我的和親對(duì)象是個(gè)殘疾皇子印荔,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,781評(píng)論 2 354

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

  • 什么是微服務(wù) 首先微服務(wù)并沒(méi)有一個(gè)官方的定義,想要直接描述微服務(wù)比較困難详羡,我們可以通過(guò)對(duì)比傳統(tǒng)WEB應(yīng)用仍律,來(lái)理解什...
    程序員技術(shù)圈閱讀 993評(píng)論 0 4
  • 1 為什么需要服務(wù)發(fā)現(xiàn) 簡(jiǎn)單來(lái)說(shuō),服務(wù)化的核心就是將傳統(tǒng)的一站式應(yīng)用根據(jù)業(yè)務(wù)拆分成一個(gè)一個(gè)的服務(wù)实柠,而微服務(wù)在這個(gè)基...
    謙小易閱讀 25,094評(píng)論 4 93
  • 重溫經(jīng)典:“生活壞到一定程度就會(huì)好起來(lái)水泉,因?yàn)樗鼰o(wú)法更壞。努力過(guò)後窒盐,才知道許多事情草则,堅(jiān)持堅(jiān)持,就過(guò)來(lái)了蟹漓】缓幔”——宮崎駿...
    一路向前之緣來(lái)如此閱讀 300評(píng)論 0 0
  • 盲道 前后 左右 我用腳丈量它的溫度 生命的 建筑的 抑或腐敗的 脆弱的 汶川地震 火山迸發(fā) 紅 我生命中最鐘情的...
    金銀花開時(shí)閱讀 227評(píng)論 0 4
  • 2018-09-11 北京的雨滴感恩日記第1042天 1、感恩今天是周二葡粒,今天學(xué)校上午沒(méi)電份殿,同事提前把水打好了膜钓,謝...
    北京的雨滴閱讀 95評(píng)論 0 0