我正在研究基于 Akka 参与者的事件处理管道。管道的每个步骤都有 3 个参与者:FilterWorker、EnrichWorker 和 ProcessWorker;加上确保事件从管道的一个步骤发送到下一个步骤的主管参与者。
丰富步骤可能需要查询一些外部数据库以获取额外数据,甚至需要创建我想要保留的新数据。例如,网络分析系统的丰富步骤可能想要丰富点击事件与进行点击的用户并将该用户信息存储在数据库中。
牢记该示例,我看到以下选项:
1.使用单例;例如UserStore 将到目前为止收集的所有用户保存在内存中,并偶尔将它们保存到数据库中;具有获取尚未在内存中的用户的所有逻辑。然而,在 Actor 系统中使用单例似乎不是一个好主意(?)。
- 使用商店 Actor 。使用 tell 添加新用户并请求获取它。
有更好的模式吗?
谢谢!
最佳答案
为了不让这个问题悬而未决,我选择了第二个选项和 johanandren 的建议,即让 Actor 担任数据存储角色。效果很好!
关于scala - Actor 系统中的数据存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26126352/