关于actor模型的优缺点分析(1)
来源:互联网 发布:输出所有的水仙花数vb 编辑:程序博客网 时间:2024/05/10 14:55
actor model是1973年就提出的一个分布式并发编程模型,在erlang语言中得到广泛支持和应用。目前java中也出现了很多支持actor模型的库:akka、killim、jetlang等等,其中akka是使用scala写的,有scala和java两套使用接口;killim需要对编译出来的class文件进行后处理。
最近项目需要架构整改,以支撑后续的发展,正在考虑是否采用actor模型。
actor模型有什么优点和缺点?
actor模型和ACE reactor(反应堆)有什么异同?
actor模型和proactor模型有什么异同?
actor模型对大型分布式并发开发有什么好处?
tumblr说其底层的RPC框架finagle最初是基于actor模型的,后来为什么不用了?
http://www.acejoy.com/thread-4065-1-1.html
英文原文:http://highscalability.com/blog/2012/2/13/tumblr-architecture-15-billion-page-views-a-month-and-harder.html
先收集点资料,这两天好好分析一下。
actor模型参考维基百科定义(http://en.wikipedia.org/wiki/Actor_model):
actor是一个计算实体,当其收到消息时,可以并发执行如下操作:
1. 发送有限数量的消息给其他actor
2. 创建有限数量的新actor
3. 指定收到下一消息时的行为
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
- 关于actor模型的优缺点分析(1)
- 关于actor模型的优缺点分析
- libgdx:Actor的分析(1)
- 关于Actor模型
- Actor模型的本质
- Actor模型的本质
- 下一代的 Actor 模型框架 Proto Actor
- actor模型(四)
- 关于热血传奇actor绘制的分析与思考
- 关于热血传奇actor绘制的分析与思考
- actor 模型原理 (一)
- actor 模型原理 (二)
- actor 模型原理 (三)
- 关于并发模型 Actor 和 CSP
- scala之Akka的Actor模型(下)
- scala之Akka的Actor模型(上)
- 关于编码习惯的优缺点分析
- Actor模型和CSP模型的区别
- Core Graphics 101: 光滑的按钮
- 如何禁止产生Thumbs.db和删除的方法
- GCD介绍(二): 多核心的性能
- VC 安装证书
- 任务:年龄几何
- 关于actor模型的优缺点分析(1)
- make: *** No rule to make target `persistent_processor.o', needed by `db_auditor
- Actor模式的Java实现 JActor
- 单片机测试系统的数据存储和管理
- Kilim:actor模型和消息传递的Java实现
- Struts2中%,#,$的使用
- 大型网站系统架构分析
- 笔试面试---设计模式&软件测试&软件工程
- Java俄罗斯方块源代码(swing界面)