首页 > 解决方案 > Akka Cluster Sharding 中无法访问的节点

问题描述

我正在研究 Akka Cluster Sharding,在阅读了 Akka 文档和互联网上的一些主题后,我认为当集群有一个无法访问的节点时,只有与该节点上的分片的通信被中断。这意味着消息被告知其上的分片将被缓冲,并且发送者将收到超时响应,并且消息被告知其他可用节点上的分片将正常发送和接收。但是当我尝试实现一个有 4 个节点的集群,然后停止一个节点的服务,通过 Akka HTTP 管理检查并确认它被设置为不可访问时,我测试了从可用节点中的参与者向其他可用节点中的参与者发送消息节点并收到超时响应。那么,任何人都可以帮助我确认集群何时存在无法访问的节点,整个分片系统将无法正常工作,或者只是无法访问的节点?谢谢

标签: shardingakka-cluster

解决方案


从文档:

分片协调器状态

ShardCoordinator 中分​​片位置的状态是持久的(持久的),具有分布式数据或持久性以在故障中存活。当从集群中删除(通过关闭)崩溃或无法访问的协调器节点时,新的 ShardCoordinator 单例参与者将接管并恢复状态。在这样的故障期间,具有已知位置的分片仍然可用,而新(未知)分片的消息被缓冲,直到新的 ShardCoordinator 可用。

在此我们有“在这样的故障期间,具有已知位置的分片仍然可用”,因此当Shard Coordinator整个unreachable集群无法正常工作时。

供参考:doc.akka.io 中的 Shard Coordinator State


推荐阅读