高可用机制-3
【高可用原理】
巨杉分布式数据库的高可用,是通过数据组的多副本的机制来实现的。
数据组中,分为主备节点。主备节点的主要区别是,主节点提供读写服务,备节点只提供读服务。
在主节点意外宕机之后,备节点可以自动选主,保证数据库集群的可用性。
数据组中的节点(副本数)越多,数据库集群的可用性越高。
当然,如果副本数越多,数据冗余度就越高,会导致物理资源不必要的浪费。
【数据库可用】
以三副本的数据库集群为例
理论上讲,如果一个3副本的数据组中,在某一时刻只存活一个节点。则这个数据只提供读服务,不再提供写服务。
巨杉数据库的节点选主采用Raft算法,其中有一点,当前数据组中如果存活的节点不超过半数,则主节点自动降备。
但是如果当前集群中有多个数据组,其他数据组还能提供写服务。由于巨杉数据库中使用域来控制隔离性,不包含该数据组的域还可以正常提供读写,则数据库仍然是可用的。
数据库不可用:一个多副本的数据库集群,所有数据组都只能提供读服务,或者不能提供读写服务。此时,数据库是不可用状态。当然,这种情况发生的概率很小。
【数学角度分析高可用】
假设有一个三副本的数据库,有三个数据组,每个节点在任意时刻宕机的概率为p。
一个数据组在任意时刻只提供读服务的概率:3p²
三个数据组在任意时刻只提供服务的概率(数据库不可用):(3p²)³
事实上,在实际生产中,节点在任意时刻宕机的概率p,是非常小的。
以上分析的情况中,只考虑节点同时挂掉的情况,没有考虑节点先后挂掉的情况。是因为在实际生产中,如果有一个节点挂掉,现场运维或者技术支持人员都会迅速恢复该节点。
如此看来数据库不可用的概率:(3p²)³,在p非常小时,(3p²)³趋近于0。
欢迎大家下载数据库使用体验~
http://download.sequoiadb.com/cn/