Volo 0.10.0 正式发布!

本文主要讲解关于Volo 0.10.0 正式发布!相关内容,让我们来一起学习下吧!

Volo 0.10.0 正式发布!

Volo 是字节跳动服务框架团队研发的 高性能、可扩展性强 的 Rust RPC 框架,使用了 Rust 最新的 AFIT 和 RPITIT 特性。

文章来源|CloudWeGo 开源社区

Volo 0.10.0 版本中,我们更多地关注可扩展性和易用性。

01 Break Change

错误处理重构

原先的错误类型存在诸如语义不清晰、可维护性不强、可扩展性不强、容易误用等问题,因此在新版中,我们重构了整个错误处理部分,极大加强了错误处理部分的语义清晰度和可维护性,并通过类型系统降低误用概率。

迁移指南

Server Handler 迁移

  1. 如果原先使用 anyhow::Result,把anyhow:Result改为 volo_thrift::ServerResult 即可:

Volo 0.10.0 正式发布!

  1. 如果原先使用 Result<XResp, anyhow::Error> ,将 anyhow::Error 改为 volo_thrift::ServerError 即可:

Volo 0.10.0 正式发布!

  1. 如果原先使用了 Exception 的用户,需要将返回类型 Result<XResp, volo_thrift::UserException<XException>>改为Result<volo_thrift::MaybeException<XResp, XException>,volo_thrift::ServerError>,同时将原先返回 Err(UserError::UserException(exception)) 的地方改为使用  Ok(MaybeException::Exception(exception)) 即可:

Volo 0.10.0 正式发布!

  1. 如果改完之后,在返回 anyhow::Error 时出现报错,可以手动加一个 .into()

Volo 0.10.0 正式发布!

  1. 如果改完之后,在 ? 返回错误处出现报错,可以尝试先转换成 anyhow::Error 再返回。

Volo 0.10.0 正式发布!

Service 中间件迁移

对于不感知用户错误的中间件来说,本次修改应该不带来 break change;如果有需要感知用户错误,那么只需要把原来的 volo_thrift::Error 改为 volo_thrift::ServerError/ClientError 即可。

Client 迁移

client 部分的错误从原来的 ResponseError 改为了 ClientError,按编译器报错提示匹配新的错误 variant 即可。

IDL 管理文件 volo.yml 格式重构

新版 yml 配置的结构更加清晰,且更易于维护,并主要解决了旧版中无法支持 git 跨仓库引用的问题,具体的功能和配置参数见 config。另外,对于 volo-cli 命令行工具,我们将之前的 idl 命令名字修改为了 repo。

config: www.cloudwego.io/zh/docs/vol…

迁移指南

安装 volo-cli 0.10.0 版本,并在 volo.yml 目录下执行 volo migrate 命令即可自动迁移。

默认生成的 Enum 类型修改

在新版生成代码中,默认生成的 Enum 类型修改为了 i32 wrapper 的 newtype 类型,以便于更好的向前兼容 IDL enum 字段中枚举值的修改。

迁移指南

将 enum 字段中枚举值名字修改为对应生成的名字即可,如 Foo::Bar -> Foo::BAR

02 完整 Release Note

完整的 Release Note 可以参考 Volo Changelog。

项目地址

GitHub:github.com/cloudwego

官网:www.cloudwego.io

以上就是关于Volo 0.10.0 正式发布!相关的全部内容,希望对你有帮助。欢迎持续关注程序员导航网,学习愉快哦!

版权声明:juejinhot 发表于 2024-05-01 10:25:24。
转载请注明:Volo 0.10.0 正式发布! | 程序员导航网

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...