Как только я распространяю свое приложение через Hazelcast, оно становится очень медленным по сравнению с выполнением на одной виртуальной машине (вообще без использования Hazelcast).Настройка очень проста.Разница лишь в том, что входные данные поступают из общей очереди, а не из локальной.Я использовал очень простую настройку с двумя экземплярами Hazelcast (однако только один был выполнен по причинам сравнения) и клиентом Hazelcast, который предоставляет данные.
Являются ли накладные расходы в Hazelcast такими большими?Какие могут быть возможные причины разницы в производительности?Местное исполнение очень и очень постоянное.С помощью hazelcast я обнаружил, что время выполнения может сильно отличаться (так же быстро, как локальное выполнение, почти вдвое медленнее).
Обновление : производительность падает только по сети (в моемдело Линоде).Как только я настраиваю чисто локальную сетку, производительность хорошая.Есть идеи?
Рабочий экземпляр hazelcat
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>