Dapr是一套开源、可移植的事件驱动型运行时,允许开发人员轻松立足云端与边缘位置运行弹性、微服务、无状态以及有状态等应用程序类型。Dapr能够确保开发人员专注于编写业务逻辑,而不必分神于解决分布式系统难题,由此显著提高生产力并缩短开发时长。Dapr 是用于构建云原生应用程序的开发人员框架,可以更轻松帮助开发人员在 Kubernetes 上构建运行多个微服务,并与外部状态存储/数据库、机密存储、发布/订阅代理以及其他云服务和自托管解决方案进行交互。
2024年3月6日正式发布了1.13版本,,Dapr v1.13 版本提供了几项新功能,组件热重载、Go和Javascript/Typescript SDK对工作流的支持、HTTP服务器的低指标基数、优雅关机,Rust SDK对Actor的支持等。
以下是 v1.13 版本的亮点:
组件热重载
组件“热重载”[3]是一种新的预览功能,启用后,可以自动拾取组件更新,而无需重新启动 Dapr 进程。组件规范已协调,并在 Kubernetes 和自托管模式下运行时生效。
Go 和 JavaScript/TypeScript SDK 对工作流的支持
现在,您可以使用 Go 和 JavaScript/TypeScript 编写具有持久执行能力的容错、基于工作流的应用程序。
有关详细信息,请参阅 Go SDK[4],并尝试快速入门或示例。
有关更多详细信息,请参阅 Javascript SDK[5],并尝试快速入门或示例
HTTP 服务器的低指标基数
Dapr 现在包含一个可选设置,用于为 HTTP 服务器发出的指标启用低基数,这将在 Dapr 1.14 中默认启用。
目前,Dapr HTTP 服务器会发出每个请求路径的指标,据观察,这会导致大量内存使用并产生其他负面性能影响。
启用低基数指标后,HTTP Dapr 服务器的行为更像 gRPC 服务器,并将每个 Dapr API 的请求组合在一起,从而可能显着减少内存消耗。
优雅关机
Dapr 现在接受一个注释或 CLI 标志,该标志会在此持续时间内延迟完全关闭过程,或者直到应用程序报告为不健康 - 以较早者为准。dapr.io/block-shutdown-duration--dapr-block-shutdown-duration
在此期间,所有订阅和输入绑定都将关闭。这对于需要使用 Dapr API 作为其自己的关闭过程的一部分的应用程序非常有用。
运行时和 SDK 中的标准化错误代码
Dapr、PubSub 和 State API 现在具有返回给应用程序的适当和标准化的错误代码,包括基于 gRPC 更丰富的错误模型的丰富错误详细信息。
其余的 API 正在进行中,非常感谢社区对这项工作的贡献,并且非常有影响力。在此处查看有关错误代码的其他信息。
查看每个 SDK 的文档,了解每个 SDK 的错误代码解析和处理。请参阅此处的 Go SDK 错误解析和处理示例[6]。
Actor Reminder 性能改进
现在,您可以选择使用 protobuf 序列化而不是 JSON,使 actor Reminder数据使用 protobuf 序列化,从而在多个 Dapr 实例对同一Reminder运行时提高吞吐量、减少延迟并提高稳定性。启用此功能后,我们观察到 actor 提醒和工作流基准测试的改进高达 40%。此序列化方法将成为 v1.14 中的默认方法。
重要:启用此功能后,您不应将 Dapr 控制平面降级到早期版本,因为您的提醒数据可能会变得不可读。
若要为 actor 提醒启用 protobuf 序列化,请在 Kubernetes 上设置以下 Helm 参数:
在自托管模式下,运行带有标志的 daprd:dapr_placement.maxActorApiLevel=20--max-api-level=20
Rust SDK 对 actor 的支持 (alpha)
您现在可以使用 Rust 来运行 Dapr Actors,这是一种用于高度可扩展的有状态应用程序的编程模型。有关更多详细信息,请参阅 Rust SDK
组件
基于SQLite的本地名称解析器
现在,您可以使用基于 SQLite 的名称解析程序在自承载模式下进行服务调用。这对于处理过滤 mDNS 的公司防火墙和 VPN 非常有用。
PostgreSQL 状态存储 v2
PostgreSQL 有一个新的 v2 实现,其中包含对性能和可靠性的改进。建议新应用程序使用 v2。v1 实现仍受支持,并且未弃用。没有从 v1 到 v2 的迁移路径。
Azure Blob 存储状态存储 v2
Azure Blob 存储具有新的 v2 实现,建议用于所有新项目,因为它修复了具有键前缀的向后不兼容 bug。v1 实现仍受支持,并且未弃用。没有从 v1 到 v2 的迁移路径。
相关链接:
[1]详细了解Dapr: https://docs.dapr.io/concepts/overview/
[2]阅读 Dapr 1.13的发行说明:https://github.com/dapr/blog/blob/v1.13_release_notes/daprblog/content/posts/2024/v1.13-release.md
[3]组件“热重载”:https://v1-13.docs.dapr.io/operations/components/component-updates/#hot-reloading-preview-feature
[4]Workflow Go SDK: ttps://github.com/dapr/go-sdk/tree/main/examples/workflow
[5]Workflow Javascript SDK: https://github.com/dapr/js-sdk/tree/main/examples/workflow/authoring
[6]Go SDK 错误解析和处理示例:https://v1-13.docs.dapr.io/developing-applications/sdks/go/go-client/#error-handling