Actor 并发控制模型

目录

一、模型概述

二、模型特点

三、模型组成

四、模型优势

五、应用实例



  • 一般来说,我们有两种策略来在并发线程中实现通信:共享内存和消息传递。大多数传统语言,并发线程之间的通信使用的都是共享内存,共享内存最大的问题就是竞争,我们可以使用锁来解决竞争问题,但处理各种锁的问题让人头痛不已。
  • Actor 模型是一种基于消息模型,在 Actor 模型中,一切皆 Actor ;每个 Actor 有自己的状态和行为,但不共享状态,状态由自己维护和修改;Actor 之间通过消息进行通信, 但每个 Actor 同一时间只能处理一条消息,保证每个 Actor 独占式操作,从而巧妙的实现无锁。下面我们来看看 Actor 模型是如何基于消息模型实现无锁并发编程

Actor并发控制模型是一种基于事件模型的并发机制,以下是关于Actor并发控制模型的详细介绍:

一、模型概述

Actor并发控制模型是一种不共享数据、依赖消息传递的并发编程模式。在这个模型中,“Actor”是基本的工作单元,它具备接收消息、处理消息和发送消息的能力。每个Actor都有一个唯一的标识符和一个消息队列(或称为MailBox),用于存储接收到的消息。

二、模型特点

  1. 独立性:每个Actor都是一个独立的执行单元,可以并发地运行,而不会相互干扰。
  2. 消息传递:Actor之间通过消息传递进行通信,而不是直接访问共享内存。这种方式有效地避免了资源争夺和死锁等并发问题。
  3. 异步性:Actor之间的通信是异步的,发送消息的Actor不需要等待接收消息的Actor处理完消息才能继续执行。这提高了系统的并发性和响应速度。
  4. 状态封装:Actor封装了自己的状态和行为,使得并发编程时只需要关注消息和Actor本身,而无需关注锁和内存原子性等多线程常见的问题。

三、模型组成

Actor模型由状态(State)、行为(Behavior)和邮箱(MailBox)三部分组成:

  1. 状态:指Actor对象的变量信息,由Actor自己管理,避免了并发环境下的锁和内存原子性等问题。
  2. 行为:指Actor的计算逻辑,通过接收到的消息来改变Actor的状态。
  3. 邮箱:是Actor和Actor之间的通信桥梁,用于存储发送方Actor的消息。邮箱内部通过先入先出(FIFO)消息队列来存储消息,接收方Actor再从邮箱队列中获取消息进行处理。

四、模型优势

  1. 简化并发编程:Actor模型提供了一种高级抽象,能够简化在并发/并行应用场景下的编程开发。
  2. 高性能:由于Actor模型是异步非阻塞的,因此能够高效地处理大量并发请求。
  3. 可扩展性:Actor模型的位置透明性使得系统可以随意横向扩展来应对并发,增加了系统的可扩展性。
  4. 错误处理: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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值