#服务器 #rpc #协议 #底层 #请求 #路由 #p2p

bin+lib melnet

在 Themelio 中用于点对点通信的底层 RPC 协议

44 个版本

0.2.27 2022 年 7 月 6 日
0.2.25 2022 年 4 月 26 日
0.2.18 2022 年 3 月 23 日
0.1.12 2021 年 9 月 23 日
0.1.1 2021 年 6 月 30 日

#141 in #路由


5 个 crate 中使用 (3 个直接使用)

MPL-2.0 许可证

35KB
821

Melnet 作为 Themelio 的点对点网络层,基于随机拓扑和八卦,将节点分为服务器和客户端。服务器具有公开可达的地址,而客户端没有。它基于简单的 stdcode 请求-响应协议,唯一推送消息的方式是向服务器发送请求。没有多路复用——整个系统的工作方式就像 HTTP/1.1。现在的 TCP 连接相当便宜。

这也意味着客户端永远不会接收到通知,必须轮询服务器。

使用 melnet 的一般方法如下

  1. 创建一个 NetState。它包含路由表、RPC 动词处理程序和其他“全局”数据。
  2. 如果作为服务器运行,则使用 NetState::register_verb 注册 RPC 动词,并在后台运行 NetState::run_server
  3. 使用 Client,例如由 g_client() 返回的全局客户端,向其他服务器进行 RPC 调用。服务器仅通过一个 std::net::SocketAddr 来标识。

依赖关系

~14–48MB
~724K SLoC