Dapr v1.0正式发布


今天(2月17日)我们高兴地宣布,分布式应用程序运行时(Dapr)的1.0版本已经达到稳定性与企业就绪目标,可以在生产环境中为用户提供服务。Dapr是一套开源、可移植的事件驱动型运行时,允许开发人员轻松立足云端与边缘位置运行弹性、微服务、无状态以及有状态等应用程序类型。Dapr能够确保开发人员专注于编写业务逻辑,而不必分神于解决分布式系统难题,由此显著提高生产力并缩短开发时长。Dapr降低了构建微服务架构类现代云原生应用程序的入门门槛,而随着此次1.0版本的发布,Dapr应用程序已经能够在生产场景中部署自托管基础设施或Kubernetes集群。

自从2019年10月发布首个版本以来,Dapr已经先后推出过14个版本,其中每个版本都以庞大的社区与用户反馈为基础,在稳定性与性能方面迎来诸多改进。每个版本也都成为构建真实应用程序的基础,旨在反映开发人员在开发云原生应用程序时做出的具体尝试。无论是在云端、边缘位置还是内部基础设施之上,Dapr一直在努力贡献自己的力量,整个社区也面向Davis、AWS、阿里巴巴以及Google云为其带来多种集成性组件。

解决现实场景中的分布式应用程序挑战

自起步阶段,Dapr开源项目就始终以开发人员为本,致力于帮助用户构建全新应用程序、并快速迁移与使用云原生架构中的现有应用程序及组件。Dapr选择了一条务实的发展道路,即积极与开发人员及企业开展交流,在降低实现应用程序现代化难度的同时充分发挥用户们的现有云原生及微服务技能。在1.0版本中,我们选择Kubernetes作为运行生产应用程序的主要托管环境。相信随着Dapr的逐步成熟,后续还将迎来无服务器托管环境。过去一年半以来,我们一直与早期采用者及合作伙伴紧密合作,这也让Dapr成为多种基于Kubernetes的生产与预生产应用程序的运行核心。在这条用户驱动型发展道路当中,Dapr社区改善了Java、.NET以及Python SDK的原生语言体验,通过实际工作负载对大规模运行性能做出测试,新增加多项安全功能,并切实证明Dapr的actor编程模型完全可以成为各类工作流与物联网场景的最佳选项。下面,我们将一同了解部分早期采用者的故事,借此向大家展示目前Dapr的主要应用方式。

蔡司,光学与光电领域的世界级技术领导者

蔡司公司面临的一大挑战,在于维护并更新包含大量硬编码业务规则、且已经拥有20年历史的后端系统。最初的订单验证与路由解决方案基于匹配固定容量的单体式架构,这导致开发人员无法快速更新、重新路由或跟踪订单走向,而只能在系统中面临繁琐的表格重新配置流程。此外,业务部门也无法直接控制其订单处理流程。由于存在大量系统依赖项,任何变更总会带来高昂的时间与资金投入,而且总是需要开发人员亲身参与。为了克服这个难题,蔡司使用Azure加Dapr开发出一款新型应用,能够快速完成客户订单,同时提升开发速度并改善自身业务连续性。感兴趣的朋友请点击此处了解更多。
001.png

Ignition Group,一家专注于客户参与与销售支持工具的南非科技企业

Ignition Group负责开发订单处理软件,用以跟踪产品、管理订阅并处理不同来源的付款操作。订单处理涉及当中涉及与购买跟踪机制相关的多种依赖项,用于调用客户订阅记录、触发记账与计费过程,并选择最适合的支付通道。Ignition Group希望通过微服务架构在工作流逻辑中带来可用性、弹性、可扩展性与性能助益。使用Dapr加.NET Core,Ignition Group构建起一套可扩展性更高、可维护性更强的全新订单处理与付款系统,且目前已经正式投入生产。感兴趣的朋友请点击此处了解更多。

Roadwork,收集数据以获取洞见

Roadwork是一家初创企业,专为各类自主系统提供端到端平台,帮助用户生成可行洞见并据此采取行动。目前,他们专注于数据摄取技术,并不断朝着完全集成化自主系统前进。通过将Dapr与KEDA相结合,他们在Kubernetes上构建起生产服务,可根据传入的客户负载请求自动执行应用程序与集群扩展。Dapr还使用RabbitMQ建立起发布/订阅抽象与集成方案,借此在市场上获得了极具竞争力的消费者模式。Roadwork的首款产品Scraper.ai 目前已经保持良好的生产运行态势。感兴趣的朋友请点击此处了解更多。

