【发布时间】:2013-09-12 19:17:03
【问题描述】:
我正计划使用shared-nothing architecture 和multiversion concurrency control 制作一个分布式数据库系统。冗余将通过asynchronous replication 实现(只要系统中的数据保持一致,它可以在发生故障时丢失一些最近的更改)。对于每个数据库条目,一个节点具有主副本(只有该节点对其具有写访问权限),此外,一个或多个节点具有条目的辅助副本以用于可伸缩性和冗余目的(辅助副本是只读的) .当条目的主副本被更新时,它会被打上时间戳并异步发送到具有辅助副本的节点,以便最终他们将获得条目的最新版本。拥有主副本的节点可以随时更改 - 如果另一个节点需要写入该条目,它将请求主副本的当前所有者给该节点该条目的主副本的所有权,并在收到所有权后该节点可以写入条目(所有事务和写入都是本地的)。
最近我一直在思考当集群中的一个节点出现故障时该怎么办,使用什么策略进行故障转移。这里有一些问题。我希望您至少知道其中一些的可用替代品。
- 在分布式系统中进行故障转移有哪些算法?
- 分布式系统中有哪些共识算法?
- 集群中的节点应该如何判断一个节点宕机了?
- 节点应如何确定发生故障时故障节点上有哪些数据库条目的主副本,以便其他节点可以恢复这些条目?
- 如何确定哪些节点拥有某个条目的最新辅助副本?
- 如何决定应该将哪个节点的辅助副本提升为新的主副本?
- 如果本以为宕机的节点突然像没事发生一样又回来了怎么办?
- 如何避免脑裂的情况,网络暂时一分为二,双方都认为对方已经死了?
【问题讨论】:
-
@PhilCrow 有更多有用的项目,所以我放弃了这个项目。 ;)
标签: database algorithm distributed cluster-computing failover