×
新网 > 建站推广 > 正文

  Actor模型是什么?

  • 作者:新网
  • 来源:新网
  • 浏览:100
  • 2018-02-27 17:25:04

 Actor模型是什么?近些年有逐渐流行的趋势。Actor模型中一个核心概念就是Actor实体。每个Actor实体负责一个逻辑计算。传统并发编程都是基于共享内存的方式来达到多线程之间的通讯的目的。

 Actor模型是什么?近些年有逐渐流行的趋势。Actor模型中一个核心概念就是Actor实体。每个Actor实体负责一个逻辑计算。传统并发编程都是基于共享内存的方式来达到多线程之间的通讯的目的。

0.jpg
<div>Actor之间不共享数据,也不直接通讯,而是发送或者接受mailbox/queque中的消息来达到通讯的目的。Actor之间通过消息来驱动。正式由于发送者与接受者的分离,是的Actor具有内在的并发特性,它可以不用考虑actor之间的同步问题,不受限制的调度执行收到消息的Actor,从而优化了IO等待的问题。Scala,Golang等在语言层面支持Actor模型。Scala的新版中,推出Akka来完成Actor模型,并有了Java版本。但是需要引入新的API,对现有业务代码块改造成Actor模型,对现有代码改动较大。

 
Rx也是一种编程模型,它尝试提供统一的异步编程接口封装来操作一个可观察的数据流。其吸收了函数式编程的优秀思想,并将观察者,迭代器模式实现的淋漓精致。当下流行的语言,基本都有相应的实现。 如RxJava类库,即提供了java版本的实现,RxJava在Netflix的Zuul项目中得到成功的应用。Rx看起来更像是一种编程思想的突破。它提供了统一的函数式的风格编程接口来简化异步程序的编写,同时内部也通过callback机制,比Actor能获得更好的响应速度。在调研过程中,我们发现它同样要求对现有代码做较大改动,并将之前的同步模式转换成函数式编程风格。
 
综合来看,以上一些优秀的框架并不能立即利用到我们的项目中,引入成本还是很高的。结合现有技术架构上,以及产品正在快速迭代的环境下,我们对HTTP服务进行了一次轻量级的异步化改造。这次改造,引入Graph-Based Execution Engine来解决服务之间复杂的依赖关系,集中管理异步状态。结合Servlet 3.0提供了请求及释放tomcat容器线程的接口,充分利用Servlet容器线程资源。最后,通过spring mvc的异步模块衔接这两种异步机制,达到了全栈异步化的目的。
 

免责声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,也不承认相关法律责任。如果您发现本社区中有涉嫌抄袭的内容,请发送邮件至:operations@xinnet.com进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。

免费咨询获取折扣

Loading