49 个版本 (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日 |
#908 在 网络编程
每月430次下载
在 2 个包 中使用
1.5MB
33K SLoC
sozu_lib,一个代理开发库
sozu_lib
提供了工具,可以编写无需停机即可重新配置的代理。请参阅 examples/http.rs
以获取使用一个集群启动 HTTP 代理的小示例。
代理以事件循环开始,您可以通过 Channel
与之通信。您可以通过该通道发送消息来添加或删除集群。每个消息都有一个标识符,事件循环将使用该标识符进行回答。
代理实现以不同的方式处理前端和后端配置。单个集群可以有多个后端服务器,但也可以响应不同的主机名和各种 TLS 证书。所有这些设置都可以独立于当前活跃的连接进行更改。例如,当客户端仍在代理到该服务器时,可以从配置中删除后端服务器。应该可以稍后强制关闭这些连接中的许多。
探索源代码
parser/
:目前仅包含 HTTP 1.1 解析器lib/src/buffer_queue.rs
:数据缓冲实现lib/src/protocol/
:HTTP、HTTP2、TLS 握手和管道代理lib/src/{http|https|tcp}.rs
:HTTP、HTTPS 和 TCP 代理lib/src/server.rs
:所有代理共享的主要事件循环lib/src/socket.rs
:普通套接字抽象
使用或不用 SIMD 构建
SIMD 代表单指令多数据,在 Kawa 依赖项中使用它来加速解析。
Kawa 使用 SSE 指令集实现 SIMD,这是 Intel 的特定指令集。如果您希望在另一台架构(例如 MacOS)上使用 Sōzu,您可以通过以下操作禁用此功能
cargo build --no-default-features
依赖项
~19–30MB
~573K SLoC