9個開源服務(wù)網(wǎng)格,你怎么看?

開源云中文社區(qū)
服務(wù)網(wǎng)格以與應(yīng)用程序代碼分離的方式在堆棧中添加統(tǒng)一的網(wǎng)絡(luò)功能。服務(wù)網(wǎng)格擴(kuò)展了像Kubernetes這樣的集群管理器,為微服務(wù)和容器提供可觀察性指標(biāo)、服務(wù)發(fā)現(xiàn)、負(fù)載均衡、IT運(yùn)維監(jiān)控和故障恢復(fù)。

哪種服務(wù)網(wǎng)絡(luò)最適合你的組織?近年來,Kubernetes服務(wù)網(wǎng)格的數(shù)量迅速增加,使得這個問題很難回答。

下面我們將深入研究9種流行的開源服務(wù)網(wǎng)格以及提供用例建議,這些網(wǎng)格將支持微服務(wù)開發(fā)。

服務(wù)網(wǎng)格簡介

服務(wù)網(wǎng)格為什么現(xiàn)在火起來了?

微服務(wù)是一種方便的開發(fā)方法。然而,隨著分布式微服務(wù)架構(gòu)的多元化,你會遇到部署和可伸縮性方面的問題。

容器和容器編排器(如Kubernetes)通過將服務(wù)打包為自己的運(yùn)行時、執(zhí)行容器并將其映射到機(jī)器來解決其中的許多問題。然而,在運(yùn)維邏輯方面仍然存在差距:管理服務(wù)間通信。

服務(wù)網(wǎng)格以與應(yīng)用程序代碼分離的方式在堆棧中添加統(tǒng)一的網(wǎng)絡(luò)功能。服務(wù)網(wǎng)格擴(kuò)展了像Kubernetes這樣的集群管理器,為微服務(wù)和容器提供可觀察性指標(biāo)、服務(wù)發(fā)現(xiàn)、負(fù)載均衡、IT運(yùn)維監(jiān)控和故障恢復(fù)。

服務(wù)網(wǎng)格市場概述

服務(wù)網(wǎng)格得到了很多追捧。正如Linkerd的創(chuàng)始人William Morgan所寫:“這不過是一堆用戶空間代理,它們被貼在你的服務(wù)旁邊。”雖然這個想法很簡單,“但如果你能消除所有的噪音,那么服務(wù)網(wǎng)格有一些實(shí)實(shí)在在的、具體的和重要的價值。”

許多服務(wù)網(wǎng)格的核心是Envoy,它是一個通用的、開源的代理,用作攔截流量的sidecar。

在服務(wù)網(wǎng)格的采用方面,Istio和Linkerd更為成熟。然而,還有許多其他選擇,包括Consul Connect、Kuma、AWS App Mesh和OpenShift。下面是9個服務(wù)網(wǎng)格產(chǎn)品的關(guān)鍵功能介紹。

Istio

Istio是一個可擴(kuò)展的開源服務(wù)網(wǎng)格,建立在Envoy之上,允許團(tuán)隊(duì)連接、保護(hù)、控制和觀察服務(wù)。Istio在IBM內(nèi)部使用,然后在2017年開源,現(xiàn)在是谷歌、IBM和Lyft的合作項(xiàng)目。

因此,Istio有足夠的時間成熟和改進(jìn)其功能集。Istio的關(guān)鍵特性包括負(fù)載均衡、流量路由、策略創(chuàng)建、指標(biāo)和服務(wù)到服務(wù)的身份驗(yàn)證。

Istio分為兩個部分:數(shù)據(jù)平面和控制平面。Istio的數(shù)據(jù)平面處理流量管理,使用Envoy sidecar代理來路由服務(wù)之間的流量和呼叫。Istio的控制平面是開發(fā)人員用來配置路由和查看指標(biāo)的工具。

Istio指標(biāo)的關(guān)鍵是細(xì)粒度的屬性。它們包括與服務(wù)行為相關(guān)的特定數(shù)據(jù)值。以下是屬性示例:

request.path: xyz/abc request.size: 234 request.time: 12:34:56.789 04/17/2017 source.ip: [192 168 0 1] destination.service.name: example

與其他服務(wù)網(wǎng)格相比,Istio在平臺成熟度和對行為洞察力和運(yùn)維控制的高度重視方面表現(xiàn)出色,帶有監(jiān)控儀表盤。然而,由于其先進(jìn)的功能和密集的配置過程,Istio可能不像其他簡單的服務(wù)網(wǎng)格那樣可用或?qū)﹂_發(fā)人員友好。

