Асинхронность и
масштабируемость
Подробное руководство по асинхронной архитектуре Alpha.Domain.Client. Изучите изоляцию пулов, управление потоками данных и избегание блокировок в высоконагруженных системах промышленной автоматизации.
1. Фундаментальные концепции
Зачастую при работе с Альфа платформой приходится обрабатывать большие объёмы оперативных и исторических данных.
Традиционный синхронный подход при этом приостанавливает выполнение процесса до завершения операции, что неприемлемо.
Alpha.Domain.Client решает эту проблему с помощью механизма AsyncOperation, который позволяет выполнять длительные операции асинхронно, не блокируя процесс.
Асинхронные операции выполняются в фоновых потоках C++ ядра SDK.
Синхронный
Блокирует поток
Возвращает Value (Vqt)
Асинхронный
Не блокирует поток
Возвращает Operation
2. Пулы соединений
Вместо создания нового соединения на каждый запрос, мы переиспользуем готовые. Ключевая инновация — разделение пулов на зоны ответственности: RUNTIME для быстрых операций и HISTORIAN для тяжелых запросов к архивам.
RUNTIME
Чтение текущих значений (Snapshot)
Подписки на изменения в реальном времени
Требует низкой задержки (<100 мс)
HISTORIAN
Выгрузка архивных данных
Сложные SQL-запросы к истории
Может занимать секунды или минуты
3. Примеры реализации
Ключевой паттерн — использование try/finally для гарантированного возврата соединения в пул, что предотвращает утечки.
Работа с большими данными через Pipe позволяет не загружать всю историю в память сразу, избегая OutOfMemory.
4. Архитектура взаимодействия
5. Демонстрация изоляции
Благодаря разделению пулов, Runtime-задача выполняется мгновенно, не дожидаясь завершения долгой Historian-задачи. Запускаются 3 задачи: долгая Historian (5с), быстрая Runtime (1с) и еще одна Historian (2с).
(Task 1)
(Task 2)
(Task 3)
6. Интерактивная песочница
Нажмите «Запустить», чтобы начать симуляцию. Наблюдайте, как задачи проходят через очередь, используют пулы и освобождаются.
Event Loop & Task Queue
Connection Pools
7. Демонстрация работы
На видео показан процесс параллельного чтения данных и логирования операций.