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