转自: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实践心得与设计思想
相关推荐
在IT行业中,Actor模型是一种并发计算的模型,它源自于函数式编程领域,由英国计算机科学家C.A.R. Hoare提出。Actor模型的核心思想是将并发处理中的实体——也就是执行单元——抽象为“Actor”,每个Actor都有自己的...
Java Actor模型是一种并发编程模型,源自于Scala语言,但也可以在Java中实现。该模型基于actor的概念,每个actor都是一个独立的执行单元,拥有自己的状态并与其他actor通过异步消息传递进行通信。这种方式极大地简化...
基于Actor模型的高性能分布式XMPP服务器(毕业论文).caj
在并发编程领域,Swift提供了一种名为Actor模型的机制,旨在解决多线程环境中的数据竞争问题,提高程序的并发性能和安全性。而"Aerojet"正是一个针对Swift的Actor模型实现,它为开发者提供了更高级别的抽象来处理...
在IT行业中,Actor模型是一种处理并发和分布式计算的有效方法,尤其在高并发和大规模系统中。这个"ActorBoilerplate"项目提供了一个基础模板,帮助开发者使用actor模型来构建Web应用程序。下面我们将深入探讨actor...
具体来说,基于Actor模型的XMPP服务器架构设计能够将不同的消息处理任务分配给不同的Actor去执行,每个Actor只处理一部分消息,这不仅能够提高并发度,还能在系统规模扩大时,通过增加Actor的数量来提升系统的整体...
**Actor模型:并发计算的新视角** Actor模型是一种用于并发计算的理论框架,由Erlang编程语言的创始人Joe Armstrong在1973年由Carl Hewitt首次提出。它提供了一种处理并发和分布式系统中复杂性的方式,通过将计算视...
《Akka Actor模型开发库 v2.6.12 源码解析》 Akka是基于Actor模型的高性能、高并发、分布式计算框架,它由Lightbend公司(前身为Typesafe)开发并维护。Actor模型是一种并发计算模型,通过消息传递实现并发,为...
CAF是C ++ actor模型的开源实现,具有轻量级和快速的actor实现,消息的模式匹配,网络透明消息传递等。 在线资源 主页: : 开发者博客: : 手册: : Doxygen : : 报告错误/获得帮助 GitHub上的未解决问题: : ...
Akka Actor模型是一种高效、可扩展的并发编程模型,它源于Scala编程语言并被广泛应用于分布式系统中。Akka库的v2.9.1版本提供了丰富的功能和优化,为开发者构建高度并发、容错和反应式的应用程序提供了一个强大的...
它非常喜欢“标记事件驱动的体系结构”(SEDA)事件驱动器模型来进行流水线事件处理。 该系统非常适合构建IO密集型,对延迟敏感的应用程序(例如数据库,文件系统等),这些应用程序利用SSD等高吞吐量设备并支持10+...
该软件是为了解决分布式编程中一系列的编程问题而设计,是非常实用的Java和Scala的Actor模型应用,支持多种运行系统进行使用,且安全性高,操作简单,用起来也是非常的方便的! 1、Actor之间完全独立; 2、Actor由...
该项目为基于ECS和Actor模型的Go语言分布式游戏服务端框架设计源码,包含328个文件,涵盖了133个Go源文件、29个JavaScript/TypeScript脚本文件、35个PNG图片资源、16个JSON数据文件、5个日志文件以及其他类型文件。...
1、使用protostuff序列化(.proto文件编写恶心,与Protocol Buffer性能几乎接近) 2、使用Netty进行通讯(同节点RPC不走网络,直接入收件箱队列); 3、路由策略:随机路由、指定Key路由、资源Id路由、强制路由 ...
通过Actor模型使用响应式消息传输模式,可编写出具有高性能、高响应性、高可伸缩性和高韧性的并发应用程序。本书由10章构成,详细介绍了使用Actor模型中响应式消息传输模式的理论和实用技巧。其中包括:Actor模型和...
通过Actor模型使用响应式消息传输模式,可编写出具有高性能、高响应性、高可伸缩性和高韧性的并发应用程序。《响应式架构:消息模式Actor实现与Scala、Akka应用集成》由10章构成,详细介绍了使用Actor模型中的响应式...
Protoactor是一个强大的分布式系统框架,它采用了Actor模型,这是一种并行计算的范式,源自Erlang和Akka等系统。Actor模型通过将计算任务分散到独立的、自我管理的实体——Actor中,实现了高度的并发和容错性。每个...
在给定的标题和描述中,我们看到这种模式被应用于构建分布式游戏服务端框架,并结合了Actor模型,这为创建轻量、高性能、高可用的分布式游戏后端提供了基础。 1. **ECS(实体组件系统)**: - **实体(Entity)**...
C++ Actor Framework(CAF)是一种开源的、跨平台的库,用于构建并发和分布式系统,其核心设计思想是actor模型。在actor模型中,每个actor都是一个独立的实体,拥有自己的状态并能异步接收和处理消息。CAF提供了一种...