【发布时间】:2017-05-10 23:25:32
【问题描述】:
这是关于 akka 的几个非常基本的问题。我在 akka 上完全是绿色的,所以任何建议都值得赞赏。
假设我有一个拥有数千名用户的应用程序,而不是数百万用户。
域模型是一个层次结构,其中每个用户位于一个国家/地区的一个地区,即一个国家有多个地区,一个地区有多个用户。
我正在考虑在 akka 中创建完全相同的层次结构。国家演员 ->* 区域演员 ->* 用户演员。 CountryActor/RegionActor 除了作为父母之外,还承担着收集新闻、计算统计数据、监督其子女等职能。
Q1:这样模仿领域模型有意义吗?
Q2:我应该将每个实体的属性存储在actor中吗? 这样数据只需要存储一次,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,
...
}
Q3:如何通过 userId 高效查找用户? 我希望 UserActor 的子名称将是 userId,但鉴于我只有一个 userId,我仍然需要找到正确的国家和地区来执行 getContent().findChild(userId)?我是否需要保留所有 userId 的完整地图并引用他们的演员?
Q4:如何按状态定位演员? 想象一下,每个用户都可以打开一个RegionalNews 属性,这意味着他想接收来自RegionalActor 的新闻。每当 RegionActor 想要向所有听众分发新闻时,它是如何定位他们的?它是保留具有该属性的用户的内部地图,还是向所有子节点广播,然后发送给所有响应者?
提前致谢
【问题讨论】:
标签: akka akka.net akka-persistence