Priority queue pattern
2019-08-27 14:51:12 +0600 +0600
Priority queue pattern
Шаблон Priority queue
Распределяет приоритеты запросов, отправляемых службам, чтобы запросы с более высоким приоритетом принимались и обрабатывались быстрее, чем запросы с более низким приоритетом. Этот шаблон полезен в приложениях, которые предлагают различные гарантии уровня обслуживания для отдельных клиентов.
Проблема
Приложения могут делегировать определенные задачи другим службам, например, для выполнения фоновой обработки или для интеграции с другими приложениями или службами. В облаке очередь сообщений обычно используется для делегирования задач фоновой обработке. Во многих случаях запросы заказа, полученные службой, не важны. В некоторых случаях, однако, необходимо установить приоритетность конкретных запросов. Эти запросы должны обрабатываться раньше, чем запросы с более низким приоритетом, которые были отправлены ранее приложением.
Решение
Добиться решения проблемы можно 3 способами:
- Произвести матчинг между инстансом консьюмера и приоритетом сообщения - сложный подход
- Сортировать сообщения в очередь по приоритетам - тяжело поддержиать очередь сообщенийв актуальном состоянии
- Создать разные топики в которые будут отправляться сообщения по приоритетам
когда использовать
-
Система должна обрабатывать несколько задач с разными приоритетами.
-
Разные пользователи или арендаторы должны обслуживаться с разным приоритетом.
Этот паттерн я решил добавиь тут потому что часто вижу, что люди изобретают зоопарк вместо того что бы спользовать этот паттерн.
Почему то все хотят возложить логику обработки приоритетов на слушающий очередь сервис. Наверное просто боятся очередей.
https://docs.microsoft.com/en-us/azure/architecture/patterns/bulkhead https://aws.amazon.com/ru/blogs/architecture/category/uncategorized/fault-isolation/