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

逃离Java 2020-12-25 09:48:22 ⋅ 161 阅读

Tokio 1.0 稳定版本已发布,Tokio 是 Rust 的异步 runtime,可用于编写快速、可靠的网络应用。Tokio 还提供用于 TCP、UDP、计时器、多线程、工作窃取算法(work-stealing)调度等的 API。

Tokio 团队表示,虽然 Tokio 从四年前刚诞生起就一直在不断发展,不过出现真正的显著变化是在一年前,因为 Rust 在当时才正式支持 async/await。

示例代码

使用 Tokio 编写的基本 TCP echo 服务器:

use tokio::net::TcpListener;
use tokio::io::{AsyncReadExt, AsyncWriteExt};

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let mut listener = TcpListener::bind("127.0.0.1:8080").await?;

    loop {
        let (mut socket, _) = listener.accept().await?;

        tokio::spawn(async move {
            let mut buf = [0; 1024];

            // In a loop, read data from the socket and write the data back.
            loop {
                let n = match socket.read(&mut buf).await {
                    // socket closed
                    Ok(n) if n == 0 => return,
                    Ok(n) => n,
                    Err(e) => {
                        eprintln!("failed to read from socket; err = {:?}", e);
                        return;
                    }
                };

                // Write the data back
                if let Err(e) = socket.write_all(&buf[0..n]).await {
                    eprintln!("failed to write to socket; err = {:?}", e);
                    return;
                }
            }
        });
    }
}

在发布公告中,Tokio 团队还介绍了 Tokio 的知名用户和案例。例如,Discord 通过使用 Tokio 将长尾延迟 (Tail Latency) 降低了 5 倍;Fly.io 使用 Tokio 后轻易满足了性能要求;AWS 的 Lambda 团队也使用 Tokio 实现了更可靠、更灵活的服务。

1.0 作为重要版本更新,Tokio 团队对其稳定性做出了保证,承诺会为 Rust 生态提供稳定的基础设施。Tokio 团队表示目前没有关于 Tokio 2.0 的计划,并承诺至少在 3 年内不发布 Tokio 2.0。他们计划为 1.0 提供至少 5 年的维护支持。

当然,稳定并不意味着 Tokio 停滞不前,Tokio 团队介绍了他们未来要完成的工作:推动 Stream trait 进入 Rust 标准库、实现 io_uring 接口、集成 tracing 以及完善 Tokio 的整体生态。这里的生态就是 Tokio 团队所说的 Tokio stack。举个例子,Tokio 为标准基元 (standard primitives),如 socket 和定时器提供了 runtime 和异步API,但网络应用通常会使用更高级别的协议,如 HTTP 和 gRPC。因此 Tokio stack 会提供 HTTP 的 Hyper 和 gRPC 的 Tonic 以满足需求。

最后,Tokio 团队表示随着 Tokio 的推出,他们会专注于开发 Tower,这是一套用于构建可靠客户端和服务器的可重用组件。

详情查看 https://tokio.rs/blog/2020-12-tokio-1-0

 

