日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長提供免費收錄網(wǎng)站服務,提交前請做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

Service Mesh框架對比:Linkerd vs. Istio

 

本文由公眾號EAWorld翻譯發(fā)表,轉(zhuǎn)載需注明出處。

作者:Marcus Schiesser

譯者:白小白

原題:Comparing Service Meshes: Linkerd vs. Istio

原文:http://t.cn/Ext9FpD

引言:

各個細分行業(yè)和領域的組織機構正在持續(xù)的加速采用微服務架構。隨之而來的是容器的使用以及端點和服務通信的爆炸式增長。企業(yè)內(nèi)部的復雜性和不確定性正在不斷增加。如何在這樣的情況下實現(xiàn)對規(guī)模化通信安全性和可見性的管理頗具挑戰(zhàn)。因此,無論是運營者或者開發(fā)者都強烈渴望將網(wǎng)絡層的復雜性封裝為一個新的網(wǎng)絡基礎架構層。當此之時,處理此事的最流行的方式是服務網(wǎng)格(Service Mesh)。

因此,在本文中,我們將對比兩種主流的服務網(wǎng)絡的特性,以找出兩者的異同之處,即Linkerd和Istio。文中也會提及有關服務網(wǎng)格使用的爭論,探尋在某種特定的場景下,基于特定的用例和架構,何者比何者更具優(yōu)勢。

一、服務網(wǎng)格是什么?

服務網(wǎng)格是一個專有的基礎設施層,這一層級的存在可以使得微服務架構內(nèi)部的服務間通信更加可靠、快捷和安全。其基本的理念是在服務間插入一個代理組成的網(wǎng)絡來實現(xiàn)對網(wǎng)絡層的抽象。一言以蔽之,服務網(wǎng)格的設計初衷就是幫助開發(fā)者解決微服務間的交互挑戰(zhàn)。

二、Istio是什么?

Istio是由google、IBM和Lyft發(fā)起的開源的服務網(wǎng)格項目。該項目在2017年推出,并在2018年7月發(fā)布了1.0版本。Istio基于Envoy代理并以之為數(shù)據(jù)層(data plane)。可以說Istio是如今最炙手可熱的服務網(wǎng)格,但由于僅應用于Kubernetes,其應用價值受到某種限制。

三、Linkerd是什么?

Linkerd(音似chickadee),最初是由Buoyant團隊于2016年打造的一個服務網(wǎng)格項目。Linkerd是CNCF的官方項目,基于Twitter的Finagle項目并和后者一樣,最初是由Scala語言編寫,設計理念是支持基于主機(物理主機或者虛擬節(jié)點)的部署模式。由于最初版本的內(nèi)存占用廣受詬病,導致了Conduit項目的開發(fā),Conduit是一個輕量級的服務網(wǎng)格,為Kubernetes定制,用Rust和Go語言編寫。Conduit項目目前已經(jīng)合并到Linkerd項目,并在2018年7月發(fā)布為Linkerd 2.0 版本。鑒于Linkerd 2.x 基于Kubernetes,而Linkerd 1.x 可以基于節(jié)點的模式部署,當面臨復雜環(huán)境的場景時,人們可以有更靈活的選擇。除非特指,本文的比較都是基于Linkerd 2.x。

四、特性和功能對比

  • 架構

Istio和Linkerd都支持以主流的外掛(Sidecar)模式部署。在這種模式下,每個微服務都被分配一個單獨的代理。微服務間的通信并不直接進行,而是通過自身的代理轉(zhuǎn)發(fā)。代理會將請求路由到目標微服務的代理,該代理再將請求轉(zhuǎn)發(fā)到目標微服務。所有這些服務代理構成了數(shù)據(jù)層。在服務網(wǎng)格的架構下,數(shù)據(jù)層由控制層(control plane)來進行配置和監(jiān)控,控制層一般另行獨立部署。

Service Mesh框架對比:Linkerd vs. Istio

 

架構圖示意:以Istio為例。Envoy代理以外掛形式部署。在這樣的部署模型中,代理將注入每個容器單元,因此可以獨立的配置。Istio控制層由很多的組件組成,用來對服務間通信進行配置、度量、控制和安全管控。
  • 控制層

