Skip to Content

Параметры очереди обмена данными

Параметры для настройки очереди обмена данными расположены в секции ExchangeQueue в конфигурационном файле Оркестратора.

ПараметрНазначениеПримечание
StatisticAvgWindowШирина окна сбора средних (сек)
StatisticAvgWindowPreCountЗапас создания оконВнутренний системный параметр для оптимизации. Не рекомендуется менять
StatisticAvgLastWindowsCountКоличество последних окон, которое отдается в запросе
StatisticRecalcIntervalИнтервал (мсек) пересчета статистики
StatisticBatchSizeРазмер пачки, вычитываемой за раз из очереди событий статистики

События, связанные со статистикой очередей обмена данными (круговая диаграмма в таблице с очередями), регистрируются в реальном времени во внутренней очереди Оркестратора. Обработка этой очереди происходит с периодичностью StatisticRecalcInterval. За одну итерацию из очереди считывается пачка событий размером StatisticBatchSize, на основе которой пересчитывается статистика.

Среднее время обработки элемента очереди (разность дат события прочтения элемента и последнего события* завершения обработки элемента) считается по окну StatisticAvgWindow. Например, раз в 2 минуты. Окна создаются с запасом StatisticAvgWindowPreCount при заполнении очередного множества окон. Запрос для построения графика в UI отдаёт последние заполненные окна в размере StatisticAvgLastWindowsCount.

* - В настоящей реализации такое событие всегда одно

Оптимизация чтения из очереди по FIFO

Параметры для оптимизации чтения из очереди по FIFO приведены ниже.

ПараметрНазначениеПримечание
FIFORetryКоличество ретраев при извлечении по FIFO. Если задан в настройке очереди, аналогичный параметр берется из БД для очереди
PrefetchDepthГлубина предварительной выборки в PrefetchBuffer. Не рекомендуется выше 500. Если 0, PrefetchBuffer не используетсяПредварительная выборка используется в скоростном режиме. PrefetchBuffer – временный буфер, в который вычитывается сразу несколько элементов очереди из БД, и последующие обращения идут в этот буфер
PrefetchBufferResetIntervalИнтервал (мсек) сброса PrefetchBufferПроисходит синхронизация вычитанных из PrefetchBuffer элементов с БД
SpeedModeIntervalИнтервал (мсек) между 2-мя последовательными запросами к чтению из очереди по FIFO, определяющий переключение в скоростной режимPrefetchBuffer используется в скоростном режиме

Иллюстрация работы PrefetchBuffer:

alt

В момент запроса t1 очередь еще работает в обычном режиме, запрос обслуживается напрямую в БД.

В момент запроса t2, так как t2 – t1 < SpeedModeInterval, очередь переходит в скоростной режим, и формируется PrefetchBuffer. Запрос обслуживается этим буфером. Операций в этот момент происходит больше, так как требуется сформировать PrefetchBuffer, но они соизмеримы по времени с обслуживанием запроса t1.

В моменты t3 и t4 очередь уже работает в скоростном режиме и запросы обслуживаются сразу из PrefetchBuffer.

Синхронизация прочитанных в PrefetchBuffer элементов с БД происходит в фоне с периодичностью PrefetchBufferResetInterval. Эта синхронизация выполняется массово (не одиночные запросы к БД) через внутреннюю очередь.

Условие проверки уникальности натурального ключа (глобального или локального) элемента очереди после его удаления задается булевыми параметрами DeletedNaturalKeysIsGlobalUniqueRequired и DeletedNaturalKeysIsUniqueRequired. Если true – удаленный элемент не участвует в проверке уникальности.