使用 Rust 构建生产级微服务
这个由sanyi编写的博客系列 “在Rust中构建生产就绪微服务” 涵盖了Rust中构建生产就绪微服务的过程。以下是每篇博客的主要主题总结:
设置工作空间:
为Rust应用程序设置多包工作空间。
添加CLI子命令:
实现一种简单的模式,以向应用程序添加多个CLI子命令。
配置:
从文件或环境变量中加载配置。
Web服务器:
基于Axum启动异步Web服务器。
应用程序状态:
向Rust应用程序添加共享状态。
连接到数据库:
使用sqlx和SeaORM连接到PostgreSQL数据库。
基本CRUD操作:
使用SeaORM实现基本的CRUD操作。
身份验证和授权:
实现简单的登录端点和基于JWT的身份验证和授权。
JWT授权中间件:
添加JWT令牌验证和简单的错误处理方法。
改进错误处理:
改进错误处理,在JSON解析错误时返回JSON响应。
OpenTelemetry:
使用OpenTelemetry将追踪数据转发到SigNoz。
该系列覆盖了从项目设置到数据库集成、身份验证、授权、错误处理和跟踪等一系列主题。每篇博客都提供实际见解和实际示例,指导在Rust中构建生产就绪微服务。
原文链接 https://apatisandor.hu/tags/dog-shelter/
Arc<str>
和 String 性能对比
本文讨论了 Arc 和String之间的性能差异,以及在多线程情况下,为什么有时候String的性能可能超过Arc。
实验结果表明,在单线程情况下,Arc的克隆性能通常优于String。然而,在多线程情况下,Arc的性能可能受到原子引用计数的争用的影响,从而导致性能下降,而String则通过Jemalloc的线程本地内存池避免了这种问题。文章还通过strace命令和内存映射的分析,说明了在不释放String的情况下,Jemalloc可能会导致性能下降,因为它需要频繁地调用mmap系统调用。
总的来说,文章建议在大多数情况下,克隆Arc通常比String更快。但在高度争用的多线程情况下,由于原子引用计数的锁争用,性能可能下降。因此,作者建议在面临性能瓶颈时,不仅仅盲目地优化克隆操作,而是应该仔细测量和评估不同的优化策略。
原文链接 https://blocklisted.github.io/blog/arc_str_vs_string_is_it_really_faster/
通过Rust AWS SDK 探索API 设计
本文介绍了AWS SDK for Rust的设计概述和实际使用指南。主要内容包括SDK结构、配置和认证、三种SDK配置方法、使用AWS服务的基本步骤、Fallible操作和模块、方法命名和返回类型、异步操作和Builder模式的代价、Blob和Bytestream类型、Rust类型系统的有趣方面以及总结展望。
原文链接 https://sanjeevi.hashnode.dev/exploring-the-aws-sdk-for-rust-design-overview-and-practical-usage-guide
--
From 日报小组 BobQ, FBI小白
社区学习交流平台订阅:
Rustcc论坛: 支持rss
微信公众号:Rust语言中文社区