跳过正文
Actor模型 | 介绍
  1. 文章/

Actor模型 | 介绍

一、什么是Actor模型?
#

Actor模型是并发计算的概念模型,起源于1973年。在Actor模型中,Actor是基本的计算单元,认为一切皆为Actor。

Actor的基本操作:

  1. 创建另一个Actor
  2. 发送消息
  3. 指定如何处理下一条消息

Actor可以维护自己的状态,根据当前状态来决定如何处理下一条消息。

举例:一个Actor维护账户总余额,收到新的交易消息,则会更新Actor中状态的余额。对于下一条消息,Actor的状态将改变。

  • Actor非常轻量,可以轻松创建成千上万个Actor,因为它需要的资源比线程少。
  • Actor之间彼此隔离,不共享内存。它们都有自己的状态,但改变状态的唯一方法是接收消息。
  • 每个Actor都有自己的邮箱,类似于消息队列,消息存储在邮箱中,Actor按照FIFO(先进先出)的顺序处理消息。
  • Actor之间只能通过消息进行通信,消息是简单的不可变数据结构,可以轻松进行网络传输。
  • 一个Actor一次只能处理一条消息。Actor之间是解耦的,它们异步工作,不需要等待其他Actor的响应。
  • Actor拥有很多地址,它只能和拥有地址的Actor发送消息。它拥有自己的地址、子Actor的地址、接收到消息发送方Actor的地址、其他相同Actor实例的地址。

一个Actor可以有多个地址(实例)。地址不等同于Actor唯一标识identity。

  • Actor可以运行在本地或者远程(在别的机器上),因为Actor模型通过地址通信,所以本地或者远程调用对系统来说是完全透明的。

二、容错机制
#

在Actor模型中,Actor可以监管它的子Actor,包括存活检测、重启及消息失败后的重定向,实现自修复功能。

容错机制

三、优缺点总结
#

优点
#

  1. 易于扩展
  2. 强大的容错能力
  3. 支持分布式部署
  4. 有效避免传统并发问题

缺点
#

  1. 存在死锁的风险
  2. 消息队列可能溢出

Actor模型作为一种概念模型,其具体性能和特性取决于具体的实现框架。目前较为知名的实现框架包括Akka和Elixir。

文章内容来自:https://www.youtube.com/watch?v=ELwEdb_pD0k