Cloudflare 开发 Pingora 框架是因为在代理中需要大量的业务逻辑代码,而使用 Lua 或配置文件编写这些逻辑不理想。Pingora 提供了一个灵活的框架,让开发人员可以直接编写自定义服务器逻辑,提高开发效率和代码可维护性。
Pingora 框架的主要特点是它提供了一个灵活的 API,允许开发人员在框架上实现自定义服务器逻辑。它不强制特定的实现方式,而是提供了一个中立的、可扩展的平台,支持 HTTP1 和 HTTP2,并且用 Rust 语言开发,提高了内存安全性和性能。
Cloudflare 选择 Rust 语言开发 Pingora 是因为 Rust 提供了内存安全性和异步支持,开发效率高,代码可维护性好。Rust 的这些特性解决了 C 和 Lua 在开发和维护中的许多问题,特别是在处理复杂业务逻辑和高性能需求时。
Pingora 的开发始于 2019 年,最初是一个实验性项目,由一名工程师尝试用 Rust 语言开发。2020 年逐步在生产环境中使用,2022 年中完成主要流量迁移。2023 年 2 月,应 ISRG 的邀请,Cloudflare 开源了 Pingora,以便更多用户和开发者可以使用和贡献。
Pingora 开源后,Cloudflare 计划在公司内部继续推广使用,并希望社区用户和第三方开发者能够在 Pingora 上进行二次开发,扩展其功能。例如,用户可以编写更好的负载均衡算法或自定义 WAF。Cloudflare 还将继续优化和维护 Pingora,确保其稳定性和性能。
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:科技领域无可匹敌的压倒性存在
爱发电上赞助)