SYSTEM ATLASЗагрузка материала

Конкурирующие потребители

Competing Consumers

Масштабирует обработку очереди несколькими независимыми потребителями.

Простыми словами

Например, очередь изображений обрабатывают несколько независимых воркеров. Каждый забирает отдельное сообщение, поэтому пропускная способность растёт без повторной обработки одной задачи. Поэтому смотрят не только на среднюю скорость, но и на нагрузку, очереди и узкое место - иначе локальное ускорение не даст заметного результата пользователю.

Пример от @Vibeclakr

Пример при разработке

Очередь изображений обрабатывают несколько независимых воркеров. Каждый забирает отдельное сообщение, поэтому пропускная способность растёт без повторной обработки одной задачи.

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

Механизм действия

Сначала проверяют, есть ли исходное условие из определения. Затем смотрят, как оно влияет на структуру компонентов, потоки данных, ограничения и действия участников. Если эту связь не удаётся наблюдать, принцип не стоит использовать как готовое объяснение.

Пример в работе

Нерабочий подход

Использовать решение без учета его условий применимости и компромиссов.

Системный подход

Сопоставить проблему, контекст и ограничения с назначением концепции.

Ограничения

«Конкурирующие потребители» объясняет только часть происходящего в области «Производительность». Сам принцип не говорит, насколько сильным будет эффект в вашем случае, и не заменяет измерения. При другом масштабе, среде или временном горизонте результат может отличаться.

Источник

Microsoft, “Competing Consumers pattern”, 2024.

Первоисточник