知识卡片

actor模型实现流程的持久化优势与建模缺失代价

普通读书笔记卡

内容

actor模型是一种处理并发计算的方法,核心是单一职责的软件组件(actor)负责处理特定类型的消息,actor之间只通过消息通信,并发被限制在单一actor内部,因此系统能借助队列灵活扩缩容。一些框架支持”持久化actor”,让actor能本地持久化状态、和其他actor通信共同完成一个流程——把流程硬编码为持久化actor有明显好处:流程定义放在了一个容易查找、容易修改的地方;但也有严重代价:因为没有专门的建模语言,无法支持长期运行流程所需的那些成熟模式(时长跨度大的等待、版本迁移等),必须自己动手写代码实现;流程逻辑隐藏在源代码里不可见,让所有关心这个流程的人都难以理解全貌。行业内actor模型的采用其实相当有限——即便有工具长期大力推崇它,也可能确实在特定场景有优势,能大规模采用的公司依然不多,一个现实障碍是要用好actor生态的优势,往往需要让整个架构都基于actor模式来构建,这门槛很高,能做到的人很少。一个值得注意的折中组合是:用工作流引擎处理细节,再用一个actor去实现更外层的流程——这能显著减少上述两个缺陷。

参考来源

- 位置:《流程自动化实战:系统架构和软件开发视角》第5章《选择工作流引擎和BPMN》"5.1.4 actor模型"(源文件:_epub-src/EPUB/xhtml/Section0001_0008.xhtml) - 结论依据:原文说明持久化actor把流程硬编码带来的"易查找易修改"优势,以及"无建模语言支持长期运行模式""流程逻辑隐藏在源代码不可见"两个缺陷,并给出工作流引擎+actor组合能减少缺陷的折中方案,直接支撑本卡片结论。 - 原始内容:因为没有建模语言,所以无法支持长期运行所需的那种模式……流程逻辑隐藏在源代码中,不可见,这使得所有关心流程的人都难以理解流程……利用工作流引擎处理详细信息,构建一个actor实现流程。这让缺陷变少了,非常棒。