社区与生态系统

Dapr 1.0版本的诞生离不开社区的努力。自从首次发布以来,开源社区一直围绕Dapr汇聚与生长。如今,社区贡献者已经由2019年10月的114位发展至700位,短短16个月中增长达6倍!

社区对项目的贡献遍及各个Dapr repo,具体涵盖开放性问题、功能建议评论、应用示例以及代码贡献等等。项目社区成员的核心贡献目标包括Dapr运行时、说明文档、CLI与SDK。另一项重要贡献,则体现为丰富活跃的组件生态系统。如今凭借超过70款组件,Dapr已经成为适用于多种使用场景的解决方案,同时也提供多种开源技术与云服务商集成选项。这一切,都令Dapr成为希望创建高可移植性、云中立应用程序的开发者们眼中的首选方案之一。

除了个人贡献者之外,Dapr社区也迎来了阿里云、HashiCorp、微软等机构以及之前提到了蔡司、Ignition Group等早期采用者。Dapr生态系统还包括合作伙伴技术堆栈,引导开发人员与Dapr一道实现自我提升。例如,借助Dapr使用的标准跟踪协议,New Relic就得以轻松对应用程序进行检测且无需更改任何代码,借此实现了自家监控工具与Dapr的无缝协作。

Dapr项目的一大主要目标,在于建立起开放且包容的社区环境。作为这项承诺的重要组成部分,我们分享了向开放治理模式的过渡经验,希望借此达成Dapr项目开放、供应商中立以及包容性等核心目标。我们将继续推进这段旅程,并希望Dapr能够在不久的将来加入开放软件基金会。此外,我们也诚挚邀请大家通过GitHub、常规Dapr社区呼叫以及近期启动的Discord服务器参与互动。

“在阿里云,我们坚信Dapr将引领微服务架构的发展。通过采用Dapr,我们的客户现在得以更快构建起可移植且高度健壮的分布式系统。”——李响,阿里云高级工程师

发布要点

过去几个月以来,我们先后发布了3套1.0候选版本,希望借此收集社区反馈并为1.0正式版的推出做好准备。我们立足生产就绪诉求对版本的性能、突发、高可用性(HA)以及一致性做出深入探究。感兴趣的朋友请点击此处查看完整的发行版说明,其中涵盖以下要点:

将Kubernetes作为生产环境

在1.0版本中,我们将Kubernetes选定为主要托管环境,并将其与Dapr控制平面及Dapr Sidecar架构深度集成。我们使用Dapr CLI的“init”与“upgrade”命令简化了Dapr在Kubernetes上的安装与升级操作。这些命令能够直接拉取正确的Dpar运行时版本,并确保以受控方式提供相应版本(包括对当前正在使用的证书进行迁移)。你可以在HA模式下安装Dapr控制计划以保证多个实例的正常运行;Dapr边车机制则提供运行状况端点,可通过适配Kubernetes的活动探针轻松确定当前运行状况。在整个候选版本的发布过程中,我们也与早期采用者开展紧密合作,确保他们能够在运营期间轻松迁移至不同Dapr运行时版本,且无需构建新的集群。关于更多详细信息,请参阅相关生产部署指南

性能、一致性与支持

在云原生应用程序中,性能无疑是至关重要的因素之一。Dapr同样对性能给予高度重视。用户们经常提出要求,即希望采用边车模式分担应用程序中的各项高强度作业,并借此权衡数据平面的性能表现。在这方面,我们决定寄希望于服务调用构建块——以此为基础,当通过两个Dpar边车在两款应用程序之间进行调用并收到响应时,Dapr在第90百分位下仅增加约1.2毫秒端到端延迟,在第99百分位下仅增加约2毫秒延迟。这表明Dapr拥有极低的服务到服务延迟,而且已经针对高吞吐量方案做出优化。Dapr社区还开发出超过70种组件,全部组件都经过统一的一展测试以帮助用户建立起充分信心。这些组件首先从alpha阶段起步,最终发展至通用版本以供用户在生产环境中正式使用。目前只有一部分组件以通用版本的形式被纳入1.0版本,但随着其他组件的发展成熟,未来将有更多符合标准的选项进入生产环境。与很多其他开源云原生技术一样,Dapr同样引入了变更、修复与改进选项,能够支持版本实现滚动容器。更重要的是,Dapr 1.0版本承诺API表面的稳定性;如果未来需要更改,项目将通过版本控制机制确保API完全向下兼容。最后是支持方面,如果Dapr出现某些安全问题或者严重隐患,则可通过当前版本及先前版本实现快速修复更新。

