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
实现中心化管理和存储路由规则、中心化管理服务发