Являются ли Лагом Стойкой Актер Сущностей? / Актерские модели - PullRequest
0 голосов
/ 31 августа 2018

Я использую постоянную сущность Lagom и поддерживаю поддержку Cassandra для чтения, сохраняя состояние для запросов на чтение. Итак, пытаясь понять, являются ли постоянные сущности актерами? означает, что одновременно обрабатывается только одно событие / команда? Являются ли события также сообщениями, которые обрабатывает «постоянная сущность»? Я не мог найти много документации относительно следующего:

  • сохраняется ли каждая сущность в памяти после ее создания? Например: если пользователь - одна сущность, и при создании нового пользователя, если объект (сущность) пользователя сохраняется в памяти, как эффективна эта модель для масштабирования, если предположить, что почти 80% пользователей в течение длительного времени отключаются?
  • Если мы возьмем модель, в которой актер удален через некоторое время ... Должен ли актер снова прочитать все события, чтобы обработать другой запрос? Разве это не увеличивает задержку?

  • Большинство примеров, которые я видел, касались реализации корзины покупок / чего-то подобного. Если добавление товаров в корзину обрабатывается командами / запросами, как гарантируется, что один и тот же товар не будет добавлен в корзину дважды? Как читать / обновлять опираться на разные взгляды / источники правды. (Я понимаю, что это может произойти в любом приложении с одновременными пользователями, но такие сценарии, возможно, довольно часто возможны при использовании Actors)

Ответы [ 2 ]

0 голосов
/ 03 сентября 2018

Являются ли постоянные сущности актерами? Это означает, что одновременно обрабатывается только одно событие / команда?

Я бы не задавал вопрос таким образом; актеры do выполняют синхронную обработку сообщений, но то, что что-то выполняет синхронную обработку сообщений, не означает, что это актер.

Теперь, когда семантика вышла из-под контроля, мы можем обратиться к вопросу ... PersistentEntity с технической точки зрения не актеры ... Однако PersistentEntityRegistry s создаст что-то, что PersistentActor.

  • сохраняется ли каждая сущность в памяти после ее создания?

Объекты сохраняются в любом хранилище, которое вы используете, в соответствии с этим механизмом моментального снимка сохраняемости Akka (см. здесь ).

  • Если мы выберем модель, в которой актер будет удален через некоторое время ... Придется ли актеру снова прочитать все события, чтобы обработать другой запрос?

Опять же, снимок поможет значительно.

  • Если добавление товаров в корзину обрабатывается командами / запросами, как гарантируется, что один и тот же товар не будет добавлен в корзину дважды?

Подробнее о семантике доставки актеров Akka можно прочитать здесь .

0 голосов
/ 01 сентября 2018
  1. Сохраняемая сущность удаляется из памяти после настраиваемого времени бездействия.
  2. Сохраняемая сущность снова загружается в память путем чтения последнего снимка и каждого события после него.
  3. Команда может быть проверена путем сравнения с постоянным состоянием объекта, которое строится из журнала событий (источник правды). Вы можете хранить продукты во внутреннем состоянии и знать, когда продукт будет добавлен снова. Затем вы можете отклонить эту команду, не отправляя события и возвращая ошибку.
...