Service Mesh框架选型对比分析:Linkerd、Envoy、Istio、Conduit

当前,业界主要有以下主要几种Service Mesh框架,下面进行详细的说明及对比。
1、Linkerd

Linkerd是Buoyant公司2016年率先开源的高性能网络代理,是业界的第一款Service Mesh框架。其主要用于解决分布式环境中服务之间通信面临的一些问题,如网络不可靠、不安全、延迟丢包等问题。

Linkerd使用Scala语言编写,运行于JVM,底层基于Twitter的Finagle库,并对其做了相应的扩展。最主要的是Linkerd具有快速、轻量级、高性能等特点,每秒以最小的延迟及负载处理万级请求,易于水平扩展。除此之外,还有以下功能:

支持多平台:可运行于多种平台,比如Kubernetes、DC/OS、Docker,甚至虚拟机或物理机。
无缝集成多种服务发现工具。
支持多协议,如gRPC、HTTP/1.x、HTTP/2,甚至可通过linkerd-tcp支持TCP协议。
支持与第三方分布式追踪系统Zipkin集成。
灵活性、扩展性高,可通过其提供的接口开发自定义插件。

目前,Linkerd和Linkerd2并行开发,其情况如下:

Linkerd:Linkerd使用**Scala语言编写**,运行于JVM,底层基于Twitter的Finagle库,并对其做了相应的扩展。
Linkerd2:使用Go语言和Rust语言完全重写了Linkerd,专门用于Kubernetes。

Linkerd本身是数据平面,负责将数据路由到目标服务,同时保证数据在分布式环境中传输是安全、可靠、快速的。另外,Linkerd还包括控制平面组件Namerd,通过控制平面Namerd实现中心化管理和存储路由规则、中心化管理服务发现配置、支持运行时动态路由以及暴露Namerd API管理接口。
在这里插入图片描述

控制平面

是在Kubernetes特定命名空间中运行的一组服务。这些服务可以完成各种事情:聚集遥测数据,提供面向用户的API,向数据平面代理提供控制数据等。

由以下部分组成:
    Controller:由public-api容器组成,该容器为CLI和dashboard提供接口API。
    Destination:数据平面中的每个代理都使用此组件来查找将请求发送到哪里。还用于获取服务配置信息,如:路由指标,重试和超时等。
    Identity:该组件提供了证书的颁发,接受来自代理的CSRs并返回正确身份签名的证书。这些证书由代理在启动时获取,并且必须在代理准备就绪之前发出。随后,它们可用于Linkerd代理之间的任何连接以实现mTLS。
    Proxy Injector:是一个注入程序,每次创建一个pod时,它都会接收一个webhook请求。该注入程序检查资源以查找特定于Linkerd的注释(linkerd.io/inject: enabled)。当存在该注释时,注入器将更改容器的规范,并添加 initContainer包含代理本身的以及附属工具。
    Service Profile Validator:用于在保存新服务配置文件之前先对其进行验证。
    Tap:从CLI和dashboard接收请求,以实时监视请求和响应。

数据平面

由轻量级代理组成,这些代理作为sidecar容器与服务代码的每个实例一起部署。为了将服务“添加”到Linkerd服务网格,必须重新部署该服务的Pod,以在每个Pod中包含数据平面代理。

2、Envoy

同Linkerd一样,Envoy也是一款高性能的网络代理,于2016年10月份有Lyft公司开源,为云原生应用而设计,可作为边界入口,处理外部流量,此外,也作为内部服务间通信代理,实现服务间可靠通信。Envoy的实现借鉴现有生产级代理及负载均衡器,如Nginx、HAProxy、硬件负载均衡器及云负载均衡器的实践经验,同时基于C++编写及Lyft公司生产实践证明,Envoy性能非常优秀、稳定。

Envoy既可用作独立代理层运行,也可作为Service Mesh架构中数据平面层,因此通常Envoy跟服务运行在一起,将应用的网络功能抽象化,Envoy提供通用网络功能,实现平台及语言无法性。除此之外,还有以下功能:

优先支持HTTP/2和gRPC,同时支持Websocket和TCP代理。
API驱动的配置管理方式,支持动态管理、更新配置以及无连接和请求丢失的热重启功能。
L3/L4层过滤器形成Envoy核心的连接管理功能。
通过与多种指标收集工具及分布式追踪系统集成,实现运行时指标收集、分布式追踪,提供整个系统及服务的运行时可见性。
内存资源使用率低,sidecar是Envoy最常用的部署模式。

更多请见:http://www.mark-to-win.com/tutorial/50497.html

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值