基于 Kubernetes 的 Service Mesh 开源解决方案


今天我们主要介绍一下 Conduit,它是一个基于 Kubernetes 的 Service Mesh 解决方案,GitHub地址:https://github.com/runconduit

Conduit 的目标是成为最快、最轻、最简单并且最安全的 Service Mesh。他使用 Rust 构建了快速、安全的数据平面,用 Go 开发了简单强大的控制平面,总体设计围绕着性能、安全性和可用性进行。更重要的是,Conduit 将会完全吸收过去 18 个月中,我们在 Linkerd 的生产级 Service Mesh 中积累沉淀的真实经验。

为什么要做一个 Conduit?Linkerd 是世界上最多生产级部署的 Service Mesh。这一产品创造了 “Service Mesh” 这一词汇,在软件基础设施中成功的开辟了新的领域,为遍及全球的企业客户(例如 Salesforce、Paypal、Expedia、AOL 以及 Monzo)承载了数以万亿计的请求。这一段时间里,我们和客户以及用户们甘苦与共——我们一起开会,设计交叉路线图,凌晨三点起床救火。开源的基础设施和现实世界的对撞中,我们学到了弥足珍贵的经验和教训。

这中间有个突出的问题就是,Linkerd 的部署模型太重了。虽然 Linkerd 的各个组件,例如 Finagle、Netty、Scala 以及 JVM,都是被广泛采用千锤百炼的,有了这些组件的帮助,在有足够 CPU 和内存支持的情况下,Linkerd 能够达到非常高的负载能力;然而设计过程中鲜有考虑在有限的资源情况下,基于 sidecar 模式的 Kubernetes 部署方式。所以今年年初,我们自问:有了 18 个月的生产级 Service Mesh 的经验,如果要做出一个功能完备又可以在低资源环境下运行的 Service Mesh,我们会怎么做?

答案就是 Conduit。和 Linkerd 类似,Conduit 是让微服务安全可靠的下一代 Service Mesh。他能透明的管理服务之间的通信,自动提供可测性、可靠性、安全性和弹性的支持。还是跟 Linkerd 相仿,他的数据平面是在应用代码之外运行的轻量级代理,控制平面是一个高可用的控制器。然而和 Linkerd 不同的是,Conduit 的设计更加倾向于 Kubernetes 中的低资源部署。

Conduit 为什么伟大:
  • 轻量高速:Conduit 代理只需要不到 10 MB 实际内存(RSS),p99 延迟在分毫秒以内。
  • 安全:Rust 的内存使用相当安全,同时还缺省使用了 TLS,Conduit 的安全性与生俱来。
  • 最小化:Conduit 的特性集被设计为尽量的最小化和可编排,便于使用 gRPC 插件进行定制。
  • 易用性:内置有聚合的服务指标,强大的客户端工具(想想看,微服务界的 tcpdump),Conduit 为运维人员提供了新的强大的工具来对付生产环境的微服务。


过去半年中我们一直在努力的构建 Conduit。我们聘请了 Phil、Carl、Sean 以及 Brain 这样的高手;向 Tokio 和 Tower 这样的核心技术投资,让 Conduit 又快又安全。最重要的是,我们决心用 Conduit 解决在 Linkerd 社区遇到的实际问题。

Linkerd 怎么办?

简单说说,Linkerd 是世界上最广泛在生产环境进行使用的 Service Mesh,他会长期存在,我们会持续的进行开发、管理并提供商业支持;我们会保证我们的 Linkerd 用户的幸福感。

Conduit 不是 Linkerd 2.0。Conduit 面向的是非常特定的环境 —— Kubernetes,而不准备像 Linkerd 一样做出众多的集成支持。我们的大量用户在使用 ECS、Consul、Mesos、ZooKeeper、Nomad、Rancher 或者混合的多环境系统,Linkerd 是目前的最好选择,我们会持续投入进行改善。

现在开始!

我们刚刚发布了 Conduit 0.1。来跳坑吧!目前这是个 Alpha 版本,所以理直气壮的仅提供 HTTP/2 的支持(是的,HTTP/1.1 都不支持)。我们希望我们的早期用户能够尽早接触 Conduit,并从中获得反馈。

接下来的几个月中,我们会积极工作,推进 Conduit 的生产化进程,预计来年初面世的 0.2 中,会加入 HTTP/1.1 和 TCP 的支持(路线图)。这一产品的进展和目标会非常公开。最后,我们还会提供 Conduit 的商业支持,如果有兴趣的话可以联系我们。

想要了解更多?可以订阅我们的发布通知邮件列表,加入 Linkerd 的 Slack 频道,或者 Follow @runconduit

Conduit 是基于 Apache 2.0 协议的开源软件。

原文链接:Introducing Conduit(翻译:崔秀龙)

0 个评论

要回复文章请先登录注册