Dapr 是一个开源、可移植的、事件驱动的运行时,可以帮助开发人员构建在云和边缘上运行的弹性的、微服务的、无状态和有状态应用程序,并且关注于业务逻辑而不用考虑分布式相关的问题,相关的问题可以交给Dapr来解决。
2022年4月8日正式发布了1.7 版本, 这是这是自Dapr v1.0 发布以来的第七次小版本更新,Dapr 1.7.0 版本的贡献者数量非常多。我们要感谢所有 83 位新的和现有的贡献者,他们帮助我们完成了这个版本。这次更新的内容很多都是大家期待的功能,例如:支持离线部署、更多的成熟Stable组件等,接下来我们一起来看看更新的内容。
跨Dapr API配置重试、超时和断路器
这部分我也写了一篇文章:Dapr 弹性的策略,Dapr 1.7.0 实现了第一阶段目标。分布式应用程序通常由许多服务组成,任何给定应用程序都有数十个甚至数百个实例。这些应用程序并非孤立存在,而是多次依赖于数据库、缓存、发布/订阅、秘密存储和其他基础设施服务。随着更多的依赖关系,系统故障的可能性增加,例如:由于硬件故障、数据库运行缓慢、请求数量过多、应用程序重新启动/横向扩展,或其他原因,实例可能会失败或无响应。设计和实施具有容错能力(检测、缓解和响应故障的能力)的应用程序,可以使您的应用程序恢复到正常运行状态并自我修复,还有助于防止一系列的故障,包括基础设施服务故障。
Dapr 提供了通过弹性规范定义和应用容错弹性策略的能力。弹性规范保存在与组件规范相同的位置,并在 Dapr sidecar 启动时应用。Sidecar确定如何将弹性策略应用于您的 Dapr API 调用。在弹性规范中,您可以为流行的弹性模式定义策略,例如:
- 超时
- 重试
- 断路器
然后可以将策略一致地应用于目标,其中包括:
- 通过服务调用的应用程序
- 组件
- Actors
在可观测性方面进一步加强
为了提高操作的可见性,组件中添加了新的指标,包括发布/订阅、绑定、状态存储等。例如:
- 使用组件时的延迟
- 调用给定组件的次数
Dapr 运行时将事件记录到标准输出以便于诊断,例如:列出启动时加载的组件的其他运行时信息。
使用此版本,您现在可以:
- 打开应用程序和 Dapr sidecar 之间API 调用的日志记录
- 在输出日志中查看这些调用
组件改进
以下组件已升级为稳定版本,特别是MQTT 发布订阅组件进入稳定状态,对于在边缘计算的采用提供了一个非常好的支持:
- MQTT 发布/订阅
- RabbitMQ 发布/订阅
- Azure Blob 存储绑定
- Azure CosmosDB 绑定
- Azure 服务总线队列绑定
在这个版本中添加了3个状态组件,现共有22个状态组件。
- CockroachDB 状态存储组件
- NATS JetStream 状态存储组件
- Oracle 数据库状态存储组件
在现有组件中加入了新的功能:
influxdb绑定现在支持查询。在这个版本中,现在共有 97 个组件,包括 41 个绑定、1 个配置、8 个 HTTP 中间件、3 个名称解析、13 个 pub/sub、8 个秘密存储和 23 个状态存储。
功能从预览版移至稳定版
在至少两个版本可用并征求反馈和修复后,一些功能从预览状态变为稳定状态。此版本中的以下功能现已稳定:
- Actor重入
- gRPC 代理
- 自动状态存储加密,包括添加对使用 128 位、192 位和 256 位密钥大小的新支持
CLI 更新
▌Kubernetes 命名空间支持
CLI 的命令 components, configurations, 和 list 在返回的输出结果中支持Kubernetes的命名空间
▌简化证书的更新
- 引入了dapr mtls renew-certificate命令,可以更轻松地解决集群中的根证书到期和续订问题。
- -k 如果根证书到期时间不足 30 天,任何使用 Kubernetes 选项的 CLI 命令现在都会引发警告消息。
在自托管模式下安装 Dapr 的新方法
▌私有和备用映像注册表(预览)
在自托管模式下,CLI init命令现在可以:
- 指定任何私有注册表以提取安装 Dapr 所需的容器Image。
- 提供选择公共 Docker hub 或 Github 存储库的能力。这使您能够:
将Image放置在您选择的受信任存储库中。
在Image 限制的情况下从不同的公共资源中提取。
▌离线安装(预览)
默认情况下,Dapr 会下载二进制文件并从网络中提取Image 来设置开发环境。在此版本中,无论是使用 Docker 还是silm环,Dapr 现在可以支持使用预下载的制品进行离线安装。每个 Dapr 版本的制品现在都内置在Dapr Installer Bundle中,可以从repo :https://github.com/dapr/insta... 下载。通过将此安装程序包与 Dapr CLI init命令一起使用,从而实现离线安装。
性能改进
Unix Domain Sockets现在在 Kubernetes 上可用,现在,您可以在使用注释 dapr.io/unix-domain-socket-path 调用 Dapr sidecar 时将 Unix Domain Sockets 与 Kubernetes(以及自托管)一起使用,可提高吞吐量并降低延迟。
如果您不熟悉 Dapr,请点击文末按钮,前往学习页面。
本文作者:张善友
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。