Rust Web开发常用库

server/2024/10/16 2:30:07/

本集合中所有库都是在开源项目中广泛使用且在2024年积极维护的库,排名靠前的库是当前使用比较广泛的,不全面但够用

Rust异步运行时

tokio:异步运行时

async_std:与标准库兼容性较强的运行时

monoio:字节开源

smol:一个小型快速的运行时

RustWeb框架&网络通信

  • 其他Web框架见https://juejin.cn/post/7406997325715554315

axum:注重人体工程学和模块化的 Web 应用程序框架,Tokio团队开源

axum-server:设计用于axumhyper实现

  • HTTP/1 和 HTTP/2
  • 通过rustls或openssl进行 HTTPS
  • 通过hyper来实现高性能
  • 使用tower制作服务 API
  • 对axum有非常好的兼容性

actix:高性能、异步、强大的路由系统和中间件支持

rocket:简洁的语法、强大的类型安全和可扩展性

volo:字节跳动服务框架团队研发的轻量级、高性能、可扩展性强、易用性好的 Rust RPC 框架,借鉴了actix、axum、hyper、tokio、tonic、tower

  • Thrif
  • gRPC

hyper:底层HTTP实现

  • 专注于实现 HTTP 协议本身,包括解析 HTTP 请求和构建 HTTP 响应

tower:用于构建可组合的网络服务的库,Tokio 官方支持的构建异步网络服务中间件框架,Axum,Tower-web,Tonic 这些项目,都广泛使用了 Tower 这层抽象

  • 适用于构建复杂的网络服务架构,需要灵活地组合各种功能模块的场景
  • 适用于需要在不同的网络协议之间进行切换或同时支持多种协议时的场景

tonic:基于 HTTP/2 和 gRPC 服务的库

  • 支持 gRPC 的双向流、一元调用等特性,也可以作为HTTP/2处理使用
  • 适用于需要构建高性能的分布式系统,并且使用 gRPC 或 HTTP/2 进行通信的场景

prost:Protocol Buffers的Rust实现,Tokio出品

  • 支持proto2、proto3

tonic-build:tonic-build可以为 Rust 生成服务端和客户端的代码框架

serde:高效且通用地序列化和反序列化 Rust 数据结构的框架

reqwest:添加重试机制可以提高与外部服务交互的可靠性

ipnet:网络地址转换

mime:Media Type,媒体类型(也通常称为多用途互联网邮件扩展或 MIME 类型)是一种标准,用来表示文档、文件或一组数据的性质和格式

  • application/javascript; charset=utf-8
  • text/css; charset=utf-8

Rust错误处理

anyhow:捕获错误

thiserror:自定义错误

failure:使错误处理更加结构化和可维护

Rust配置管理

dotenvy:设置开发与生产环境,可在.env文件中读取配置

Rust时间和日期

chrono:操作时间日期、时间感知

uuid:生成uuid

Rust数据处理

serde_json:JSON 序列化和反序列化

base64:用于 Base64 编码和解码

hex:十六进制编码和解码

Rust数据验证

validator:数据验证

  • 检查字符串的长度、格式等
  • 验证数字的范围
  • 检查邮箱地址、URL 等格式的正确性

schemars:Json验证

  • 兼容serde

valico:Json验证

Rust图像处理

image:图像处理功能,包括加载、保存、转换图像格式、调整大小、裁剪等

Rust音频处理

rodio:用于音频播放和录制

Rust服务发现、配置管理、服务管理

rnacos:用于与rnacos交互

rs_consul:用于与 Consul 进行交互的 Rust 库。Consul 是一个流行的服务发现和配置管理工具

etcd_client:用于与 etcd 分布式键值存储进行交互,etcd 也可以用于服务发现

zookeeper_client:与 ZooKeeper 进行交互

zookeeper:与 ZooKeeper 进行交互的客户端

serde_yaml_ng:可以用于解析、序列化 YAML 格式的配置文件,结合标准库的文件操作std::fs可以实现配置管理

Rust日志管理、可观测性

tracing:Tokio维护,分布式跟踪的 SDK,全面的、可扩展的跟踪和诊断工具,用于采集监控数据,也可以用作日志,注重跟踪

tracing-subscriber :提供了一组订阅器(subscribers),用于消费和处理 Tracing 生成的事件。订阅器可以用于输出日志到不同的目标,比如控制台、文件等

tracing-appender:Tokio维护,用于将 Tracing 事件输出到不同目标的 appender。它可以帮助将日志记录到文件、标准输出等不同的位置,

tracing-error:将 Rust 的错误类型与 Tracing 的 span 相关联的库

tracing-log:用于将 Tracing 事件转换为标准的 log 框架(如 log crate)事件的工具。这使得 Tracing 可以与其他使用 log 框架的库协同工作

tracing-opentelemetr:提供了一个集成 Tracing 和 OpenTelemetry 的桥梁。它允许将 Tracing 生成的跟踪信息转换为 OpenTelemetry 格式,以便与 OpenTelemetry 的生态系统进行集成

opentelemetry:用于收集分布式系统中的跟踪、指标和日志数据

opentelemetry-otlp:Opentelemetry 的一个组件,用于将跟踪和指标数据发送到 OpenTelemetry Protocol(OTLP)兼容的后端,如 Zipkin、Jaeger 等

slog:功能强大的日志库,支持多种后端,如控制台、文件、系统日志,更注重结构化日志记录

log:基础的日志库,支持不同的日志级别,如error!warn!info!debug!trace!

env_logger:通过读取环境变量来配置日志级别和输出格式,可以结合log使用

clap:以声明式或程序式的方式创建命令行解析器,提供参数行为、帮助生成、用户建议修复、彩色输出、shell补全等命令行功能

