2

Все, что я прочитал в DDD, подразумевает, что состояние внутри агрегатов должно быть строго согласованным.Должны ли агрегаты быть строго согласованными?

Это означает, что если требуется избыточность, то может использоваться только сильно-согласованная репликация (например, 2PC, 3PC или Paxos).

Можно ли использовать в конечном итоге последовательную репликацию, такую ​​как мультимастер или мастер-раб? Если вы использовали их, это то, что у вас есть «совокупность» в условиях DDD? Это обычная вещь?

ответ

3

Совокупность сама по себе должна быть последовательной, однако связанные агрегаты могут в конечном итоге соответствовать друг другу. Фактически, конечная согласованность является общей парадигмой DDD в распределенных сценариях. Совокупность можно рассматривать как границу согласованности. Это означает, что совокупность определяется с точки зрения того, что должно быть последовательным, а не чисто отражением реальности.

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

Посмотрите на Effective Aggregate Design by Vaughn Vernon, чтобы узнать больше об этом.

UPDATE

В конечном итоге последовательное резервирование агрегатов должна быть оценена на основе каждого конкретного случая. Некоторые агрегаты будут хорошо подходят для разрешения конфликтов, возможно, с действиями естественной компенсации. Эти типы конфликтов будут разрешаться способами, сходными с конфликтами в стиле CQRS, где требуются действия по компенсации, чтобы привести систему в согласованное состояние. Как и в CQRS, последствия возможной согласованности должны обсуждаться с экспертами домена.

+0

Вы описали определение агрегатов DDD для учебников, подтверждающее еще большее введение в мой вопрос. Однако как насчет избыточности агрегатов, а точнее: как вы обрабатываете избыточные копии, размещенные в разрозненных центрах обработки данных для нужд геолокации? –

+0

Задачи, такие как синхронизация между хранилищами данных, должны обрабатываться репозиториями или, возможно, службами (репозиторий является гораздо более стандартным подходом IMHO). Что в домене - это просто бизнес-правила, указывающие, что такое сущность и как она преобразуется. – Mathieson

Смежные вопросы