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

tokio-stream-multiplexor

具有类似TcpListener / TcpSocket接口的tokio流复用器

15个版本 (4个重大变更)

0.5.6 2021年11月26日
0.5.5 2021年11月26日
0.4.3 2021年11月26日
0.3.1 2021年11月23日
0.1.0 2021年11月21日

#33#tcp-stream

每月47次下载

MIT 许可证

52KB
1.5K SLoC

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

Tokio Stream Multiplexor

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–18MB
~178K SLoC