开源微服务运行时 Dapr 发布 1.0 版本

简介: Dapr 是 2019 年 10 月开源的分布式运行时。早在 Dapr 开源初期,阿里云就开始参与 Dapr 社区建设和代码开发,目前已有两位 Dapr 成员,是 Dapr 项目中除微软之外代码贡献最多的公司。作为 Dapr 项目的早期采用者,阿里在 Dapr v1.0 发布之前就在内部小规模的试点。本文由 Dapr 社区成员敖小剑翻译。

分布式应用程序运行时现在已经生产就绪啦!

今天,我们很高兴地发布分布式应用运行时(Distributed APplication Runtime / Dapr)的 v1.0 版本,它已经达到了生产就绪所需的稳定性和企业准备。Dapr 是一个开源、可移植、事件驱动的运行时,它使开发人员能够轻松地构建运行在云平台和边缘的弹性而微服务化的应用程序,无论是无状态还是有状态。Dapr 让开发人员能够专注于编写业务逻辑,而不是解决分布式系统的挑战,从而显著提高生产力并减少开发时间。Dapr 降低了基于微服务架构构建现代云原生应用的准入门槛,而通过此次发布的 v1.0 版本,Dapr 应用可以部署到生产场景中的自托管基础设施或 Kubernetes 集群。

自 2019 年 10 月首次发布 以来,Dapr 已有 14 个版本,每个版本都建立在大量的社区和用户反馈基础上,以推动改进、稳定性和性能。这些版本立足于构建真实的应用,反映了当今开发者在开发云原生应用时的实际情况;无论是在云平台、边缘还是私有基础设施上,社区都在加紧贡献与 Azure、AWS、阿里巴巴和 Google cloud 集成的 Dapr 组件。

解决现实世界场景中的分布式应用挑战

从成立之初开始,Dapr 开源项目就面向那些正在构建新的现实世界绿色地带(greenfield)应用的开发者,以及那些在云原生架构中迁移和利用现有应用和组件的开发者。Dapr 方法的关键是满足开发者和企业的现状,帮助他们实现应用的现代化,并利用他们在云原生和微服务架构中的现有技能。在 v1.0 版本中,我们专注于将 Kubernetes 作为运行生产应用的主要托管环境,随着 Dapr 的进一步成熟,我们希望在无服务器(serverless)环境中看到 Dapr。在过去的一年半时间中,我们与早期采用者和合作伙伴紧密合作,因此 Dapr 现在已经成为多个基于 Kubernetes 的生产和预生产应用的核心。在这个用户驱动的过程中,Dapr 社区改进了 Java、.NET 和 Python SDK 的原生语言体验,用真实的工作负载测试了规模和性能,增加了安全特性,并证明了 Dapr 的 Actor 编程模型是工作流和物联网(IoT)场景的最佳选择。以下是一些早期采用者的故事,以凸显 Dapr 如今的使用情况。

蔡司:光学和光电子领域的国际技术领导者

ZEISS 面临的挑战是维护和更新一个具有 20 年历史的带有硬编码业务规则的后端系统。原来的订单验证和路由解决方案是基于一个具有固定容量的单体架构,开发人员在不直接在系统中重新配置表格的情况下,无法轻松的更新、重新路由或跟踪订单。此外,业务部门无法直接控制其订单处理流程。由于存在大量的系统依赖,变更总是需要代价高昂而耗时的开发人员干预。为了解决这个问题,ZEISS 使用 Azure 和 Dapr 开发了一个新的应用程序,可以更快地完成客户订单,同时还加快了开发速度,并改善了公司的业务连续性。你可以在 这里 关于他们的故事。

 

Ignition Group:一家位于南非的技术企业,专注于客户承诺和销售支持工具

Ignition Group 打造的订单处理软件可以跟踪产品、管理订阅和处理来自各种来源的支付。订单处理涉及许多依赖,有一个采购跟踪机制,这个机制会调用客户订阅,触发会计和计费流程,并确定适当的支付渠道。Ignition Group 希望微服务能给其工作流逻辑带来好处——高可用性、弹性、可扩展性和性能。使用 Dapr 和 .NET Core,Ignition Group 构建了一个新的、可扩展性更好的、可维护的订单处理和支付系统,该系统目前已在生产中运行。Ignition Group 今天已经运行在生产中,你可以在 这里 关于他们的故事。

Roadwork:采集数据洞若观火

