---
source_url: https://docs.dolphindb.cn/zh/db_distr_comp/db/ha.html
fetched_at: 2026-05-19T09:04:37Z
category: db_distr_comp
title: 高可用
sha1: 1b3f60b63b621bb36e22d4f2845433bfbb4c0b23
---

# 高可用

DolphinDB
提供多层次的高可用机制，确保在不同层面的故障场景下系统仍能持续运行。高可用能力覆盖数据存储、集群管理（元数据）、流式计算（流表） 和客户端连接。DolphinDB
分布式架构提供数据、元数据和客户端的高可用方案，即使数据库节点发生故障，数据库仍然可以正常运作，保证业务不会中断。

## 高可用适用范围

DolphinDB 的高可用机制主要用于应对节点级别的故障，以保证系统在节点发生故障时仍然能够继续提供服务。

**适用场景：**

- 节点宕机（如服务器断电、系统崩溃等）
- 操作系统故障
- 硬盘损坏或存储设备故障
- 节点无法访问

在上述情况下，高可用机制会触发故障切换，以保证系统服务的连续性。

**不适用场景：**

- 节点 CPU 或内存占用率过高
- 节点响应变慢但仍然存活

在这些情况下，节点仍然处于运行状态，高可用机制通常不会触发故障切换。

## 数据高可用

在分布式环境下，为保证数据读写服务的高可用，DolphinDB
会把同一个分区的数据同时写入到集群中的多个不同的节点上。同一个分区在不同节点上的数据拷贝称为副本（Replica）。DolphinDB
集群支持处理千万级以上的分区数据，为了保证数据的强一致性和事务 ACID 特性，它采用了轻量、高效且可行的两阶段提交协议（Two-phase
Commit）来管理数据副本之间的一致性。这种方式确保了即使某个节点上的数据出现损坏，仍然可以通过访问其他节点上的副本数据来持续提供数据服务，从而保证了服务的不中断性。同时，针对数据损坏或其它原因导致的副本数据不一致的情况，系统会通过
recovery 机制将数据恢复到一致状态。

在生产环境中，一般把副本个数设置为大于2，可以保证数据的高可用。

## 集群高可用（controller 高可用）

DolphinDB 控制节点存储的元数据记录了分区分布的节点，版本信息等。在一个集群中可以部署多个控制节点，通过元数据冗余来保证元数据服务不中断。DolphinDB 采用
Raft 协议保证控制节点的高可用性。一个集群中的所有控制节点组成一个 Raft 组，一个 Raft 组中只有一个 Leader，其他都是 Follower。只有
Leader 与数据节点进行交互，当它收到接收数据节点的请求后，先写入本地日志文件中，并向集群中的每一个 Follower
发送同步日志的请求，当日志同步到大多数节点后告诉 Follower 提交日志。Follower 接收并持久化 Leader 同步的日志，在 Leader
告知提交后，提交日志，这样就能保证 Leader 和 Follower上元数据的强一致性。如果当前 Leader 宕机，系统会立即选举出新的 Leader
来提供元数据服务。Raft
组能够容忍小于半数的控制节点宕机，只要宕机的控制节点少于半数，集群仍然可以提供服务，因此可以保证控制节点上元数据的一致性。例如包含三个控制节点的集群可以容忍一个控制节点出现故障，包含五个控制节点的集群可以容忍两个控制节点出现故障。要设置元数据高可用，集群中控制节点的数量至少为3个，同时需要设置数据高可用，即副本数必须大于1。

## 流表高可用（Raft Learner）

针对流式计算场景，DolphinDB 提供基于 Raft Learner 的流表高可用能力（需预先配置[多集群管理](https://docs.dolphindb.cn/zh/sys_man/multi_cluster_management.html)）。

Raft Learner 是 Raft 共识算法的一种特殊成员角色，用于从 Raft 主集群同步日志，但不参与投票和主节点选举。借助这一机制，DolphinDB
可以在不同集群间建立流表数据的实时复制，实现：

- 跨集群容灾：当主集群不可用时，远端 Learner 仍保留完整数据，可用于恢复或容灾。
- 读写隔离：Learner 节点可用于承载只读流式计算或下游消费，降低对主集群的影响。
- 高性能：写入路径保持在单集群内完成，不受跨地域网络延迟影响。

传统 Raft 限定一个 Raft 组运行在单个集群内部，所有 Voter 节点（Leader 与 Follower）需频繁通信。为支持跨集群高可用，DolphinDB
对 Raft 机制做了如下扩展：

- 仅 Learner 节点允许跨集群部署；
- Voter 节点（Leader 与 Follower）必须在同一集群内，不允许跨集群分布。

这种机制在保证数据一致性和性能的前提下，拓展了高可用范围，使 DolphinDB 能在流式计算场景下实现跨集群数据保护与容灾能力。

## 客户端高可用

DolphinDB API 提供了强大的自动重连和切换机制，旨在确保与数据节点/计算节点的交互始终保持高可用性。使用 DolphinDB API 与 DolphinDB
的数据节点/计算节点进行交互时，如果连接的节点宕机，API 会尝试自动重新建立连接，若尝试重连失败，API
会自动连接到集群中其他可用的数据节点/计算节点，以保证客户端与服务器之间连接的稳定性。而且切换过程对用户来说是完全透明的，用户不会察觉到当前连接的节点已经发生了切换。
