Oxy:提高可靠性的Fish/Bumblebee/Splicer子系统
💡
原文英文,约1900词,阅读约需7分钟。
📝
内容提要
Cloudflare将大型代理进程拆分为更小的、专业化的服务,以提高系统的可靠性和效率。这篇文章介绍了三个服务:Splicer、Bumblebee和Fish,它们分别处理数据传输、TCP终止和IP数据包转发。Cloudflare使用Unix域套接字进行进程间通信,并使用了文件描述符传递和状态传递的概念来实现优雅的重启。
🎯
关键要点
- Cloudflare将大型代理进程拆分为更小的、专业化的服务,以提高系统的可靠性和效率。
- 介绍了三个服务:Splicer、Bumblebee和Fish,分别处理数据传输、TCP终止和IP数据包转发。
- Splicer负责在两个套接字之间转发数据,允许其他应用程序将长时间运行的代理任务发送给它。
- Bumblebee将IP流升级为TCP套接字,简化了TCP终止的过程,避免了用户空间TCP栈的干扰。
- Fish使用软单播IP空间转发IP数据包,解决了共享IP空间中IP/端口映射管理的复杂性。
- 采用Unix哲学,创建小型可重用服务,提升系统的可靠性和开发灵活性。
- 使用Unix域套接字进行进程间通信,支持文件描述符传递和优雅重启。
- 优雅重启策略允许在不丢失连接的情况下快速终止旧进程,并将挂起请求转移到新进程。
- 通过使用JoinSet管理并发任务,确保在处理请求时的内存压力较低。
- 实现优雅重启需要优雅关闭,确保正在处理的任务是安全可取消的。
- 将复杂的代理应用程序分解为更小的组件,尽管会增加分布式追踪和进程间通信的成本,但性能和可靠性提升是值得的。
🏷️
标签
➡️