51 个版本 (5 个稳定版)
| 1.1.0-rc.1 | 2024 年 7 月 25 日 |
|---|---|
| 1.0.2 | 2024 年 6 月 3 日 |
| 1.0.0-rc.1 | 2024 年 3 月 19 日 |
| 0.15.19 | 2024 年 1 月 25 日 |
| 0.2.0 | 2017 年 4 月 20 日 |
在 网络编程 中排名 134
每月 470 次下载
在 8 crate 中使用
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