2015-10-15 83 views
0

在我的J2EE Web應用程序中,我必須爲每個Web API調用發送一個計數給一個隔離線程以統計調用次數。可能性包括:共享隊列VS演員模型

a)使用原子長。我認爲這會在一分鐘內有數百萬電話的情況下引起爭議。因爲所有線程都會嘗試更新單個變量。

b)使用共享隊列。每個請求處理線程都會插入到隊列中,專用計數器線程將從該隊列中退出並增加計數。

c)使用actor模型,比如使用Akka庫。向演員發送異步消息,然後將其添加到計數中。

我的問題是方法(b)與(c)相比如何。有什麼優點和缺點,以及它們在低級別有何不同?

+0

多少個電話的milllions在一分鐘內,你將有? –

+0

現在需要200萬個電話。展望未來,可能還需要存儲除計數以外的其他一些指標。所以,設計應該是可擴展的。 – ptntialunrlsd

+0

如果只是一個計數,請使用LongAdder。每分鐘數百萬並不是那麼多。 –

回答