< 返回版块

gensmusic 发表于 2024-01-02 14:23

使用 Rust 构建生产级微服务

这个由sanyi编写的博客系列 “在Rust中构建生产就绪微服务” 涵盖了Rust中构建生产就绪微服务的过程。以下是每篇博客的主要主题总结:

  1. 设置工作空间:
    • 为Rust应用程序设置多包工作空间。
  2. 添加CLI子命令:
    • 实现一种简单的模式,以向应用程序添加多个CLI子命令。
  3. 配置:
    • 从文件或环境变量中加载配置。
  4. Web服务器:
    • 基于Axum启动异步Web服务器。
  5. 应用程序状态:
    • 向Rust应用程序添加共享状态。
  6. 连接到数据库:
    • 使用sqlx和SeaORM连接到PostgreSQL数据库。
  7. 基本CRUD操作:
    • 使用SeaORM实现基本的CRUD操作。
  8. 身份验证和授权:
    • 实现简单的登录端点和基于JWT的身份验证和授权。
  9. JWT授权中间件:
    • 添加JWT令牌验证和简单的错误处理方法。
  10. 改进错误处理:
    • 改进错误处理,在JSON解析错误时返回JSON响应。
  11. OpenTelemetry:
    • 使用OpenTelemetry将追踪数据转发到SigNoz。

该系列覆盖了从项目设置到数据库集成、身份验证、授权、错误处理和跟踪等一系列主题。每篇博客都提供实际见解和实际示例,指导在Rust中构建生产就绪微服务。

原文链接

Arc<str>和 String 性能对比

本文讨论了 Arc 和String之间的性能差异,以及在多线程情况下,为什么有时候String的性能可能超过Arc。

实验结果表明,在单线程情况下,Arc的克隆性能通常优于String。然而,在多线程情况下,Arc的性能可能受到原子引用计数的争用的影响,从而导致性能下降,而String则通过Jemalloc的线程本地内存池避免了这种问题。文章还通过strace命令和内存映射的分析,说明了在不释放String的情况下,Jemalloc可能会导致性能下降,因为它需要频繁地调用mmap系统调用。

总的来说,文章建议在大多数情况下,克隆Arc通常比String更快。但在高度争用的多线程情况下,由于原子引用计数的锁争用,性能可能下降。因此,作者建议在面临性能瓶颈时,不仅仅盲目地优化克隆操作,而是应该仔细测量和评估不同的优化策略。

原文链接

通过Rust AWS SDK 探索API 设计

本文介绍了AWS SDK for Rust的设计概述和实际使用指南。主要内容包括SDK结构、配置和认证、三种SDK配置方法、使用AWS服务的基本步骤、Fallible操作和模块、方法命名和返回类型、异步操作和Builder模式的代价、Blob和Bytestream类型、Rust类型系统的有趣方面以及总结展望。

原文链接

--

From 日报小组 BobQ, FBI小白

社区学习交流平台订阅:

评论区

写评论

还没有评论

1 共 0 条评论, 1 页