在一个进程中,akka和ThreadPool+BlockingQueue之间的本质区别是什么



我们知道Akka是actor模式的一个实现。如果没有Akka,我通常使用ThreadPool+BlockingQueue实现一个简单的actor模式。因此,消息被提供到队列中,工作人员(参与者(从队列中获取消息,然后做他们应该做的事情。当然,这种实现只能在一个过程中实现。

在一个过程中,

  1. 这两者之间的本质区别是什么(Akka与。线程池+阻塞队列(
  2. 此外,演员模式和生产者-消费者模式有什么区别

Actor模型确实与生产者-消费者模型(p-C(非常相似。

但是,如果您在p-C中使用阻塞队列,那么您的应用程序就不会完全是非阻塞和异步的。actor-model和Akka的承诺是,所有消息都是异步发送的,不会阻塞发送者。

它的另一个方面是,一旦有了许多消费者和生产者,管理这些队列就会变得非常麻烦。对于演员,你只需发送一个信息,而不必考虑这些低级细节。在后台,Akka将保留一个消息队列,即每个参与者的邮箱,调度器将参与者分配到线程池来处理这些消息。

使用Akka实现高性能和有弹性的应用程序比自己编写要容易得多。您可以开箱即用地获得容错、资源管理、位置透明、路由、分布式异步处理和分级监督。更不用说其他框架和库利用这些功能为您提供更多(反应流、akka-http等(。已经有很多为你开发的模式了,为什么还要麻烦你自己呢。

最新更新