# Rust异步网络编程

Posted liufu627

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了# Rust异步网络编程相关的知识,希望对你有一定的参考价值。

# Rust异步网络编程
Rust的高性能异步网络编程模式目前是基于mio和futures这两个库构建的生态。

Tokio则连接这2个库构建了一个异步非阻塞事件驱动编程平台。

# 什么是 mio,futures,tokio
## 1- Mio
Mio是Rust的轻量级快速低级IO库,专注于非阻塞API,事件通知以及用于构建高性能IO应用程序的其他有用实用程序.

## 特征
快速 - 相当于OS设施级别的最小开销(epoll,kqueue等..)
非阻塞TCP,UDP。
由epoll,kqueue和IOCP支持的I/O事件通知队列。
运行时零分配
平台特定扩展。
平台支持
Linux
OS X
Windows
FreeBSD
NetBSD
Solaris
Fuchsia (experimental)
## 2- futures
Rust中的零成本异步编程库,Futures可在没有标准库的情况下工作,例如在裸机环境中。

提供了许多用于编写异步代码的核心抽象:

> Future是由异步计算产生的单一最终值。一些编程语言(例如javascript)将此概念称为“promise”。
> Streams表示异步生成的一系列值。
> Sinks支持异步写入数据。
> Executors负责运行异步任务。
还包含异步I/O和跨任务通信的抽象。

所有这些是任务系统的基础,它是轻量级线程(协程)的一种形式。使用Future,Streams和Sinks构建大型异步计算,然后将其生成作为独立完成的任务运行,但不阻塞运行它们的线程。

## 3- Tokio
Tokio : Rust编程语言的异步运行时,提供异步事件驱动平台,构建快速,可靠和轻量级网络应用。利用Rust的所有权和并发模型确保线程安全

> 基于多线程,工作窃取的任务调度程序。
> 一个反应器操基于作系统的事件队列(epoll的,kqueue的,IOCP等)的支持。
> 异步TCP和UDP套接字。
这些组件提供构建异步应用程序所需的运行时组件。

## 快速
Tokio构建于Rust之上,提供极快的性能,使其成为高性能服务器应用程序的理想选择。

1. 零成本抽象

与完全手工编写的等效系统相比,Tokio的运行时模型不会增加任何开销。

使用Tokio构建的并发应用程序是开箱即用的。Tokio提供了针对异步网络工作负载调整的多线程,工作窃取任务调度程序。

2. 非阻塞I/O

Tokio由操作系统提供的非阻塞,事件I/O堆栈提供支持。

## 可靠
虽然Tokio无法阻止所有错误,但它的目的是最小化它们。Tokio在运送关键任务应用程序时带来了安心。

1. 所有权和类型系统

Tokio利用Rust的类型系统来提供难以滥用的API。

2.  Backpressure

Backpressure开箱即用,无需使用任何复杂的API。

3. 取消

Rust的所有权模型允许Tokio自动检测何时不再需要计算。Tokio将自动取消它而无需用户调用cancel函数。

## 轻量级
Tokio可以很好地扩展,而不会增加应用程序的开销,使其能够在资源受限的环境中茁壮成长。

1. 没有垃圾收集器

因为Tokio使用Rust,所以不包括垃圾收集器或其他语言运行时。

2. 模块化

Tokio是一个小组件的集合。用户可以选择最适合手头应用的部件,而无需支付未使用功能的成本。

以上是关于# Rust异步网络编程的主要内容,如果未能解决你的问题,请参考以下文章

Tokio 1.0发布,Rust异步编程框架

深入浅出Rust异步编程之Tokio

解密 Rust 异步编程

探索 Rust 异步简化编程

张汉东开讲啦,带你攻克 Rust 异步编程

硬核!Rust异步编程方式重大升级:新版Tokio如何提升10倍性能详解