安全性

安全性一直是Dapr的核心议题,我们意识到基于微服务架构的现代分布式应用程序往往具有极高的安全复杂度,因此对Dapr进行了多轮独立安全审计。为了抵御应用程序之间的中间人攻击,用户需要使用Dapr通过其控制平面服务发布的x.509加密证书。这种加密机制能够自动更新并持续滚动。为了对状态存储、secret以及服务之间的资源调用行为进行访问控制,或者发布/订阅特定主题,您还需要使用细粒度访问控制策略(ACL)。在使用spiffe作为身份识别标准进行资源访问时,Dapr还提供广泛的ACL选项。您可以在运行过程中在不同命名空间中隔离各应用程序,借此实现操作部署与隔离。下图展示了其中部分安全功能,包括三种使用Dapr安全功能的微服务示例。
002.png

语言与SDK

Dapr提供的语言、框架与工具选项涵盖全体开发者社区。Dapr能够通过HTTP与gRPC协议对接任意编程语言,因此大家在编译过程中不需要使用任何依赖项。但为了改善开发者们的主力语言使用体验,我们在1.0版本中发布了面向Java、.NET、Python以及Go语言的SDK,借此反映各语言成熟的社区生态与应用普及度。这些SDK将帮助您轻松获得自己熟悉的开发环境,包括VS Code或IntelliJ等。目前尚处于预览阶段的JavaScript/Node.js、C++、Rust以及PHP等SDK也将随1.0版本一同发布。其中PHP SDK还包含Actor支持,代表着Dapr仍在不断拓展自己对于编程语言的支持范围。
003.png

展望未来

1.0版本的发布仅仅只是开始,但此举也已经为现代云原生应用程序的构建之路奠定起坚实的基础。Dapr将长期秉持社区驱动的基本定位,包括通过社区投票确定不同项目的优先级(使用Odata在状态管理中查询并过滤多个值的功能,以及在发布/订阅中支持CloudEvents v1.0以根据消息内容过滤出订阅用户所关注事件等,都是社区投票的产物)。在可观察性方面,我们提供专门的API以跟踪应用程序内的事件,帮助大家摆脱特定监控库的束缚、转而通过actor直接发布/订阅事件以建立事件驱动型场景。

其他新的构建块还包括用于读取及写入应用程序配置数据的配置API,可支持Azure配置管理器或GCP配置管理等选项;领导者选择构建块,可用于创建单例实例、同步或锁定语义功能;用于网络级服务调用的透明代理构建块使您可根据URL或DNS地址实现消息路由;此外,断路器、隔板与超时等多种弹性模式构建块也将为您效力。

最后,随着1.0版本的发布,Dapr开始与其他多种开发者框架集成起来,包括ASP.NET Core、Java Spring Boot、Azure Functions以及Logic Apps等。后续,我们还计划引入Django、Nodejs以及Kyma等更多开源代码框架。此外,由于Dapr托管平台具有独立性,因此可以在虚拟机、边缘平台(例如Azure Stack Hub或AWS Outpost)及其他分布式系统平台上优先支持Dapr控制平面,借此实现应用程序的良好可移植性。

立即体验并参与贡献

我们热烈欢迎大家立即体验Dapr 1.0版本。你可以参考说明文档中的入门指南了解如何操作,并通过快速上手攻略进行深入研究。如果你需要更多指导,请参考Dapr社区整合多种应用演示方案的示例repo。除了作为综合指南的Dapr说明文档docs.dapr.io以外,我们还向你推荐学习Dapr、Dapr与.NET微服务实战、以及新近推出的免费电子书写给.NET开发者的Dapr攻略。如果你有任何疑问或者希望与社区成员交互,也欢迎大家访问Discord上的Dapr社区

最后,1.0版本只是Dapr在进军生产环境的第一步。我们要感谢大家为Dapr项目提供的帮助、反馈与贡献。我们期待听到您的意见并与您开展交互。在这个微服务开发的新时代,希望Dapr项目能够释放出您强大的生产力与创造力、显著降低现代分布式应用程序的构建难度、最终成为更多伟大开发成果的实现契机。

原文链接:Announcing Dapr v1.0

0 个评论

要回复文章请先登录注册