外观主题
阅读语言

Actor 模型 —— 万物皆 Actor,通信全靠消息

软件 本站软件 2小时前
https://yxp.hk/p/rwFObA

📦 开源仓库:learn_actor_model · 纯 Python 标准库 · 学习演示项目

共享内存 + 锁的并发模型,写起来提心吊胆。Actor 模型换了个思路:一切都是 Actor,Actor 之间只通过异步消息通信,每个 Actor 有一个邮箱(mailbox)队列,一次只处理一条消息——没有共享状态,自然就不需要锁。

核心思路

  client ──msg──► 订单 actor ──msg──► 库存 actor
                    │                    │
                 mailbox              mailbox
                 (队列)              (队列)
                    │                    │
                 逐条处理;崩溃 → 重启 → 继续消化邮箱剩余消息
  • 无共享内存:Actor 之间只发消息,绝不碰对方状态
  • 邮箱串行:消息排队,Actor 一条一条处理
  • 位置透明:给 Actor id 发消息,本地还是远程写法一样
  • 崩溃隔离与重启:崩了就重启,邮箱里已排队消息不丢

为什么值得学

  • 无锁并发:串行邮箱 = 没有共享状态竞争
  • 容错:故障按 Actor 隔离,监督者负责重启
  • 天然贴分布式:消息传递和网络调用可以无缝互换

演示场景

  1. 请求-应答:订单 actor 请库存 actor 预留库存,应答返回
  2. 崩溃与重启:库存 actor 遇到坏单崩溃,重启后把邮箱剩余消息消化完

运行

python run_all.py

纯 Python 标准库,零第三方依赖,一键跑完所有演示场景后自动退出。
仓库:github.com/yxpil/learn_actor_model,欢迎 Star 与提 Issue。