42 | Actor模型:面向对象原生的并发模型
该思维导图由 AI 生成,仅供参考
Hello Actor 模型
- 深入了解
- 翻译
- 解释
- 总结
Actor模型是一种面向对象的并发模型,它将计算抽象为基本的计算单元Actor,并且在Actor模型中,所有的计算都是在Actor中执行的。与面向对象编程相比,Actor模型中的通信完全遵守消息机制,而不是通过对象方法来实现对象之间的通信。在Actor模型中,消息机制是异步的,而对象方法调用是同步的,这是它们的主要区别之一。此外,Actor模型不仅适用于并发计算,还适用于分布式计算,因为Actor之间的通信可以跨进程、跨机器进行。Actor具备处理能力、存储能力和通信能力,它们可以创建更多的Actor、发送消息给其他Actor,以及确定如何处理下一条消息。通过一个累加器的示例,演示了如何使用Actor模型实现线程安全的并发操作,而不需要使用锁或CAS。总的来说,Actor模型是一种简单而高效的计算模型,它与现实世界的组织结构和异步模型有着相似之处。在Java领域,可以使用Akka或Vert.x来支持Actor模型,它们都提供了良好的支持和实现。 Actor模型虽然有一些问题,比如消息的百分百送达和处理无法保证,但它仍然是一种非常有用的并发模型。 Actor模型的特点和优势使得它成为解决并发问题的利器,尤其是在多核处理器的发展下,它受到了越来越多的关注。
《Java 并发编程实战》,新⼈⾸单¥59
全部留言(31)
- 最新
- 精选
- QQ怪老师,actor模式具体实现的产品有哪些?想知道这些更加理解actor
作者回复: spark,flink,play应该都用到了,我也不会scala,如果想深入理解只能先把scala学了😂😂
2019-06-04228 - aoe感兴趣的可以看看《响应式架构 消息模式Actor实现与Scala.Akka应用集成》
作者回复: 这本书也不错
2019-11-22216 - 兔斯基这种并发模型现实应用多么?系统往往很少有可以接受丢失消息的吧?
作者回复: 线程池也一样会丢数据,现在基本上都是靠数据库,mq这些支持事务的存储来搞定安全的异步处理
2019-06-04415 - stg609虽然一个actor 是不会有并发问题,但要是同时发给多个actor去处理呢,每个actor 都可能访问同一数据库或者redis 这种共享资源,那还是有并发问题吧
作者回复: 是的
2020-05-0712 - DFightingActor读起来好像流数据处理模型中的Operator,不过Flink解决一致性语义(exactly-once)使用的是轻量级一致性快照,即在每个节点内部缓存当前整个系统执行到何处的状态,不过代价就是需要在计算拓扑中传递状态,算是一种内存换一致性吧,不过现在存储愈发可得,这个代价应该也是可以接受的。
作者回复: 👍
2019-10-167 - 晓杰请问老师actor模型的效率是不是会比较低
作者回复: 不会
2019-06-0535 - 张三丰很长一段时间里,我都以为对象方法是面向对象理论中消息的一种实现,直到接触到 Actor 模型,才明白消息压根不是这个实现法。 老师是认为面向对象调用方法不叫消息?那么面向对象调用方法这种数据传递方式叫什么?
作者回复: 方法参数😂
2019-10-142 - 浩老师怎么把actor用在实际开发中,在spring boot中集成
作者回复: 我没有这样搞过,集成的太多坑就多,不过查了一下,还真有人这样搞过,还是建议慎重选择。 https://github.com/aliakh/demo-akka-spring
2022-07-29归属地:北京1 - cricket1981"也不保证消息送达的顺序和发送的顺序是一致的" …… 想问下什么情况下会发生这种情形?MailBox不是类似Queue一样FIFO结构吗?
作者回复: 理论模型没这要求,并发情况下严格实现fifo很影响性能
2019-06-051 - 潭州太守请问老师,Actor是不是不适合低延迟场景,或者有没有策略保证低延迟。
作者回复: 也不是,erlang就有这方面的应用
2019-06-041