Roadwork 是一家为自主系统提供端到端平台的初创公司,让用户产生可执行的洞察力并据此行动。目前,他们专注于数据提取技术,并以全面集成自主系统为路径。通过对 Dapr 与 KEDA 的梳理,他们在 Kubernetes 上创建了一个生产服务,根据传入的客户负载请求,自动扩展应用和集群。Dapr 提供了使用 RabbitMQ 的 pub/sub 的抽象和集成,其能够轻松拥有 竞争消费者模式。今天,Roadwork 的第一个产品 Scraper.ai 已经在生产中运行。在 这里 了解更多信息。

社区和生态系统

是社区的努力让 Dapr 成长到 v1.0。自 Dapr 首次公布以来,开源社区团结在 Dapr 周围并不断成长,令人惊叹——从 2019 年 10 月的 114 个贡献者增长到今天的 700 个。在短短的 16 个月内,增长了 6 倍多!

社区对项目的贡献涉及到 Dapr 的每一个仓库,范围包括提交问题、参与功能提案讨论、提供样本,当然也包括贡献代码。社区成员对项目贡献最大的部分包括 Dapr 运行时、文档、CLI 和 SDK。另外一个关键的贡献领域是创建了一个丰富的组件生态系统。可供开发人员使用的组件超过 70 个,使 Dapr 成为一个可以适用于广泛场景的解决方案,包括开源技术和云提供商的特定集成。当开发人员希望创建具有高可移植性的云平台无关的应用程序时,这些使得 Dapr 成为一个有吸引力的选择。

贡献并不局限于个人,还包括阿里云、HashiCorp、微软等组织,以及上文提到的 ZEISS 和 Ignition Group 等早期采用者。Dapr 生态系统还包括合作伙伴的技术栈,这些技术栈为使用 Dapr 的开发者提供了附加值。例如,New Relic 提供了关于他们的监控工具如何与 Dapr 无缝工作的指导,这要归功于 Dapr 使用的标准跟踪协议,这些协议可以在不改变任何代码的情况下轻松地检测您的应用程序。

培养一个开放和包容的社区是 Dapr 项目的首要目标。作为该承诺的一部分,我们分享了 向开放治理模式的过渡,这也是我们保持 Dapr 开放、供应商中立和包容性的方式。我们的愿景是继续这一旅程,并打算在不久的将来让 Dapr 加入一个开放软件基金会。同时,我们邀请您通过 GitHub、Dapr 社区定期会议 和最近推出的 Discord 服务器 与 Dapr 社区互动。

"在阿里云,我们相信 Dapr 将引领微服务的发展。通过采用 Dapr,我们的客户现在可以以更快的速度来构建可移植和健壮的分布式系统。"

—— 阿里云资深技术专家 李响

发布亮点

在最近的几个月中,我们已经发布了三个 v1.0 版本的候选版本,专注于从社区获得反馈,并为 v1.0 版本做准备。在性能、安全、高可用性(HA)和一致性等方面更深入地关注于生产就绪。完整的发布说明可以在 这里 获得,以下是一些亮点:

作为生产环境的 Kubernetes

对于 v1.0 版本,Kubernetes 是首选的托管环境,它与 Dapr 控制平面和 Dapr sidecar架构深度集成。例如,在运维上,通过 Dapr CLI "init" 和 "upgrade" 命令简化了 Dapr 在 Kubernetes 上的安装和升级,这些命令可以拉取正确的 Dapr 运行时版本,并确保这些版本以受控的方式推出,包括迁移正在使用中的证书。您可以在 HA 模式下安装 Dapr 控制平面,确保多个实例同时运行,而且 Dapr sidecar 有一个健康端点,可以实现 Kubernetes 就绪(readiness)和活泼度(liveness)探针以确定其健康状态。在整个发布候选版本的过程中,我们与早期采用者密切合作,以确保他们能够以可运维的方式迁移到每个 Dapr 运行时版本,而不是构建新的集群。请参阅 生产部署指南 以了解更多信息。

性能、一致性和支持

在云原生应用中,性能是至关重要的,而 Dapr 对高性能非常重视。一个经常被提起的话题是,由 sidecar 模型为应用程序完成所有繁重工作所带来的影响,以及数据平面性能的权衡取舍。其中一个特别关注的领域是服务调用构建块,在这里,当通过两个 Dapr sidecar 在两个应用之间调用并收到响应时,Dapr 在 p90 时增加了约 1.2ms 的端到端延迟,在 p99 时增加了约 2ms。由此可见,Dapr 具有极低的服务间延迟,并针对高吞吐量场景进行了优化。

