【Rust日报】2024-01-01 使用 Rust 构建生产级微服务

💡 原文中文,约1300字,阅读约需3分钟。
📝

内容提要

本文总结了使用Rust构建生产级微服务的过程,包括设置工作空间、添加CLI子命令、配置、Web服务器、应用程序状态、连接到数据库、基本CRUD操作、身份验证和授权、JWT授权中间件、改进错误处理和OpenTelemetry。另一篇文章讨论了Arc和String之间的性能差异,以及在多线程情况下String可能超过Arc的原因。第三篇文章介绍了AWS SDK for Rust的设计概述和实际使用指南。

🎯

关键要点

  • 使用Rust构建生产级微服务的过程包括设置工作空间、添加CLI子命令、配置、Web服务器、应用程序状态、连接到数据库、基本CRUD操作、身份验证和授权、JWT授权中间件、改进错误处理和OpenTelemetry。

  • 设置工作空间:为Rust应用程序设置多包工作空间。

  • 添加CLI子命令:实现一种简单的模式,以向应用程序添加多个CLI子命令。

  • 配置:从文件或环境变量中加载配置。

  • Web服务器:基于Axum启动异步Web服务器。

  • 应用程序状态:向Rust应用程序添加共享状态。

  • 连接到数据库:使用sqlx和SeaORM连接到PostgreSQL数据库。

  • 基本CRUD操作:使用SeaORM实现基本的CRUD操作。

  • 身份验证和授权:实现简单的登录端点和基于JWT的身份验证和授权。

  • JWT授权中间件:添加JWT令牌验证和简单的错误处理方法。

  • 改进错误处理:在JSON解析错误时返回JSON响应。

  • OpenTelemetry:使用OpenTelemetry将追踪数据转发到SigNoz。

  • Arc和String之间的性能差异:在单线程情况下,Arc的克隆性能通常优于String,但在多线程情况下,String可能表现更好。

  • 在多线程情况下,Arc的性能可能受到原子引用计数的争用影响,而String通过Jemalloc的线程本地内存池避免了这种问题。

  • 建议在性能瓶颈时仔细测量和评估不同的优化策略,而不是盲目优化克隆操作。

  • AWS SDK for Rust的设计概述包括SDK结构、配置和认证、使用AWS服务的基本步骤、异步操作和Builder模式的代价等。

🏷️

标签

➡️

继续阅读