【问题标题】:what the essential difference between akka and ThreadPool+BlockingQueue in ONE Process?ONE Process中akka和ThreadPool+BlockingQueue的本质区别是什么?
【发布时间】:2018-10-29 05:23:42
【问题描述】:

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

为了在一个过程中,

  1. 这两者之间的本质区别是什么(Akka vs. 线程池+阻塞队列)
  2. 另外,actor模式和生产者-消费者模式有什么区别?

【问题讨论】:

    标签: scala design-patterns akka actor producer-consumer


    【解决方案1】:

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

    但是,如果您在 P-C 中使用阻塞队列,您的应用程序将不会是完全非阻塞和异步的。 Actor 模型和 Akka 的承诺是所有消息都是异步发送的,不会阻塞发送者。

    另一方面,一旦您拥有许多消费者和生产者,管理这些队列就会变得非常麻烦。使用演员,您只需发送消息,而不必考虑这些低级细节。在底层,Akka 将为每个参与者保留一个消息队列,也就是邮箱,分配器将参与者分配到线程池以处理这些消息。

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

    【讨论】:

      猜你喜欢
      • 2017-03-08
      • 1970-01-01
      • 2014-06-29
      • 1970-01-01
      • 1970-01-01
      • 2015-05-23
      • 1970-01-01
      • 2013-09-29
      • 1970-01-01
      相关资源
      最近更新 更多