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开源代码分享,actor开源代码分享,actor开源代码分享,actor开源代码分享
基于Actor模型的高性能分布式XMPP服务器(毕业论文).caj
NULL 博文链接:https://zhwj184.iteye.com/blog/1613351
Aerojet是swift的一个actor模型实现
CAF是C ++ actor模型的开源实现,具有轻量级和快速的actor实现,消息的模式匹配,网络透明消息传递等。 在线资源 主页: : 开发者博客: : 手册: : Doxygen : : 报告错误/获得帮助 GitHub上的未解决问题: : ...
该软件是为了解决分布式编程中一系列的编程问题而设计,是非常实用的Java和Scala的Actor模型应用,支持多种运行系统进行使用,且安全性高,操作简单,用起来也是非常的方便的! 1、Actor之间完全独立; 2、Actor由...
1、使用protostuff序列化(.proto文件编写恶心,与Protocol Buffer性能几乎接近) 2、使用Netty进行通讯(同节点RPC不走网络,直接入收件箱队列); 3、路由策略:随机路由、指定Key路由、资源Id路由、强制路由 4、...
Actor模型(并发计算模型)
Akka Actor模型开发库 v2.9.1.zip
通过Actor模型使用响应式消息传输模式,可编写出具有高性能、高响应性、高可伸缩性和高韧性的并发应用程序。《响应式架构:消息模式Actor实现与Scala、Akka应用集成》由10章构成,详细介绍了使用Actor模型中的响应式...
通过Actor模型使用响应式消息传输模式,可编写出具有高性能、高响应性、高可伸缩性和高韧性的并发应用程序。本书由10章构成,详细介绍了使用Actor模型中响应式消息传输模式的理论和实用技巧。其中包括:Actor模型和...
Actor Boilerplate:基于actor模型的Web应用程序开发基础样板
要运行“主要”剥离使用: mix run boot.exs并发模型 Actor 模型1. 每个actor是一个Process 2. 每个actor执行一个特定的任务3. 告诉进程做一些你需要在消息中发送的事情。 该进程还可以发回另一条消息。 4. 进程...
JS中的Actor模型 探索以Actor模型的样式实现API的潜在好处,即使在单线程编程环境(如Javascript)中也是如此。 去做 演员系统ActorSystem createSystem() system.actorOf(IActorFactory) -> ActorRef ...
简单的 Actor 模型实现。 请参阅。 描述 这个实现的灵感来自 。 该模型鼓励编写由使用消息传递进行协作的参与者组成的应用程序。 在这个模块中,方法调用就像一个消息传递操作,不返回值。 使用actor 模型的应用...
Pony 是开源,actor模型,功能安全,高性能的编程语言
主要介绍了JAVA Actor模型的的相关资料,文中讲解非常细致,帮助大家更好的学习JAVA,感兴趣的朋友可以了解下
它非常喜欢“标记事件驱动的体系结构”(SEDA)事件驱动器模型来进行流水线事件处理。 该系统非常适合构建IO密集型,对延迟敏感的应用程序(例如数据库,文件系统等),这些应用程序利用SSD等高吞吐量设备并支持10+...
#资源达人分享计划#