Dapr 有超过 70 个由社区开发的组件,为了确保对这些组件的使用信心,它们要经过一系列的一致性测试。组件首先从 alpha 状态开始,最终达到 GA 状态,并需要用户在生产中使用它们。对于 v1.0 版本,只有部分已经在生产中广泛使用的组件被批准为 GA,其他组件在满足标准后也将加入其中。与众多开源云原生技术一样,变更、修复和改进的引入速度很快,这意味着受支持版本存在滚动窗口。重要的是,Dapr v1.0 版本宣称 API 层面是稳定的,如果未来需要修改,将通过 版本机制 来保证 API 的完全向后兼容,如果需要破坏性的修改,则会提前几个版本注明。最后,从支持的角度来看,当前和之前的版本都将支持 在出现关键问题或安全问题时进行补丁更新。

安全

安全一直是 Dapr 的核心主题,因为我们已经认识到基于微服务架构构建安全的现代分布式应用的复杂性,而 Dapr 已经通过了多项独立的安全审计。为了抵御应用程序之间的中间人攻击,您需要进行加密,而 Dapr 通过其控制平面服务发出的 x.509 证书提供加密,这些证书会自动更新和滚动。为了提供对资源的访问控制,如状态存储、密钥、服务间调用,或发布/订阅特定主题的能力,您需要细粒度的访问控制策略(ACL)。当使用 spiffe 作为身份标准访问资源时,Dapr 提供了广泛的 ACL。当运行应用程序时,您可以将这些应用程序隔离在不同的命名空间中,以便进行运维部署和隔离。这些广泛的安全能力在下图中显示,这里有三个利用 Dapr 安全特性的微服务:

3.png

编程语言和 SDK

Dapr 以其编程语言、框架和工具拥抱所有的开发者社区。Dapr 被设计为可以通过 HTTP 和 gRPC 协议从任何编程语言中使用,这意味着您不需要在编译时包含任何依赖关系。当然,为了改善开发者的原生语言体验,Java、.NET、Python 和 Go 的 SDK 也以 v1.0 生产就绪的形式发布,这反映了它们在社区和组织中的成熟应用。这些 SDK 可以让您作为开发者,使用您最喜欢的开发环境,如 VS Code 或 IntelliJ。JavaScript/Node.js、C++、Rust 和 PHP 的 SDK 目前处于预览阶段,随后将发布 v1.0 版本。PHP SDK 包括对 Actor 的支持,这是社区为 Dapr 广泛且不断增长的编程语言列表做出贡献的一个极佳的例子。

 

展望未来

通过这个 v1.0 版本,我们为构建现代云原生应用所需的基本构建块奠定基础的旅程才刚刚起步。社区驱动意味着社区将在未来的版本中设定项目的优先级,其中许多优先级已经被投票通过。例如,增强现有构建块的亮点,包括在状态管理中使用 OData 查询和过滤多个值的能力。在 pub/sub 中,支持 CloudEvents v1.0 过滤功能,以根据消息内容过滤出用户感兴趣的事件。在可观测性方面,提供一个 API 用于 从应用中追踪事件,防止您不得不绑定到特定的监控类库,并使 actor 能够直接订阅 pub/sub 事件,从而开启了丰富的事件驱动场景。

新的构建块提案包括用于读写应用程序配置数据的配置 API,例如来自 Azure Configuration Manager 或 GCP Configuration Management。领导者选举构建块,提供创建单例实例、同步或锁定语义能力。用于网络级服务调用的透明代理构建块,使您能够根据 URL 或 DNS 地址来路由消息,以及用于熔断器、隔离舱和超时等模式的更多弹性构建块。

最后,在 v1.0 版本中,Dapr 集成了多个开发者框架,包括 ASP.NET Core、Java Spring Boot、Azure Functions 和 Logic Apps,而我们认为这还将继续,更多的开源框架如 Django、Nodejs 和 Kyma 都是潜在的例子。此外,考虑到 Dapr 的托管平台独立性,在虚拟机、边缘平台(如 Azure Stack Hub 或 AWS Outpost)和其他分布式系统平台上提供对 Dapr 控制平面一流的支持,可以实现应用的可移植性。

开始和贡献

我们希望您能试用 Dapr v1.0。您可以使用文档中的 入门指南 进行学习,然后通过 快速入门 来深入了解。如果你需要更多信息,样本库 是 Dapr 社区捐赠的不同的应用程序的展示。Dapr 文档 docs.dapr.io 是全面的指南,还有几本书,包括《 Learning Dapr》、《使用 Dapr 和 .NET 实践微服务》以及最新发布的免费电子书《Dapr for .NET 开发者》。如果您有任何疑问,遇到问题或想与社区的其他成员交流,Dapr 社区随时在 Discord 上欢迎您的到来。

