1 个不稳定版本

0.1.0 2024 年 4 月 22 日

#1722异步

LGPL-3.0-only

1.5MB
2K SLoC

Docs Crates.io Build & test Codecov

gwyh: 与你的好友分享八卦 💖 ✨

Homies gossiping

Gwyh(发音为 gwyh)是一个用于在 Rust 中构建基于八卦服务的库。Gwyh 具有一些独特功能,使其运行迅速且特别酷

  • 基于 UDP
  • 内置拥塞控制
  • 超快速传播(广播总是走最快的路径)
  • 100% 异步,基于 Tokio
  • 使用 dryoc 的超快速 XSalsa20 实现内置传输层加密
  • 轻松扩展到数千个节点而不牺牲速度
  • 区域感知,提供多种分发策略可供选择

Gwyh 可以为您提供服务的八卦协议层,但 gwyh 并不适用于所有用途。使用 gwyh 广播的消息不会被确认,也无法保证广播会被送达。Gwyh 的速度是以牺牲许多关于在不可靠或半可靠网络中(主要由于缺乏投递确认)发送数据包的最佳实践为代价的。

然而,不要气馁,因为 gwyh 对于最终一致的系统来说是一个很好的选择,前提是您的协议是幂等的并且可以容忍偶尔丢失的消息。

Gwyh 是为全球分布式网络设计的,在这些网络中,延迟是变化的,最快的路径难以估计。Gwyh 的线协议使用强加密,允许您选择在互联网上使用它而不需要额外的层(如 VPN),尽管实际上这可能不起作用,因为每个 gwyh 实例都必须可到达(即,它不会在 NAT 或负载均衡器后面工作)。

Gwyh 优化了快速发送小消息。在 gwyh 的上下文中,小消息是指可以放入单个 UDP 数据包的消息(略小于 64KiB)。Gwyh 可以 处理多个数据包长度的消息,但这会产生一些额外的开销。例如,在 gwyh 之上构建流协议并不是最佳用途。

协议

有关 gwyh 的底层协议的详细信息,请参阅 docs/PROTOCOL.md

示例

TODO: 在此处添加示例

依赖关系

~10–19MB
~238K SLoC