Linkerd

Linkerd是“Kubernetes的超輕、安全第一服務(wù)網(wǎng)格”。它是開發(fā)人員的最愛,它的設(shè)置非常簡單(據(jù)說安裝到Kubernetes集群只需要60秒)。Linkerd使用了一個快速而精簡的Rust代理,稱為linkerd2-proxy,它是專門為Linkerd構(gòu)建的。

Linkerd是社區(qū)驅(qū)動的,100%獲得Apache許可的開源軟件,也是一個CNCF的孵化項(xiàng)目。它也是2016年開始出現(xiàn)的。

使用Linkerd服務(wù)網(wǎng)格,應(yīng)用程序可以為其Kubernetes部署添加可靠性、可觀察性和安全功能。例如,增加的可見性可以幫助工程師解決服務(wù)之間的延遲問題。Linkerd不需要很多代碼更改,也不需要花費(fèi)幾個小時來編寫YAML配置文件。高質(zhì)量的功能和開發(fā)人員的肯定使Linkerd成很受歡迎。

Consul Connect

來自HashiCorp的服務(wù)網(wǎng)格Consur Connect專注于路由和分段,通過應(yīng)用程序級的sidecar代理提供服務(wù)到服務(wù)的網(wǎng)絡(luò)功能。Consur Connect強(qiáng)調(diào)應(yīng)用程序的安全性,代理向應(yīng)用程序提供雙向傳輸層安全性(TLS)連接以進(jìn)行授權(quán)和加密。

Consul Connect的獨(dú)特之處在于有兩個代理選項(xiàng)。Connect為測試提供了自己的內(nèi)置層代理,也支持Envoy。Connect強(qiáng)調(diào)可觀察性,提供與工具的集成,以監(jiān)控來自sidecar代理(如Prometheus)的數(shù)據(jù)。Consul Connect還可以靈活地滿足開發(fā)人員的需求。例如,它提供了許多注冊服務(wù)的選項(xiàng):從編排器、使用配置文件、通過API或通過命令行界面(CLI)。

Kuma

來自Kong的Kuma是一個與平臺無關(guān)的控制平面。Kuma提供了網(wǎng)絡(luò)功能來保護(hù)、觀察、路由和增強(qiáng)服務(wù)之間的連接。除了虛擬機(jī)之外,Kuma還支持Kubernetes。

Kuma的有趣之處在于,一個企業(yè)可以從一個統(tǒng)一的控制平面來操作和控制多個孤立的網(wǎng)格。這種能力對于需要分段和集中控制的高安全性用例是有益的。

Kuma也相對容易實(shí)現(xiàn),因?yàn)樗A(yù)裝了捆綁策略。這些策略涵蓋了常見的需求,如路由、相互TLS、故障注入、流量控制、安全和其他情況。

Kuma與Kong兼容,這使得這個服務(wù)網(wǎng)格成為已經(jīng)在使用Kong API管理的組織的首選。

Maesh

Maesh是Containous的容器原生服務(wù)網(wǎng)格,它自稱輕量級,比市場上的其他服務(wù)網(wǎng)格更易于使用。與其他網(wǎng)格構(gòu)建在Envoy之上不同,Maesh采用Traefik——一個開源的反向代理和負(fù)載均衡器。

Maesh沒有采用sidecar容器格式,而是為每個節(jié)點(diǎn)使用代理端點(diǎn)。這樣做使得Maesh比其他網(wǎng)格更具非侵入性,因?yàn)樗痪庉婯ubernetes對象或修改流量而不選擇加入。Maesh支持兩個配置選項(xiàng):用戶服務(wù)對象上的注釋以及服務(wù)網(wǎng)格接口(Service Mesh Interface,SMI)對象。

Maesh對SMI(一種新的標(biāo)準(zhǔn)服務(wù)網(wǎng)格規(guī)范格式)的支持是它的一個特性。如果整個行業(yè)都采用SMI,它可以提供可擴(kuò)展性優(yōu)勢,并有可能減少供應(yīng)商的鎖定問題。

Maesh需要Kubernetes 1.11+和CoreDNS/KubeDNS安裝??焖偃腴T指南指出使用Helm v3安裝Maesh是多么容易:

helm repo add maesh https://containous.github.io/maesh/charts helm repo update helm install maesh maesh/maesh

