We're sunsetting PodQuest on 2025-07-28. Thank you for your support!
Export Podcast Subscriptions
cover of episode  Ep 47. 和 Yuchen 聊聊 Cloudflare 的新框架 Pingora

Ep 47. 和 Yuchen 聊聊 Cloudflare 的新框架 Pingora

2024/6/30
logo of podcast  捕蛇者说

捕蛇者说

AI Deep Dive AI Insights AI Chapters Transcript
People
Y
Yuchen
Topics
Yuchen: Pingora 是一个使用 Rust 开发的自定义服务器框架,旨在替代 Nginx 等传统代理方案。其开发初衷是解决 Nginx 配置语言能力有限、难以实现复杂业务逻辑的问题,以及 Lua 嵌入式方案的性能和维护难题。Pingora 的设计目标是保持中立,不预设用户的使用方式,将所有决策权留给用户。在架构上,Pingora 采用线程池模型,解决了 Nginx worker 模型的负载不均衡和连接复用率低等问题。Pingora 的开发过程经历了从原型到生产环境部署的多个阶段,并通过 Cloudflare 的大量真实流量进行测试和完善。在开发语言的选择上,团队最终选择了 Rust,主要是因为其异步支持和内存安全性,这有助于提高开发效率和代码稳定性。Pingora 的开源是团队从项目初期就有的想法,其模块化设计方便代码共享和扩展。开源后,Pingora 可以被更广泛地应用,并促进社区的共同发展。 laixintao, NadeshikoManju, laike9m: 三位主持人就 Pingora 项目的背景、技术选型、开发过程、开源策略等方面与 Yuchen 展开了深入的探讨,并就相关技术细节和行业趋势进行了分析和评论。讨论内容涵盖了 Lua、OpenResty、Nginx 的优缺点,以及 Rust 语言在高性能网络编程中的优势和挑战。此外,还探讨了 Cloudflare 的公司文化和招聘情况。

Deep Dive

Key Insights

为什么 Cloudflare 开发了 Pingora 框架?

Cloudflare 开发 Pingora 框架是因为在代理中需要大量的业务逻辑代码,而使用 Lua 或配置文件编写这些逻辑不理想。Pingora 提供了一个灵活的框架,让开发人员可以直接编写自定义服务器逻辑,提高开发效率和代码可维护性。

Pingora 框架的主要特点是什么?

Pingora 框架的主要特点是它提供了一个灵活的 API,允许开发人员在框架上实现自定义服务器逻辑。它不强制特定的实现方式,而是提供了一个中立的、可扩展的平台,支持 HTTP1 和 HTTP2,并且用 Rust 语言开发,提高了内存安全性和性能。

为什么 Cloudflare 选择 Rust 语言开发 Pingora?

Cloudflare 选择 Rust 语言开发 Pingora 是因为 Rust 提供了内存安全性和异步支持,开发效率高,代码可维护性好。Rust 的这些特性解决了 C 和 Lua 在开发和维护中的许多问题,特别是在处理复杂业务逻辑和高性能需求时。

Pingora 的开发和开源过程是怎样的?

Pingora 的开发始于 2019 年,最初是一个实验性项目,由一名工程师尝试用 Rust 语言开发。2020 年逐步在生产环境中使用,2022 年中完成主要流量迁移。2023 年 2 月,应 ISRG 的邀请,Cloudflare 开源了 Pingora,以便更多用户和开发者可以使用和贡献。

Pingora 开源后有哪些计划?

Pingora 开源后,Cloudflare 计划在公司内部继续推广使用,并希望社区用户和第三方开发者能够在 Pingora 上进行二次开发,扩展其功能。例如,用户可以编写更好的负载均衡算法或自定义 WAF。Cloudflare 还将继续优化和维护 Pingora,确保其稳定性和性能。

Cloudflare 的文化和招聘情况如何?

Cloudflare 的文化鼓励一线工程师发起和推动项目,支持自下而上的创新。公司提供大量的真实流量测试环境,确保开发的框架和产品经过充分验证。Cloudflare 主要在欧洲和美国招聘,提供签证和绿卡支持,吸引全球人才。

Chapters
本期节目讨论了Cloudflare开源的网络框架Pingora,它使用Rust开发,旨在替代Nginx,并解决Nginx在处理复杂业务逻辑和维护方面的不足。Cloudflare选择Rust的原因是其在性能、内存安全和异步IO方面的优势。
  • Cloudflare开发Pingora作为Nginx的替代品
  • Pingora使用Rust开发,解决Nginx的业务逻辑和维护问题
  • 选择Rust的原因:性能、内存安全、异步IO

Shownotes Transcript

本期节目我们请到了继续和 Yuchen 聊聊 Cloudflare,以及他主导并开源网络框架 Pingora)

Pingora 是一个使用 Rust 开发的框架,可以让开发人员在上面实现自定义服务器。Pingora 的开发是基于 Cloudflare 多年的经验和需求,他们发现在代理中需要大量的业务逻辑代码而不是配置,并且用 Lua 或编写配置也不理想。此外,我们讨论了 Pingora 的开发过程中涉及的技术决策和挑战,以及 Cloudflare 的文化和招聘情况。

嘉宾

Yuchen)

主播

时间点

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:科技领域无可匹敌的压倒性存在

链接

爱发电上赞助)