控制層的使命是通過一系列API和工具對服務網(wǎng)格內(nèi)的代理實現(xiàn)控制。在控制層中,可以將整個數(shù)據(jù)層作為一個整體來指定認證策略,收集度量指標,進行配置。

Istio的控制層由三個組件構成。首先是Pilot,負責配置數(shù)據(jù)層。其次是Mixer,負責收集通信流量的度量指標,并響應數(shù)據(jù)層各種不同的查詢請求,包括授權、訪問控制和配額查詢等。基于所啟用的適配器的不同,Mixer也可與日志和監(jiān)控系統(tǒng)進行對接。最后是Citadel,這個組件允許開發(fā)者基于服務身份認證而非網(wǎng)絡控制建立一個零信任(零信任,zero-trust,簡單講,即假定所有通信方不可信賴并必須進行驗證)機制的網(wǎng)絡環(huán)境。Citadel負責為每個服務指定證書,如果有需要,也可以接受外部的證書授權密鑰。

白小白:

Service Mesh框架對比:Linkerd vs. Istio

 

Linkerd的控制層由一個Web組件、一個控制組件和一個度量組件組成。Web組件提供了基于Web的管理控制面板。控制組件由多個容器部署組成。完成了控制層的多數(shù)功能(包括聚合遙測數(shù)據(jù),提供用戶界面API,為數(shù)據(jù)層提供控制數(shù)據(jù)等)。度量組件由定制化的Prometheus和Grafana組成。Prometheus負責抓取Linkerd暴露的度量指標并儲存下來。Linkerd本身會生成很多外部面板,Grafana負責渲染和展現(xiàn)這些面板。

  • 數(shù)據(jù)層

在一個典型的服務網(wǎng)格環(huán)境中,服務的部署過程將納入一個專有的外掛代理。如前文所述,服務并不直接向網(wǎng)絡傳遞消息,而是由本身的代理來進行通信。這樣的機制封裝了服務間通信的復雜性。服務網(wǎng)格內(nèi)的代理之間相互連接,構成了數(shù)據(jù)層。

默認情況下,Istio使用Envoy作為數(shù)據(jù)層,Envoy原本是設計用來與其他類型的代理(比如Nginx)來進行工作的。Linkerd使用自有的代理。

  • 平臺支持

盡管聲稱支持大量的環(huán)境和框架,但在實踐中,Istio僅能與kubernetes相處融洽,這嚴重限制了他的應用范疇。

Linkerd 2.x目前也需要與Kubernetes協(xié)同工作。然而Linkerd 1.x 部署廣泛,并處于活躍的研發(fā)狀態(tài),可以在多種環(huán)境和框架下工作,包括與AWS ECS、DC/OS和Docker協(xié)同工作。能夠支持如此廣泛的環(huán)境,得益于Linkerd 1.x 可以基于主機的部署模式,這使得其可以與用戶的環(huán)境進行整合而無需以外掛的形式部署。

Service Mesh框架對比:Linkerd vs. Istio

 

Linkerd 1.x 主機部署模式:linkerd服務網(wǎng)格可以基于主機部署。基于這樣的模式,同一主機的多個微服務共享一個Linkerd(1.x)實例。

主機部署模式的主要缺點在于單點代理的失敗將影響多個微服務。從另一方面講,主機部署模式相對于外掛模式對資源的消耗更低。

  • 協(xié)議支持

基于外掛代理,Istio和Linkerd 2.x 都支持HTTP 1.1, HTTP2, gRPC和TCP協(xié)議的服務間通信。但Linkerd 1.x 不支持TCP連接。

  • 實現(xiàn)語言

Istio的控制層和Linkerd 2.x 都是用Go語言編寫的,Istio數(shù)據(jù)層的Envoy代理是由C++編寫的,Linkerd 2.x 的數(shù)據(jù)層是用Rust編寫的。Linkerd 1.x 是用Scala編寫的。

  • 安全、加密和授權

