Buoyant 的 Conduit 服务网格正式成为 Linkerd 2

阅读数:499 2018 年 8 月 7 日

话题:DevOps语言 & 开发

Conduit 是的一个相对较新的轻量级、基于社区的服务网格(service mesh),它来自 Buoyant,现在该项目已经合并到了 Linkerd 项目之中,并且发布了 Linkerd 2(Beta)。7 月 17 日,Linkerd 发布了推文“The @runconduit code merge is complete...”,Conduit 随之成为流行的 Linkerd 服务网格的下一代版本。除了常规的 Linkerd 1 版本发布,Linkerd 2(beta)构件也已经生成。Linkerd 2 代码是完全开源的,可以在他们的GitHub 仓库上获取。Conduit 0.5.0 是 Conduit 项目最后一个正式发布版本。

Linkerd 是由 Buoyant 的联合创始人 William Morgan 和 Oliver Gould 在 2015 年创建的。Linkerd 构建在Finagle(Twitter 开发的用于 JVM 的可扩展 RPC 系统)之上,它能够用来构建语言中立的、多语种的微服务应用程序,该项目的设计适用于高并发的场景,比如像 Expedia、Monzo、Salesforce 和 PayPal 这样的地方。

Linkerd 是所谓的“service mesh(服务网格)”领域的几个流行工具之一(其他的还包括Istio、 EnvoyCiliumConsul Connect)。服务网格是一个专门的基础设施层,用来处理服务到服务之间的通信。服务网格用来解决微服务运维方面的一些复杂性,它围绕可观测性、重试 / 超时、服务发现以及动态代理等方面的最佳实践进行了封装,上述所提及的这些关注点通常会妨碍微服务的部署。

Conduit 最初也是 Buoyant 开发的一个独立项目,它的数据面板(data plane)是使用 Rust 编写的,而控制面板(control plane)则是采用 Go 编写的,它是作为一个轻量级的服务网格替代方案在去年引入的。它设计为使用 Kubernetes 部署的低资源消耗的 sidecar,Conduit 采用一种带有倾向性的方式来实现服务网格,其目标是减少配置和大幅度降低资源的开销。它带来的结果就是在资源开销、性能和部署便利性方面都有了明显改善。

Gould 目前是 Buoyant 的 CTO,同时还是 Linkerd 1 和 2 的核心贡献者,他回答了创建 Conduit 的原因。

Conduit 快如闪电般的 Rust 代理每个实例只有大约 10MB,具有毫秒级别的 p99 延迟,并且支持 HTTP/1.x、HTTP/2 和 gRPC。Conduit 在任何 Kubernetes 集群上都能秒级瞬间安装,并且能够根据你感兴趣的服务情况进行增量扩展。

当被问到原始意图是否就是要将 Conduit 一起并入 Linkerd 时,Gould 回答到:

当 Conduit 创建的时候,我们的愿景是构建出一个极其简单的方案,来解决我们花费数年的时间帮助 Linkerd 用户所克服的问题:云原生应用的监控、可靠性以及安全性。另外,我们非常确信 Linkerd 只需很少的系统资源就能实现这一点。但是,这是一个冒险的行为,很多的 Linkerd 产品用户在我们确信它成功之前并不认为将其称为“Linkerd”是合适的选择。

在分别运维了两个项目仅仅七个月之后,Gould 和他的团队觉得 Conduit“配得上 Linkerd 这个名字”,在 6 月 27 日,Morgan 新建了一个issue 将这个项目合二为一(在 Linkerd 维护者的邮件列表中进行了讨论)。在代码合并完成之后,Linkerd 的推文宣布了该目标已达成。

对已有的 Linkerd 1 用户来说这意味着什么呢?Gould 说这两个项目都会持续开发。

Linkerd 1.x 将会与 Linkerd 2.x 并行开发。我们正在与社区协作制定一个迁移路线图,该路线图将会给出这个过程中的每个步骤。

既然这两个项目已经合并了,那么未来的路线图是怎样的呢?Gould 说他们正在致力于为服务的所有者提供非常棒的调试体验。“除了 Linkerd 2 中已构建的指标和工具,我们正在添加强大的 CLI 和 GUI 工具,帮助精确定位特定服务的问题。”Linkerd 用户将能快速掌握是什么原因导致了问题的产生、这是不是延迟的问题、特定的端点是否返回了非法的响应或者含有不可靠的依赖。

八月份,Linkerd 将会发布另一个版本

查看英文原文:Buoyant's Conduit Service Mesh Officially Becomes Linkerd 2