`
janeky
  • 浏览: 365948 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Actor模型浅谈

阅读更多

简述

 

Actor模型在并发编程中是比较常见的一种模型。很多开发语言都提供了原生的Actor模型。例如erlang,scala等


 

 

Actor,可以看作是一个个独立的实体,他们之间是毫无关联的。但是,他们可以通过消息来通信。一个Actor收到其他Actor的信息后,它可以根据需要作出各种相应。消息的类型可以是任意的,消息的内容也可以是任意的。这点有点像webservice了。只提供接口服务,你不必了解我是如何实现的。

 

一个Actor如何处理多个Actor的请求呢?它先建立一个消息队列,每次收到消息后,就放入队列,而它每次也从队列中取出消息体来处理。通常我们都使得这个过程是循环的。让Actor可以时刻处理发送来的消息。

 

以Erlang为例子,介绍一下简单的Actor模型

 

1.首先建立一个Actor,在erlang中,起一个进程(这个是erlang虚拟机进程,跟os进程不同),这个进程就是actor了,可以用来接收和发送各种消息了

 

Pid = spawn(Mod,func,Args) %起一个进程

 

2.处理收到的消息

func()->

    receive

{From,Msg}-> %收到一个消息

%%do something

func();

 

3.要对这个actor发送消息,也非常简单

Pid ! {From,Msg}

 

总结:

Actor模型在并发编程中已经得到广泛应用。Java虽然还提供直接的支持,但是一些开源组织已经提供相关的jar包来模拟实现Actor模型,例如:

ActiveJava 等,有兴趣的同学可以去了解一下源码

 

参考资料:

http://en.wikipedia.org/wiki/Actor_model

  • 大小: 12.6 KB
1
12
分享到:
评论
2 楼 bluky999 2014-11-25  
leeco 写道
“Java虽然还提供直接的支持”,应该是“Java虽然还未提供直接的支持”吧?


你说的很对!
1 楼 leeco 2013-09-04  
“Java虽然还提供直接的支持”,应该是“Java虽然还未提供直接的支持”吧?

相关推荐

    actor模型java实现源码

    在IT行业中,Actor模型是一种并发计算的模型,它源自于函数式编程领域,由英国计算机科学家C.A.R. Hoare提出。Actor模型的核心思想是将并发处理中的实体——也就是执行单元——抽象为“Actor”,每个Actor都有自己的...

    java actor模型和消息传递实现分析

    Java Actor模型是一种并发编程模型,源自于Scala语言,但也可以在Java中实现。该模型基于actor的概念,每个actor都是一个独立的执行单元,拥有自己的状态并与其他actor通过异步消息传递进行通信。这种方式极大地简化...

    基于Actor模型的高性能分布式XMPP服务器(毕业论文).caj

    基于Actor模型的高性能分布式XMPP服务器(毕业论文).caj

    swift-Aerojet是swift的一个actor模型实现

    在并发编程领域,Swift提供了一种名为Actor模型的机制,旨在解决多线程环境中的数据竞争问题,提高程序的并发性能和安全性。而"Aerojet"正是一个针对Swift的Actor模型实现,它为开发者提供了更高级别的抽象来处理...

    ActorBoilerplate基于actor模型的Web应用程序开发基础样板

    在IT行业中,Actor模型是一种处理并发和分布式计算的有效方法,尤其在高并发和大规模系统中。这个"ActorBoilerplate"项目提供了一个基础模板,帮助开发者使用actor模型来构建Web应用程序。下面我们将深入探讨actor...

    基于Actor模型的高性能分布式XMPP服务器.pdf

    具体来说,基于Actor模型的XMPP服务器架构设计能够将不同的消息处理任务分配给不同的Actor去执行,每个Actor只处理一部分消息,这不仅能够提高并发度,还能在系统规模扩大时,通过增加Actor的数量来提升系统的整体...

    浅谈JAVA Actor模型的一致性与隔离性

    主要介绍了JAVA Actor模型的的相关资料,文中讲解非常细致,帮助大家更好的学习JAVA,感兴趣的朋友可以了解下

    Akka Actor模型开发库 v2.6.12-源码.zip

    《Akka Actor模型开发库 v2.6.12 源码解析》 Akka是基于Actor模型的高性能、高并发、分布式计算框架,它由Lightbend公司(前身为Typesafe)开发并维护。Actor模型是一种并发计算模型,通过消息传递实现并发,为...

    ActorModel:Actor模型(并发计算模型)

    **Actor模型:并发计算的新视角** Actor模型是一种用于并发计算的理论框架,由Erlang编程语言的创始人Joe Armstrong在1973年由Carl Hewitt首次提出。它提供了一种处理并发和分布式系统中复杂性的方式,通过将计算视...

    Akka Actor模型开发库 v2.9.1.zip

    Akka Actor模型是一种高效、可扩展的并发编程模型,它源于Scala编程语言并被广泛应用于分布式系统中。Akka库的v2.9.1版本提供了丰富的功能和优化,为开发者构建高度并发、容错和反应式的应用程序提供了一个强大的...

    actor-framework:C ++中Actor模型的开源实现

    CAF是C ++ actor模型的开源实现,具有轻量级和快速的actor实现,消息的模式匹配,网络透明消息传递等。 在线资源 主页: : 开发者博客: : 手册: : Doxygen : : 报告错误/获得帮助 GitHub上的未解决问题: : ...

    actor:Actor模型的C ++实现

    它非常喜欢“标记事件驱动的体系结构”(SEDA)事件驱动器模型来进行流水线事件处理。 该系统非常适合构建IO密集型,对延迟敏感的应用程序(例如数据库,文件系统等),这些应用程序利用SSD等高吞吐量设备并支持10+...

    akka actor模型开发库 v2.6.14 pc端

    该软件是为了解决分布式编程中一系列的编程问题而设计,是非常实用的Java和Scala的Actor模型应用,支持多种运行系统进行使用,且安全性高,操作简单,用起来也是非常的方便的! 1、Actor之间完全独立; 2、Actor由...

    基于ECS和Actor模型的Go语言分布式游戏服务端框架设计源码

    该项目为基于ECS和Actor模型的Go语言分布式游戏服务端框架设计源码,包含328个文件,涵盖了133个Go源文件、29个JavaScript/TypeScript脚本文件、35个PNG图片资源、16个JSON数据文件、5个日志文件以及其他类型文件。...

    基于Actor模型的RPC

    1、使用protostuff序列化(.proto文件编写恶心,与Protocol Buffer性能几乎接近) 2、使用Netty进行通讯(同节点RPC不走网络,直接入收件箱队列); 3、路由策略:随机路由、指定Key路由、资源Id路由、强制路由 ...

    响应式架构 消息模式Actor实现与Scala.Akka应用集成

    通过Actor模型使用响应式消息传输模式,可编写出具有高性能、高响应性、高可伸缩性和高韧性的并发应用程序。本书由10章构成,详细介绍了使用Actor模型中响应式消息传输模式的理论和实用技巧。其中包括:Actor模型和...

    响应式架构 消息模式Actor实现与Scala.Akka应用集成.rar

    通过Actor模型使用响应式消息传输模式,可编写出具有高性能、高响应性、高可伸缩性和高韧性的并发应用程序。《响应式架构:消息模式Actor实现与Scala、Akka应用集成》由10章构成,详细介绍了使用Actor模型中的响应式...

    基于ECS(Entity component System)构建的分布式游戏服务端框架,同时提供Actor模型

    在给定的标题和描述中,我们看到这种模式被应用于构建分布式游戏服务端框架,并结合了Actor模型,这为创建轻量、高性能、高可用的分布式游戏后端提供了基础。 1. **ECS(实体组件系统)**: - **实体(Entity)**...

    Go-gaserver基于protoactor框架的actor游戏服务器

    Protoactor是一个强大的分布式系统框架,它采用了Actor模型,这是一种并行计算的范式,源自Erlang和Akka等系统。Actor模型通过将计算任务分散到独立的、自我管理的实体——Actor中,实现了高度的并发和容错性。每个...

Global site tag (gtag.js) - Google Analytics