2010-12-21 41 views
1

我想創建一個速率限制系統,它可以對多個服務器的請求進行速率限制 。 爲此我想創建計數器(每個ip地址爲1個計數器) 這樣,所有服務器都可以檢查和更新這些計數器。隨着Hazelcast什麼更好,一張大地圖或許多小地圖?

我的問題:什麼是最好的辦法,創建一個地圖,並使用客戶端的IP地址作爲密鑰,該IP的計數器將爲 在java object.that對象將是地圖條目。

創建一個映射爲每個IP地址,並使用計數器名作爲關鍵字和 計數器值作爲條目(INT)的值

我的優先重點是速度。檢索計數器對象並且遞增它必須非常快地完成。

那麼什麼是最好的?許多小地圖或一張大地圖?

我希望有人能幫助我。

問候,

馬騰

回答

0

限速計數器可能是在系統中最有爭議的對象之一。我不知道Hazelcast地圖是否會表現良好。你可能會看看Hazelcast 1.9中的AtomicNumber接口,但是我不知道你是否可以創建任意多的這些對象(或者即使你可以在創建之後處理它們)。

最好的辦法可能是使用HAProxy或類似的負載平衡器來實現您的應用程序服務器前面的限制規則。