Dapr&&Actor说明文档

Dapr&&Actor说明文档

​ 本文档对Dapr下Actor的概念、特性、使用方法做出说明。

1 Dapr概念

​ Dapr是跨语言的、使用 sidecar 架构、事件驱动的、可以与service mesh共存、专注于提供构建基块(服务调用、网络安全和分布式跟踪等功)、使得开发人员更容易构建微服务的、可运行在云平台或边缘计算中的开发框架。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

1.1 Sidecar架构:

​ Dapr以 Sidecar架构的方式公开其API,可以是容器,也可以是进程,不需要应用代码包含任何 Dapr 运行时代码。 这使得 Dapr 与其他运行时的集成变得容易,在应用逻辑层面做了隔离处理,提高了可扩展性。

​ 应用程序与其他所有中间件(例如MySQL、Redis、Kafka)的交互、分布式的追踪等一系列与非业务功能的代码均集成在Sidecar当中,业务代码只需要与Sidecar沟通,而上述功能的具体实现完全又Sidecar实现,使得业务代码与基础设施代码完全解耦。无论是上云还是其他平台(win->linux or linux ->win),只需要修改对应的Sidecar,而业务代码完全不需要修改即可轻松实现。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

2 Actor概念

​ Actors 为最低级别的“计算单元”,该单元接收消息并一次处理消息,而不进行任何类型的并行或线程处理。当代码处理一条消息时,它可以向其他参与者发送一条或多条消息,或者创建新的 Actors。 底层 运行时(Dapr)将管理每个 actor 的运行方式、时机和位置,并在 Actors 之间传递消息。

2.1 使用场景

  • 问题空间涉及大量(数千或更多) 的独立和孤立的小单位和逻辑。
  • 要处理单线程对象,这些对象不需要外部组件的大量交互,例如在一组 Actors 之间查询状态。

  • Actor 实例不会通过发出I/O操作来阻塞调用方。

    2.2 特性

    • 大量 Actors 可以同时执行且相互独立执行

    对持有不同ActorId的Actor在执行时相对独立、互不影响。

    • 单个Actor是单线程执行

    ​ 对持有相同ActorId的Actor在执行时严格按照单线程执行,相当于再执行前拿了一把分布式锁。

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

2.3 工作原理

​ Dapr启动app时,Sidecar调用Actors获取配置信息,之后Sidecar将Actors的信息发送到 安置服务(Placement Service),安置服务会将不同的Actor类型根据其Id和Actor类型分区,并将Actor信息广播到所有dapr实例。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

​ 在客户端调用某个Actor时,安置服务会根据其Id和Actor类型,找到其所在的dapr实例,并执行其方法。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

### 	2.4 Actor生命周期

​ Actor不需要显式创建或销毁。 Dapr Actors 运行时在第一次接收到该 actor ID 的请求时自动激活 actor。 如果 actor 在一段时间内未被使用,那么 Dapr Actors 运行时将回收内存对象。 如果以后需要重新启动,它还将保持对 actor 的一切原有数据。

2.5 使用

Http方式调用Actor方法

POST/GET/PUT/DELETE http://localhost:3500/v1.0/actors/<actorType>/<actorId>/method/<method>

参数解释如下:

参数名描述
actorType执行组件类型
actorId要调用的特定参与者的id
method要调用actor的方法

在使用上需要注意:单个Actor实例一次不能处理多个请求

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

附录:

Dapr环境搭建

​ Centos7下k8s集群里初始化Dapr:https://blog.csdn.net/qicaixiao/article/details/126402108

Actor代码demo案例

​ 1、Actor for Java 官网demo:https://github.com/dapr/java-sdk/tree/master/examples/src/main/java/io/dapr/examples/actors

​ 2、Actor for .net官网demo:https://github.com/dapr/dotnet-sdk/tree/master/examples/Actor

​ 3、Actor for .net第三方demo:https://www.tnblog.net/hb/article/details/6725

k8sYAM

Lannotations规范:https://docs.dapr.io/zh-hans/operations/hosting/kubernetes/kubernetes-annotations/

k8s集群能力要求

k8s集群能力要求:https://docs.dapr.io/zh-hans/operations/hosting/kubernetes/kubernetes-production/

  • 20
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

沈自在-

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值