文档章节

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

摩云飞
 摩云飞
发布于 2014/06/07 11:54
字数 681
阅读 265
收藏 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

没有更多内容

加载失败,请刷新页面

加载更多

mybatis学习(1)

JDBC连接方式: 1.底层没有使用连接池,操作数据库需要频繁的创建和关闭连接,消耗资源。 2.写原生的JDBC代码在JAVA中,一旦需要修改SQL的话(比如表增加字段),JAVA需要整体重新编译,不利...

杨健-YJ
26分钟前
1
0
怎么组织文档

可以从以下几个方面考虑组织文档: ☐ 各种分支的界面截图和对应的类及文件 ☐ 框架或类图 ☐ 流程图 ☐ 时序图 ☐ 注意事项

-___-
37分钟前
2
0
分布式之数据库和缓存双写一致性方案解析

引言 为什么写这篇文章? 首先,缓存由于其高并发和高性能的特性,已经在项目中被广泛使用。在读取缓存方面,大家没啥疑问,都是按照下图的流程来进行业务操作。 但是在更新缓存方面,对于更...

别打我会飞
40分钟前
9
0
我的oracle11G,12c OCM之路

ocm认证感悟 ---------------------- 距离拿到ocm证书已经过了1年的时间,当初拿到证书的心情到现在还记得。其实在每个DBA心里都有一个成为强者的梦想,需要被认可,我也一样。我干过开发,做...

hnairdb
40分钟前
2
1
手动部署kubernetes集群(1.13.1最新版)

一、机器规划 使用五台机子部署k8s集群,规划如下: master节点3台(同时也是etcd节点) node节点2台 ip分配如下: ip:192.168.10.101,主机名:k8s-etcd01 ip:192.168.10.102,主机名:k8s...

人在艹木中
45分钟前
30
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部