1

EntryListener在 Hazelcast 上进行了一个实验,Map它会调用.size()每个条目。

我想知道这是否是一个坏主意,以及它是否可能是一个性能问题,因为它是一个集群范围的操作。

目前我看不到 5-10k 个元素和 2 个节点的性能下降。

谢谢,

4

2 回答 2

2

这是一个非常糟糕的主意。您的 EntryListener 将被 Hazelcast 的内部线程调用。通过调用 map.size() 你正在做一个非常昂贵的操作并阻塞线程。不建议在 Hazelcast 的线程中调用任何分布式操作。您应该在自己的线程上接收事件并调用 map.size。这可以通过向您维护的 ExecutorService 提交 runnable 来完成。请注意,这里我的意思是 jucExecutorService 不是 Hazelcast 的分布式 ES 实现。

于 2012-07-20T08:55:40.697 回答
0

我不确定 HazelCast 中的 Map 实现。但是一个通用的指导方针是,如果一个容器维护一个单独的变量(即我们在 java.util.collection 库的许多类中的大小)来计算其中添加的元素,那么性能下降不会有任何问题. 但是如果一个容器迭代添加的元素来计算并返回大小,当容器有相当大的数量时,性能可能会显着下降。其中的元素。也许您可以查看 HazelCast 的 Map 实现并自己决定。

于 2012-07-20T08:26:52.840 回答