scala之Akka的Actor模型(上)
原文地址:http://my.oschina.net/jingxing05/blog/287213
明确并行和并发
看两张图
并行parallelism
一段顺序的相同代码 同时 多份 运行 并行,并行不悖!!!多条车道
而当把这段顺序的代码再分成几个独立的执行小段,对各个小段可以同时执行,并产生交流时
参考 http://wangcong.org/blog/archives/2054
Actor模型
Actor模型的要点
- 基于Actor的系统中 Actor是最小的抽象单元, 就像object 之于 oop
- 一个Actor封装了状态和行为
- 外界不能进入Actor以获取其状态、字段、执行方法,和Actor的交互只能通过message
- 一个Actor有一个信箱mailbox,将外部发送来的消息msg存到队列中
- Actor的终生就是在等待msg,并依次取出mailbox中的消息进行处理
Actor模型的组织观
- 将Actor系统视为一个公司,从上到下有严格的层级关系,公司中员工是person,也是actor
- 一个Actor仅有一个上级主管 称为 supervisor,就是create这个Actor的 那个Actor
- 一个Actor可能有多个下属小兵,真正干着脏累差活的actor
- 一个Actor可能有多个同级的兄弟部门actor
开发actor系统的关键
- 委托 委托 委托!!! 以做的更多!
- 公司老总不能事无巨细全部承担,他的主要工作就是分配公司工作和监督
- 各部门主管收到任务,要么自己干,要么再细分任务,然后分配到自己的下属手中并监督
- 如果公司还有更多的层级,则继续上面这个主管的龌龊勾当
- 最底层的员工收到细粒度任务,干着自己最擅长的事情
Actor的失效处理
- 人无完人,Actor也不可能100%完成任务
- 如果任务执行失败,一个Actor会挂起自己及其下属,然后发消息告诉其上级主管“我失败了”!
- 上级主管收到下属的“失败”消息时,可以有如下反应:
- 失败就失败,就这样吧,没太大关系:保持当前状态,恢复Actor,继续工作
- 没成功啊,那重新做一遍吧 :重置状态,重启该Actor
- 没机会了,失败了你就滚!解雇下属:关闭 终结 该 Actor
- 这事我也决定不了,我请示我的上级:向上级Actor报告
Akka实现的Actor模型的一些附加特性
- 实例化一个Actor时,返回一个ActorRef,相当于 邮箱地址,并不能通过这个获取Actor的状态信息
- Actor模型是线程的更高层抽象,最终是跑在java的线程中的
- 多个Actor可能共享一个线程,这是由akka保障的
- Actor的信箱有多种实现方式:无限变量信箱 有限信箱 带优先级信箱, 还可以自定义实现
- akka没有让Actor扫描信箱的message
- 一个Actor终结(无论是正常还是非常的)它的信箱中的msg进入akka系统的“死信箱dead letter mailbox”中
转载于:https://www.cnblogs.com/shenlanzifa/p/5288740.html
scala之Akka的Actor模型(上)相关推荐
- 【Akka】Actor模型探索
Akka是什么 Akka就是为了改变编写高容错性和强可扩展性的并发程序而生的.通过使用Actor模型我们提升了抽象级别,为构建正确的可扩展并发应用提供了一个更好的平台.在容错性方面我们采取了" ...
- Akka入门(二)Akka的Actor模型如何满足现代分布式系统需求
Actor模型允许开发者: 在不诉诸锁定的情况下实施封装. 使用协作实体的模型对信号做出反应,改变状态,并相互发送信号以推动整个应用程序向前发展. 不要担心与我们的世界观不匹配的执行机制. (一) 消 ...
- spark 如何用netty实现akka的actor模型
Spark的中,通过netty实现了类似akka的actor机制. 在spark中,一个EndPointData就类似一个akka中的actor. private class EndpointData ...
- Scala Akka的Actor模型
- Akka之actor模型
一 定义Actor import akka.actor.{Props, ActorSystem, Actor} import akka.actor.Actor.Receive import akka. ...
- 【Flink】FLink 通讯组件 Akka与Actor 模型
1.概述 本博客是 视频的笔记,这个是讲解 flink 1.12 源码的,入门非常的好. 尚硅谷2021最新Flink内核源码解析课程(从入门到精通) 2.介绍 Flink内部节点之间的通信是用Akk ...
- Actor模型与Akka
Actor模型与Akka 一. Actor模型 Actor模型概念 一个概念模型,用于处理并发计算 Actor模型内部的状态由自己的行为维护,外部线程不能直接调用对象的行为,必须通过消息才能激发行为, ...
- 95-848-020-源码-AKKA-Akka与Actor 模型
1.概述 Akka是一个用来开发支持并发.容错.扩展性的应用程序框架.它是actor model的实现,因此跟Erlang的并发模型很像.在actor模型的上下文中,所有的活动实体都被认为是互不依赖的 ...
- actor 模型原理 (二)
现在开始研究一下akka的actor模型是怎么实现的: 老外写了一个程序说明actor的工作机制,下图就是学生给老师发邮件的具体示意图,那么1-6一共6个步骤 1.学生创建actor system , ...
最新文章
- python 调用 c 生成数组_python调用c++传递数组的实例
- 关于 $'\r': 未找到命令的解决(bad interpreter )
- 用git发patch
- FGPA异步信号问题
- 【ssh登陆问题】no matching cipher found / no matching key exchange method found
- 晨哥真有料丨为什么女生从来不主动找你聊天
- GitHub 又又又挂了?
- Vijos P1816 统计数字【序列处理】
- 令人赞叹的 MySQL
- 产品规划立项流程(CDP)
- 智鼎逻辑推理题及答案_2019最新玛氏笔试真题节选(含答案及解析)
- c/c++:双人对战五子棋源代码
- Windows 11镜像文件
- 二维几何图形创作方法(Geometry2D)
- Web性能压力测试工具之WebBench详解
- 福州一般拍一套婚纱照要多少钱
- 二叉树的中序遍历 [递归 迭代]
- 30岁前,你应该知道的九大潜规则
- 中西医结合骨伤科学练习考试答案
- 字符串解码(猿辅导笔试题数箱子)
热门文章
- easycode 表配置_EasyCode插件使用及模板参考
- matlab离散傅里叶逆变换,手动实现离散傅里叶正变换与逆变换(程序+例子)
- java 数组排序_用Java对数组排序
- c++注册表操作(未完成)
- python测试脚本 进制转换器_使用Python内置的模块与函数进行不同进制的数的转换...
- 荣威i5能升级鸿蒙系统吗,荣威i5更新系统方法
- savefiledialog对话框的取消和确定按钮分别返回一个什么值?_确定按钮该放在左边还是右边?...
- 服务器执行sh文件或目录,将window的shell脚本通过ftp传输到Linux服务器后, shell脚本中执行时提示“没有那个文件或目录”的解决办法...
- python+opencv+PIL,在图片和视频中写入中文(汉字)
- 能取代top命令的htop