云原生开源开发框架Dapr 1.0发布!

Posted 开源中间件

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了云原生开源开发框架Dapr 1.0发布!相关的知识,希望对你有一定的参考价值。

作为2020年最有价值的开源项目,Dapr正式发布了1.0版本,它由微软公司出品,目前标记为生产可用的云原生开发框架。


之前我们阐述过“云原生”的技术意义,和一些buzzword不同,Cloud Native的确是软件设计重大变革,可以为软件开发带来更高的生产力。


原有的软件是构建在操作系统,或者是企业级网络之上的,我们熟悉的 JEE,微服务架构都是这样。当扩展到云计算/全球化异域部署/万物互联,采用各种云服务时,软件设计架构并没有同步很好跟进。比如很多互联网公司的大规模架构经验,往往是通过避免状态和事务做到工作节点的大量复制,再采用分布式的中间件产品来进行状态数据的同步来实现的,在某种程度,这种实践算是妥协,而并不是真正面向云的架构。


当容器技术成熟后,serverless,流式处理等广泛采纳后,互联网应用架构变得更加多样异构化,不但有不同的操作系统,数据库,编程语言,更重要的是应用面对各种运行环境,可能是公有云,私有云,也可能运行在开发者的笔记本之上。


微软公司一直在编程模式的梳理方面就是领导者,虽然在某种意义来说缺席参与Java生态,但在编程体系,云环境等领域始终有好的思路和引领。Dapr就是这样一个开源的云原生编程框架。


Dapr的核心是若干个building block,我们暂且称之为构造程序块,有以下几种:

  • Service-to-service invocation,服务到服务调用,是我们熟悉的方法调用,可以通过HTTP或者gRPC访问。

  • State management,状态管理,可以保存应用程序的状态,支持Redis等若干种方式。

  • Publish and subscribe,发布和订阅,类似消息服务,可以通过消息或者事件来通知其他应用。

  • Resource bindings,资源绑定,分为input和output绑定,直接对接输入输出数据,可以简化编程。

  • Actors,活动者模式,Dapr提供actor支持,可以满足分布式协作的大多数要求。

  • Observability,观察能力,包括 metric, log, and trace信息,提供分布式数据监测信息。

  • Secrets,安全,存储安全相关信息。


Dapr提供了各个主流的编程语言SDK,通过SDK和对应接口,开发者可以用擅长的语言来编程。


在过去,软件开发常用的数据信息通道包括:数据库(文件),RPC同步接口,异步消息和事件等。如今以容器为边界,可以通过多种方式交互,Dapr默认使用Http和gRPC双通道进行信息传递。


Dapr支持两种部署方式:本地容器和K8s(Kubernetes)。这个思路太好了!尽管K8s是当前最成功的容器编排工具,但K8s发展到现在,更多面向运维者而不是开发者,具有较高复杂性。我也非常赞同新的软件架构以容器作为基本单元,容器边界为分隔,引入sidecar模式来简化编程模型和提供丰富的开发工具。K8s可以作为一个增强的可选项,而不是必须的基础设施。


Dapr采用go语言开发,基本构成有dapr(cli工具), daprd(守护进程), inject(注入工具), operator(支持K8s模式), placement(actor实例发现服务), sentry(证书管理工具)。


Dapr框架内容丰富,本文只能简要阐述主要内容,欢迎有兴趣的朋友深入交流探讨。


以上是关于云原生开源开发框架Dapr 1.0发布!的主要内容,如果未能解决你的问题,请参考以下文章

云原生开发框架dapr环境搭建:CLI安装和初始化

云原生应用和微服务发展主流趋势

微服务的扫地僧--Dapr中文v1.5发布!

Dapr v1.9.0 版本已发布

Quarkus:面向Java开发人员的云原生开源框架

Quarkus:面向Java开发人员的云原生开源框架