ServiceComb-mesher

Apache軟件基金會將其ServiceComb-mesher包描述為“一個用Go編寫的高性能服務(wù)網(wǎng)格實(shí)現(xiàn)”。Mesher基于Go Chassis——一個流行的Go語言的微服務(wù)開發(fā)框架。因此,Mesher繼承了Go Chassis的功能,如服務(wù)發(fā)現(xiàn)、負(fù)載均衡、容錯、路由管理和分布式跟蹤。

Mesher采用sidecar設(shè)計(jì)方法,每個服務(wù)都有一個專用的Mesher sidebar代理。開發(fā)人員通過Admin API與Mesher交互并查看運(yùn)行時信息。Mesher支持HTTP和gRPC,可移植到許多不同的基礎(chǔ)設(shè)施類型,包括Docker、Kubernetes、虛擬機(jī)和裸金屬環(huán)境。

Network Service Mesh(NSM)

Network Service Mesh(NSM)是一個專門為電信公司和ISP構(gòu)建的服務(wù)網(wǎng)格,為向Kubernetes添加低級網(wǎng)絡(luò)功能提供了一個層。NSM是一個CNCF的沙盒項(xiàng)目。

NSM文檔顯示:“具有高級L2/L3用例的網(wǎng)絡(luò)運(yùn)營商目前發(fā)現(xiàn)容器網(wǎng)絡(luò)解決方案不適合他們的下一代架構(gòu)。”

因此,NSM在構(gòu)建時考慮了不同的假設(shè),強(qiáng)調(diào)“外來”協(xié)議和異構(gòu)網(wǎng)絡(luò)配置。這使得NSM在邊緣計(jì)算、5G網(wǎng)絡(luò)和物聯(lián)網(wǎng)設(shè)備等特定用例下具有吸引力。NSM使用一套簡單的API來允許容器和外部端點(diǎn)之間的通信。

NSM工作在與其他服務(wù)網(wǎng)格不同的層上。VMware將其描述為“以連接為中心”。

AWS App Mesh

AWS的App Mesh提供“為所有服務(wù)提供應(yīng)用程序級別的網(wǎng)絡(luò)連接”,它管理服務(wù)的所有網(wǎng)絡(luò)流量,并使用開源Envoy代理來控制進(jìn)出服務(wù)容器的流量。AWS App Mesh支持HTTP/2 gRPC服務(wù)。

對于那些已經(jīng)為其容器平臺而與AWS基礎(chǔ)設(shè)施結(jié)合的公司來說,AWS App Mesh可能是一個很好的服務(wù)網(wǎng)格選擇。AWS平臺(包括AWS Fargate、Amazon Elastic Container Service、Amazon Elastic Kubernetes Service(EKS)、Amazon Elastic Compute Cloud(EC2)和EC2上的Kubernetes)對AWS App Mesh不另外收費(fèi)。

AWS App Mesh還與AWS生態(tài)系統(tǒng)中的監(jiān)控工具兼容,包括諸如CloudWatch和awsx-Ray等工具,以及許多第三方提供商提供的工具。由于AWS計(jì)算服務(wù)支持AWS Outposts,AWS App Mesh可以與混合云和內(nèi)部部署一起運(yùn)行。

AWS App Mesh的缺點(diǎn)是由于缺乏開源或可擴(kuò)展工具而陷入單一供應(yīng)商的鎖定中。

OpenShift Service Mesh

OpenShift是一個由紅帽開發(fā)的容器管理平臺,它可以幫助“連接、管理和觀察基于微服務(wù)的應(yīng)用程序”。OpenShift被描述為一個混合云企業(yè)Kubernetes平臺,它預(yù)裝了大量的功能,并被許多企業(yè)采用。

OpenShift Service Mesh建立在開源Istio之上,有著Istio控制和數(shù)據(jù)平面功能。OpenShift通過兩個開源工具提供的跟蹤和可見性功能增強(qiáng)了Istio。OpenShift使用Jaeger進(jìn)行分布式跟蹤,允許更好地跟蹤服務(wù)之間如何處理請求。

OpenShift還使用Kiali為微服務(wù)配置、流量監(jiān)控和跟蹤分析添加了可觀察性。

原文鏈接:

https://techbeacon.com/app-dev-testing/9-open-source-service-meshes-compared

THEEND

最新評論(評論僅代表用戶觀點(diǎn))

更多
暫無評論