Информационные технологии
Идея реализации возникла при работе над системой, выполняющей большое количество асинхронных операций над относительно большим (около сорока) числом объектов, работающих в разных потоках. Для централизации передачи информации о событиях в системе использовалась общая очередь сообщений. Некоторые сообщения, в частности информирующие о критических ошибках выполнения, требуют особой обработки: например, переключения объекта или подсистемы в режим восстановления после сбоя. Асинхронная работа при этом становится одним из возможных источников проблем, так как очередь может содержать сообщения, отправленные еще в рабочем режиме. Попытка обработать их после того, как фактически произошел сбой, приведет к непредсказуемым последствиям.
Логичным решением данной проблемы было бы введение некоторой системы контроля на уровне очереди. В простейшей реализации такая система проверяла бы тип и адресата добавляемого в очередь сообщения, и в зависимости от результата выполняла бы определенные действия. Развитием этой идеи стало создание очереди сообщений с триггерами. Триггер - по аналогии с триггерами, используемыми в базах данных - отслеживает определенные виды операций над определенными объектами в очереди. При совершении некоторого действия с очередью (например, добавления элемента) триггер сравнивает затронутый действием объект (добавляемый элемент) с хранимым шаблоном по одному из возможных алгоритмов. Если объект соответствует шаблону, триггер выполняет действие, для которого предназначен.
Действия, отличные от добавления, могут выполняться над произвольным количеством объектов очереди. Реализуется это за счет применения такого же шаблонного объекта, с которым последовательно сравниваются все элементы очереди.
Функциональные возможности:
В настоящее время ведется поиск оптимального с точки зрения временных и вычислительных затрат способа проверки на наличие бесконечных циклов в работе триггеров, так как наиболее очевидное решение (построение карты действий и поиск в ней циклов, содержащих только триггеры с неограниченным числом срабатываний) видится неэффективным, а примитивные реализации, такие, как ограничение количества выполнений каждого триггера - ненадежным.
Примечание. Тезисы докладов публикуются в авторской редакции
Ваши комментарии Обратная связь |
[Головная страница] [Конференции] |
© 1996-2000, Институт вычислительных технологий СО РАН, Новосибирск
© 1996-2000, Сибирское отделение Российской академии наук, Новосибирск