0

在我的 J2EE Web 应用程序中,我必须将每个 Web API 调用的计数发送到一个隔离线程以计算调用次数。可能性包括:

a) 使用原子长。如果我在一分钟内有数百万个电话,我认为这会引起争用。因为,所有线程都将尝试更新单个变量。

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

c) 使用演员模型,比如使用 Akka 库。向参与者发送一条异步消息,这会将其添加到计数中。

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

4

1 回答 1

1

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

  • 使用 Akka 的 Actor Model 将负责线程管理,并且易于实现
  • 此外,将来如果您想为不同类型的请求实现计数器,您可以简单地为此添加一个新参与者。

有一个类似的问题 - 何时使用参与者而不是消息传递解决方案,例如 WebSphere MQ 或 Tibco Rendezvous?

于 2017-03-23T06:12:53.613 回答