Это пара очень простых вопросов, касающихся akka. Я полностью зеленый на akka, поэтому любые советы приветствуются.
Скажем, у меня есть приложение с тысячами пользователей, а не с миллионами.
Модель домена представляет собой иерархию, в которой каждый пользователь находится в регионе внутри страны, т. е. в стране несколько регионов, в регионе несколько пользователей.
Я думаю создать точно такую же иерархию в akka. CountryActor ->* RegionActor ->* UserActor. CountryActor/RegionActor будет помимо того, что быть родителями, также будет иметь функциональные обязанности, такие как сбор новостных лент, расчет статистики, надзор за своими детьми и т. д.
Вопрос 1. Имеет ли смысл имитировать модель предметной области таким образом?
Вопрос 2: Должен ли я хранить атрибуты каждой сущности в действующем лице? Таким образом, данные нужно будет сохранить только один раз, а система akka также будет фактически являться базой данных в памяти.
(псевдокод)
CountryActor {
Name,
CountryCode,
(children = list of RegionActors handled by akka)
}
RegionActor {
Name,
RegionCode,
(children = list of UserActors handled by akka)
}
UserActor {
UserId,
Firstname,
Lastname,
Alias,
ReceiveRegionalNews,
ReceiveCountryNews,
...
}
Вопрос 3. Как эффективно искать пользователя по идентификатору пользователя? Я ожидаю, что дочерним именем UserActor будет идентификатор пользователя, но, учитывая, что у меня есть только идентификатор пользователя, мне все равно нужно найти правильную страну. и регион для выполнения getContent().findChild(userId)? Нужно ли мне хранить полную карту всех идентификаторов пользователей и ссылки на их актеров?
Вопрос 4. Как найти участников по их состоянию? Представьте, что у каждого пользователя есть возможность включить атрибут RegionalNews, что означает, что он хочет получать новости от RegionalActor. Всякий раз, когда RegionalActor хочет распространить новости среди всех слушателей, как он их находит? Сохраняет ли он внутреннюю карту пользователей с атрибутом или делает широковещательную рассылку всем своим дочерним элементам, а затем отправляет всем респондентам?
заранее спасибо