Cloudflare 发布了 Pingora 框架的第二个版本,旨在使用 Rust 语言开发安全、高性能的网络服务。该代理使用 Pingora 构建,已在 Cloudflare 内容交付网络中代替 nginx 使用了大约一年,每秒处理超过 40 万个请求。该代码是用 Rust 编写的,并根据 Apache 2.0 许可证发布。
Pinora 的主要特点:
- 支持 HTTP/1 和 HTTP/2(计划中的 HTTP/3),以及使用自己的协议或 UDP/TCP 创建服务的能力。
- 以异步模式多线程处理请求的可能性。
- 支持附加回调处理程序和过滤器,允许您管理请求处理的各个阶段,以及修改、重定向、阻止和记录请求和响应。
- 代理 gRPC 和 WebSocket。
- 可连接的负载平衡器。
- 无需重新启动即可更改配置的能力。
- 支持在不中断连接的情况下更新应用程序代码。
- 发生故障(故障转移)时进行负载切换的方法。
- 与各种监控和日志记录系统(Syslog、Prometheus、Sentry、OpenTelemetry)集成。
- 支持 TLS 加密(使用 OpenSSL 或 BoringSSL)。
- 现成的 Rust 包用于创建 HTTP 代理、使用网络协议、解析 HTTP 标头、计费和限制流量、负载平衡、使用 Ketama 分布式哈希表、维护 RAM 中的缓存以及异步处理超时。
新版本的变化包括:
- 添加了对为其他 HTTP/2 标头设置过滤器的支持。
- 添加了更改 TCP 传入数据包缓冲区大小的功能。
- 添加了 body_bytes_read() 函数。
- 添加了cache_not_modified_filter过滤器。
- 添加了记录 TLS 密钥的功能。
- 添加回调函数purge_response。
来源: opennet.ru
