`
spartan1
  • 浏览: 365094 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

关于actor模型的优缺点分析(1)

 
阅读更多

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

分享到:
评论
2 楼 abc08010051 2017-04-21  
结果呢?烂尾跑路了?
1 楼 avajeye 2013-10-14  
烂尾了??

相关推荐

    xml常用四种解析方式优缺点的分析

    本文将深入探讨XML的四种常见解析方式——DOM、SAX、StAX和JDOM,以及它们各自的优缺点。 1. DOM(Document Object Model)解析器: DOM解析器将整个XML文档加载到内存中,构建一个树形结构,允许开发者通过节点...

    Python-Ray一个灵活高性能分布式执行框架

    - **Actor模型**:Ray支持Actor模型,这是一种处理并发和状态管理的编程范式。每个Actor都是一个独立的实体,有自己的状态,并通过消息传递进行通信,确保了状态的一致性。 - **分布式对象存储**:Ray有一个全局的...

    akka 2.0 文档

    这部分内容介绍了 Akka 支持的序列化方式及其优缺点。 **4.13 FSM (Finite State Machine)** 有限状态机是一种用于建模 Actor 行为的有效方法。这部分内容介绍了如何在 Akka 中实现 FSM 并利用其处理复杂的业务...

    .net 需求分析试题

    1. **需求分析**:明确用户对软件的功能、性能等方面的需求,是软件开发的第一个阶段,也是最重要的阶段之一。 2. **设计阶段**:根据需求分析的结果,设计出实现这些需求的具体方案,包括系统架构设计、模块设计等...

    整理的培训目录

    - **架构之殇和常见架构分析**:讨论了系统架构的挑战,如微服务、SOA(面向服务架构)等,并分析了各种架构的优缺点,帮助选择适合的架构风格。 - **DCI(数据上下文交互)、CQRS(命令查询职责分离)和事件溯源*...

    Chapter 6 Use-Case Modeling.ppt

    在博客文章中,作者Fanfanwing分享了关于使用案例建模的经验和技巧,可能涉及如何在实际项目中有效运用使用案例模型,以及如何解决建模过程中遇到的问题。 总结来说,使用案例建模是软件开发中不可或缺的一部分,它...

    分布式系统:概念与设计(第5版)

    MapReduce和Actor模型是分布式计算的两种常见模型,它们简化了大规模数据处理。书中将详细讲解这两种模型的工作原理及其在实际应用中的实施。 6. **分布式数据库**: 分布式数据库处理跨越多个节点的数据存储和...

    doc upload repository

    根据提供的文件信息,我们可以提取到以下知识点: 1. 分布式系统设计:文档提到了并发系统的健壮设计对于工程...文档片段虽然不是完整的,但仍然提供了有关并发系统设计、系统建模和Actor模型等高级概念的重要信息。

    进程通信源码.rar

    10. **Actor模型**: Akka库为Java提供了Actor模型,这是一种并行和分布式计算的模型,其中Actor是独立的实体,通过消息传递进行通信。 这些技术各有优缺点,适用于不同的场景。例如,简单数据交换可以使用管道或套...

    Learning Concurrent Programming in Scala

    3. **并发编程模式**:学习不同的并发编程模式,比如共享内存模型和消息传递模型,并比较它们之间的优缺点。 4. **并发错误处理**:讨论并发编程中常见的问题,如死锁、竞态条件等,并提供解决方案。 5. **高级主题*...

    网络拓扑图学习,编程基础入门

    网络拓扑图通常有环形、星形、总线型、网状等多种类型,每种都有其特定的优缺点和适用场景。学习网络拓扑图,你需要掌握以下知识点: 1. **基本概念**:了解网络设备、协议、IP地址和MAC地址等基本概念。 2. **拓扑...

    几种经典的策略梯度算法性能对比.docx

    综合来看,每种策略梯度算法都有其适用场景和优缺点。GPOMDP 在模型准确的情况下表现出色;NAC 适合处理高维连续动作空间的问题;而基于 TD(λ) 的策略梯度算法则在处理随机性和连续动作空间任务时具有较强的优势。...

    UML可视化建模(航空订票系统)课程设计.doc

    同时,我们也将讨论UML语言在航空订票系统设计中的优点和缺点。 第一章 概述 航空订票系统是一个复杂的系统,涉及到多个方面,包括客户管理、航班管理、票务管理等。为了更好地理解和描述系统的结构、行为和功能,...

    Linux高性能服务器编程源码.zip

    8. **并发模型**:除了多线程,还有其他并发模型,如用户空间线程(如NPTL)、协程和actor模型。每种模型都有其适用场景,开发者需要了解其优缺点。 9. **错误处理与日志记录**:良好的错误处理机制和日志记录对于...

    分布式操作系统课程复习资料

    2. Actor模型:每个Actor是一个独立的计算实体,通过消息传递进行通信,避免了共享状态的问题,如Akka框架。 3. 分布式流计算:实时处理连续数据流,如Apache Flink和Spark Streaming。 五、分布式一致性与共识...

    2021电子科技大学分布式系统重点整理及20年回忆版试题

    - Actor模型:每个Actor是一个独立的计算实体,通过消息传递进行通信,避免了共享状态的复杂性。 - P2P(对等计算)模型:网络中的每个节点既是服务消费者也是服务提供者,如BitTorrent协议。 3. 分布式一致性与...

Global site tag (gtag.js) - Google Analytics