对于 Dapr 来说,v1.0 版本的发布只是一个开始,在这个过程中,我们感谢并鼓励您的持续帮助、反馈和贡献。无论是编写新的组件,提出建议,贡献新的构建块,还是增强您最喜欢的语言的 SDK,我们都希望听到您的意见并与您一起参与。在这个微服务开发的时代,作为一名开发者,这是一个令人兴奋的时刻,Dapr 将释放您的生产力和创造力,轻松构建现代化的分布式应用。我们非常高兴的看到您继续使用这个项目,看到您使用它进行构建,并对 Dapr 的发展保持关注。

译者注

  1. 英文原文来自 Dapr 官方网站博客文章 Announcing Dapr v1.0。
  2. 译者所在的阿里云云原生团队深度参与了 Dapr 1.0 的开发,同时也正在内部小规模的试点 Dapr ,稍后将分享阿里云在 Dapr 上的实践。
  3. 文中提到的 《 Learning Dapr》 一书,译者所在的团队正在翻译中,预计很快就将出版发行,欢迎关注。
  4. Dapr 中文社区 目前正在组织翻译 Dapr 的官方文档,预计不久将完成部分章节并在官方上线,同样欢迎关注,更欢迎一起参与。

译者简介

敖小剑,资深码农,十九年软件开发经验,微服务专家,Service Mesh 布道师,Servicemesher 社区联合创始人。专注于基础架构,Cloud Native 拥护者,敏捷实践者,坚守开发一线打磨匠艺的架构师。曾在亚信、爱立信、唯品会、蚂蚁金服等任职,对基础架构和微服务有过深入研究和实践。目前就职于阿里云云原生应用平台从事 Service Mesh、Serverless、Multiple Runtime 等云原生产品设计和开发。

原文链接

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/514214.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何应用数据模型

简介: 数据模型对于常规的数据查询或填写数据提交,是否有使用场景或者价值?数据模型这条路走的是否有问题? 一 前言 Vmo 是我在 18 年发布的一个工具库,用于快速创建数据模型,当时我写了一篇文章《Vmo 前端…

一行代码,揭开 CPU 执行原理!

作者 | 轩辕之风O来源 | 编程宇宙技术计算机如何执行你的代码?知乎上有人提问:电脑怎样执行编程语言的?很多刚刚入坑的小白可能对此完全没有概念,或者模模糊糊知道个大概,我们写下的一行行代码,计算机到底是…

有赞 Flink 实时任务资源优化探索与实践

简介: 目前有赞实时计算平台对于 Flink 任务资源优化探索已经走出第一步。 随着 Flink K8s 化以及实时集群迁移完成,有赞越来越多的 Flink 实时任务运行在 K8s 集群上,Flink K8s 化提升了实时集群在大促时弹性扩缩容能力,更好的降…

mysql怎么看端口号_mysql端口号(怎么查看mysql的端口号)

mysql端口号(怎么查看mysql的端口号)2020-05-07 21:54:58共10个回答如何查看mysql的端口号1使用命令showglobalvariableslikeport;查看端口号2修改端口,编辑/etc/my.cnf文件,早期版本有可能是my.conf文件名,增加端口参数,并且设定端口,注意该端口未被使用,保存退出.总结:注意修…

Serverless 如何在阿里巴巴实现规模化落地?

简介: 2020 年,我们在 Serverless 底层基建上做了非常大的升级,比如计算升级到了第四代神龙架构,存储上升级到了盘古 2.0,网络上进入了百 G 洛神网络,整体升级之后性能提升两倍;BaaS 层面也进行…

php验证mysql内数据_MySQL中数据类型的验证_MySQL

CHARchar (M) M字符,长度是M*字符编码长度,M最大255。验证如下:mysql> create table t1(name char(256)) default charsetutf8;ERROR 1074 (42000): Column length too big for column name (max 255); use BLOB or TEXT insteadmysql>…

专访合一智芯杨桦:做AI芯片核心技术的底层设计师

核心IP设计是国产化芯片的关键,杨桦是这个细分领域的一名创业者。作为曾在威盛电子和ARM公司工作过的芯片领域的老将,他一直追寻的目标就是给“中国芯”最好的设计。 作者 | 王查娜 来源 | 中国高新网 深研AI芯片设计 杨桦本科毕业于北京航空航天大学…

