#mio #状态机 #IO #机器 #状态 #循环 #事件

rotor

基于 mio 的框架,用于以简单和可组合的方式执行 I/O

10 个版本 (5 个重大更改)

使用旧的 Rust 2015

0.6.3 2016 年 3 月 21 日
0.6.2 2016 年 3 月 4 日
0.5.1 2016 年 2 月 4 日
0.4.0 2016 年 1 月 4 日
0.1.0 2015 年 8 月 17 日

#887异步

Download history 68/week @ 2023-12-13 74/week @ 2023-12-20 32/week @ 2023-12-27 42/week @ 2024-01-03 79/week @ 2024-01-10 60/week @ 2024-01-17 45/week @ 2024-01-24 35/week @ 2024-01-31 51/week @ 2024-02-07 75/week @ 2024-02-14 69/week @ 2024-02-21 116/week @ 2024-02-28 86/week @ 2024-03-06 90/week @ 2024-03-13 96/week @ 2024-03-20 91/week @ 2024-03-27

每月 388 次下载
9 crates 中使用

MIT 许可证

55KB
1K SLoC

转子

状态Alpha
示例TCP 回显服务器TCP 客户端(telnet)
生态系统使用 rotor 的库和应用程序
文档http://tailhook.github.com/rotor/

基于 mio 的 rust 框架,用于以简单和可组合的方式执行 I/O。

rotor 核心(此 crate)基本上包括

  • 一个事件循环处理程序(在 mio 的术语中),它将 mio 事件转换为特定状态机的事件
  • 一种 Future 类型,它允许以安全高效的方式在状态机之间进行通信
  • 一种简单的方式将多个库(例如多个协议处理程序)组合成一个单一的 mio 事件循环

最终,rotor 是构建在顶部上的最小化核心。它小于 0.5KLoC。

您通常需要使用一些更高级的抽象。例如,您应该使用流抽象(尚未实现)来制作 TCP 协议解析器。

资源

这两个都是目前相当历史的

基准测试

这些基准测试基于 旧版本的 此示例。希望我们很快会有更新的基准测试。

只有少数微基准测试,以显示框架有良好的性能。

在几岁旧笔记本电脑(i7-3517U CPU @ 1.90GHz)上的性能

> wrk -t2 -c 400 https://127.0.0.1:8888/
Running 10s test @ https://127.0.0.1:8888/
  2 threads and 400 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency    11.19ms   18.03ms 627.44ms   99.54%
    Req/Sec    19.66k     1.76k   21.93k    81.00%
  391170 requests in 10.01s, 32.83MB read
Requests/sec:  39071.42
Transfer/sec:      3.28MB

在较新的桌面级 CPU(i7-4790K CPU @ 4.00GHz)上的性能

> ./wrk -t 2 -c 400 http://127.0.0.1:8888
Running 10s test @ http://127.0.0.1:8888
  2 threads and 400 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency     2.24ms    1.56ms 126.94ms   99.91%
    Req/Sec    91.35k     2.27k   93.76k    98.00%
  1818133 requests in 10.00s, 152.58MB read
Requests/sec: 181781.96
Transfer/sec:     15.26MB

注意:这两个基准测试都是在 单线程 服务器上运行的。

这些基准测试太早了(不是 HTTP 的完整实现),因此没有列出比较基准测试。

依赖关系

~3.5MB
~70K SLoC