МАРШРУТИЗАТОР СООБЩЕНИЙ И СПОСОБ МАРШРУТИЗАЦИИ СООБЩЕНИЙ

1. Маршрутизатор сообщений, поступающих от источников сообщений для их последующей обработки одним или несколькими серверами обработки, включающий в свой состав:
блок регистрации серверов обработки, предназначенный для регистрации серверов обработки, формирования списка серверов обработки и постановки в соответствие каждому из зарегистрированных серверов обработки списка типов сообщений, передаваемых заданному серверу обработки, посредством чего определяются серверы обработки, подписанные на сообщения определенного типа;
блок очередей сообщений, предназначенный для формирования и хранения очереди сообщений для заданного сервера обработки, причем для каждого из зарегистрированных серверов обработки создается собственная очередь сообщений;
блок маршрутизации сообщений, предназначенный для передачи сообщений на соответствующие серверы обработки, подписанные на сообщения данного типа; и
блок управления масштабированием серверов обработки, предназначенный для:
создания очередей сообщений для сервера обработки и экземпляров сервера обработки;
перераспределения сообщений во вновь созданные очереди сообщений; и
остановки и удаления малонагруженных серверов обработки и соответствующих им очередей сообщений.
2. Способ маршрутизации сообщений, поступающих от источников сообщений для их последующей обработки одним или несколькими серверами обработки, включающий: перенаправление сообщений на серверы обработки; и
управление масштабированием серверов обработки, причем масштабирование серверов обработки осуществляется следующим образом:
получение маршрутизатором от сервера обработки сообщения о необходимости регистрации данного сервера обработки, обработку сообщения о необходимости регистрации и создание в своей памяти маршрутизатора:
записи о подписке данного сервера обработки, причем запись о подписке включает информацию об адресе данного сервера обработки, на который будут отсылаться сообщения, а также перечень типов сообщений, на которые подписывается данный сервер обработки; и
очереди сообщений для данного сервера обработки, причем в данной очереди сообщений хранятся сообщения, которые должны быть переданы данному серверу обработки для их обработки;
определение для всех очередей, созданных маршрутизатором для каждого зарегистрированного сервера обработки:
порога масштабирования вверх, представляющего предельную величину сообщений в очереди сообщений, при достижении которой сообщения перенаправляются на другой экземпляр данного сервера обработки; и
порога масштабирования вниз, представляющего предельную величину сообщений в очереди сообщений, при достижении которой экземпляр сервера обработки удаляется из памяти;
проверку маршрутизатором длины очередей сообщений всех серверов обработки, сравнение длины очередей сообщений с указанными порогами масштабирования и управление количеством серверов обработки путем подключения новых или удаления имеющихся экземпляров серверов обработки, направлением на них потоков сообщений и перераспределением потоков сообщений между экземплярами одного и того же сервера обработки;
причем исключают возможность повторной обработки одних и тех же данных различными экземплярами одного сервера обработки.
3. Способ маршрутизации сообщений по п.2, отличающийся тем, что для исключения возможности повторной обработки данных обеспечивают следующие условия:
при переключении части нагрузки с одного сервера обработки на другой, от первого сервера обработки отключают только те источники данных, по которым он уже завершил обработку; и
при удалении сервера обработки его очередь сообщений содержит данные не более чем от одного источника сообщений.
4. Способ маршрутизации сообщений по п.2, отличающийся тем, что управление количеством серверов обработки осуществляют одним из следующих способов:
если длина очереди сообщений данного сервера обработки достигла порога масштабирования вверх, производят поиск экземпляра данного сервера обработки, длина очереди сообщений которого не достигла порога масштабирования вверх, и последующие сообщения от того же источника сообщений переадресовывают в очередь сообщений найденного экземпляра данного сервера обработки;
если длина очереди сообщений данного сервера обработки достигла порога масштабирования вверх и при этом не найден экземпляр данного сервера обработки, длина очереди сообщений которого не достигла порога масштабирования вверх, создают новый экземпляр данного сервера обработки, и последующие сообщения от того же источника сообщений переадресовывают в очередь сообщений нового экземпляра данного сервера обработки;
если в группе, состоящей из сервера обработки и его экземпляров, нет ни одного сервера обработки, длина очереди которого достигла порога масштабирования вверх, то из данной группы удаляют все серверы обработки, длина очередей сообщений которых не превышает порога масштабирования вниз, причем оставляют по меньшей мере один сервер обработки данной группы.
5. Способ маршрутизации сообщений по п.4, отличающийся тем, что удаление сервера обработки из группы экземпляров сервера обработки осуществляют следующим образом:
сервер обработки помечают как удаляемый, все новые сообщения на удаляемый сервер больше не отправляются, а направляются на экземпляры данного сервера, не помеченные как удаляемые;
маршрутизатор посылает удаляемому серверу обработки сигнал на уничтожение;
сервер обработки обрабатывает все сообщения, оставшиеся в его очереди сообщений, отписывается от маршрутизатора и выгружается; и
маршрутизатор уничтожает запись о подписке удаленного сервера обработки.