0

我正在开发一个使用 Akka 集群的系统。我面临的困境是如何更新入口点的数据。我有以下结构:

[负载均衡器] -> [入口点](喷雾供电)-> [工人]

在入口点上,我需要保留一个允许访问数据的用户列表,换句话说,我需要保留一个列表,比如说电子邮件。但是,当新用户被授权或删除时,必须经常更新此列表。

解决这个问题的最佳方法是什么?我正在考虑将这个电子邮件/ID 容器切换到一个可变容器,但问题是系统是否会在事件处理中锁定这些数据以及这如何影响性能。

任何建议都会很棒!

更新: - 新用户的分配将通过定期喷雾休息请求完成。从外部授权此类系统请求请求将使用安全密钥和要添加到列表中的用户 ID 发出 - 有多个节点,每个节点都有喷雾休息入口点 - 只要是一对,速度无关紧要秒 - 顺序无关紧要。

系统只会在负载均衡器上收到一条消息,它必须向用户列表添加一个 ID。由于负载均衡器,它最终会出现在入口点喷雾节点之一上。它必须更新自己的 ID 列表,并广播到应用程序中的所有其他入口点(基本上都来自负载均衡器列表)所需的更新。

希望这能更好地澄清。

4

1 回答 1

0

好的,这是初稿。

每个喷涂端点必须具有相同的访问列表“视图”,否则您的请求可能会被拒绝,具体取决于它们平衡到的端点。

因此,您需要具有官方访问列表的引用,以便您可以从崩溃中恢复和/或创建具有最新访问列表的新喷射节点。

您可以在您的 akka-cluster 中创建一个单例参与者,该参与者将负责从持久存储中读取和更新访问列表。

然后使用分布式 akka pub/sub 扩展,您可以创建一个分布式消息总线,其中:

  • 例如,所有喷雾端点和单例参与者都订阅了“访问更新”频道。这样,所有参与者都可以保持他们的访问列表“同步”。

  • 当喷雾端点收到添加或删除用户/访问的请求时,它会在通道“访问更新”上推送通知。每个喷雾端点都可以更新它们的访问列表,因此单例更新存储中的持久列表。

你怎么看?

于 2013-09-18T16:29:02.223 回答