概述

Actor模型是一种用于处理并发计算的数学模型,他对Actor对象用作并发计算的通用基元。
他会对收到的消息做出处理,并且可以做以下事情:

  • 向其他Actor对象发送一定数量的消息
  • 创建一定数量的新Actor对象
  • 设定对下一跳消息的处理方式
    这些操作并没有先后顺序,并且可以通过并行的方式执行他们
    在一个Actor系统中,所有的事物都是Actor对象,只有多个Actor对象组成的系统叫做Actor系统,单个Actor对象并不能称为Actor系统。

特点

  • 通过异步的方式传递消息
    如果Actor对象A1要给Actor对象A2发送消息M1,就必须知道A2的地址,那么A1就直接可以向A2发送消息。实际上A2会使用独立于A1的线程接受处理消息,A1就要以异步的方式发送消息给A2,实际上消息传输中间有一个中间对象(消息缓存单元)负责消息分发,即便如此我们还是称之为异步直接传输
  • 状态机
    Actor支持有限状态机。当Actor对象转换为某个预设状态时,他就能改变对未来接收到的消息的处理模式。通过改变成为另一种消息处理器Actor对象就成了一种有限状态机
  • *无共享**
    一个Actor对象不会与其他Actor对象共享组件可变状态
  • 无锁处理并发
    因为Actor对象不会共享其可变状态,而且他们在同一时刻仅会接受处理一条消息,所以在对消息做出回应前Actor对象永远都不会尝试锁定他们的状态
  • 并行性
    并行性是通过将单个复杂的处理过程拆分成较小的任务以并发处理的方式执行他们实现的
  • 系统性
    单个Actor对象是不具备并行性的。Actor对象是非常轻量的,因此在在单个系统中创建多个Actor对象是推荐的处理方式。任何问题都可以通过添加Actor对象来解决