塔洛斯构建了 Sonic,以在最小延迟的情况下减少从网络读取和写入数据所需的时间

主要观点:Talos 正在构建最佳交易平台,平台性能基准是最小化滑点,减少滑点的一种方式是降低订单到交易的延迟,Sonic 是用于异步网络和 I/O 编程的 Go 库,可改善网络延迟。
关键信息:

  • Sonic 基于 Proactor 模型,能异步处理多个文件描述符,无需同步原语。
  • 为确保读取和编码/写入交易数据的时间上限而创建 Sonic,它在处理并发数据、线程控制和性能以及 UDP 多播支持方面优于 Go 的标准 net 包。
  • 实验表明,使用 Sonic 接收交易所消息时能保持一致的最大延迟,而标准 Go/net 客户端的延迟随连接数增加而变化,Sonic 客户端延迟始终低于 100 微秒。
    重要细节:
  • 减少滑点需降低订单到交易延迟,包括地理位置、操作系统调优和应用逻辑等因素,高效的网络库是关键。
  • Sonic 可在同一 goroutine 中异步处理多个连接,对非延迟敏感部分用 goroutine,对延迟敏感部分用 Sonic。
  • 实验中 Rust TCP 服务器以不同速率发送消息,两个 TCP 客户端分别用 Sonic 和标准网络库接收,在相同主机且无内核中断的情况下测试延迟。
  • 图 1 展示了不同消息速率下 Sonic 与 Go/net 的消息延迟对比,Sonic 表现更优。
  • 可访问[https://github.com/talostradi...]了解更多关于 Sonic 的信息,目前正在寻找用户和贡献者以推进 sonic v1.0.0。
阅读 113
0 条评论