微软分布式应用程序Runtime项目Dapr达1.0

微软在2019年发布的分布式应用程序Runtime开源项目Dapr,现在已经达到1.0,可供开发人员正式用于生产环境。Dapr是一个开源、可移植,由事件驱动的Runtime,让开发人员能更简单地于云计算和边缘,开发微服务、无状态和有状态等应用程序,开发人员不需要解决分布式系统难题,而能专注于业务逻辑的开发。

Dapr项目针对的目标,是那些想要在云计算创建现代应用程序,以及将现有应用程序与组件搬上云计算的使用案例,开发人员可以使用熟悉的技术,在云计算和微服务架构中,构建现代化应用程序。Dapr由一套构建模块组成,模块可通过标准HTTP或gRPC API访问,每个模块都是独立的,一个应用程序可以包含全部或是部分模块。

在最新的1.0版本中,Dapr在性能、安全性和可用性等方面都获得改进。Dapr 1.0现在使用Kubernetes作为主要的托管环境,与Dapr控制平面和边车架构深度集成,让开发者可以在无服务器服务上使用Dapr。

微软也下功夫强化Dapr的性能,现在Dapr具有极低的服务延迟,并且针对高吞吐量使用案例优化,而Dapr所拥有的70多个由社群开发的组件,也都通过一致性测试,以确保这些组件的性能。组件最初从Alpha状态开始,最终成为正式版本,但只有在组件获准成为正式版本后,才可用于Dapr 1.0和生产环境中。

官方提到,由于以微服务架构,创建分布式应用程序非常复杂,为了要防御中间人攻击,开发者可以使用Dapr通过控制平面服务所提供的x.509凭证加密,该凭证会自动更新。而Dapr也提供了ACL,开发者可以精细地控制存储、机密、服务间调用等访问行为,在执行不同的应用程序时,可以使用不同的命名空间进行操作部署和隔离。

Dapr目标是拥抱所有开发社群的语言、框架和工具,开发人员可以通过HTTP和gRPC,在任何程序语言中使用Dapr,而官方提到,这意味着编译时不会包含任何相依项目,Dapr 1.0中包含了Java、.NET、Python和Go的SDK,使用这些SDK,开发人员可以在熟悉的开发环境进行开发,像是VS Code或IntelliJ。目前JavaScript/Node.js、C 、Rust和PHP的SDK仍在预览阶段,会在1.0发布之后对外发布。

Dapr 1.0版本的API都已进入稳定状态,即便在未来需要变更,也会通过版本控制机制,确保API完全向后兼容,当有重大安全问题出现在,也会支持当前与之前的版本。