Istio的控制層組件提供了如下的安全功能: Citadel:密鑰和證書管理。 Pilot:認證策略和安全命名信息的分發(fā)。 Mixer:授權和審計的管理。 外掛:實現(xiàn)代理間基于TLS加密的安全通信。

本文成文時,Linkerd的自動化的TLS加密還處于實驗階段,主機間認證也還未獲支持。

  • 外掛注入

將外掛加入到部署包并且在服務網(wǎng)格的控制層進行注冊的過程即為“外掛注入”。Istio和Linkerd都支持手動和自動的外掛注入。

  • 高可用性

Istio支持高可性,當且僅當配置了Kubernetes的多副本模式,并且打開podAntiAffinity開關的情況下。

linkerd的高可用性目前仍處于實驗階段。

  • 監(jiān)控和跟蹤

Istio原生支持Prometheus并且集成了Jaeger來進行分布式跟蹤。Linkerd支持Prometheus和Grafana從外部進行監(jiān)控,但目前并不支持分布式跟蹤。

  • 性能

Linkerd 2.x 在性能上的常規(guī)開銷總體上比Istio要低一些。一項關于兩者的性能測試表明,基于一組由HTTP請求組成的測試負載,每秒的千次查詢數(shù)(kqps)基準值是30-35kqps,經(jīng)由代理轉(zhuǎn)發(fā)后,性能會有所下降,Linkderd降到了10-12kqps,而Istio則降到了3.2-3.9kqps。

五、什么時候應該謹慎使用服務網(wǎng)格?

有五個主要的原因,可能阻止你考慮使用服務網(wǎng)格來管理微服務架構所帶來的潛在的網(wǎng)絡復雜性挑戰(zhàn)。

1、服務網(wǎng)格具有排他性

服務網(wǎng)格是一個平臺解決方案,因此是排他性的。這意味著你將被迫在“服從他們的方式”和“基于我自己的業(yè)務和技術考量選擇適合的方式”之間做出選擇。根據(jù)你所處的形勢,對服務網(wǎng)格的前期投資可能十分昂貴。

而且,如果說控制應用和服務間通信對你的組織來說具有戰(zhàn)略性的重要意義的話,那么使用一個現(xiàn)成的服務網(wǎng)格就沒有意義了。這樣或許可以受益于框架成長帶來的收益 ,但無法對你的目標實現(xiàn)控制。

2、服務網(wǎng)格具有復雜性

服務網(wǎng)格的部署將向你的架構引入相當可觀的復雜性。部署過程需要引入外掛代理,服務網(wǎng)格需要與現(xiàn)有的環(huán)境進行整合并在未來的時間里反復的配置,所有的加密可能需要重新設計。基于Kubernetes這樣的平臺建立服務網(wǎng)格的實例,會要求你不僅是服務網(wǎng)格的專家,并且是熟悉Kubernetes的專家。

3、服務網(wǎng)格可能運行緩慢

隨著網(wǎng)格的擴張和路由表的膨脹,通過一系列代理進行的路由通信將慢的痛苦異常。

4、服務網(wǎng)格傾向于建立自治的架構藍圖

使用服務網(wǎng)格來追蹤服務間的通信請求并不總是像最初那樣看起來有價值。比如,假設你的微服務環(huán)境與其他團隊的應用和服務相整合,在跨越不同的技術團隊和業(yè)務單元的邊界時,翻譯不同的追蹤記錄將十分挑戰(zhàn),如果是企業(yè)級環(huán)境或者是云端供應商的情況下,這種挑戰(zhàn)將更加嚴峻。

5、服務網(wǎng)格著眼于開發(fā)者層面的考量

服務網(wǎng)格著眼于典型的開發(fā)者視角的服務間通信問題。對于規(guī)模化且不確定的應用和服務而言,組件之間的交互會天然衍生一系列的復雜性,對這些新興行為的管控,服務網(wǎng)格無能為力。

分享到:
標簽:框架
用戶無頭像

網(wǎng)友整理

注冊時間:

網(wǎng)站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨大挑戰(zhàn)2018-06-03

數(shù)獨一種數(shù)學游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數(shù)有氧達人2018-06-03

記錄運動步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定