DolphinDB高可用集群部署教程

2022-03-29 00:00:00 数据 集群 节点 可用 控制

1. 概述

DolphinDB提供数据、元数据以及客户端的高可用方案,即使数据库节点发生故障,数据库依然可以正常运作,保证业务不会中断。

DolphinDB采用多副本机制,相同数据块的多个副本存储在不同的数据节点(data node)上。即使集群中某个或多个数据节点宕机,只要集群中还有至少1个副本可用,那么数据库就可以提供服务。多副本的数据一致性通过二阶段提交协议来实现。

元数据存储在控制节点(conroller)上。为了保证元数据的高可用,DolphinDB采用Raft协议,通过构建多个控制节点来组成一个Raft组,只要宕机的控制节点少于半数,集群仍然可提供服务。

DolphinDB API提供了自动重连和切换机制,如果当前连接的数据节点宕机,API会尝试重连,若重连失败就会自动切换连接到其他数据节点执行任务。切换数据节点对用户是透明的,用户不会感知到当前连接的节点已经切换。

如果要使用高可用功能,请先部署DolphinDB集群。高可用功能仅在集群中支持,在单实例中不支持。集群部署请参考多服务器集群部署教程。


DolphinDB 高可用架构图


2.数据高可用

为了保证数据的安全和高可用,DolphinDB支持在不同的服务器上存储多个数据副本,并且采用二阶段提交协议实现数据副本之间以及数据和元数据之间的强一致性。即使一台机器上的数据损坏,也可以通过访问其他机器上的副本数据来保证数据服务不中断。DolphinDB之所以采用二阶段提交协议实现副本之间的一致性,基于三个因素的考量:(1)DolphinDB集群是为海量数据设计的,单个集群可以支持千万级以上分区数,使用Raft和Paxos等算法创建千万级的协议组,成本太高;(2)使用Raft和Paxos等算法,查询数据时只有一个副本可用,对于OLAP应用场景来说过于浪费资源;(3)写入的数据如果跨分区,即使采用了Raft和Paxos等算法,仍然需要二阶段提交协议保证事务的ACID。

副本的个数可由在controller.cfg中的dfsReplicationFactor参数来设定。例如,把副本数设置为2:

dfsReplicationFactor=2

相关文章