全部评论: 0

    我有话说:

    Fizz Gateway 1.1.1 发布,基于 Java异步框架WebFlux开发的微服务网关

    Fizz Gateway 是一个基于 Java异步框架WebFlux开发的微服务网关,能够实现热服务编排、自动授权选择、线上服务脚本编码、在线测试、高性能路由、API审核管理等目的,拥有强大的自定义

    Julia 1.6.0 发布,高性能动态高级编程语言

    Julia 1.6.0 现已发布。Julia 是一个高性能动态高级编程语言。其拥有丰富的函数库,提供了数字精度、精致的增幅器和分布式并行运行方式。核心函数库等大多数库由 Julia 编写,但也用成熟

    Netty 4.1.59.Final 发布异步事件驱动的网络应用框架

    Netty 4.1.59.Final 已经发布。Netty 是一个异步事件驱动的网络应用框架,主要用于可维护的高性能协议服务器和客户端的快速开发。 该版本除了修复各种错误之外,还包含一个安全修复程序

    Netty 4.1.60.Final 发布异步事件驱动的网络应用框架

    Netty 4.1.60.Final 已经发布。Netty 是一个异步事件驱动的网络应用框架,主要用于可维护的高性能协议服务器和客户端的快速开发。本次更新除了修复各种错误之外,还包含了一个安全修复

    Netty 4.1.61.Final 发布异步事件驱动的网络应用框架

    Netty 4.1.61.Final 已经发布。Netty 是一个异步事件驱动的网络应用框架,主要用于可维护的高性能协议服务器和客户端的快速开发。本次更新除了修复各种错误之外,还包含了一个安全修复

    Netty 4.1.65.Final 发布异步事件驱动的网络应用框架

    Netty 4.1.65.Final 已经发布。Netty 是一个异步事件驱动的网络应用框架,主要用于可维护的高性能协议服务器和客户端的快速开发。本次更新除了修复各种错误之外,还包含了一个安全修复

    【开源资讯】JWCloud 专业版 v1.0.0 发布,基于 SpringCloud 研发的微服务框架

    简介 JavaWeb_Cloud 微服务平台是一款基于 SpringCloud 框架研发的分布式微服务框架,主要使用技术栈包括: SpringCloud、Vue、ElementUI

    Python ORM框架SQLAlchemy 1.3.20 发布

    SQLAlchemy 1.3.20 发布了。SQLAlchemy 是一个 Python 的 SQL 工具包以及数据库对象映射(ORM)框架。它包含整套企业级持久化模式,专门用于高效和高性能的数据库

    微型Java开发框架Solon 1.1发布,QPS达10万+

    简介 Solon 是一个微型的Java开发框架。项目从2018年启动以来,参考过大量前人作品;历时两年,2700多次的commit;内核保持0.1m的身材,超高的Web跑分,良好的使用体验

    Martian框架发布 3.0.3 版本,Redis分布式锁

    项目简介 Martian 是一个声明式 API 编程(DAP)框架,可以帮助你快速开发后端服务。 以HttpServer作为 http服务,彻底脱离Tomcat这一类的Web容器和Servlet

    Node异步式I/O和异步编程(三)

     Node.js 最大的特点就是异步式 I/O(或者非阻塞I/O)与事件紧密结合的编程模式。 第一部分: I/O 1.阻塞I/O与非阻塞I/O概念 1.1阻塞I/O(同步I/O) 线程在

    Helidon 2.1.0 发布,Oracle 微服务框架

    Helidon 2.1.0 现已发布,这是一个次要发行版,包含了一些错误修复和增强功能。Helidon 是 Oracle 开源的一个用于编写微服务的 Java 框架,这些微服务运行在由 Netty

    Angular 11.1.0-next.2 发布,Web 前端框架

    Angular 11.1.0-next.2 现已发布,具体更新内容如下: Bug 修复 animations:在浏览器动画生成器中实现 getPosition compiler-cli

    Zig 0.7.0 发布,想要替换 C 的编程语言

    Zig 0.7.0发布,这是一门通用编程语言,专为稳定性、可维护性和性能而设计,追求替代 C 语言在系统编程上的最佳地位。Zig 具有以下值得关注的特性: 手动管理内存 与 C 语言

    gRPC 1.34.0 发布,高性能 RPC 框架

    gRPC Core 的 1.34.0 版已经发布,详细的 gRPC 文档请参阅 grpc.io,此版本包含改进和一些错误修复,下面列出了本次更新的一些重点内容: Core 使用环境变量

    gRPC 1.35.0 发布,高性能 RPC 框架

    gRPC Core 的 1.35.0 已经发布,详细的 gRPC 文档请参阅 grpc.io,此版本包含改进和一些错误修复,下面列出了本次更新的一些重点内容: Core Backport

    gRPC 1.36.0 发布,高性能 RPC 框架

    gRPC 1.36.0 版本已发布。详细的 gRPC 文档请参阅 grpc.io,此版本包含一些改进和错误修复,下面列出了本次更新的一些重点内容: Core 删除在 c-ares DNS

    Apache Beam 2.25.0 发布,大数据流处理与批处理编程范式

    Apache Beam 2.25.0 发布了。Beam 是一个用于定义和执行数据处理管道的统一编程模型,包括 ETL、批处理与流处理。Beam 项目重点在于数据处理的编程范式和接口定义,并不涉及具体

    Apache Beam 2.28.0 发布,大数据流处理与批处理编程范式

    Apache Beam 2.28.0发布,Beam 是一个用于定义和执行数据处理管道的统一编程模型,包括 ETL、批处理与流处理。Beam 项目重点在于数据处理的编程范式和接口定义,并不涉及具体