Hasty Briefsbeta

双语

Jetrelay: A high-performance ATproto relay in 500 LOC

a year ago
  • #linux
  • #pubsub
  • #performance
  • Jetrelay 是一个与 Bluesky 的 'jetstream' 数据流兼容的发布/订阅服务器,通过利用 Linux 内核特性实现高效运行。
  • 该服务器仅需 8 个 CPU 核心即可饱和 10 Gbps 网络连接,其核心在于规避非必要计算。
  • Jetrelay 对基于 TCP 的 WebSocket 实现了类多播行为,能高效地向所有客户端发送相同数据。
  • 关键技术包括:使用 `sendfile()` 绕过用户空间实现零拷贝传输、通过 `io_uring` 以最少系统调用处理大量客户端、利用 `FALLOC_FL_PUNCH_HOLE` 清理旧数据且不影响客户端。
  • 服务器通过内存索引(`BTreeMap`)快速定位时间戳回溯请求对应的数据。
  • 测试显示 Jetrelay 可支持 9000 个客户端并饱和 10 Gbps 连接,其性能随 CPU 核心数线性增长直至受限于网络带宽。
  • 与官方 jetstream 服务器相比,Jetrelay 在'无过滤'场景下吞吐量更高,但缺少客户端级过滤等功能。
  • 文章探讨了推送式网络协议的宏观背景,对比了 ATproto 相对 RSS 的改进(如签名记录和类文件系统数据模型)。
  • Jetrelay 目前是技术演示;生产环境需添加启动回溯、完善 WebSocket 兼容性、安全机制等功能。