初識 Service Mesh

初識 Service Mesh

1. 介紹

Service Mesh 概念

Service Mesh又譯作“服務網(wǎng)格”壹若,作為服務間通信的基礎設施層进萄。Willian Morgan(Linkerd的CEO)如下定義Service Mesh屑埋。

A service mesh is a dedicated infrastructure layer for handling service-to-service communication. It’s responsible for the reliable delivery of requests through the complex topology of services that comprise a modern, cloud native application. In practice, the service mesh is typically implemented as an array of lightweight network proxies that are deployed alongside application code, without the application needing to be aware. (But there are variations to this idea, as we’ll see.)

Service Mesh 是一個基礎設施層,用于處理服務間通信。云原生應用有著復雜的服務拓撲,Service Mesh 保證請求可以在這些拓撲中可靠地穿梭兄世。在實際應用當中,Service Mesh 通常是由一系列輕量級的網(wǎng)絡代理組成的啊研,它們與應用程序部署在一起御滩,但應用程序不需要知道它們的存在。

Service Mesh 實際上就是處于 TCP/IP 之上的一個抽象層党远,它假設底層的 L3/L4 網(wǎng)絡能夠點對點地傳輸字節(jié)(當然削解,它也假設網(wǎng)絡環(huán)境是不可靠的,所以 Service Mesh 必須具備處理網(wǎng)絡故障的能力)沟娱。

Service mesh 有如下幾個特點:

  1. 應用程序間通訊的中間層氛驮;
  2. 輕量級網(wǎng)絡代理;
  3. 應用程序無感知花沉;
  4. 解耦應用程序的重試柳爽、超時、監(jiān)控碱屁、追蹤和服務發(fā)現(xiàn);

2. 原理

Service Mesh 基本原理

如果用一句話來解釋什么是 Service Mesh蛾找,可以將它比作是應用程序或者說微服務間的 TCP/IP娩脾,負責服務之間的網(wǎng)絡調用、限流打毛、熔斷和監(jiān)控柿赊。對于編寫應用程序來說一般無須關心 TCP/IP 這一層(比如通過 HTTP 協(xié)議的 RESTful 應用),同樣使用 Service Mesh 也就無須關系服務之間的那些原來是通過應用程序或者其他框架實現(xiàn)的事情幻枉,比如 Spring Cloud碰声、OSS,現(xiàn)在只要交給 Service Mesh 就可以了熬甫。

Phil Cal?ado 在他的這篇博客 Pattern: Service Mesh 中詳細解釋了 Service Mesh 的來龍去脈:

  1. 從最原始的主機之間直接使用網(wǎng)線相連
  2. 網(wǎng)絡層的出現(xiàn)
  3. 集成到應用程序內部的控制流
  4. 分解到應用程序外部的控制流
  5. 應用程序的中集成服務發(fā)現(xiàn)和斷路器
  6. 出現(xiàn)了專門用于服務發(fā)現(xiàn)和斷路器的軟件包/庫胰挑,Twitter’s Finagle和 Facebook’s Proxygen。這時候還是集成在應用程序內部
  7. 出現(xiàn)了專門用于服務發(fā)現(xiàn)和斷路器的開源軟件,如:NetflixOSS ecosystem
  8. 最后作為微服務的中間層Service Mesh出現(xiàn)

Service Mesh 的架構如下圖所示

serivce-mesh-control-plane

3. 方案

目前社區(qū)Service Mesh的開源解決方案有:Buoyant 公司推出的 Linkerd 和 Google瞻颂、IBM 等廠商牽頭的 Istio豺谈。Linkerd 更加成熟穩(wěn)定些,Istio 功能更加豐富贡这、設計上更為強大茬末,社區(qū)相對也更加強大一些。所以普遍認為 Istio 的前景會更好盖矫,但是畢竟還處于項目的早期丽惭,問題還很多。

3.1 Istio 介紹

Istio是由Google辈双、IBM和Lyft開源的微服務管理责掏、保護和監(jiān)控框架。Istio為希臘語辐马,意思是”起航“拷橘。官方中文文檔地址:https://istio.doczh.cn

Istio架構圖

istio-arch

Istio架構分為控制層和數(shù)據(jù)層。

  1. 數(shù)據(jù)層:由一組智能代理(Envoy)作為sidecar部署喜爷,協(xié)調和控制所有microservices之間的網(wǎng)絡通信冗疮。
  2. 控制層:負責管理和配置代理路由流量,以及在運行時執(zhí)行的政策檩帐。

Istio架構各個組成部分术幔。

  • Envoy:Istio使用Envoy代理的擴展版本,該代理是以C++開發(fā)的高性能代理湃密,用于調解service mesh中所有服務的所有入站和出站流量诅挑。
  • Mixer:Mixer負責在service mesh上執(zhí)行訪問控制和使用策略,并收集Envoy代理和其他服務的遙測數(shù)據(jù)泛源。
  • Istio Manager:Istio-Manager用作用戶和Istio之間的接口拔妥,收集和驗證配置,并將其傳播到各種Istio組件达箍。
  • Istio-auth:Istio-Auth提供強大的服務間和最終用戶認證没龙,使用相互TLS,內置身份和憑據(jù)管理缎玫。

