What is Dapr?
Building blocks for any developer

Any language,anywhere

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

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

service-to-service invocation接口实现应用无关,语言无关(上图中我们看到pythonapp调用nodeapp时,实际上是调用的Dapr框架提供的sidecar)。
另一个典型的问题是应用于中间件的调用关系。在Dapr框架中,一切皆可mesh,中间件亦如此(这相比较于Istio这种以网络模型为基础的service mesh框架更加的偏应用化)。我们举两个典型的中间件应用场景。

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 提供了一种思路。基础架构团队会越来越倾向于通过一切资源皆mesh的思路交付Sidecar的形式来提供基础设施,从而彻底实现与业务团队的解耦,使得架构演进不再扯手扯脚。
写在最后

参考文档:
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进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




