Взаимодействие агента и AggreGate Serverа

В этой статье описывается, как Agent взаимодействует с AggreGate Serverом по протоколу взаимодействия с AggreGate. Взаимодействие начинается после того, как Agent подключается к AggreGate Server и производит вход. В этот момент управление Agent передаётся драйверу AggreGate Агента. Затем AggreGate Server начинает отправку команд по протоколу взаимодействия с AggreGate чтобы выяснить, какие данные предоставляются Agent.

Структура коммуникаций

Агенты всегда устанавливают исходящие TCP-соединения с сервером, никогда наоборот. Обычно агенты должны поддерживать постоянное соединение с сервером, чтобы обеспечить периодический опрос и мгновенную доставку событий. Однако в некоторых редких случаях агенты могут работать, периодически переподключаясь на короткий промежуток времени, чтобы сбрасывать буферизованные события на сервер и позволять ему опрашивать последние значения переменных.

После того, как новое соединение между сервером и агентом установлено, сервер выдает ряд команд в соответствии с приведенным ниже разделом Покомандная схема взаимодействия. Эта последовательность команд повторяется в течение каждого полного цикла синхронизации.

Существует два типа обмена командами, которые могут происходить вне полных циклов синхронизации:

  • Сервер может опрашивать значения переменных, которые имеют настраиваемый период синхронизации

  • Агент может отправлять события на сервер

Тестирование соединения

И агент, и сервер должны периодически проверять доступность соединения. Однако тестирование более важно для агента, поскольку он должен иметь возможность переподключиться в случае сбоя соединения. Что касается инициированного сервером тестирования, требуется только перевести учетную запись не отвечающего агента в автономный режим, чтобы обеспечить правильное отображение статуса.

Сервер проверяет соединение во время каждого полного цикла синхронизации, а также опроса отдельных переменных. Если ответ на команду не получен в течение времени ожидания команды, указанного в глобальных настройках драйвера устройства агента, агент считается отключенным. Существующее TCP-соединение закрывается (если оно еще открыто) или сбрасывается, а агент помечается как офлайн.

Процедуры тестирования на стороне агента должны быть тщательно разработаны разработчиками агента. Существует два метода тестирования соединения:

  • Ожидайте, что по крайней мере одна команда будет получена от сервера в течение каждого минимального периода опроса всех переменных агента. Например, если период синхронизации составляет 5 минут, но переменная A имеет пользовательский период синхронизации 2 минуты, а переменная B имеет период 30 секунд, агент может ожидать получения входящей команды каждые 40-60 секунд. Если этого не произошло, агент должен переподключиться, поскольку существующее соединение могло быть потеряно.

  • Периодически отправляйте на сервер некоторые фиктивные события и убедитесь, что эти события подтверждаются сервером в течение разумного времени. Если событие не было подтверждено, это может означать сбой связи или серьезную неисправность сервера, в обоих случаях рекомендуется переподключение.

Покомандная схема взаимодействия

A. Выяснение контекста agent

Сначала AggreGate Server получает информацию о контексте, объявленном в Agent. Посылаются следующие команды:

  • Получить переменную children

  • Получить переменную variables

  • Получить переменную functions

  • Получить переменную events

B. Синхронизация часов реального времени

C. Синхронизация настроек устройства (значений переменных контекста устройства)

Теперь AggreGate Server синхронизирует значения всех переменных устройства между своим кэшем и Agent. Более подробную информацию о синхронизации и кэшировании настроек устройства можно прочесть в статье о драйвере AggreGate Агента

  • Получить переменную modtime. Сервер получает временные метки всех настроек для определения верного направления синхронизации (от устройства к серверу или наоборот) для каждой из них.

  • Для каждой переменной выполняются команды Получить переменную или Установить переменную в зависимости от направления синхронизации. Эти команды используются для установки значений переменных в контексте устройства Agent (для синхронизации от сервера к устройству) или в серверном кэше (при синхронизации от устройства к серверу).

  • Установить переменную modtime. Сервер устанавливает временные метки модификации Agent.

D. Окончание синхронизации

1. Вызвать функцию synchronized из контекста Агента.

Команды, инициируемые агентом

Когда Agent подключен к AggreGate Server, он может посылать команды событий к серверу, когда события будут сгенерированы.

AggreGate Server никогда явно не начинает или оканчивает прослушивание событий от Агента посылкой команд Add Event Listener или Remove Event Listener протокола взаимодействия с AggreGate. он прослушивает события без уведомления об этом Агента. Поэтому Agent может начать отправку событий любого типа сразу после окончания синхронизации, например после того, как сервер вызвал функцию synchronized из корневого контекста Агента.

Was this page helpful?