thingsboard 之 actor模型 1
actor模型介绍
介绍
计算机科学中的actor模型是一个并发计算的数学模型,它将actors视为并发计算的通用原语:actor可以做出本地决策,来作为其接收到的消息的响应,创建更多actors,发送更多消息,并确定如何响应接收到的下一条消息。 Actor模型采用的哲学是一切都是Actor。这与一些面向对象编程语言应用的“任何事物都是一个对象”的哲学类似。组成
- 状态
- 行为
指actor处理逻辑,如果通过行为来操作自身state
- 邮箱
指actor存储消息的fifo队列,actor与actor发送消息,消息只能发送到邮箱,等待拥有邮箱的actor 去处理,这个过程是异步的。简单来说,有时间才处理,等我把前面任务先完成
原则
- 所有的Actor状态是本地的,外部是无法访问的。
- Actor必须通过消息传递进行通信
- 一个Actor可以响应消息、退出新Actor、改变内部状态、将消息发送到一个或多个Actor
- Actor可能会堵塞自己但Actor不应该堵塞自己运行的线程
thingsboard actor模型和一般actor模型对比
入口类:DefaultActorService
与经典的Actor模型对应关系为:
- TbActor-->Actor
- Dispatcher --> Behavior
- TbActorRef --> mailBox,TbActorRef对应的实现类为TbActorMailbox
代码走读
贴图:
说明:@PostConstruct 初始化完成,属性注入之后执行
- 配置类生成 TbActorSystemSettings
- actor系统生成 DefaultTbActorSystem
看下actor系统的功能:创建actor,发送消息,广播消息
@EventListener(ApplicationReadyEvent.class):初始化完成之后的动作
- 发送系统初始化信息给appActor
走着 走着 就近了,所以不要停止前行!