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

使用 Rust 构建生产级微服务

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

  1. 设置工作空间:

  • 为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语言中文社区

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/593248.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android 车联网——CarPropertyService介绍(三)

一、简介 Android CarPropertyService 是一个用于与车辆系统通信的服务。它是 Android Auto 中的一个重要组件,绝大部分与车辆硬件功能相关联的属性,如空调、座舱功能、车辆传感器等都是通过 CarPropertyService 来读取或者设置的。 CarPropertyManager 是 CarPropertyServic…

代码训练营Day.22 | 235. 二叉搜索树的最近公共祖先、701. 二叉搜索树中的插入操作、450. 删除二叉搜索树中的节点

235. 二叉搜索树的最近公共祖先 1. LeetCode链接 力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 2. 题目描述 3. 解法 利用二叉搜索树的特性进行公共节点的判断&#xff1a; 1. 此节点为公共节点&#xff1a;p、q恰好在此节点的左右棵子树上。即…

[足式机器人]Part2 Dr. CAN学习笔记-自动控制原理Ch1-8Lag Compensator滞后补偿器

本文仅供学习使用 本文参考&#xff1a; B站&#xff1a;DR_CAN Dr. CAN学习笔记-自动控制原理Ch1-8Lag Compensator滞后补偿器 从稳态误差入手&#xff08;steady state Error&#xff09; 误差 Error &#xff1a; E ( s ) R ( s ) − X ( s ) R ( s ) − E ( s ) ⋅ K G …

Android 车联网——CarManager管理器续(五)

上篇文章介绍了中的车辆信息服务、车辆传感服务、车内空调系统服务,这一篇我们继续分析剩下的座舱服务、制造商扩展服务。 一、管理器介绍 1、座舱服务 源码位置:/packages/services/Car/car-lib/src/android/car/hardware/cabin/CarCabinManager.java CarCabinManager 提…

Open3D 最小二乘拟合平面——拉格朗日乘子法

目录 一、算法原理二、代码实现三、结果展示本文由CSDN点云侠原创,原文链接Open3D 最小二乘拟合平面——拉格朗日乘子法。爬虫自重。 一、算法原理 设拟合出的平面方程为: a x + b y +

c# 编程点滴--元组

1. 元组 Tuple 是 C# 中表示元组&#xff08;Tuple&#xff09;的数据结构。元组是一个用于存储一组有序元素的数据结构&#xff0c;每个元素可以是不同类型的数据。在 C# 中&#xff0c;元组是值类型&#xff0c;允许存储多个值&#xff0c;并且可以通过索引或者具名字段访问…

声明式管理方(yaml)文件

声明式管理方(yaml)文件: 1、适合对资源的修改操作 2、声明式管理依赖于yaml文件&#xff0c;所有的内容都在yaml文件当中。 3、编辑好的yaml文件需要依靠陈述是还是要依靠陈述式的命令发布到k8s集群当中 create只能创建&#xff0c;不能更新。从指定yaml文件中读取配置&#…

【视野提升】软硬件融合

个体和系统 凯文凯利在他的《失控》一书中提到了一个非常有意思的概念——涌现&#xff0c;简单来说&#xff0c;就是众多个体的集合会涌现出超越个体特征的某些高级的特征。 例如&#xff0c;通过把个体的计算机连接到一个网络&#xff0c;涌现出了互联网这个新兴事物&#x…

unity C# 中通俗易懂LINQ使用案例

文章目录 1. 从数组或列表中查询元素**&#xff1a;2. **排序与分组**&#xff1a;3. **连接多个数据源**&#xff1a;4. **聚合操作**&#xff1a;5. **分页查询**&#xff1a;6. **多条件查询**&#xff1a;7. **转换和投影&#xff08;Select&#xff09;**&#xff1a;8. *…

计算机网络期末复习——计算大题(一)

