假设我们有大量持久的Person actor,每个actor都使用identity和name参数构造。在群集中分发这些角色的最佳方式是:
我考虑过以下问题,似乎无法解决问题:
答案 0 :(得分:0)
听起来你几乎正在描述Akka群集分片,并且没有足够的信息来查看它不适合的原因。
处理这样一个设计问题的常见解决方案是拥有一个未初始化的分片实体状态,它只接受一个包含所需值的初始化命令(如CreateUser(id, name)
之类的东西),当它得到它时切换到正常的"行为。
另一种选择可能是引入一个不会启动实际actor的中间actor,直到它无法更改Person actor的设计时提取名称值。
OFC。您也可以直接下载到Akka集群API并构建与您的用例完全匹配的东西,但是处理集群拓扑更改(添加,删除节点等)的重新分配对于实现正确而言并非易事。
我认为您也会意识到,如果没有将分片解决方案与您的业务逻辑紧密结合,那么实现对您的实体完全无创的工具非常困难。