Sidecar模式

Sidecar模式:將應(yīng)用程序的組件部署到單獨(dú)的進(jìn)程或容器中拷沸,以提供隔離和封裝旨椒。此模式還允許應(yīng)用程序由異構(gòu)組件和技術(shù)實(shí)現(xiàn)。

為什么稱為Sidecar模式堵漱,是因?yàn)樗愃朴谶B接在摩托車旁的邊車综慎。在該模式中,sidecar服務(wù)被附加到主應(yīng)用程序中勤庐,并為應(yīng)用程序提供其所支持的特性示惊。sidecar也與主應(yīng)用程序有相同的生命周期,與主應(yīng)用程序一起創(chuàng)建和退出愉镰。sidecar模式有時被稱為sidekick模式米罚,它是一種分解模式。

背景和問題

應(yīng)用程序和服務(wù)通常需要一些相關(guān)的基礎(chǔ)功能丈探,如監(jiān)控录择、日志、配置和網(wǎng)絡(luò)服務(wù)碗降。這些外圍功能可以作為獨(dú)立的組件或服務(wù)實(shí)現(xiàn)隘竭。

如果將它們直接集成到應(yīng)用程序中,則它們可以與應(yīng)用程序在相同的進(jìn)程中運(yùn)行讼渊,從而有效地利用共享資源动看。然而,這也意味著它們之間沒有很好地隔離爪幻,其中一個組件的中斷可能會影響其他組件或整個應(yīng)用程序菱皆。此外,它們通常需要使用與主應(yīng)用程序相同的語言來實(shí)現(xiàn)挨稿。因此仇轻,組件和應(yīng)用程序之間具有強(qiáng)相互依賴關(guān)系。

如果將應(yīng)用程序分解為不同服務(wù)奶甘,則可以使用不同的語言和技術(shù)實(shí)現(xiàn)每個服務(wù)篷店。雖然這提供了更多的靈活性,但這意味著每個組件都有自己的依賴項(xiàng)甩十,并且需要特定于語言的庫來訪問底層平臺與主應(yīng)用程序共享的任何資源船庇。此外,將這些特性部署為獨(dú)立的服務(wù)可能會增加應(yīng)用程序的延遲侣监。管理這些特定于語言的接口的代碼和依賴關(guān)系也會增加相當(dāng)大的復(fù)雜性鸭轮,特別是對于服務(wù)托管、部署和管理橄霉。

解決方案

將這些基礎(chǔ)服務(wù)和應(yīng)用程序綁定在一起窃爷,但使用獨(dú)立的進(jìn)程或容器部署邑蒋,這能為跨語言的平臺服務(wù)提供同構(gòu)接口。



sidecar服務(wù)不一定是應(yīng)用程序的一部分按厘,但它會連接到應(yīng)用程序医吊。應(yīng)用程序部署到哪里,它就部署到哪里逮京。Sidecars是支持與主應(yīng)用程序一起部署的流程或服務(wù)卿堂。在摩托車上,邊車與一輛摩托車相連懒棉,每輛摩托車都可以有自己的邊車草描。以同樣的方式,sidecar服務(wù)和其主應(yīng)用程序具有相同的生命周期策严。對于應(yīng)用程序的每個實(shí)例穗慕,sidecar的一個實(shí)例被部署和托管在它旁邊。
sidecar模式的優(yōu)點(diǎn):

  • 在運(yùn)行時環(huán)境和編程語言方面獨(dú)立于它的主應(yīng)用程序妻导,因此您不需要為每種語言開發(fā)一個sidecar逛绵。
  • sidecar可以訪問與主應(yīng)用程序相同的資源。例如倔韭,可以監(jiān)控自己和主應(yīng)用程序所使用的系統(tǒng)資源术浪。
  • 因?yàn)樗拷鲬?yīng)用程序,所以在它們之間通信時沒有明顯的延遲狐肢。
  • 即使對于不提供可擴(kuò)展性機(jī)制的應(yīng)用程序添吗,也可以使用sidecar來擴(kuò)展功能,方法是將sidecar作為自己的進(jìn)程附加到主應(yīng)用程序所在的主機(jī)或子容器中份名。

sidecar模式經(jīng)常與容器一起使用,并被稱為sidecar容器或sidekick容器妓美。

問題及思考

  • 考慮到你部署和打包應(yīng)用的方式僵腺。容器部署是最適合sidecar模式的。
  • 在設(shè)計(jì)sidecar服務(wù)時壶栋,請仔細(xì)決定進(jìn)程間通信機(jī)制辰如。除非對性能特殊要求,否則盡量使用與語言或框架無關(guān)的技術(shù)贵试。
  • 在將功能放入sidecar之前琉兜,請考慮它作為單獨(dú)的服務(wù)是否是更好的工作方式或使用傳統(tǒng)的守護(hù)進(jìn)程方式。
  • 還要考慮功能是否可以作為庫實(shí)現(xiàn)還是使用傳統(tǒng)的擴(kuò)展機(jī)制實(shí)現(xiàn)毙玻。特定于語言的庫可能具有更深層次的集成和更少的網(wǎng)絡(luò)開銷豌蟋。

什么時候使用sidecar模式

  • 主應(yīng)用程序使用一組異構(gòu)的語言和框架開發(fā)。位于sidecar服務(wù)中的組件可以使用不同框架和不同語言編寫桑滩。
  • 組件由遠(yuǎn)程團(tuán)隊(duì)或不同的組織開發(fā)梧疲。
  • 組件或特性必須與應(yīng)用程序位于同一主機(jī)上。
  • 需要一個服務(wù),它共享主應(yīng)用程序的整個生命周期幌氮,但可以獨(dú)立地進(jìn)行更新缭受。
  • 需要對特定資源或組件的資源限制進(jìn)行細(xì)粒度控制。例如该互,您可能希望限制特定組件使用的內(nèi)存量米者。您可以將組件部署為sidecar,并獨(dú)立于主應(yīng)用程序管理內(nèi)存使用宇智。

