SequoiaDB的数据分片能力
巨杉数据库可以将一个表切成几块,存储在不同的三个分区。datagroup是数据分区,拥有多个数据节点,有主节点与备节点,每个数据节点分布在不同的物理机上。这样子可以避免了过度依赖一台机器存储所带来的风险,具有高可用性。
SequoiaDB三类节点
catalog是编目节点,负责管理;
crood是协调节点,负责发起请求,递交等操作;
data是数据节点,负责存储,每一个数据组(datagroup有多个数据节点)。
数据节点主节点选举例题
以下几个题是在做题的时候遇到的,能够加深初学者对数据组、数据节点的理解,也能够帮助初学者更充分地理解高可用性。如果有什么不对的地方,欢迎指正~
1、假设数据组包含三个数据节点,A节点 (主节点,NodeID=1000,weight=10)、B节点 (NodeID=1001,weight=10) 和C节点 (NodeID=1002,weight=10) ,且在开始时磁盘、网络等客观资源都是充裕的。
如果有一个场景,当数据组的主节点 (A节点)接收到写入数据请求后,主节点刚刚完成数据的写入操作,但是还没有来得及将此写入任务同步到B节点和C节点。由于外力因素,A节点的进程突然被强行关闭,那么此时该数据组中哪个节点会当选主节点?
答案是C。因为A节点没来得及写入B或者C节点,因此B与C的地位在此时是一样的。当A节点被关闭后,数据组中还剩下两个节点,符合大部分节点正常工作的前提,发起主节点选举。由于C的NodeID(1002)较大,因此C节点当选主节点。
2、假设数据组包含三个数据节点,A节点 (主节点,NodelD=1000,weight=10) 、B节点 (NodelD=1001,weight=10) 和C节点 (NodelD=1002!weight=10),且在开始时磁盘、网络等客观资源都是充裕的。
如果有一个场景,当数据组的主节点 (A节点)接收到写入数据请求后主节点在完成数据的写入操作后,刚刚将写任务同步到B节点,但是还没有来得及将此写入任务同步到C节点上。由于外力因素,A节点的进程突然被强行关闭,那么此时该数据组中哪个节点会当选主节点?
答案是B。A节点关闭前将任务同步到B节点,并且A被关闭后数据组内符合超半数节点正常工作的前提,因此B节点将会当选主节点。
3、假设数据组包含三个数据节点,A节点 (主节点,NodelD=1000,weight=10) 、B节点(NodelD=1001,weight=10) 和C节点(NodelD=1002,weight=10),且在开始时磁盘、网络等客观资源都是充裕的。
如果有一个场景,在开始时,该数据组的三个节点都是正常运行的,但是由于外力因素,突然A节点和B节点的进程被强行关闭,那么此时该数据组哪个节点将会当选为主节点?
答案是没有节点当选。由于数据组中只存在3个节点,其中A和B被强行关闭,只剩下C节点,不符合过半数节点正常工作的前提,因此不能进行选举。