共享队列VS Actor模型



在我的J2EE web应用程序中,我必须为每个web API调用发送一个计数,以计算调用的数量。可能性包括:

a)使用原子long类型。如果我在一分钟内接到数百万个电话,我想这会引起争论。因此,所有线程都会尝试更新单个变量。

b)使用共享队列。每个请求处理线程都将插入到队列中,专用计数器线程将从该队列中取出队列并增加计数。

c)使用actor模型,例如使用Akka库。向参与者发送一个异步消息,这将把它加到计数中。

我的问题是方法(b)与方法(c)相比如何。优点和缺点是什么,它们在低水平上有什么不同?

在您的情况下,我认为Actor模型应该是一个更好的选择。Akka的优点-

    演员模型与Akka将照顾线程管理,它很容易实现
  • 更进一步,如果将来你想为不同类型的请求实现计数器,你可以简单地为它添加一个新的actor。

在-处也有类似的问题何时使用参与者而不是消息传递解决方案(如WebSphere MQ或Tibco Rendezvous) ?

最新更新