3.2 Linkerd 介紹

Linkerd 是開源網(wǎng)絡代理硬纤,設計為以服務網(wǎng)格部署:用于管理,控制和監(jiān)控應用程序內的服務與服務間通訊的專用層赃磨。

Linkerd 架構圖

what_it_does
why_is_it_necessary

Linkerd 基本功能 原文鏈接

  1. Load balancing:負載均衡算法筝家,它們使用實時性能指標來分配負載并減少整個應用程序的尾部延遲。
  2. Circuit breaking:自動熔斷邻辉,將停止將流量發(fā)送到被認為不健康的實例溪王,從而使他們有機會恢復并避免連鎖反應故障腮鞍。
  3. Service discovery:服務發(fā)現(xiàn)后端集成,通過刪除特定的(ad-hoc)服務發(fā)現(xiàn)實現(xiàn)來幫助您降低代碼的復雜性在扰。
  4. Dynamic request routing:動態(tài)請求路由和重新路由缕减,允許您使用最少量的配置來設置分段服務(staging service),金絲雀(canaries)芒珠,藍綠部署(blue-green deploy)桥狡,跨DC故障切換和黑暗流量(dark traffic)。
  5. Retries and deadlines:在某些故障時自動重試請求皱卓,并且可以在指定的時間段之后讓請求超時裹芝。
  6. TLS:可以配置為使用 TLS 發(fā)送和接收請求,您可以使用它來加密跨主機邊界的通信娜汁,而不用修改現(xiàn)有的應用程序代碼嫂易。
  7. HTTP proxy integration:可以作為 HTTP 代理,幾乎所有現(xiàn)代 HTTP 客戶端都廣泛支持掐禁,使其易于集成到現(xiàn)有應用程序中怜械。
  8. Transparent Proxying:在主機上使用 iptables 規(guī)則,設置通過 linkerd 的透明代理
  9. gRPC: 支持 HTTP/2 和 TLS傅事,允許它路由 gRPC 請求缕允,支持高級 RPC 機制,如雙向流蹭越,流程控制和結構化數(shù)據(jù)負載障本。
  10. Distributed tracing:分布式跟蹤和度量儀器,可以提供跨越所有服務的統(tǒng)一的可觀察性响鹃。
  11. Instrumentation:支持分布式跟蹤和度量儀器驾霜,可以提供跨越所有服務的統(tǒng)一的可觀察性。

4. 擴展閱讀

5. 參考資料

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末买置,一起剝皮案震驚了整個濱河市粪糙,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌忿项,老刑警劉巖猜旬,帶你破解...
    沈念sama閱讀 218,682評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異倦卖,居然都是意外死亡,警方通過查閱死者的電腦和手機椿争,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,277評論 3 395
  • 文/潘曉璐 我一進店門怕膛,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人秦踪,你說我怎么就攤上這事褐捻〉” “怎么了?”我有些...
    開封第一講書人閱讀 165,083評論 0 355
  • 文/不壞的土叔 我叫張陵柠逞,是天一觀的道長昧狮。 經常有香客問我,道長板壮,這世上最難降的妖魔是什么逗鸣? 我笑而不...
    開封第一講書人閱讀 58,763評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮绰精,結果婚禮上撒璧,老公的妹妹穿的比我還像新娘。我一直安慰自己笨使,他們只是感情好卿樱,可當我...
    茶點故事閱讀 67,785評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著硫椰,像睡著了一般繁调。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上靶草,一...
    開封第一講書人閱讀 51,624評論 1 305
  • 那天蹄胰,我揣著相機與錄音,去河邊找鬼爱致。 笑死烤送,一個胖子當著我的面吹牛,可吹牛的內容都是我干的糠悯。 我是一名探鬼主播帮坚,決...
    沈念sama閱讀 40,358評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼互艾!你這毒婦竟也來了试和?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,261評論 0 276
  • 序言:老撾萬榮一對情侶失蹤纫普,失蹤者是張志新(化名)和其女友劉穎阅悍,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體昨稼,經...
    沈念sama閱讀 45,722評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡节视,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了假栓。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片寻行。...
    茶點故事閱讀 40,030評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖匾荆,靈堂內的尸體忽然破棺而出拌蜘,到底是詐尸還是另有隱情杆烁,我是刑警寧澤,帶...
    沈念sama閱讀 35,737評論 5 346
  • 正文 年R本政府宣布简卧,位于F島的核電站兔魂,受9級特大地震影響,放射性物質發(fā)生泄漏举娩。R本人自食惡果不足惜析校,卻給世界環(huán)境...
    茶點故事閱讀 41,360評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望晓铆。 院中可真熱鬧勺良,春花似錦、人聲如沸骄噪。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,941評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽链蕊。三九已至事甜,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間滔韵,已是汗流浹背逻谦。 一陣腳步聲響...
    開封第一講書人閱讀 33,057評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留陪蜻,地道東北人邦马。 一個月前我還...
    沈念sama閱讀 48,237評論 3 371
  • 正文 我出身青樓,卻偏偏與公主長得像宴卖,于是被迫代替她去往敵國和親滋将。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,976評論 2 355

推薦閱讀更多精彩內容