monoio - 字节基于 io_uring 的异步 Runtime
Monoio 是字节跳动服务框架组开源的基于 io-uring 的 thread-per-core 模型高性能 Rust Runtime,旨在为高性能网络中间件等场景提供必要的运行时。
与 Golang 不同,Rust 语言中标准库并没有提供异步运行时(Runtime),只提供了必要的结构抽象。Runtime 负责与操作系统打交道,并对齐标准库的 Future 和 Waker 等定义,用户可以自主选择 Runtime。
当前被广泛使用的 Runtime 是 Tokio,它提供了类似 Golang 调度器的实现,用户的 Task 可以在多个线程之间被调度,较为有效地利用了多核心的性能。
但问题也随之而来:在部分强依赖高性能低延迟的场景下,调度带来的开销反而是用户不希望看到的。在核心数较多的情况下,调度开销反而会抵消调度带来的好处。
Nginx 和 Envoy 这类组件往往使用 thread-per-core 模型,即多少核心就运行多少线程,一个任务一旦被一个线程所接收,它后续的处理则都在该线程上。这种做法下几乎没有跨线程的开销,提升了 CPU 利用率,可以较好地保持系统的线性扩展性。此外,由于没有跨线程,处理逻辑也可以尽可能地利用 thread local 的便利,多数时候无需加锁便可操作共享数据。
面向这类场景,Monoio 基于 io-uring 致力于提供最佳的性能;另外,我们还定义了一个更适合 io-uring 的 IO trait。
Github: https://github.com/bytedance/monoio/blob/master/README-zh.md
微信公众号文章: https://mp.weixin.qq.com/s/4zuM0DTDh4tztkcm7mHAVQ
Github 发布代码搜索工具
该工具是使用Rust写的,目前属于早期预览阶段,有兴趣的伙伴可以自行在下面地址预申请体验。
Read More: https://github.blog/2021-12-08-improving-github-code-search/
2021年Rust状态调查已发起
又到了这个时候! 是时候让我们看看谁是Rust社区的成员,Rust项目的情况如何,以及我们如何改善Rust的编程体验。Rust社区团队很高兴地宣布我们的2021年Rust状态调查 无论你今天是否使用Rust,我们都想知道你的意见。你的回答将帮助项目了解其优势和劣势,并确定未来的发展重点。
Read More: https://blog.rust-lang.org/2021/12/08/survey-launch.html
中文调查问卷: https://surveyhero.com/c/7rnfv4cf
本周周报
"在Linux内核中增加对Rust作为第二语言的支持 "的补丁系列的v2版发表在了LKML[...] 。
自RFC和链接邮件中描述的v2版以来,对Rust的整体支持有了一些改进。
Read More: https://this-week-in-rust.org/blog/2021/12/08/this-week-in-rust-420/
From 日报小组 Cupnfish
社区学习交流平台订阅:
评论区
写评论问卷耗时真长~!