1、原理
Dapr向每个计算单元注入一个边车(容器或进程)。边车与事件触发器
进行交互,并通过标准的HTTP或gRPC协议与计算单元通信。
Dapr通过标准的HTTP和gRPC接口提供内置的状态管理、可靠的消息传递
触发器和绑定。使用可插拔的组件状态和消息总线提供通信
2、特性
---分布式,模块之间通过API通信
---云和边缘,APP可以在AWS AZURE等云服务器上,也可以在本地
服务器和远端的物联网终端
---事件驱动,监听到请求事件才开始处理
---可移植,程序和允许的环境,用的中间件无关。例如原来在AWS上,
切换到Azure,nosql原来用redis切换到etcd,rocketmq切换kafka.
只要在Dapr设定做一下切换,程序无需改动
---运行时,指的是Dapr的运行环境。Dapr的控制平面会单独启动,同时
你的程序在启动的时候Dapr会在你的程序上挂一个sidecar,你的程序就
可以通过sidecar和dapr的控制面。所以挂有dapr sidecar的各个微服务
之间就可以相互调用了,也可以通过Dapr调用各种中间件
---有弹性,可以从故障中自动恢复的能力,比如重试、超时
---有状态和无状态,无状态指的是一个微服务经过计算得到就欸过,返回
给调用者以后这个值在微服务这边是不保存的。有状态指的是微服务把
结果保存起来
---支持多语言,go\java\python\js\rust\php
分布式应用需求
1、服务发现--- 服务注册、服务治理、弹性伸缩
2、服务调用--- 重试、熔断、限流
3、数据状态--- 数据读写、读写一致性、幂等、缓存、数据流
4、发布订阅--- 服务解耦、异步处理
5、配置管理--- 服务参数、中间件参数、账户密码等