什么 是Actor模型
Actor 模型是个“古老”的东西,是1973年就提出的一个分布式并发编程模型。Actor模型在erlang语言中得到广泛支持和应用(顺便说一下,想要学习并发编程,erlang是首选)。目前java中
也出现了很多支持actor模型的库:akka、killim、jetlang等等。
Actor模型原理
Actor模型=(数据+动作)+消息。
Actor模型内部的状态由自己的动作来维护,外部线程不能直接调用对象的动作,也不能访问,必须通过消息才能触发动作,可以说,Actor模型是面向对象模型在并发编程领域的扩展。
使用Disruptor这样无锁队列我们也可以自己实现简单的Actor模型,让一个普通对象与外界的交互调用通过Disruptor消息队列实现,其本质是通过增加请求的缓冲区并异步处理来增加响应速度。
缺点
尽管Actor模型可以显著提高系统的并发,但在使用Actor模型过程中仍可能会碰到很多问题。典型的问题有:
* 死锁问题
* 队列溢出问题
* 细粒度控制问题。由于多个actor并不共享状态,仅通过消息传递来进行交流,所以不太适合实施细粒度的并行