Rust与k8s

kube:包含一个 Kubernetes 客户端、一个控制器运行时、一个自定义资源派生和各种工具

Rust数据库

sqlx:异步sql工具包

  • 手动编写 SQL 语句并进行参数绑定
  • 适合对性能有较高要求且需要精细控制 SQL 查询的场景
  • 适合当开发者希望充分利用 Rust 的类型系统来确保数据库操作的正确性时使用
  • 数据库支持
DatabaseVersionDriverURL
MariaDB10.1+mysqlmysql://root:root@localhost:3306
Microsoft SQL Server2019mssql (等待完全重写驱动)
MySQL5.6, 5.7, 8.0mysqlmysql://root:root@localhost:3306
PostgreSQL9.5+postgrespostgres://root:root@localhost:5432
SQLite3.20.1+sqlitesqlite:./sqlite.db?mode=rwc

seaql:查询生成器,支持 MySQL、Postgres 和 SQLite

  • 允许以类型安全的方式构建复杂的 SQL 查询
  • 强调查询的灵活性和可组合性,可以方便地构建动态查询
  • 适用于需要构建复杂 SQL 查询的项目,尤其是那些对查询的灵活性和可维护性要求较高的场景
  • 适用于对不同数据库以统一方式构建查询的场景
  • 数据库支持
DatabaseDriver
MariaDBsqlx-mysql
MySQLsqlx-mysql
PostgreSQLsqlx-postgres
SQLitesqlx-sqlite
rusqliterusqlite

sea-orm:依赖于sqlx,基于seaql构建的异步动态ORM框架,是对seaql的扩展

  • 提供了更全面的对象关系映射(ORM)解决方案

  • 适合希望以面向对象编程(OOP)的方式进行数据库操作的项目

  • 对于大型项目或者需要进行复杂数据库操作和实体关系管理的场景,SeaORM可以提高开发效率

  • 数据库支持

DatabaseURL
MySQLmysql://root:root@localhost:3306
PostgreSQLpostgres://root:root@localhost:5432
SQLite(在文件中)sqlite:./sqlite.db?mode=rwc
SQLite(在内存中)sqlite::memory:

Rust AI

burn:用 Rust 构建的极高的灵活性、计算效率和可移植性的深度学习框架,是一个高级别的机器学习框架,可以用如Candle这类低级别的深度学习框架作为后端

  • WGPU (WebGPU):跨平台 GPU 后端
  • Candle:使用 Candle 绑定的后端
  • LibTorch:使用 LibTorch 绑定的后端
  • NdArray:使用 NdArray 原语作为数据结构的后端
  • autodiff:将反向传播引入任何后端后端装饰器
  • Fusion:将内核融合引入支持它的后端后端装饰器

candle_core:Huggingface维护的机器学习框架


http://www.ppmy.cn/server/126851.html

相关文章

SpringCloud入门(十)统一网关Gateway

一、网关的作用 Spring Cloud Gateway 是 Spring Cloud 的一个全新项目,该项目是基于 Spring 5.0,Spring Boot 2.0 和 Project Reactor 等响应式编程和事件流技术开发的网关,它旨在为微服务架构提供一种简单有效的统一的 API 路由管理方式。 …

基于RBAC的通用权限管理系统的详细分析与实现(实现篇-Spring Security安全管理框架)

安全可以说是公司的红线了,一般项目都会有严格的认证和授权操作,在Java开发领域常见的安全框架有Shiro和Spring Security。 Shiro是一个轻量级的安全管理框架,提供了认证、授权、会话管理、密码管理、缓存管理等功能。 Spring Security是一…

AQS原理(AbstractQueuedSynchronizer)

本篇为 [并发与多线程系列] 的第四篇,对应Java知识体系脑图中的 并发与多线程 模块。 这一系列将对Java中并发与多线程的内容来展开。 AQS原理(AbstractQueuedSynchronizer) AQS原理(AbstractQueuedSynchronizer)AQS整…

Python知识点:如何使用Raspberry Pi与Python进行边缘计算

开篇,先说一个好消息,截止到2025年1月1日前,翻到文末找到我,赠送定制版的开题报告和任务书,先到先得!过期不候! 如何使用Raspberry Pi与Python进行边缘计算 Raspberry Pi是一款广受欢迎的小型单…

移动端的每日任务,golang后端数据库应该怎么设计

推荐学习文档 golang应用级os框架,欢迎stargolang应用级os框架使用案例,欢迎star案例:基于golang开发的一款超有个性的旅游计划app经历golang实战大纲golang优秀开发常用开源库汇总想学习更多golang知识,这里有免费的golang学习笔…

491. 递增子序列

文章目录 491. 递增子序列思路回溯三部曲总结 491. 递增子序列 491. 递增子序列 给你一个整数数组 nums ,找出并返回所有该数组中不同的递增子序列,递增子序列中 至少有两个元素 。你可以按 任意顺序 返回答案。 数组中可能含有重复元素,如…

std::map

std::map是C标准库中的一个关联容器&#xff0c;它基于红黑树实现&#xff0c;用于存储键值对。与标准数组或向量不同&#xff0c;std::map允许你根据键来快速检索、插入和删除元素。正如std::vector包含在< vector >头文件中&#xff0c;std::map包含在< map >头文…

【Swift官方文档】7.Swift集合类型

集合类型 使用数组、集合和字典来组织数据。Swift 提供了三种主要的集合类型&#xff1a;数组、集合和字典&#xff0c;用于存储值的集合。数组是有序的值集合。集合是无序的唯一值集合。字典是无序的键值对集合。 Swift 中的数组、集合和字典始终清晰地指明它们可以存储的值…