Давайте представим, что мы хотим чистить овец в стаде таким образом, чтобы каждую овцу можно было чистить по одному за раз - другие задачи по очистке для этой овцы должны быть поставлены в очередь.У нас также есть кучка пастухов, которые могут чистить несколько овец одновременно.Количество овец очень большое и переменное (они умирают и рождаются ....).Запросы на чистку овец случайны и делаются довольно часто.
При таком подходе пастух является экземпляром микросервиса.
Для какой архитектуры следует использовать:
- убедитесь, что овец убирают только один раз в одно и то же время
- один пастух может чистить несколько овец одновременно
- одна и та же овца не чистится несколькими пастухами одновременно
- Овца автоматически очищается снова и снова, если для одной и той же овцы было отправлено несколько чистых задач
Решения:
- В очереди памяти каждого пастуха -не работает - несколько пастухов могут чистить одну и ту же овцу
- Внешняя очередь, такая как RabbitMQ, - вынудит меня создать отдельную очередь для каждой овцы - с переменным числом овец будет невозможно содержать
Есть еще идеи?