Я написал несколько тестов по загрузке данных. Я ожидаю, что IgniteDataStreamer
будет быстрее (или равно), чем putAll(...)
, и это так, но за исключением этого случая:
- число узлов сервера: 5
- резервных копий кеша: 1
- режим синхронизации записи: FULL_SYNC
- стример данных разрешает перезапись: true
- остальные настройки по умолчанию для стримера данных
Результаты:
putAll(...)
скорость: 126630 в секунду
data streamer
скорость: 30430 в секунду
В случае недопустимых перезаписей ИЛИ 0 резервных копий + PRIMARY_SYNC стример данных работает быстрее, чем положить все (примерно2 раза), как и ожидалось.
Так получается, подсказка производительности Ignite об использовании разрывов стримера данных? Каковы возможные причины и как избежать замедления потока данных?
Фрагмент кода теста:
for (int i = 0; i < size; i++) {
pojoMap.put(String.valueOf(i), pojo);
}
cache.putAll(pojoMap);
против
igniteDataStreamer.allowOverwrite(false);
for (int i = 0; i < size; i++) {
igniteDataStreamer.addData(String.valueOf(i), pojo);
}
igniteDataStreamer.flush();
Gridgain CE 8.7.6