Параметры очереди обмена данными
Параметры для настройки очереди обмена данными расположены в секции 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:
В момент запроса t1 очередь еще работает в обычном режиме, запрос обслуживается напрямую в БД.
В момент запроса t2, так как t2 – t1 < SpeedModeInterval
, очередь переходит в скоростной режим, и формируется PrefetchBuffer. Запрос обслуживается этим буфером. Операций в этот момент происходит больше, так как требуется сформировать PrefetchBuffer, но они соизмеримы по времени с обслуживанием запроса t1.
В моменты t3 и t4 очередь уже работает в скоростном режиме и запросы обслуживаются сразу из PrefetchBuffer.
Синхронизация прочитанных в PrefetchBuffer элементов с БД происходит в фоне с периодичностью PrefetchBufferResetInterval
. Эта синхронизация выполняется массово (не одиночные запросы к БД) через внутреннюю очередь.
Условие проверки уникальности натурального ключа (глобального или локального) элемента очереди после его удаления задается булевыми параметрами DeletedNaturalKeysIsGlobalUniqueRequired
и DeletedNaturalKeysIsUniqueRequired
. Если true
– удаленный элемент не участвует в проверке уникальности.