Разработка средств управления и мониторинга...

23
Разработка средств управления и мониторинга распределенной мультиагентной системы Валик Базаревский

Transcript of Разработка средств управления и мониторинга...

Page 1: Разработка средств управления и мониторинга распределенной мультиагентной системы 2

Разработка средств управления и мониторинга распределенной мультиагентной системы

Валик Базаревский

Page 2: Разработка средств управления и мониторинга распределенной мультиагентной системы 2
Page 3: Разработка средств управления и мониторинга распределенной мультиагентной системы 2

"Как взвешивание само по себе не уменьшает вес, так и контроль качества сам по себе не улучшает качество"

Доступность

Производительность

Отказоустойчивость

Конфигурируемость

Масштабируемость

Page 4: Разработка средств управления и мониторинга распределенной мультиагентной системы 2

Зачем нам это понадобилось:

Тяжело отслеживать состояние всей системы

Тяжело поддерживать и обновлять распределенную систему

Надо знать что из себя представляла система в тот или иной момент времени (как правило когда произошел сбой)

Оптимизация производительности, прогнозирование нагрузок, определение оптимальной конфигурации (разные алгоритмы анализа требуют разных ресурсов)

Политические игры с отделом IT заказчика, в значительной мере усложняющие поиск и раннее выявление проблем на production

Page 5: Разработка средств управления и мониторинга распределенной мультиагентной системы 2

Краткое описание системы:

Система анализа качества переводов. 

Есть порядка 10 различных алгоритмов, которые постоянно обновляются.

Сложность (длительность выполнения) алгоритма довольно сложно прогнозируема (по крайней мере нас так заверили).

Task ControllerWeb Service

Task ControllerWeb Service

Task ProcessorWindows Service

Task ProcessorWindows Service

Task ProcessorWindows Service

File StorageNetwork Share

Tasks StorageSQL Database

Tasks QueueMessage queue

Page 6: Разработка средств управления и мониторинга распределенной мультиагентной системы 2

Слой данных:

MS SQL

Network Share

Message Queue (Rabbit MQ / Azure Service Bus)

Page 7: Разработка средств управления и мониторинга распределенной мультиагентной системы 2

Что мы сделали/делаем:

Единая страничка, проверяющая работоспособность всех элементов системы (как правило такая страничка есть у каждого приложения)

«Центральная" конфигурация (при старте каждый агент скачивает себе все настройки, включая connection string)

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

Возможность опросить всех агентов об их состоянии (версию алгоритмов, словарей, работает/остановлен и т.д.)

Performance counters для каждого из агентов (ram, io, network, cpu, i.e.), таким образом, мы сможем посмотреть что происходило во время исполнения каждой из задач, если задача выполнялась несколько раз, возможность сравнить показатели)

Page 8: Разработка средств управления и мониторинга распределенной мультиагентной системы 2

Как это выглядит:

Page 9: Разработка средств управления и мониторинга распределенной мультиагентной системы 2

Или так:

Page 10: Разработка средств управления и мониторинга распределенной мультиагентной системы 2

«Центральная» конфигурация

Скачать последнюю версию алгоритмов, словарей, актуальные connection strings

Скачивание происходит только на старте нового TaskProcessor-а, в дальнейшем он не зависит от источника конфигурации

Провайдером конфигураций может быть любой из TaskController-ов

Page 11: Разработка средств управления и мониторинга распределенной мультиагентной системы 2

Сервисная шина

Так, как у нас в системе уже были очереди, логично было их просто немного расширить. Внедрять дополнительный компонент только для heartbeat-ов – вопрос очень спорный.

Теоретически можно использовать любой из RPC для опроса агентов, но асинхронная модель предпочтительней.

Page 12: Разработка средств управления и мониторинга распределенной мультиагентной системы 2

Queues It should be persistent (i.e. in case of shutdown, queue should not lose not yet

processed tasks).

It should provide confirmations after successful task processing, in case of failure it should put task back in queue for processing.

It should guarantee, that each task in queue would be processed by only one consumer.

It should provide priority mechanism.

It should guarantee, that tasks will get back to the queue even in case of unexpected hardware failure of Task Processor node.

It would be nice option to see real-time performance statistics.

Technology stack for the solution should have commercial support.

Message queue technology should be mature enough and have good references in production environment.

Queue server and consumers should have easy setup and support.

Page 13: Разработка средств управления и мониторинга распределенной мультиагентной системы 2

Queues / Service Bus Providers

MSMQ

Custom implementation

NServiceBus

Azure Queues

Rabbit MQ

Active MQ

Azure Service Bus

BizTalk ESB

Page 14: Разработка средств управления и мониторинга распределенной мультиагентной системы 2

Rabbit MQ

Постановка задач в очередь / Обработка задач

Нотификация о необходимости обновления словарей

Нотификация о необходимости обновления алгоритмов

Текущий статус каждого агента

Page 15: Разработка средств управления и мониторинга распределенной мультиагентной системы 2

Сценарии использования очередей

Queues

Publish/Subscribe

Routing

Topics

RPC

Page 16: Разработка средств управления и мониторинга распределенной мультиагентной системы 2

Queues Message acknowledgment

Message durability

Fair dispatch

Page 17: Разработка средств управления и мониторинга распределенной мультиагентной системы 2

Publish/Subscribe

Exchange

Page 18: Разработка средств управления и мониторинга распределенной мультиагентной системы 2

Routing

Page 19: Разработка средств управления и мониторинга распределенной мультиагентной системы 2

Topics

Page 20: Разработка средств управления и мониторинга распределенной мультиагентной системы 2

RPC

Page 21: Разработка средств управления и мониторинга распределенной мультиагентной системы 2

Performance counters

Page 22: Разработка средств управления и мониторинга распределенной мультиагентной системы 2

Чего мы не делали (решив, что нам этого пока что не нужно)

Обновление connection strings системы «на лету» (довольно сложная схема сделать это надежно)

Мы можем себе позволить постепенно перевести вычислительные мощности из одного старого логического кластера в другой, новый.

Page 23: Разработка средств управления и мониторинга распределенной мультиагентной системы 2

Вопросы. Предложения.

E-mail: [email protected]

FB: https://www.facebook.com/valentin.bazarevsky