ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Actor模型的分布式计算框架

2021-06-06 14:03:05  阅读:246  来源: 互联网

标签:框架 模型 Worker 分布式计算 Actor system 消息 Root


===================================================================================================

Actor模型的理念:

所有对象皆是Actor,Actor之间仅通过Message Passing来通信,所有操作都是异步的,使得整个系统获得大规模的并发能力。

 

Actor消息内容,一般包括几个主要属性:

  • source:发送方
  • subject:主题,表明消息类型。
  • data:消息内容。

 

Actor收到消息之后,可以做的处理:

  • 创建其他Actor
  • 向其他Actor发送消息
  • 指定下一条消息到来的行为,例如修改自己的状态

 

基于Actor构建一个分布式应用程序,一般有一个Root Actor,然后多个Worker Actor。 例如:

  • 有10个文件要处理;先创建一个Root Actor,然后Root Actor创建10个Worker Actor,每个Worker Actor处理1个文件。
  • Root Actor要给Worker Actor发送一个消息,消息中包含分配给它的文件编号。
  • Worker Actor计算完成之后,返回结果给Root Actor,由Root Actor汇总和输出。
  • Root Actor要监控Worker Actor的状态,并进行处理,例如重新拉起一个新的Worker Actor。

Actor模型的优势:

  • 消息收发、线程调度、同步等所有复杂逻辑,都交给Actor框架。 开发者只需要关心Actor之间的消息即可,而且Actor也可以很容易地单独测试。

 

Actor模型的劣势:

  • Actor完全避免了数据共享,使得程序员失去精细化并发优化的能力,所以不太适合实施细粒度的并行,且可能导致系统响应时延的增加。如果在Actor程序中在引入一些并行框架,就可能导致系统的不确定性。Actor程序的性能,取决于Actor框架的底层实现,包括调度、消息传输和网络等等。
  • 尽管Actor模型程序,比“线程+锁”模型的程序更容易调试,但是还是会有死锁这类共性问题,还有一些Actor特有问题,例如消息队列溢出。

 

===================================================================================================

 

Akka:

对并行程序的简单的高层的抽象;

异步非阻塞、高性能的事件驱动的编程模型;

非常轻量的事件驱动处理(1G内存可容纳270万个Actors)。

 

Akka Actor分为user和system两种:

Akka的每个Actor都有一个Path,ActorSystem要维护一个Actor命名空间,具体做法参考了Linux Kernel的文件系统,顶层Actor是根路径/,然后下面分别是user和system两个子路径,把user空间和system空间分离,将system actor识别出来,从而可以针对性地实现精细化调度及增强系统内核的稳定性。

 

 参考《架构解密-从分布式到微服务》

===================================================================================================

 

标签:框架,模型,Worker,分布式计算,Actor,system,消息,Root
来源: https://www.cnblogs.com/ruanchao/p/14855177.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有