kubernetes-handbook/usecases/linkerd.md

2.2 KiB
Raw Blame History

Linkerd简介

Linkerd是一个用于云原生应用的开源、可扩展的service mesh一般翻译成服务网格还有一种说法叫”服务啮合层“Istio用于微服务的服务啮合层)。

Linkerd是什么

Linkerd的出现是为了解决像twitter、google这类超大规模生产系统的复杂性问题。Linkerd不是通过控制服务之间的通信机制来解决这个问题而是通过在服务实例之上添加一个抽象层来解决的。

source https://linkerd.io

Linkerd负责跨服务通信中最困难、易出错的部分包括延迟感知、负载平衡、连接池、TLS、仪表盘、请求路由等——这些都会影响应用程序伸缩性、性能和弹性。

如何运行

Linkerd作为独立代理运行无需特定的语言和库支持。应用程序通常会在已知位置运行linkerd实例然后通过这些实例代理服务调用——即不是直接连接到目标服务服务连接到它们对应的linkerd实例并将它们视为目标服务。

在该层上linkerd应用路由规则与现有服务发现机制通信对目标实例做负载均衡——与此同时调整通信并报告指标。

通过延迟调用linkerd的机制应用程序代码与以下内容解耦

  • 生产拓扑
  • 服务发现机制
  • 负载均衡和连接管理逻辑

应用程序也将从一致的全局流量控制系统中受益。这对于多语言应用程序尤其重要,因为通过库来实现这种一致性是非常困难的。

Linkerd实例可以作为sidecar既为每个应用实体或每个主机部署一个实例来运行。 由于linkerd实例是无状态和独立的因此它们可以轻松适应现有的部署拓扑。它们可以与各种配置的应用程序代码一起部署并且基本不需要去协调它们。

参考

Buoyant发布服务网格Linkerd的1.0版本

Linkerd documentation

Istio用于微服务的服务啮合层