Flink SQL 性能优化:multiple input 详解

简介: 在 Flink 1.12 中,针对目前 operator chaining 无法覆盖的场景,推出了 multiple input operator 与 source chaining 优化。该优化将消除 Flink 作业中大多数冗余 shuffle,进一步提高作业的执行效率。本文将以一个 SQL 作业…

Java异步非阻塞编程的几种方式

简介: Java异步非阻塞编程的几种方式 一、 从一个同步的Http调用说起 一个很简单的业务逻辑,其他后端服务提供了一个接口,我们需要通过接口调用,获取到响应的数据。 逆地理接口:通过经纬度获取这个经纬度所在的省市区…

张一鸣 90 亿购得元宇宙入场券,谁将是头号玩家?

整理 | 禾木木 出品 | CSDN云计算(ID:CSDNcloud) VR 技术不断发展,虚拟网络世界“元宇宙”的概念也愈加火热,VR 已经不再局限于游戏与影视,它将作为降本增效的工具服务于更多行业领域。 8月29日&#xf…

前端开发:如何正确地跨端?

简介: 面对多种多样的跨端诉求,有哪些跨端方案?跨端的本质是什么?作为业务技术开发者,应该怎么做?本文分享阿里巴巴ICBU技术部在跨端开发上的一些思考,介绍了当前主流的跨端方案,以及…

mysql 创建表check如何使用_MySQL怎么使用check约束

在数据库中,CHECK 约束是指约束表中某一个或者某些列中可接受的数据值或者数据格式(用于限制列中的值的范围)。在一些情况下,我们需要字段在指定范围的输入,例如:性别只能输入 男或者女,余额只能大于0等条件&#xff0…

2020年,这个算法团队都干了啥?

简介: 什么是算法?什么是广告算法工程师?算法工程师又是如何定义的?今天作者将就算法、电商算法为主题和我们分享他的理解,同时还将和我们分享ICBU算法团队的整体工作和2020年的一些重要技术突破。 写在最前 我个人有…

为了让你在“口袋奇兵”聊遍全球,Serverless 做了什么?

简介: 江娱互动是一家新兴的游戏企业,自 2018 年成立伊始,江娱互动就面向广阔的全球游戏市场,通过创造有趣的游戏体验,在竞争激烈的游戏市场占得一席之地。仅仅 2 年的时间,江娱互动就凭借 Topwar&#xff…

mysql批量插入 增加参数_MySql 的批量操作,要加rewriteBatchedStatements参数

MySql 的批量操作,要加rewriteBatchedStatements参数作者:赵磊博客:http://elf8848.iteye.com--------------------------------结论 ---------------------------------MySql 非批量 10万条记录, 5700条/秒MyS…

为开发者而生 | 2021 SuperMap开发者大会议程全公布

如果地理信息产业是一片江湖 SuperMap开发者大会 则是一场卧虎藏龙的群英会 技术卓越的大侠们在此一展风采 精通各路应用的绝世门派在此切磋技艺 一起修炼顶级武功秘籍 致敬技术极客精神 为开发者而生(D4D) 9月15日-18日 2021 SuperMap开发者大会…

Flink 如何实时分析 Iceberg 数据湖的 CDC 数据

简介: 数据湖的架构中,CDC 数据实时读写的方案和原理 本文由李劲松、胡争分享,社区志愿者杨伟海、李培殿整理。主要介绍在数据湖的架构中,CDC 数据实时读写的方案和原理。文章主要分为 4 个部分内容: 常见的 CDC 分析…

mysql 加载数据校验_mysql 导入数据后的校验程序

参考mysql导入样本数据库employees之后的数据校验,可以使用md5或者sha,原理与思路:首先在将要备份的数据库中生成每个表里的每行每列数据的累加计算md5值,接着hardcode在测试单元文件中,作为期望值。以下是md5的校验方…

如何通过事务消息保障抢购业务的分布式一致性?

简介: 在柔性事务的多种实现中,事务消息是最为优雅易用的一种。基于阿里云RocketMQ高性能、高可用的特点,完全可以胜任抢购业务这类高并发大流量的场景。但引入事务消息机制在实现高性能的同时,也增加了整体的业务复杂度。我们需要…

海量秋招面试资料等你来拿!你离大厂也许并不远

秋招在即,你还在为秋招如何准备而发愁吗?你还在为拿不到大厂offer而苦恼吗?工欲善其事,必先利其器。金秋开学季,CSDN助力你的技术学习与成长,为你免费提供海量大厂面试资料,让你的秋招不再慌乱&…