不適合使用sidecar情況:

  • 當(dāng)需要優(yōu)化進(jìn)程間通信時蔓搞。主應(yīng)用程序和sidecar服務(wù)之間的通信包括一些開銷,特別是調(diào)用延遲普筹。對于會話接口來說败明,這可能不是一個可接受的折衷辦法。
  • 對于小型應(yīng)用程序來說太防,為每個實(shí)例部署sidecar服務(wù)的資源成本超過使用隔離優(yōu)勢妻顶。
  • 當(dāng)服務(wù)需要不同于主應(yīng)用程序或獨(dú)立于主應(yīng)用程序進(jìn)行伸縮時。如果是這樣蜒车,最好將該特性部署為單獨(dú)的服務(wù)讳嘱。

案例

sidecar模式適用于許多場景。一些常見的例子:

  • 基礎(chǔ)設(shè)施的API酿愧×ぬ叮基礎(chǔ)架構(gòu)開發(fā)團(tuán)隊(duì)創(chuàng)建一個部署在每個應(yīng)用程序旁邊的服務(wù),而不是基于特定語言的客戶端庫來訪問基礎(chǔ)服務(wù)嬉挡。該服務(wù)作為sidecar加載钝鸽,并為基礎(chǔ)設(shè)施服務(wù)提供公共功能,包括日志庞钢、環(huán)境數(shù)據(jù)拔恰、配置存儲、服務(wù)發(fā)現(xiàn)基括、健康檢查和監(jiān)控服務(wù)颜懊。sidecar還監(jiān)視主應(yīng)用程序的宿主環(huán)境和進(jìn)程(或容器),并將信息記錄到一個集中的服務(wù)风皿。
  • 管理HAProxy或NGINX河爹。使用sidecar服務(wù)部署NGINX,該服務(wù)監(jiān)控環(huán)境狀態(tài)桐款,然后更新NGINX配置文件咸这,并在需要改變狀態(tài)時回收進(jìn)程。
  • 代理sidecar:以sidecar方式部署代理服務(wù)鲁僚。應(yīng)用程序通過代理處理請求日志炊苫、路由裁厅、斷路和其他與連接相關(guān)的特性。

sidecar模式隨著容器的應(yīng)用越來越廣泛侨艾,很多流行框架都基于該模式來實(shí)現(xiàn)例如dapr执虹,以及其他基于kubernetes構(gòu)建的應(yīng)用。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末唠梨,一起剝皮案震驚了整個濱河市袋励,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌当叭,老刑警劉巖茬故,帶你破解...
    沈念sama閱讀 210,914評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異蚁鳖,居然都是意外死亡磺芭,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,935評論 2 383
  • 文/潘曉璐 我一進(jìn)店門醉箕,熙熙樓的掌柜王于貴愁眉苦臉地迎上來钾腺,“玉大人,你說我怎么就攤上這事讥裤》虐簦” “怎么了?”我有些...
    開封第一講書人閱讀 156,531評論 0 345
  • 文/不壞的土叔 我叫張陵己英,是天一觀的道長间螟。 經(jīng)常有香客問我,道長损肛,這世上最難降的妖魔是什么厢破? 我笑而不...
    開封第一講書人閱讀 56,309評論 1 282
  • 正文 為了忘掉前任,我火速辦了婚禮治拿,結(jié)果婚禮上溉奕,老公的妹妹穿的比我還像新娘。我一直安慰自己忍啤,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,381評論 5 384
  • 文/花漫 我一把揭開白布仙辟。 她就那樣靜靜地躺著同波,像睡著了一般。 火紅的嫁衣襯著肌膚如雪叠国。 梳的紋絲不亂的頭發(fā)上未檩,一...
    開封第一講書人閱讀 49,730評論 1 289
  • 那天,我揣著相機(jī)與錄音粟焊,去河邊找鬼冤狡。 笑死孙蒙,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的悲雳。 我是一名探鬼主播挎峦,決...
    沈念sama閱讀 38,882評論 3 404
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼合瓢!你這毒婦竟也來了坦胶?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,643評論 0 266
  • 序言:老撾萬榮一對情侶失蹤晴楔,失蹤者是張志新(化名)和其女友劉穎顿苇,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體税弃,經(jīng)...
    沈念sama閱讀 44,095評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡纪岁,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,448評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了则果。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片幔翰。...
    茶點(diǎn)故事閱讀 38,566評論 1 339
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖短条,靈堂內(nèi)的尸體忽然破棺而出导匣,到底是詐尸還是另有隱情,我是刑警寧澤茸时,帶...
    沈念sama閱讀 34,253評論 4 328
  • 正文 年R本政府宣布贡定,位于F島的核電站,受9級特大地震影響可都,放射性物質(zhì)發(fā)生泄漏缓待。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,829評論 3 312
  • 文/蒙蒙 一渠牲、第九天 我趴在偏房一處隱蔽的房頂上張望旋炒。 院中可真熱鬧,春花似錦签杈、人聲如沸瘫镇。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,715評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽铣除。三九已至,卻和暖如春鹦付,著一層夾襖步出監(jiān)牢的瞬間尚粘,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,945評論 1 264
  • 我被黑心中介騙來泰國打工敲长, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留郎嫁,地道東北人秉继。 一個月前我還...
    沈念sama閱讀 46,248評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像泽铛,于是被迫代替她去往敵國和親尚辑。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,440評論 2 348

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