介绍
Actor模式将Actor描述为最低级别的“计算单元
”。换句话说,您在一个独立的单元(称为actor)中编写代码,该单元接收消息并一次处理一个消息,没有任何并发或线程。
再换句话说,根据ActorId
划分独立计算单元后,相同的ActorId
重入要排队,可以理解为lock(ActorId)
注
:这里有个反例,就是重入性
的引入,这个概念目前还是Preview,它允许同一个链内可以重复进入,判断的标准不止是ActorId
这么简单,即自己调自己是被允许的。这个默认是关闭的
,需要手动开启,即默认不允许自己调自己
。
当您的代码处理一条消息时,它可以向其他参与者发送一条或多条消息,或者创建新的参与者。底层运行时管理每个参与者运行的方式、时间和地点,并在参与者之间路由消息。
大量的Actor可以同时执行,Actor彼此独立执行。
Dapr 包含一个运行时,它专门实现了 Virtual Actor 模式。 通过 Dapr 的实现,您可以根据 Actor 模型编写 Dapr Actor,而 Dapr 利用底层平台提供的可扩展性和可靠性保证。
什么时候用Actors
Actor 设计模式非常适合许多分布式系统问题和场景,但您首先应该考虑的是该模式的约束。一般来说,如果出现以下情况,请考虑使用Actors模式来为您的问题或场景建模:
- 您的问题空间涉及大量(数千个或更多)
小的、独立且孤立的状态和逻辑单元
。
- 您希望使用
不
需要与外部组件
进行大量交互
的单线程对象,包括跨一组Actors查询状态。
- 您的 Actor 实例
不
会通过发出 I/O 操作来阻塞
具有不可预测延迟的调用者。