Я использую IgniteDataStreamer
с allowOverwrite
для загрузки непрерывных данных.
Вопрос 1. От javadoc:
Обратите внимание, что стример будет передавать данные одновременно по нескольким внутреннимпотоков, поэтому данные могут попадать на удаленные узлы в другом порядке, в котором они были добавлены в стример.
Изменение порядка в моем случае неприемлемо. Будет ли perNodeParallelOperations
установлен на 1
гарантировать сохранение порядка addData
вызовов? Существует несколько кэшей, одновременно загружаемых с помощью IgniteDataStreamer
, поэтому все потоки узла сервера Ignite будут все равно использоваться.
Вопрос 2. Из-за паузы GC мое потоковое приложение может зависнуть на пару секунд. Я хочу избежать паузы загрузки кеша в этот момент и поддерживать высокую среднюю скорость записи в кеш. Можно ли настроить IgniteDataStreamer
для хранения (ограниченной) очереди входящих пакетов на узле сервера, которые будут использоваться при зависании потокового (клиентского) приложения? Смотрите вопрос 1, очередь должна потребляться последовательно. Можно использовать некоторую кучу для этого.
Вопрос 3. perNodeBufferSize
javadoc:
Этот параметр управляет размером внутреннего буфера для узла перед отправкой буферизованных данных на удаленный сервер. узел
Согласно javadoc, передача данных инициируется tryFlush
/ flush
/ autoFlush
, так как это соотносится с ограничением perNodeBufferSize
? Будет ли сбрасываться сброс, если сообщений меньше perNodeBufferSize
(надеюсь нет)?