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 Wu
Topics
Yuchen Wu: Cloudflare 开发 Pingora 框架的初衷是为了解决在代理服务中使用 Nginx 和 Lua 的局限性。Nginx 的配置方式难以处理复杂的业务逻辑,而 Lua 语言在处理复杂业务逻辑时性能和可维护性方面也存在不足。Pingora 使用 Rust 语言开发,旨在提供一个灵活、高效且易于扩展的代理服务器框架,让开发者能够更方便地实现自定义的服务器逻辑。Pingora 的设计目标是保持中立,不预设用户的使用方式,将所有决策权留给用户。 在开发过程中,团队面临了诸多挑战,包括 Nginx worker 模型的负载不均衡问题、内存管理问题、以及 ARM 架构上的兼容性问题。通过采用线程池和工作窃取机制,Pingora 解决了 Nginx worker 模型的不足,提高了效率和资源利用率。Rust 语言的内存安全特性也避免了因代码错误导致的崩溃。 Pingora 的开源是团队长期规划的结果,旨在促进社区发展和技术交流,避免重复开发。开源版本在保持核心功能的基础上,对 API 进行了优化,并增加了对 HTTP/2 的支持。团队也积极与其他组织合作,例如与 Let's Encrypt 合作开发 River 项目,进一步丰富 Pingora 的功能和应用场景。 laixintao, NadeshikoManju, laike9m: 三位主持人就 Pingora 项目的背景、技术选型、开发过程、开源策略等方面与 Yuchen Wu 展开了深入的探讨。他们对 Pingora 的设计理念、技术实现以及开源的意义表示了高度的认可。同时,他们也对 Cloudflare 的企业文化和招聘情况表达了浓厚的兴趣。

Deep Dive

Key Insights

为什么 Cloudflare 决定开发 Pingora 框架?

Cloudflare 开发 Pingora 框架是因为他们在使用 Nginx 时发现需要大量的业务逻辑代码而不是配置,而用 Lua 或编写配置并不理想。他们希望通过一个更灵活的框架来满足这些需求,让开发人员可以直接编写业务逻辑代码,而不是受限于配置。

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

Pingora 选择使用 Rust 语言开发是因为 Rust 提供了异步支持和内存安全性,这使得开发更加高效和可靠。此外,Rust 的性能和安全性也符合 Cloudflare 的需求,可以避免 C 语言中常见的内存管理和性能问题。

Pingora 框架的架构设计有哪些特点?

Pingora 框架的设计特点是无意见化(unopinionated),提供了一个灵活的框架,允许开发人员自定义服务器和代理逻辑。它支持 HTTP1 和 HTTP2,并且采用了基于线程的调度方式,所有线程共享同一个连接池,解决了 Nginx 的 worker 模型带来的性能和平衡问题。

Pingora 开源的决策过程是怎样的?

Pingora 开源的决策过程始于开发初期,团队认为这个框架可以开源,并且在内部已经做到了业务逻辑和底层处理的分离。2020 年,Pingora 的核心库已经可以独立使用。2023 年,Cloudflare 与 ISRG 合作,加快了开源进程。

Pingora 开源后有哪些潜在的影响?

Pingora 开源后,可能会吸引更多的开发者和企业使用这个框架。由于 Rust 的内存安全性和异步支持,Pingora 有望成为替代 Nginx 的一个选择。此外,开源也可能促进社区的进一步发展,包括第三方的扩展和优化。

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

Cloudflare 的文化鼓励工程师发起和推动项目,支持创新和技术驱动的发展。公司内部有丰富的流量资源,可以对框架进行充分的测试。Cloudflare 主要在欧洲和美国招聘,提供签证和绿卡支持,吸引全球人才。

Chapters
This chapter explores the reasons behind Cloudflare's development of Pingora, a new framework written in Rust. It highlights the limitations of using Lua with Nginx, such as difficulty in writing complex business logic, and the need for a more flexible and customizable proxy solution.
  • Cloudflare's extensive use of proxies in its services
  • Limitations of using Lua with Nginx for complex business logic
  • Need for a customizable proxy framework

Shownotes Transcript

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

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

嘉宾

Yuchen Wu)

主播

时间点

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

链接

爱发电上赞助)