分布式技术原理与算法解析
聂鹏程
智载云帆 CTO,前华为分布式 Lab 资深技术专家
39663 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 43 讲
分布式技术原理与算法解析
15
15
1.0x
00:00/00:00
登录|注册

17 | 分布式计算模式之Actor:一门甩锅的艺术

Quasar (Java)
Akka
Erlang/OTP
易扩展
高并发度
无需使用锁
非阻塞性
高级抽象
消息交互和处理流程
消息
行为
状态
Actor是否可以采用阻塞方式去运行
节点不可达信息传递
节点监控
去中心化架构
应用
关键特征
工作原理
Actor模型
并行执行无依赖工作
进程各司其职
多个进程协同完成复杂任务
流水线
Actor计算模式
Stream计算模式
MapReduce
时间:未提供
主题:分布式计算中的Actor模型
作者:聂鹏程
标题:如何理解Actor计算模式是“一门甩锅的艺术”?
思考题
Akka集群的节点故障检测
Actor计算模式
分布式计算的本质
分布式核心技术
参考文章
如何理解Actor计算模式是“一门甩锅的艺术”?

该思维导图由 AI 生成,仅供参考

你好,我是聂鹏程。今天,我来继续带你打卡分布式核心技术。
我在前两篇文章中,带你一起学习了 MapReduce 和 Stream 计算模式,相信你对批处理和流计算也有了一定的了解。虽然这两种计算模式对数据的处理方式不同,但都是以特定数据类型(分别对应静态数据和动态数据)作为计算维度。
在接下来两篇文章中,我将从计算过程或处理过程的维度,与你介绍另外两种分布式计算模式,即 Actor 和流水线。分布式计算的本质就是在分布式环境下,多个进程协同完成一件复杂的事情,但每个进程各司其职,完成自己的工作后,再交给其他进程去完成其他工作。当然,对于没有依赖的工作,进程间是可以并行执行的。
你是不是想说,分布式进程那么多,如果需要开发者自己去维护每个进程之间的数据、状态等信息,这个开发量可不是一般得大,而且特别容易出错。那么,有没有什么办法可以让开发者只关注自己的逻辑呢?
答案是肯定的,Actor 计算模式就能满足你的需求。也就是说,你可以把数据、状态等都扔给 Actor。这是不是“一门甩锅的艺术”呢?
接下来,我们就一起打卡分布式计算模式中的 Actor 模式。

什么是 Actor?

在第 10 篇文章“分布式体系结构之非集中式结构:众生平等”中,我曾提到 Akka 框架基于 Actor 模型,提供了一个用于构建可扩展的、弹性的、快速响应的应用程序的平台。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

Actor模型是一种分布式并行计算模型,通过Actor之间的消息传递和异步通信实现高并发的分布式系统。该模型具有非阻塞性、无需使用锁、并发度高和易扩展等特点,适用于异步场景中的应用。本文介绍了Actor模型的三要素、工作原理以及几个当前支持Actor编程模型的框架和语言,如Erlang/OTP、Akka和Quasar。此外,还介绍了Akka集群中节点故障的检测方法。文章提到了Actor模型的局限性,如缺少继承和分层、不适用于对消息处理顺序有严格要求的系统等。总的来说,Actor模型在分布式系统中的应用广泛,能够满足高并发性需求。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《分布式技术原理与算法解析》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(17)

  • 最新
  • 精选
  • 南国
    怎么感觉actor类似于RPC,同样是发一条消息,然后进行某种计算,最后返回值

    作者回复: Actor的核心是封装了自己的状态和行为,Actor之间采用异步通信,它代表的是一种分布式并行计算模型。RPC通常指的是远程过程调用。

    2020-07-22
    2
  • luffy
    actor能否理解为1条数据,如果计算的是图的话,每条数据都可以发消息到它相邻的点,这些相邻的点收到消息后,可以继续发消息和计算当前的点。

    作者回复: Actor 代表的是一种分布式并行计算模型。这种模型有自己的一套规则,规定了 Actor 的内部计算逻辑,以及多个 Actor 之间的通信规则。在 Actor 模型里,每个 Actor 相当于系统中的一个组件,都是基本的计算单元。Actor并非是一条数据。

    2020-05-31
    1
  • Ethan Liu
    为什么认为Actor模式是计算模式呢?感觉更属于通信模式啊
    2019-11-11
    9
  • LDxy
    Actor 模型不适用于对消息处理顺序有严格要求的系统。因为在 Actor 模型中,消息均为异步消息,无法确定每个消息的执行顺序。虽然可以通过阻塞 Actor 去解决顺序问题,但显然,会严重影响 Actor 模型的任务处理效率。
    2019-10-30
    2
    8
  • 胖虎
    阻塞则需要锁,actor本来的目的就是去锁化,与初衷背道而驰。
    2019-12-09
    1
    3
  • _______Harvey凝枫😗
    全程都是在通信呢,跟计算有啥关系? 为什么这个算是计算模式的内容,而不是通信技术
    2019-11-16
    2
  • Actor 是否可以采用阻塞方式去运行呢,原因是什么呢? 说不可以,因为和设计初衷相悖,性能会下降,可用率也会下降。如果不在乎这些也就没什么不可以了,不违反自然规律,编程世界可以爱咋地就咋地😁
    2020-02-17
    1
  • GaGi
    文中说Actor的工作原理部分:Actor2 处理完 Actor1 的消息后,更新内部状态,并且向其他 Actor 发送消息,然后处理 Actor3 发送的消息。 老师,这里为什么Actor2更新完内部状态后要想其他Actor发送消息?发送什么消息呢?
    2021-03-30
  • 文刀流
    是不是可以理解如果把现有的系统全部都模块化然后给每一个模块分配一个消息队列来处理本模块的逻辑,用一个线程池来执行每个模块队列里面的消息,这样也是无需考虑加锁的.异步也能达到高并发。是不是就有点像akka
    2020-10-20
    1
  • 一毛钱
    如果使用阻塞的形式,各个actor会发生雪崩的现象,导致整个系统不可用
    2019-11-14
收起评论
显示
设置
留言
17
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部