2010-12-21 18 views
1

我想创建一个速率限制系统,它可以对多个服务器的请求进行速率限制 。 为此我想创建计数器(每个ip地址为1个计数器) 这样,所有服务器都可以检查和更新这些计数器。随着Hazelcast什么更好,一张大地图或许多小地图?

我的问题:什么是最好的办法,创建一个地图,并使用客户端的IP地址作为密钥,该IP的计数器将为 在java object.that对象将是地图条目。

创建一个映射为每个IP地址,并使用计数器名作为关键字和 计数器值作为条目(INT)的值

我的优先重点是速度。检索计数器对象并且递增它必须非常快地完成。

那么什么是最好的?许多小地图或一张大地图?

我希望有人能帮助我。

问候,

马腾

回答

0

限速计数器可能是在系统中最有争议的对象之一。我不知道Hazelcast地图是否会表现良好。你可能会看看Hazelcast 1.9中的AtomicNumber接口,但是我不知道你是否可以创建任意多的这些对象(或者即使你可以在创建之后处理它们)。

最好的办法可能是使用HAProxy或类似的负载平衡器来实现您的应用程序服务器前面的限制规则。