49 个版本 (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日

#908网络编程

Download history 11/week @ 2024-04-26 3/week @ 2024-05-03 6/week @ 2024-05-17 120/week @ 2024-05-24 176/week @ 2024-05-31 41/week @ 2024-06-07 6/week @ 2024-06-14 12/week @ 2024-06-21 8/week @ 2024-06-28 123/week @ 2024-07-05 95/week @ 2024-07-12 241/week @ 2024-07-19 150/week @ 2024-07-26 14/week @ 2024-08-02

每月430次下载
2 个包 中使用

AGPL-3.0

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