AKKA.Net 集群和共享资源
AKKA.Net Clustering and Shared Resource
嘿,我正在 AKKA.Net 上阅读和观看一些视频,我很喜欢我所看到的。我想在现有的应用程序中尝试 AKKA.net,但我需要帮助澄清一些事情
场景
我想创建一个 Akka.net 集群:
3 个节点/机器
它们之间的共享资源(计数器)。
可从所有节点读取的共享资源统计信息
每当一个节点兑现一张票时,它都会获取计数器的值并将其递增 1,然后更新计数器。两张票不应具有相同的计数器值。共享统计信息将在票兑现时保留价值,因此应将其部署到集群中的所有节点。
问题
- 如何确保门票具有唯一的计数器值?我已经习惯了锁的实现,但是演员的实现是什么?
- 如果某个节点与集群断开连接是否引发了一个事件,我可以捕捉到该事件以进行必要的调整?
- 如何确保工单具有唯一的计数器值?
如果您无法访问 actor 系统来请求 "counter" 或标识符,则使用类似 GUID 的东西来唯一标识资源 (Guid.NewGuid()
)。如果您需要一个全局整数计数器,那么您必须实现一个跟踪该计数器并按需分配新值的参与者。
- 如果某个节点与集群断开连接是否引发了一个事件,我可以捕捉到该事件以进行必要的调整?
是的,您可以侦听集群八卦事件并确定节点何时断开连接并确定它是否不再可用:
http://getakka.net/docs/clustering/cluster-extension#working-with-cluster-gossip
嘿,我正在 AKKA.Net 上阅读和观看一些视频,我很喜欢我所看到的。我想在现有的应用程序中尝试 AKKA.net,但我需要帮助澄清一些事情
场景
我想创建一个 Akka.net 集群:
3 个节点/机器
它们之间的共享资源(计数器)。
可从所有节点读取的共享资源统计信息
每当一个节点兑现一张票时,它都会获取计数器的值并将其递增 1,然后更新计数器。两张票不应具有相同的计数器值。共享统计信息将在票兑现时保留价值,因此应将其部署到集群中的所有节点。
问题
- 如何确保门票具有唯一的计数器值?我已经习惯了锁的实现,但是演员的实现是什么?
- 如果某个节点与集群断开连接是否引发了一个事件,我可以捕捉到该事件以进行必要的调整?
- 如何确保工单具有唯一的计数器值?
如果您无法访问 actor 系统来请求 "counter" 或标识符,则使用类似 GUID 的东西来唯一标识资源 (Guid.NewGuid()
)。如果您需要一个全局整数计数器,那么您必须实现一个跟踪该计数器并按需分配新值的参与者。
- 如果某个节点与集群断开连接是否引发了一个事件,我可以捕捉到该事件以进行必要的调整?
是的,您可以侦听集群八卦事件并确定节点何时断开连接并确定它是否不再可用:
http://getakka.net/docs/clustering/cluster-extension#working-with-cluster-gossip