【Tokio】优势和劣势
作者:互联网
环境
- Time 2022-01-13
- Rust 1.57.0
- Tokio 1.15.0
概念
参考:https://tokio.rs/tokio/tutorial
Tokio 是 Rust 编程语言的异步运行时。它提供了编写网络应用程序所需的构建基础。它提供了针对各种系统的灵活性,从具有数十个内核的大型服务器到小型嵌入式设备。
在高层次上,Tokio提供了几个主要组件:
- 用于执行异步代码的多线程运行时。
- 标准库的异步版本。
- 庞大的异步库生态系统。
Tokio 在项目中的角色
当你以异步方式编写应用程序时,可以通过降低同时执行许多操作的成本来使其更好地扩展。但是,异步 Rust 代码不会自行运行,因此您必须选择运行时来执行它。Tokio 库是使用最广泛的运行时,在使用上超过了所有其他运行时的总和。
此外,Tokio 还提供了许多有用的实用程序。编写异步代码时,不能使用 Rust 标准库提供的普通阻塞 API,而必须改用它们的异步版本。这些替代版本由 Tokio 提供,在能使用的地方,镜像了 Rust 标准库的 API。
Tokio 的优势
本节将概述 Tokio 的一些优点。
快
Tokio 是快速的,建立在 Rust 编程语言之上,Rust 编程语言本身也很快。这是本着 Rust 的精神完成的,其目标是你不应该通过手动编写等效代码来提高性能。
Tokio 是可扩展的,建立在 async/await
语言功能之上,该功能本身是可扩展的。处理网络时,由于延迟,处理连接的速度有限,因此扩展的唯一方法是一次处理多个连接。使用在 async/await
语言功能,增加并发操作的数量变得非常便宜,允许您扩展大量并发任务。
可靠
Tokio 是使用 Rust 构建的,Rust 是一种语言,使每个人都能够构建可靠而高效的软件。研究发现,大约 70% 的高严重性安全漏洞是内存不安全的结果。使用 Rust 可以消除应用程序中的这一类错误。
Tokio 还非常注重提供一致的行为,不会出现意外。Tokio 的主要目标是允许用户部署可预测的软件,这些软件将以可靠的响应时间执行,并且没有不可预测的延迟峰值。
容易
借助 Rust 的 async/await
功能,编写异步应用程序的复杂性已大大降低。与 Tokio 的实用程序和充满活力的生态系统相结合,编写应用程序轻而易举。
Tokio 在有意义时遵循标准库的命名约定。这允许轻松地将仅使用标准库编写的代码转换为使用Tokio编写的代码。借助 Rust 的强大类型系统,轻松交付正确代码的能力无与伦比。
灵活
Tokio 提供了运行时的多种变体。从多线程、任务窃取运行时到轻量级单线程运行时,应有尽有。这些运行时中的每一个都带有许多配置,以允许用户根据自己的需要调整它们。
什么时候不使用 Tokio
尽管 Tokio 对于许多需要同时做很多事情的项目很有用,但也有一些场景,Tokio 并不适合。
- 通过在多个线程上并行运行 CPU 密集型计算来加快这些计算的速度。Tokio 是为 IO 绑定的应用程序而设计的,其中每个单独的任务将大部分时间花在等待 IO 上。如果您的应用程序唯一要做的就是并行运行计算,则应使用 rayon。也就是说,如果你需要同时做这两件事,仍然可以"混合和匹配"。
- 读取大量文件。虽然 Tokio 对于只需要读取大量文件的项目似乎很有用,但与普通的线程池相比,Tokio 在这里没有任何优势。这是因为操作系统通常不提供异步文件 API。
- 发送单个 Web 请求。Tokio 给你带来优势的地方是当你需要同时做很多事情的时候。如果你需要使用一个用于异步 Rust 的库,比如 reqwest,但你不需要一次做很多事情,你应该更喜欢该库的阻塞版本,因为它会让你的项目更简单。当然,使用 Tokio 仍然可以工作,但与阻塞 API 相比,它并没有提供真正的优势。
总结
描述了 Tokio
的优势和劣势,根据具体的场景进行选择。
附录
标签:异步,应用程序,Rust,劣势,优势,Tokio,编写,运行 来源: https://www.cnblogs.com/jiangbo44/p/16083217.html