1

我想创建一个限速器系统,可以限制对多台服务器的请求。为此,我想创建计数器(每个 ip 地址 1 个计数器),这样所有服务器都可以检查和更新这些计数器。

我的问题是:最好的方法是什么,创建一个映射并使用客户端的 ip 地址作为键,该 ip 的计数器将在 java 对象中。该对象将是映射条目的值。

或者

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

我的首要任务是速度。检索计数器对象并增加它必须非常快。

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

我希望有人可以帮助我。

问候,

马丁

4

1 回答 1

0

限速计数器可能是系统中最具争议的对象之一。我不知道 Hazelcast 地图是否会表现得足够好。

您可能会看一下AtomicNumberHazelcast 1.9 中的界面,但我不知道您是否可以任意创建许多这些对象(或者即使您可以在创建后处理它们)。

您最好的选择可能是使用 HAProxy 或类似的负载均衡器在您的应用服务器前实施您的限制规则。

于 2010-12-24T00:52:54.973 回答