文档章节

【转载】actor 模型的优缺点分析介绍

摩云飞
 摩云飞
发布于 2014/06/07 11:54
字数 681
阅读 229
收藏 4

      actor 模型是 1973 年就提出的一个分布式并发编程模型,在 erlang 语言中得到广泛支持和应用。目前 java中 也出现了很多支持 actor模型的库:akka、killim、jetlang等等,其中 akka 是使用 scala 写的,有 scala 和 java 两套使用接口;killim 需要对编译出来的 class 文件进行后处理。

最近项目需要架构整改,以支撑后续的发展,正在考虑是否采用 actor 模型。

先收集点资料,这两天好好分析一下。 

actor 模型参考维基百科定义(http://en.wikipedia.org/wiki/Actor_model):
actor 是一个计算实体,当其收到消息时,可以并发执行如下操作:

  • 发送有限数量的消息给其他 actor
  • 创建有限数量的新 actor
  • 指定收到下一消息时的行为

      ACE 的 reactor 模型是通过注册/回调方式进行驱动的程序开发模式,先注册自己关注什么事件,然后反应堆就会在该事件发生时回调你。这实际上与 actor 模型有些类似。reactor 在维基百科定义如下(http://en.wikipedia.org/wiki/Reactor_pattern):
      reactor 是一种设计模式,用于一到多个输入并发向一个服务处理器发送请求时进行事件处理。服务处理器将收到的请求同步分发到相应的请求处理器上。
      按照定义,所有 reactor 系统都是单线程的,但可以应用到多线程环境中。reactor 模型的特点是控制流反转(inversed flow of control)

proactor 模型可以认为是 reactor 模型的一种异步实现,reactor 要求收到请求后同步分发的请求处理器上,而 proactor 允许异步处理,定义(http://en.wikipedia.org/wiki/Proactor_pattern):
      proactor 也是事件处理的设计模式,在这种模式中,长时间运行的活动在单独的异步过程中处理,异步处理过程技术后,一个 completion handler 被调用。这个有些类似 akka actor 模型中,future 对象的 onComplete、onSuccess、onFailed 方法。
      proactor 的 ace 实现(http://www.cs.wustl.edu/~schmidt/PDF/proactor.pdf

线程为啥不好?为啥要用event代替?http://www.stanford.edu/~ouster/cgi-bin/papers/threads.pdf
scala 的好书(programming in scala)http://www.cs.uwaterloo.ca/~brecht/courses/854-Scalable-Systems-Software/Possible-Readings/scala/ProgrammingInScala.pdf


本文转载自:http://www.pms.cc/architecture-design/actor/201307/actor_1265.html

共有 人打赏支持
摩云飞
粉丝 368
博文 534
码字总数 952694
作品 0
徐汇
程序员
下一代的 Actor 模型框架--Proto Actor

ProtoAct 是下一代的 Actor 模型框架,提供了 .NET 和 Go 语言的实现,默认支持分布式,提供管理和监控功能。在过去几年,我们经常看到两种 Actor 模型方法相互竞争,首先是经典的 Erlang/A...

匿名
2017/02/03
5.7K
10
C++并发编程框架Theron(1)——Actor模型介绍

1 说在前面的话   Theron是近些年发展起来的一个非常不错的C++并发编程框架,最近有详细阅读Theron的相关资料,发现它思想非常有条理,结构很明朗,非常适合项目开发。其实Theron国内研究还...

fx677588
2017/07/09
0
0
七周七并发模型

image.png 七个模型来介绍并发与并行。 线程与锁:线程与锁模型有很多众所周知的不足,但仍是其他模型的技术基础,也是很多并 发软件开发的首选。 函数式编程:函数式编程日渐重要的原因之一,...

高广超
01/01
0
0
akka设计模式系列(Actor模型)

  谈到Akka就必须介绍Actor并发模型,而谈到Actor就必须看一篇叫做《A Universal Modular Actor Formalism for Artificial Intelligence 》的论文,它最早发表于1973年,提出了一种并发计算...

gabrywu
07/05
0
0
java并发的四种风味:Thread、Executor、ForkJoin和Actor

本文由 ImportNew - shenggordon 翻译自 Oleg Shelajev。欢迎加入翻译小组。转载请见文末要求。 这篇文章讨论了Java应用中并行处理的多种方法。从自己管理Java线程,到各种更好几的解决方法,...

fdhay
2016/03/31
27
0

没有更多内容

加载失败,请刷新页面

加载更多

Web系统大规模并发:电商秒杀与抢购

一、大规模并发带来的挑战 在过去的工作中,我曾经面对过5w每秒的高并发秒杀功能,在这个过程中,整个Web系统遇到了很多的问题和挑战。如果Web系统不做针对性的优化,会轻而易举地陷入到异常...

xtof
今天
1
0
代码质量管理平台-sonarqube

在工作中,往往开发的时候会不怎么注重代码质量的人很多,存在着很多的漏洞和隐患等问题,sonarqube可以进行代码质量的审核,而且十分的残酷。。。。。接下来我们说下怎么安装 进入官网下载:...

落叶清风
今天
6
0
在Ubuntu安装和配置Sphinx

Ubuntu系统默认是配置有sphinx的,先检查一下,别多此一举。。。。。 在开始本指南之前,您需要: 一个Ubuntu 16.04服务器。 sudo的一个非root用户,您可以通过以下设置本教程 。 安装在服务...

阿锋zxf
今天
1
0
Qt编写输入法V2018超级终结版

对于qt嵌入式linux开发人员来说,输入法一直是个鸡肋问题,要么不支持实体键盘同步,要么不能汉字输入,要么不支持网页输入等,这几年通过陆续接触大量的各种输入法应用场景客户,得到真实需...

飞扬青云
今天
2
0
TypeScript基础入门之高级类型的多态的 this类型

转发 TypeScript基础入门之高级类型的多态的 this类型 高级类型 多态的this类型 多态的this类型表示的是某个包含类或接口的子类型。 这被称做F-bounded多态性。 它能很容易的表现连贯接口间的...

durban
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部