Linkerd2-proxy|展望未来

2020/09/17 12:20
阅读数 1K

客座文章最初由Oliver Gould在Linkerd博客上发表



在过去的几个月里,人们对Linkerd的数据平面“微代理”(Linkerd2-proxy)的兴趣持续升温。上个月,William Morgan写了一些关于使用Rust构建服务网络专用代理的决策。Eliza Weisman接着深入介绍了Linkerd2-proxy,以及它是如何处理请求的。在这篇文章中,我想展望一下未来:接下来的几个月和几年里Linkerd的代理有什么计划?你如何参与其中?


Linkerd的秘密武器:一个小型、快速、简单的微型代理

构建一个现代的、高性能的Rust网络代理,并不是一件简单的事情。特别是在早期,投资于代理,通常意味着花更多的时间在核心Rust网络库上,而不是在代理本身上!但我们知道,这对我们的服务网格方法至关重要:因为数据平面直接随应用程序扩展,只有在底层数据平面本身又小又快的情况下,服务网格才能又小又快。


幸运的是,这些早期的投资已经得到了回报。William写道:

我认为Linkerd2-proxy代表了安全、现代网络编程的最新技术。它是完全异步的,用现代类型安全和内存安全的语言编写。它充分利用了现代Rust网络生态系统,与亚马逊的Firecracker等项目共享基础。它对现代网络协议(如gRPC)有原生支持,可以基于实时延迟实现负载平衡请求,并对零配置使用进行协议检测。它是完全开源的、经过审计的和大规模广泛测试的。

当然,Linkerd不仅仅以性能和资源使用而闻名,它还以其简单性而闻名。这里,再一次提到,Linkerd2-proxy对Linkerd的方式至关重要:因为Linkerd2-proxy是为边车(sidecar)服务网格的用例设计的,它比一般用途的代理(如NGINX和Envoy)操作起来要简单得多。这是一个简单的反映,通过摆脱所有非服务网状的用例,通过协议检测和Kubernetes原生服务发现等特性,Linkerd2-proxy不需要调优或调整就可以“正常工作”。事实上,在这一点上,Linkerd-proxy甚至没有配置文件。


Linkerd2-proxy的未来

今天,Linkerd-proxy快速、简单、小巧,为世界各地组织的关键生产架构提供了强大的支持。下一步是什么呢?


有几个值得注意的令人兴奋的未来特性,从具体的和短期的,投机的和遥远的。这些包括:

  1. 所有TCP连接的mTLS。这是一个大问题。现在,代理可以自动启动和终止经过相互身份验证的TLS连接,而不需要任何配置,但仅用于HTTP/gRPC通信。我们在努力将其扩展到非HTTP协议,以便它们具有与今天的Linkerd为HTTP通信提供的相同的工作负载标识和机密性保证。作为额外的好处,这个特性还将Linkerd的无缝多集群功能扩展到非HTTP流量。

  2. 延迟用桶装。作为其检测的一部分,Linkerd2-proxy记录所有通过它的流量的延迟,并在一组固定桶(bucket)中报告这些值,每个桶有一个特定的延迟范围(例如5ms-10ms)。这些桶窗是固定的,坦率地说,目前有些随意选择。我们希望改进这一点,但任何类型的动态分级都可能需要代理之间的协调,以便聚合产生的桶。

  3. 代理之间的HTTP/3(QUIC)。对于服务之间的高并发通信,HTTP/2提供了一些优于HTTP/1.x的主要优点,并且如今,Linkerd2-proxy已经在代理之间的HTTP/1.1通信透明地升级为HTTP/2。HTTP/3有望朝着这个方向进一步发展,而我们渴望扩展Linkerd2-proxy以支持HTTP/3。

  4. WebAssembly插件。现在,还没有一种直接的方法来支持数据平面上的插件,例如,允许根据用户特定的头信息定制路由。我们正在探索代理WebAssembly(Wasm)来实现这一点,并允许Linkerd使用广泛的语言无关的流量插件。甚至有一种方法可以使用为Envoy开发的相同插件,这可能会带来一些非常有趣的可能性。

  5. 集群外的支持。虽然代理可以在Kubernetes之外运行(毕竟,它只是一个二进制文件),但目前还没有打包工具来简化这一过程,而且关于mTLS标识之类的事情应该如何处理还有几个悬而未决的问题。尽管如此,我们注意到并不是所有的软件都运行在Kubernetes上,我们希望在Linkerd中更好地支持这一点。


其中一些特性,如TCP的mTLS,范围很好,工作已经在进行中。其他的,比如HTTP/3,还处于构想阶段。但他们对代理来说都是战略和重要的。


我怎样才能参与进来?

如果这些特性中有任何一个听起来很有趣,或者如果从事为全世界的生产系统提供支持的最先进的开源Rust网络项目的想法令人兴奋,那么好消息是你可以参与其中!Linkerd2-proxy是完全开源的、开放治理的,由云原生计算基金会托管,我们一直对欢迎更多的人加入这个项目。


如果你是刚刚接触Linkerd,最好的开始方式是:

  1. 加入Linkerd slack,特别是#contributors频道,并说个hi!

  2. 参加下一个月的Linkerd在线社区聚会

  3. 仔细阅读开放的代理问题,特别是那些标有“good first issue”的问题

  4. 熟悉我们的RFC流程,以便在项目中引入更大的更改。


如果你是第一次接触Rust,那么你可能还想看看Eliza一直在运行的实时代理代码演练。


开源Rust维护者的所有声誉和荣耀都在等着你。加入我们,让我们一起创建这个神奇的代理。


今天上手试一试!

想要查看代理的运行情况吗?你可以在任何相对现代的Kubernetes集群上尝试Linkerd,这只需要几分钟。下载最新的稳定版本运行:

curl https://run.linkerd.io/install | sh

你可以在几分钟内启动并运行一个功能正常的服务网格(和一个很棒的Rust代理)。


Linkerd适用于所有人

Linkerd是一个社区项目,由CNCF托管。Linkerd致力于开放治理。如果你有功能要求、问题,或评论,我们希望你加入我们快速增长的社区!Linkerd代码托管在GitHub上,我们在Slack、Twitter和邮件列表上有一个蓬勃发展的社区。快来加入我们乐趣满满的项目吧!


点击【阅读原文】阅读网站原文。


扫描二维码联系我们!




CNCF (Cloud Native Computing Foundation)成立于2015年12月,隶属于Linux  Foundation,是非营利性组织。 

CNCF云原生计算基金会)致力于培育和维护一个厂商中立的开源生态系统,来推广云原生技术。我们通过将最前沿的模式民主化,让这些创新为大众所用。请长按以下二维码进行关注。

本文分享自微信公众号 - CNCF(lf_cncf)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

展开阅读全文
加载中

作者的其它热门文章

打赏
0
0 收藏
分享
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部
返回顶部
顶部