目录
一、模型概述
二、模型特点
三、模型组成
四、模型优势
五、应用实例
- 一般来说,我们有两种策略来在并发线程中实现通信:共享内存和消息传递。大多数传统语言,并发线程之间的通信使用的都是共享内存,共享内存最大的问题就是竞争,我们可以使用锁来解决竞争问题,但处理各种锁的问题让人头痛不已。
- Actor 模型是一种基于消息模型,在 Actor 模型中,一切皆 Actor ;每个 Actor 有自己的状态和行为,但不共享状态,状态由自己维护和修改;Actor 之间通过消息进行通信, 但每个 Actor 同一时间只能处理一条消息,保证每个 Actor 独占式操作,从而巧妙的实现无锁。下面我们来看看 Actor 模型是如何基于消息模型实现无锁并发编程。
Actor并发控制模型是一种基于事件模型的并发机制,以下是关于Actor并发控制模型的详细介绍:
一、模型概述
Actor并发控制模型是一种不共享数据、依赖消息传递的并发编程模式。在这个模型中,“Actor”是基本的工作单元,它具备接收消息、处理消息和发送消息的能力。每个Actor都有一个唯一的标识符和一个消息队列(或称为MailBox),用于存储接收到的消息。
二、模型特点
- 独立性:每个Actor都是一个独立的执行单元,可以并发地运行,而不会相互干扰。
- 消息传递:Actor之间通过消息传递进行通信,而不是直接访问共享内存。这种方式有效地避免了资源争夺和死锁等并发问题。
- 异步性:Actor之间的通信是异步的,发送消息的Actor不需要等待接收消息的Actor处理完消息才能继续执行。这提高了系统的并发性和响应速度。
- 状态封装:Actor封装了自己的状态和行为,使得并发编程时只需要关注消息和Actor本身,而无需关注锁和内存原子性等多线程常见的问题。
三、模型组成
Actor模型由状态(State)、行为(Behavior)和邮箱(MailBox)三部分组成:
- 状态:指Actor对象的变量信息,由Actor自己管理,避免了并发环境下的锁和内存原子性等问题。
- 行为:指Actor的计算逻辑,通过接收到的消息来改变Actor的状态。
- 邮箱:是Actor和Actor之间的通信桥梁,用于存储发送方Actor的消息。邮箱内部通过先入先出(FIFO)消息队列来存储消息,接收方Actor再从邮箱队列中获取消息进行处理。
四、模型优势
- 简化并发编程:Actor模型提供了一种高级抽象,能够简化在并发/并行应用场景下的编程开发。
- 高性能:由于Actor模型是异步非阻塞的,因此能够高效地处理大量并发请求。
- 可扩展性:Actor模型的位置透明性使得系统可以随意横向扩展来应对并发,增加了系统的可扩展性。
- 错误处理:Actor模型遵循“任其崩溃”的哲学,让Actor模型的管理者们来处理崩溃问题,提供了灵活的错误处理机制。
五、应用实例
Actor并发控制模型已被广泛应用于各种高并发场景,如Erlang在语言层面支持Actor模型,典型应用如RabbitMQ;Akka是Java版本的实现,Spark的底层通信模型就是使用Akka实现的Actor模型。此外,开源物联网平台Thingsboard也采用Actor模型实现高并发处理设备数据接入。
综上所述,Actor并发控制模型是一种高效、灵活且可扩展的并发编程模型,适用于各种高并发场景。
参考:
yue-im: YUE-IM 是使用java开发,基于netty,akka 实现的全异步即时通讯服务开发框架。支持单机,分布式部署,并且提供极简的api,极大的降低开发难度,方便使用者二次开发。
Actor 并发控制模型使我想到了王者荣耀对战伤害控制实现-腾讯云开发者社区-腾讯云
软件架构:深入理解 Actor 模型,并发编程的强大工具-腾讯云开发者社区-腾讯云
Actor并发编程模型_actor并发模型-CSDN博客
软件架构:深入理解 Actor 模型,并发编程的强大工具-腾讯云开发者社区-腾讯云
浅析并发编程模型——Actor模型
https://segmentfault.com/a/1190000044032968