暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Dapr:一种全新思路的分布式应用开发框架

编程阁楼 2021-04-05
1361

What is Dapr?

Dapr helps developers build event-driven, resilient distributed applications. Whether on-premises, in the cloud, or on an edge device, Dapr helps you tackle the challenges that come with building microservices and keeps your code platform agnostic.  
简单来说,Dapr(Distributed Application Runtime)是一个事件驱动、可移植的分布式应用运行时,用于在云上或边缘计算上构建微服务。

Building blocks for any developer


Any language,anywhere

小编觉得这点非常的重要。

当然还有很多其他特性,这里就不一一列举了,读者有兴趣可以去阅读官方文档:https://dapr.io/

Dapr是如何简化分布式应用的开发呢?

Dapr通过以HTTP/gRPC API这种与语言无关的方式暴露封装的分布式能力供应用调用,从而支持使用任意语言或框架进行开发集成。目前官方已经提供了Go,Node,Python,.NET,Java, C++,PHP,Rust,Javascript的Sdk,简化Dapr的集成。其中Dapr的核心构建块(Building Block,上文图例有介绍)就是用来提供各种不同的分布式能力。

典型分布式场景说明

  1. 在分布式架构中,一个典型的问题是应用和应用间如何访问的。我们来看下Dapr是如何实现的。

简单来说,就是通过调用Dapr标准的service-to-service invocation
接口实现应用无关,语言无关(上图中我们看到pythonapp调用nodeapp时,实际上是调用的Dapr框架提供的sidecar)。

  1. 另一个典型的问题是应用于中间件的调用关系。在Dapr框架中,一切皆可mesh,中间件亦如此(这相比较于Istio这种以网络模型为基础的service mesh框架更加的偏应用化)。我们举两个典型的中间件应用场景。
2.1. 跨应用消息发布/订阅
Dapr提供了一致性的消息发布、订阅API,而无需关注具体使用的是何种消息中间件,从而和底层基础设施解耦。

2.2. 资源绑定
Dapr通过建立触发器与资源的绑定,可以从任何外部源(例如数据库,队列,文件系统等)接收和发送事件,而无需借助消息队列,即可实现灵活的业务场景。Dapr的Bindings分为两种:
  • Input Bindings(输入绑定):当外部资源的事件发生时,借助输入绑定,你的应用即可通过特定的API:POST http://localhost:<appPort>/<name>
    收到外部资源的事件,用于处理特定逻辑。
  • Output Bindings(输出绑定):输出绑定允许你调用外部资源。比如,在订单处理场景中,在订单创建成功后,可以将订单信息通过Dapr的绑定API:POST/PUT http://localhost:<daprPort>/v1.0/bindings/<name>
    输出到Kafka特定队列上。


Dapr的出现意义重大

小编以为Dapr框架意义重大,尤其对于小编这样一个从事多年基础架构工作多年的人来说无比的具有吸引力,主要体现在:
  • 对于小公司,甚至没有基础架构和中间件团队的公司,Dapr 提供了开箱即用的基础设施功能,可以让小公司轻松构建弹性,分布式应用。
  • 对于中等单位,具备一定的基础架构能力,在使用Dapr的过程中,可能Dapr并不能完全满足需求,那么也可以在Dapr框架体系下,花费较小的成本进行自定义扩展。
  • 如果是大公司,Dapr 提供了一种思路。基础架构团队会越来越倾向于通过一切资源皆mesh的思路交付Sidecar的形式来提供基础设施,从而彻底实现与业务团队的解耦,使得架构演进不再扯手扯脚。

写在最后

最后,我们来看看当前有哪些公司在使用Dapr:

虽然目前参与的公司还不多,Dapr在国内开发圈里也鲜为人知道,但是其一切皆mesh的理念必然是未来趋势。




参考文档:

How Alibaba is using Dapr

https://blog.dapr.io/posts/2021/03/19/how-alibaba-is-using-dapr/


Multi-Runtime Microservices Architecture

https://www.infoq.com/articles/multi-runtime-microservice-architecture/

文章转载自编程阁楼,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论