Как мне структурировать акторов постоянства в постоянстве Akka?

Как мне структурировать своих актеров в постоянном Akka (Eventsourcing/CQRS)?

  • Иерархический
  • Параллельно

У меня есть эти объекты домена в моем приложении электронной коммерции

  • Пользователь - пользователь может создать учетную запись
  • Магазин - Пользователь может создать магазин
  • Товар — пользователь может добавлять товары в свой магазин.
  • Корзина - Пользователь может добавить любой товар из магазинов других Пользователей в Корзину.

Итак, мой вопрос: как я должен структурировать своих актеров? Каковы преимущества и недостатки выбора одного над другим, особенно в отношении модели домена электронной коммерции?

актерная структура akka


person captain-inquisitive    schedule 03.12.2015    source источник


Ответы (1)


Я думаю, что ваш вопрос больше касается границ ваших агрегатов.

В любом случае между агрегатами НЕ должно быть иерархической структуры. Агрегаты должны быть независимы друг от друга. Нет отношений родитель-ребенок.

По вашему описанию. Существует User Aggregate, который может создавать магазины и добавлять в него товары.

Store может быть отдельным агрегатом, который инициируется агрегатом User. Обратите внимание, что тот факт, что пользователь может создать Store, не означает, что у него должны быть отношения родитель/потомок. Это больше касается контроля доступа. Магазин создается пользователем, и только этот пользователь имеет право добавлять в него товары.

Однако Продукт кажется сущностью внутри агрегата Магазина.

Ваш четвертый пример «Корзина — пользователь может добавить любой товар из магазинов других пользователей в корзину» показывает нечто совершенно иное. У вас есть два типа пользователей. Пользователи, которые создают магазины и управляют ими, а также потребители данного магазина. Они не одинаковы, и они должны быть смоделированы по-разному.

Попробуйте смоделировать предметную область вашего бизнеса, не пытаясь повторно использовать объекты только потому, что они похожи.

person Renato    schedule 06.12.2015