通过Hazelcast分发应用程序后,与在单个VM上执行(完全不使用Hazelcast)相比,它变得非常缓慢。设置非常简单。唯一的区别是,输入数据来自共享队列,而不是本地队列。我使用了一个非常简单的设置,其中包含两个hazelcast实例(出于比较的原因仅执行了一个)和一个提供数据的hazelcast客户端。
榛树广播的开销太大了吗?造成性能差异的可能原因是什么?本地执行非常非常恒定。借助hazelcast,我发现执行时间可能相差很大(最快的速度是本地执行速度的两倍,最慢的两倍)。
更新:性能仅通过网络(在我的情况下为Linode)下降。一旦设置了纯本地网格,性能就会很好。有什么想法吗?
正在工作的榛子实例
HazelcastInstance hazelcastInstance = Hazelcast.newHazelcastInstance();
BlockingQueue<String> configs = hazelcastInstance.getQueue("configs");
String config = configs.take();
FileBotWorker fileBotWorker = new FileBotWorker(mapper.readTree(config));
我的本地设置(执行量几乎提高了两倍)
JsonNode config = configLoader.loadConfig();
FileBotWorker worker = new FileBotWorker(config);
我的Hazelcast配置
<?xml version="1.0" encoding="UTF-8"?>
<hazelcast xsi:schemaLocation=
"http://www.hazelcast.com/schema/config hazelcast-config-3.7.xsd"
xmlns="http://www.hazelcast.com/schema/config"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<network>
<port auto-increment="true" port-count="20">5701</port>
<join>
<multicast enabled="false">
</multicast>
<tcp-ip enabled="true">
<member>172.104.225.xx</member> <!-- Linode machine -->
</tcp-ip>
</join>
</network>
</hazelcast>