我们知道Akka是actor模式的一种实现。没有Akka,我通常使用ThreadPool + BlockingQueue实现一个简单的actor模式。因此,将消息提供到队列中,然后作品(演员)从队列中获取消息,然后执行应做的事情。当然,这种实现只能在一个过程中完成。
关于一个过程,
答案 0 :(得分:2)
演员模型确实与生产者-消费者模型(P-C)非常相似。
但是,如果您将阻塞队列与P-C一起使用,则您的应用程序将不会完全非阻塞和异步。 actor模型和Akka的承诺是所有消息都是异步发送的,并且不会阻止发件人。
另一方面,一旦有许多消费者和生产者,管理这些队列就会变得很麻烦。通过演员,您只需发送一条消息,而不必考虑这些低级的细节。在后台,Akka将为每个角色保留一个消息队列(又名邮箱),并通过一个调度程序将角色分配给线程池以处理这些消息。
使用Akka来实现高性能和弹性应用程序要比自己编写代码容易得多。您可以立即获得容错,资源管理,位置透明性,路由,分布式,异步处理,分层监督。更不用说利用这些功能来提供更多功能的其他框架和库了(反应流,akk http等)。那里已经为您开发了许多模式,那么为什么还要打扰您自己。