Cloudflare 开发 Pingora 框架是因为他们在使用 Nginx 时发现需要大量的业务逻辑代码而不是配置,而用 Lua 或编写配置并不理想。他们希望通过一个更灵活的框架来满足这些需求,让开发人员可以直接编写业务逻辑代码,而不是受限于配置。
Pingora 选择使用 Rust 语言开发是因为 Rust 提供了异步支持和内存安全性,这使得开发更加高效和可靠。此外,Rust 的性能和安全性也符合 Cloudflare 的需求,可以避免 C 语言中常见的内存管理和性能问题。
Pingora 框架的设计特点是无意见化(unopinionated),提供了一个灵活的框架,允许开发人员自定义服务器和代理逻辑。它支持 HTTP1 和 HTTP2,并且采用了基于线程的调度方式,所有线程共享同一个连接池,解决了 Nginx 的 worker 模型带来的性能和平衡问题。
Pingora 开源的决策过程始于开发初期,团队认为这个框架可以开源,并且在内部已经做到了业务逻辑和底层处理的分离。2020 年,Pingora 的核心库已经可以独立使用。2023 年,Cloudflare 与 ISRG 合作,加快了开源进程。
Pingora 开源后,可能会吸引更多的开发者和企业使用这个框架。由于 Rust 的内存安全性和异步支持,Pingora 有望成为替代 Nginx 的一个选择。此外,开源也可能促进社区的进一步发展,包括第三方的扩展和优化。
Cloudflare 的文化鼓励工程师发起和推动项目,支持创新和技术驱动的发展。公司内部有丰富的流量资源,可以对框架进行充分的测试。Cloudflare 主要在欧洲和美国招聘,提供签证和绿卡支持,吸引全球人才。
本期节目我们请到了继续和 Yuchen 聊聊 Cloudflare,以及他主导并开源网络框架 Pingora)
Pingora 是一个使用 Rust 开发的框架,可以让开发人员在上面实现自定义服务器。Pingora 的开发是基于 Cloudflare 多年的经验和需求,他们发现在代理中需要大量的业务逻辑代码而不是配置,并且用 Lua 或编写配置也不理想。此外,我们讨论了 Pingora 的开发过程中涉及的技术决策和挑战,以及 Cloudflare 的文化和招聘情况。
00:03) Cloudflare Pingora 项目开发背后的故事与原因
04:53) 以 Lua 嵌入 Nginx 的 openresty 为基础的强大编程工具
08:47) Lua 的特点和局限性分析
13:03) Nginx 的 C 开发和 Lua 维护的困难性及 ARM 上的问题
16:10) Indrax 架构的问题和需要解决的挑战
22:25) 大家决定用 Rust 语言重新开发的决策过程
24:47) 对于使用 Rust 语言开发的经验和公司中的实践
27:07) Rust 语言的开发和 API 设计
30:32) 流量迁移和切换效果评估
32:53) 开发速度改进和问题处理的讨论
37:15) Pingora 框架的开源故事及其 API 设计和扩展性
40:36) 关于开源的讨论和决策过程,Rust 语言的优势以及担忧的原因
44:22) Nginx 的发展历程以及与 F5 的关系变动
46:06) Pingora 开源项目及其童话般的发展故事
50:18) Cloudflare 文化和招聘情况讨论
53:40) Cloudflare:科技领域无可匹敌的压倒性存在
爱发电上赞助)