2015-10-15 78 views
0

在我的J2EE Web应用程序中,我必须为每个Web API调用发送一个计数给一个隔离线程以统计调用次数。可能性包括:共享队列VS演员模型

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

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

c)使用actor模型,比如使用Akka库。向演员发送异步消息,然后将其添加到计数中。

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

+0

多少个电话的milllions在一分钟内,你将有? –

+0

现在需要200万个电话。展望未来,可能还需要存储除计数以外的其他一些指标。所以,设计应该是可扩展的。 – ptntialunrlsd

+0

如果只是一个计数,请使用LongAdder。每分钟数百万并不是那么多。 –

回答