Linkerd是什么?

Linkerd是一个用于云原生应用的开源可扩展服务网格。

它解决了哪些问题?

Linkerd 旨在解决我们在 Twitter,Yahoo,Google 和 Microsoft 等公司运营大型生产系统时发现的问题。根据我们的经验,最复杂,令人惊奇和紧急行为的来源通常不是服务本身,而是服务之间的通讯。Linkerd 解决了这些问题,不仅仅是控制通讯机制,而是在其上提供一个抽象层。

linkerd是什么? - 图1

Linkerd为现有应用增加可靠性和仪器仪表

通过提供跨服务的一致,统一的仪器仪表和控制层,linkerd 可以让服务所有者自由选择最适合其服务的语言。通过分离通讯机制与应用代码,linkerd 可以让您可以对这些机制进行可视化和控制,而无需更改应用本身。

今天,世界各地的公司都使用 linkerd 来加强软件基础设施的核心。Linkerd 负责跨服务通信的困难而容易出错的部分,包括延迟感知负载平衡,连接池,TLS,仪器仪表和请求级路由——让应用代码具备可伸缩性,高性能和弹性。

该如何使用?

linkerd 作为单独的独立代理运行,释放其语言和类库要求。应用程序通常通过在已知位置运行 linkerd 实例来使用 linkerd,并通过这些实例代理调用,而不是直接连接到目标,服务连接到它们对应的 linkerd 实例,并将这些实例视为目标服务。

在私底下,linkerd 应用路由规则,与现有服务发现机制进行通信,以及目标实例之上的负载平衡 - 所有这些都是在调整通信和报告指标的过程中。通过依从给 linkerd 发起调用的机制,应用程序代码可以解耦于:

  • 产品拓扑知识
  • 服务发现机制的知识
  • 和负载平衡和连接管理逻辑

应用程序也受益于一致的全局流量控制机制。这对于多语言应用尤为重要,因为他们很难通过类库来实现这种一致性。

linkerd 实例可以部署为 sidecar(即每个应用服务实例一个实例)或每个主机。由于 linkerd 实例是无状态和独立的,因此它们可以轻易适应现有的部署拓扑。它们可以以各种配置的方式和应用程序代码一起部署,而只需要最少的协调。