java - 对于 Hazelcast 来说,一张大 map 和多张小 map 哪个更好?

标签 java jakarta-ee distributed-caching hazelcast

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

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

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

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

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

我希望有人能帮助我。

问候,

马丁

最佳答案

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

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

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

关于java - 对于 Hazelcast 来说,一张大 map 和多张小 map 哪个更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4504500/

相关文章:

java - 跨 Activity、OpenCV、Android 访问 ArrayList<Mat>

java - 如何比较 String 和 Int

java - Java 中的影子变量是什么?

java - JMSBytesMessage 到字符串和 String 到 JMSBytesMessage 类型转换

redis - redis日志中的 "quorum reached"是什么意思?从技术上讲这意味着什么?

java - CardView setCardBackgroundColor 不起作用

java - 为什么 xmx 和 top 之间的内存使用存在差异?

java - Wildfly/Hibernate 查询结果无法返回持久化实体

dynamic - 在 Hadoop 中使用动态分布式缓存

.net - 有人制作了内存中的 GIT 存储库吗?