#stream #tcp-stream #tokio #interface #multiple #connect #multiplexor

tokio-stream-multiplexor-fork

具有类似 TCP 接口的 tokio 流多路复用器

2 个版本

0.5.8 2023 年 1 月 20 日
0.5.7 2022 年 11 月 26 日

34#tcp-stream

MIT 许可证

53KB
1.5K SLoC

Build Status Rust Crates.io Crates.io docs.rs

Tokio 流多路复用器

TL;DR:在单个流上多路复用多个流。具有类似 TcpListener / TcpSocket 的接口,并使用与 TCP 本身类似的 u16 端口。

[dependencies]
foo = "1.2.3"

为什么?

因为有时候你想要将尽可能多的垃圾塞入一个 TCP 流,而不是使用多个端口与你的应用程序连接。

但是为什么要这样做呢?

因为这是我需要的。受 async-smux 启发,为 Tokio 编写。

关于性能?

这个协议在协议中的整个协议不会影响性能吗?

当然,但看看基准测试

throughput/tcp          time:   [28.968 ms 30.460 ms 31.744 ms]
                        thrpt:  [7.8755 GiB/s 8.2076 GiB/s 8.6303 GiB/s]

throughput/mux          time:   [122.24 ms 135.96 ms 158.80 ms]
                        thrpt:  [1.5743 GiB/s 1.8388 GiB/s 2.0451 GiB/s]

大约比 TCP 慢 4.5 倍,但仍然能够以 1.8 GiB/s 的速度推送垃圾...在我看来还不错。(数字可能通过调整配置参数得到改善。)

依赖项

~5–17MB
~175K SLoC