51 个版本 (5 个稳定版)

1.1.0-rc.12024 年 7 月 25 日
1.0.2 2024 年 6 月 3 日
1.0.0-rc.12024 年 3 月 19 日
0.15.19 2024 年 1 月 25 日
0.2.0 2017 年 4 月 20 日

网络编程 中排名 134

Download history 10/week @ 2024-04-29 3/week @ 2024-05-06 20/week @ 2024-05-20 152/week @ 2024-05-27 193/week @ 2024-06-03 23/week @ 2024-06-10 4/week @ 2024-06-17 16/week @ 2024-06-24 46/week @ 2024-07-01 3/week @ 2024-07-08 351/week @ 2024-07-15 298/week @ 2024-07-22 125/week @ 2024-07-29 41/week @ 2024-08-12

每月 470 次下载
8 crate 中使用

LGPL-3.0

425KB
10K SLoC

sozu-command-lib,用于与 Sōzu 代理通信的工具

Sōzu 代理可以通过 Unix 套接字接收动态配置更改。此库定义了通信协议、消息格式、所需的结构、序列化和反序列化代码。

命令消息在 protobuf 中定义

Protobuf 是一种语言无关的二进制序列化格式,用于在系统之间和语言之间高效地传输结构化数据。

想法是只在这个格式中定义一次数据,以便各种语言的库可以将其转换为各自的格式。

所有类型都在 command.proto 文件中定义。Sōzu 接收并发送两种主要类型

  • 请求
  • 响应

在 protobuf 中看起来像这样

// A message received by Sōzu to change its state or query information
message Request {
  oneof request_type {
    // save Sōzu's parseable state as a file, with a path
    string save_state = 1;
    // load a state file, given its path
    string load_state = 2;
    /*
    40 more requests
    */
  }
}
// Response to a request
message Response {
    // wether the request was a success, a failure, or is processing
    required ResponseStatus status = 1 [default = FAILURE];
    // a success or error message
    required string message = 2;
    // response data, if any
    optional ResponseContent content = 3;
}

这些以二进制形式序列化,而不是像 JSON 这样的纯文本格式。

响应可以有 3 种可能的状态

  • Ok:任务已完成
  • Failure:发生了不可恢复的错误
  • Processing:任务已启动,但可能不会立即完成

例如,在软关闭中,关闭消息被发送到所有工作进程,并通过发送带有 Processing 状态的响应来确认消息:在软关闭中,工作进程停止接受新的连接,但保持活跃的连接,并在它们不再活跃时退出。一旦所有连接完成,工作进程将发送带有相同 id 和 Ok 状态的响应。

依赖项

~7–17MB
~223K SLoC