原始网页:https://www.cockroachlabs.com/docs/stable/high-availability.html


CockroachDB能够应对从服务器重启到数据中心停电的软硬件故障。其实现能够避免使用麻烦的中间件,特别是一些使用了强一致性副本或是故障后自动修复的分布式系统(例如stale reads)。

复制

CockroachDB使用Raft一致性算法复制您的数据以获得可用性,并保证复制品之间的一致性,这是Paxos的一种流行替代方案。用户可以通过各种方式定义副本的位置,具体取决于要保护的故障类型和网络拓扑。您可以在以下位置找到副本:

跨数据中心进行数据冗余时,请注意数据中心之间的往返延迟会直接影响数据库的性能。跨大陆集群的延迟将明显比所有节点在地理上靠近在一起的集群更差。

自动恢复

对于短时间的故障(例如服务器重启),CockroachDB通过Raft保持绝大多副本可用,来实现无缝服务。Raft保证了每组副本在前任Leader故障的时候能够选举出新的Leader,使得事务能够继续进行,而受影响的副本再次上线的时候能够再次加入到副本组。

对于长时间的故障(例如服务器或机架长时间故障或是数据中心停运),CockroachDB能够使用不受故障影响的副本作为数据源,恢复并自动重新平衡丢失节点上的副本。集群能够通过Gossip网络提供的存储空间信息,识别新的节点。然后使用所有的可用节点、硬盘和网络的带宽,以分布式的方式重新进行复制出丢失的副本。