个人名片&#xff1a; &#x1f981;作者简介&#xff1a;一名喜欢分享和记录学习的在校大学生 &#x1f42f;个人主页&#xff1a;妄北y &#x1f427;个人QQ&#xff1a;2061314755 &#x1f43b;个人邮箱&#xff1a;2061314755qq.com &#x1f989;个人WeChat&#xff1a;V…

SSM养老院综合服务系统----计算机毕业设计

项目介绍 该项目为后台管理项目&#xff0c;分为管理员与护工两种角色&#xff1b; 管理员角色包含以下功能&#xff1a; 管理员登录,个人资料密码管理,用户管理,床位类型管理,床位管理,护工管理,老人管理,咨询登记管理,预约登记管理,老人健康信息管理,费用管理等功能。 护…

MFC用代码加载一张bmp图片到picture control并适应到控件大小 解决OnInitDialog中调用不显示

要使用CImage::Draw的缩放功能来适应控件大小&#xff0c;你需要先获取控件的当前大小&#xff0c;然后根据这个大小来调整图片的绘制尺寸。以下是一个修改后的示例&#xff0c;展示了如何实现这一点&#xff1a; 获取控件大小&#xff1a;首先&#xff0c;获取Picture Control…

1.C++语言的编译器及编译流程

1.C编译器 编译器就是将“高级语言”翻译为“机器语言&#xff08;低级语言&#xff09;”的程序。以下是一些主流的C编译器及其简要用法&#xff1a; GNU Compiler Collection (GCC):’ GCC原名GNU C Compiler&#xff0c;后来逐渐支持更多的语言编译&#xff08;C、Fortran、…

Flutter 四:main.dart简单介绍

main.dart简单介绍 运行结果

CNN——LeNet

1.LeNet概述 LeNet是Yann LeCun于1988年提出的用于手写体数字识别的网络结构&#xff0c;它是最早发布的卷积神经网络之一&#xff0c;可以说LeNet是深度CNN网络的基石。 当时&#xff0c;LeNet取得了与支持向量机&#xff08;support vector machines&#xff09;性能相…

MySQL5.7控制复制源服务器的SQL语句

官网地址&#xff1a;MySQL :: MySQL 5.7 Reference Manual :: 13.4.1 SQL Statements for Controlling Replication Source Servers 欢迎关注留言&#xff0c;我是收集整理小能手&#xff0c;工具翻译&#xff0c;仅供参考&#xff0c;笔芯笔芯. MySQL 5.7 参考手册 / ... …

Vue:Vue 3.4 新特性

Vue 3.4 是 Vue.js 的一个重要更新&#xff0c;它在性能、API 和能上带来了许多改进和增强。 更好的 TypeScript 支持 Vue 3.4 进一步加强了 TypeScript 的集成&#xff0c;提供了更好的类型推断和更丰富的类型定义&#xff0c;使得使用 TypeScript 开发 Vue 应用变得更加顺畅…

看懂 Git Graph

目录 文章目录 目录Git Graph看懂 GraphVSCode Git Graph 插件1. 选择展示的 Branches2. Checkout 到一个 Branch3. 找到指定 Branch 最新的 Commit4. 找到 Branch 分叉口5. 查看 2 个 Commits 之前的区别 Git Graph Git Graph 是服务于 Git 分支管理的一种可视化工具&#xf…

大文件断点下载Range下载zip包显示文件损坏

问题&#xff1a;大文件下载&#xff0c;其它格式的文件及rar格式的压缩包正常下载但是 之后zip包下载后解压失败 原因分析: 1. 查看上传文件的属性值 如图&#xff0c;10.4kb是已经约去小数点的值&#xff0c;准确的大小应该是10663字节10.4130859375KB&#xff0c;所以用10.…

VS Code 远程连接云机器训练配置

VS Code 远程连接云机器 Visual Studio Code&#xff08;以下简称 VS Code&#xff09;是一个由微软开发的代码编辑器。VS Code 支持代码补全、代码片段、代码重构、Git 版本控制等功能。 安装 VSCode步骤简单且网上有很多教程&#xff0c;这里不过多重复了。 VS Code 现已支…