Требуется небольшое архитектурное руководство. У меня есть набор служб без сохранения состояния , которые выполняют различные функции. Моя архитектура позволяет запускать несколько копий каждой службы одновременно (поскольку они не имеют состояния), что позволяет мне:
- масштабироваться по мере необходимости для обработки больших рабочих нагрузок
- иметь отказоустойчивость (если выйдет из строя один экземпляр службы, нет проблем, поскольку эту работу возьмут на себя другие).
Однако я не хочу дублирования работы.
Если Служба A, экземпляр 1 уже принял задание AB C, я не хочу, чтобы служба A, экземпляр 2 выполняла ту же работу. Итак, я мог бы избежать этой проблемы, используя Azure очередей служебной шины. Только один рабочий получит конкретный элемент из очереди и будет переназначен другому работнику только в том случае, если рабочий не пометит его как завершенный в установленное время.
Итак, каков подходящий вариант использования тем (Pub / Sub)? Похоже, что если у меня когда-либо будет несколько копий одной и той же службы, я должен полагаться на очереди. Правильно?
Другой вопрос: есть ли способ использовать темы в Azure служебной шине или аналогичные продукты / услуги, но избежать дублирования работы? Кроме того, если есть способ заблокировать сообщение (на короткий период времени) при использовании тем, можно ли заблокировать это сообщение только для одного экземпляра службы A (чтобы никакие другие экземпляры службы A не имели к нему доступа), но сообщение будет транслировать в службу B, службу, C, и т.д. c.?