写点什么

Vaughn Vernon 论 Actor 模型和领域驱动设计

2013 年 6 月 18 日

为了更好地把握新型多核机器带给我们的超大并发能力的机会,我们应该使用一种能帮助我们达成该目的的编程模型,而 Actor 模型带给了我们大量的工具来实现这一点。 Implementing Domain-Driven Design一书的作者 Vaughn Vernon 在今年伦敦的 DDD Exchange Day 大会上对此进行了阐述

Actor 模型之所以还没有流行起来的一个原因也许就是因为我们从未真正有过拥有超强并发计算能力机器的机会。而现在,我们的机器都拥有着大量的核。因为这些改变,我们对并发的规模和使用都将与从前截然不同。因此,Vaughn 认为我们应该着眼于 Actor 模型,它可以给与我们大量的工具来达成我们的目的。

直接异步消息传递

由于 Actor 的消息是异步发送的,所以当一个 actor 向其他 actor 发送完消息后可以马上继续工作。唯一需要的便是消息接收者的地址,消息发送者可以通过创建 actor 或从已收到的消息中获取地址。

无锁并发(Lock Free Concurrency)

为了避免加锁,Actor 模型通过加强队列来实现并发,这意味着一个 actor 同一时间只能处理一个消息,但是这无法确保消息接收的顺序。

无共享(Share nothing)

Actor 是计算的主要单元,因此每个独立的 actor 将自己的状态完全封装,没有状态是共享的。Actor 只能以不可变的方式返回数据。

Future 与承诺

当查询以异步的方式传递后,结果将在将来的某个时间被异步返回。当消息被发送后,一个 Future 对象将立即返回,它代表了对结果的承诺。

Actor**** 模型和领域驱动设计

Actor 模型非常适合领域驱动设计,消息代表了通用语言( ubiquitous language )这一概念,并且使用 aggregate 来作为 actor。消息可以直接发送到 aggregate,而业务规则将适用于 aggregate,而实体也将持久化在 aggregate。这样也自然适用于在一个事务中应该只有一个 aggregate 被修改这一原则。Vaughn 认为通过去除当今典型事件驱动架构中的部分复杂性将可以简化我们的实现。

Actor**** 模型

在 Actor 模型中,每个对象都是一个具有邮箱(mailbox)和行为的 actor,消息将通过邮箱在 actor 之间交换。Actor 之间的通信都是异步执行的,并且没有状态共享。

今年早些时候, Eric Meijer 、Actor 模型的创造者 Carl Hewitt 以及 Clemens Szyperski 在白板前的一个站立交流中讨论并解释了Actor 模型。

查看英文原文: Vaughn Vernon on the Actor Model and Domain-Driven Design

2013 年 6 月 18 日 06:471552
用户头像

发布了 52 篇内容, 共 19.8 次阅读, 收获喜欢 4 次。

关注

评论

发布
暂无评论
发现更多内容

Java-技术专题-volatile关键字

李浩宇/Alex

架构师训练营第六周作业

Shunyi

极客大学架构师训练营

用上ConcurrentHashMap,就没有并发问题了?

海拉鲁

Java 并发

架构师训练营 -week06-作业

大刘

极客大学架构师训练营

Redis可以做哪些事?

Java旅途

redis

Apache Doris在京东广告的应用实践

DorisDB

数据库 大数据 数据仓库

京东推荐系统中的兴趣拓展如何驱动业务持续增长?

京东智联云开发者

算法 推荐系统 知识图谱

第二周作业

小兵

LeetCode题解:78. 子集,递归+for循环+回溯,JavaScript,详细注释

Lee Chen

算法 LeetCode 前端进阶训练营

Java-技术专题-LocalDate和LocalTime和LocalDateTime

李浩宇/Alex

JavaScript 对象 — 重学 JavaScript

三钻

Java 前端 对象

使用 Maven Archetype 基于 IDEA 快速创建项目

程序员小航

Java maven 开发 项目 Archetype

Java-技术专题-Object克隆方法解析

李浩宇/Alex

【得物技术】一文读懂Vue生命周期

得物技术

Vue 生命周期 得物技术部 得物 钩子函数

GitHub上最励志的计算机自学教程(重制版),前端小白到亚马逊工程师

沉默王二

GitHub 学习 程序员 面试

第二周总结

小兵

直播带货需要运营者实名验证:规范行业有利于健康发展

石头IT视角

从实际案例聊聊Java应用的GC优化

AI乔治

Java 编程 架构 JVM GC

手撕面试题:多个线程顺序执行问题

海星

Java 面试 多线程

对抗验证概述

计算机与AI

学习 数据验证

程序员什么时候就该辞职了?

Java架构师迁哥

Javassist实现JDK动态代理

AI乔治

Java 编程 架构 jdk

创新方案百花齐放,英特尔助力2020 EdgeX中国挑战赛推动智能边缘行业创新及人才发展

intel001

英特尔第十一代处理器 (代号Rocket Lake-S) 架构详情

intel001

Week 6 命题作业

阿泰

蚂蚁金服首发887页Java面试宝典!还原真实面试情景+面试题

Java架构追梦

Java 编程 架构 面试 蚂蚁金服

架构师训练营 - 第 6、7、8、9、10 、11、12、13周学习总结(1 期)

阿甘

区块链钱包开发app,去中心多币种钱包搭建

WX13823153201

区块链钱包开发

K近邻算法:机器学习萌新必学算法

华为云开发者社区

学习 算法

JVM 源码解读之 CMS GC 触发条件

AI乔治

Java 架构 JVM GC

TronChain波场链合约系统开发技术

薇電13242772558

区块链 智能合约

InfoQ 极客传媒开发者生态共创计划线上发布会

InfoQ 极客传媒开发者生态共创计划线上发布会

Vaughn Vernon论Actor 模型和领域驱动设计-InfoQ