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 SDK4,并尝试快速入门或示例。
有关更多详细信息,请参阅 Javascript SDK5,并尝试快速入门或示例
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
4Workflow Go SDK:ttps://github.com/dapr/go-sdk/tree/main/examples/workflow
5Workflow Javascript SDK: https://github.com/dapr/js-sdk/tree/main/examples/workflow/authoring
6Go SDK 错误解析和处理示例:https://v1-13.docs.dapr.io/developing-applications/sdks/go/go-client/#error-handling