转自:http://my.oschina.net/sulliy/blog/60000
Actor模型
发表于4年前(2012-05-29 12:30) 阅读(5087) | 评论(1) 7人收藏此文章, 我要收藏
Actor模式是一个解决分布式计算的数学模型,其中Actor是基础,它能回应接收到消息,能够自我决策,创建更多的Actor,发送更多的消息,决定如何回应下一个接收到的消息。Actor认为一切皆是Actor,类似于面向对象认为一切皆Object一样。OO的执行是顺序的,Actor模型内在设计就是并行的。
Actor是计算实体,它回复接收到的消息,能够并行的:
1. 发生有限的消息给其他Actor
2. 创建有限数目的新Actor
3. 指定小一个消息到达时的行为
2. 创建有限数目的新Actor
3. 指定小一个消息到达时的行为
这些操作并没有顺序要求,它们能够并行地实施。由于没有对消息的时序做规定,Actor模式是一种异步模型,发送到Actor不等待消息被接收而继续执行。Actor之间不共享状态,如果想获取其他actor的状态,只能通过消息请求的方式。
Actor在消息内部指定接收消息的Actor地址。Actor可以用自己的地址发送消息,相当于自己接收到自发发送到消息,可以驱动自己的状态。
Carl Hewitt( http://arxiv.org/abs/1008.1459)总结了信息系统的一些基本原则:
1. 持久化(Persistence),采集和索引信息
2. 并发性(Concurrency)
3. Quasi-commutativity,信息不论是新产生的,还是与现在进行时的任务相关的,都是有用信息
4. 受资助的(Sponsorship),资助者提供计算资源,比如处理器,存储忽然通信设施
5. 多元化(Pluralism),信息是异构重叠的,经常还是不一致的
6. 可溯源(Provenance),信息被仔细地追踪和记录
2. 并发性(Concurrency)
3. Quasi-commutativity,信息不论是新产生的,还是与现在进行时的任务相关的,都是有用信息
4. 受资助的(Sponsorship),资助者提供计算资源,比如处理器,存储忽然通信设施
5. 多元化(Pluralism),信息是异构重叠的,经常还是不一致的
6. 可溯源(Provenance),信息被仔细地追踪和记录
并且认为Actor Model为非一致性鲁棒性信息系统提供了坚实基础。(他是Actor的作者,难免打下广告啦)
但是为什么Actor Model没有得到广泛的应用呢?Paul Mackay( http://www.doc.ic.ac.uk/~nd/surprise_97/journal/vol2/pjm2/)回答了这一问题。Actor模型提出的时候,分布式计算才刚刚诞生,一切才刚刚开始,虽然Actor非常适合解决分布式的一些问题,但由于实现的复杂性,一开始并没有吸引多少注意。他还列举了Actor模型的一些不足:
1. Actor提供了模块和封装,缺少继承和分层。
2. 由于Actor能够动态创建其他Actor,这种行为使得系统的行为动态变化,很难控制。
3. 行为置换(behaviour replacement)。由于行为是动态的,很难用静态语言实现。静态分享不能支持反射,运行系统的重新配置。优化困难。为了保证消息的可靠传递,需要无限制的邮箱,需要的无线堆栈在某些架构下并不能满足。
4. 异步消息对于某些范式和算法并不适合。比如对消息顺序有严格要求的系统,虽然可以通过等待实现,但会严重降低Actor模型的效率。在OOP中,Actor会增加Actor的数量,增加系统开销。
2. 由于Actor能够动态创建其他Actor,这种行为使得系统的行为动态变化,很难控制。
3. 行为置换(behaviour replacement)。由于行为是动态的,很难用静态语言实现。静态分享不能支持反射,运行系统的重新配置。优化困难。为了保证消息的可靠传递,需要无限制的邮箱,需要的无线堆栈在某些架构下并不能满足。
4. 异步消息对于某些范式和算法并不适合。比如对消息顺序有严格要求的系统,虽然可以通过等待实现,但会严重降低Actor模型的效率。在OOP中,Actor会增加Actor的数量,增加系统开销。
参考资料:
The Actor Model - Towards Better Concurrency
http://www.slideshare.net/drorbr/the-actor-model-towards-better-concurrency
Acator in Scala中文翻译
http://www.slideshare.net/drorbr/the-actor-model-towards-better-concurrency
Acator in Scala中文翻译
http://blog.csdn.net/strongerbit/article/details/6838162
Foundations of Actor Semantics
http://dspace.mit.edu/bitstream/handle/1721.1/6935/AITR-633.pdf?sequence=2ActorLite:
ActorLite:一个轻量级Actor模型实现(上)
http://blog.zhaojie.me/2009/05/a-simple-actor-model-implementation.html
The Scala Actors API
Scala.Actor实践心得与设计思想
相关推荐
actor开源代码分享,actor开源代码分享,actor开源代码分享,actor开源代码分享
基于Actor模型的高性能分布式XMPP服务器(毕业论文).caj
Aerojet是swift的一个actor模型实现
CAF是C ++ actor模型的开源实现,具有轻量级和快速的actor实现,消息的模式匹配,网络透明消息传递等。 在线资源 主页: : 开发者博客: : 手册: : Doxygen : : 报告错误/获得帮助 GitHub上的未解决问题: : ...
NULL 博文链接:https://zhwj184.iteye.com/blog/1613351
该软件是为了解决分布式编程中一系列的编程问题而设计,是非常实用的Java和Scala的Actor模型应用,支持多种运行系统进行使用,且安全性高,操作简单,用起来也是非常的方便的! 1、Actor之间完全独立; 2、Actor由...
Actor模型(并发计算模型)
Akka Actor模型开发库 v2.9.1.zip
1、使用protostuff序列化(.proto文件编写恶心,与Protocol Buffer性能几乎接近) 2、使用Netty进行通讯(同节点RPC不走网络,直接入收件箱队列); 3、路由策略:随机路由、指定Key路由、资源Id路由、强制路由 ...
通过Actor模型使用响应式消息传输模式,可编写出具有高性能、高响应性、高可伸缩性和高韧性的并发应用程序。本书由10章构成,详细介绍了使用Actor模型中响应式消息传输模式的理论和实用技巧。其中包括:Actor模型和...
通过Actor模型使用响应式消息传输模式,可编写出具有高性能、高响应性、高可伸缩性和高韧性的并发应用程序。《响应式架构:消息模式Actor实现与Scala、Akka应用集成》由10章构成,详细介绍了使用Actor模型中的响应式...
Actor Boilerplate:基于actor模型的Web应用程序开发基础样板
银行存款余额使用actor模型进行银行交易的Elixir项目。 要运行“主要”剥离使用: mix run boot.exs并发模型 Actor 模型1. 每个actor是一个Process 2. 每个actor执行一个特定的任务3. 告诉进程做一些你需要在消息中...
JS中的Actor模型 探索以Actor模型的样式实现API的潜在好处,即使在单线程编程环境(如Javascript)中也是如此。 去做 演员系统ActorSystem createSystem() system.actorOf(IActorFactory) -> ActorRef ...
Pony 是开源,actor模型,功能安全,高性能的编程语言
它非常喜欢“标记事件驱动的体系结构”(SEDA)事件驱动器模型来进行流水线事件处理。 该系统非常适合构建IO密集型,对延迟敏感的应用程序(例如数据库,文件系统等),这些应用程序利用SSD等高吞吐量设备并支持10+...
主要介绍了JAVA Actor模型的的相关资料,文中讲解非常细致,帮助大家更好的学习JAVA,感兴趣的朋友可以了解下
基于ECS(Entity component System)构建的分布式游戏服务端框架,同时提供Actor模型,目标是致力于快速搭建轻量、高性能、高可用的 分布式游戏后端,以及其他分布式后端应用
#资源达人分享计划#
在 C# 中实现类似 Akka 的 actor 模型。 工作正在进行中 样品 Pi 计算示例。 参考 演示文稿 阿卡 阿卡 2.0 演员 演员参考、路径和地址 Fork Join Pool 的可扩展性 Dispatchers理解底层 Akka 实现的关键概念 scala...