# 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
Android
iOS
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是一個小組件的集合。用戶可以選擇最適合手頭應用的部件,而無需支付未使用功能的成本。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM