Help us learn about your current experience with the documentation. Take the survey.

Gitaly 和 Geo 功能

我们通常希望为数据寻求一个高可用、快速恢复、高性能且完全弹性的解决方案。然而,这其中需要权衡利弊。

下表旨在帮助您根据自身需求,选择合适的功能组合。

Gitaly 功能

功能 可用性 可恢复性 数据弹性 性能 风险/权衡
Gitaly Cluster (Praefect) 非常高 - 可容忍节点故障 单个节点的 RTO 为 10 秒,无需人工干预 数据存储在多个节点上 良好 - 虽然由于投票机制,写入操作可能稍慢,但读取分发可以提升读取速度 权衡 - 为实现冗余、强一致性的存储方案,写入速度略有下降。风险 - 不支持快照备份,对于大型数据集,GitLab 备份任务可能会很慢
Gitaly Shards 单一存储位置是单点故障源 只需恢复发生故障的分片 单点故障源 良好 - 可将仓库分配到不同分片以分散负载 权衡 - 需要手动将仓库配置到不同分片以平衡负载/存储空间。风险 - 当发生单节点故障时,单点故障源依赖于恢复流程

Geo 功能

如果您的可用性需求需要跨越多个区域或地点,请阅读关于 Geo 的介绍。

功能 可用性 可恢复性 数据弹性 性能 风险/权衡
Geo 取决于 Geo 站点的架构。可以将从站(secondary)部署为单节点或多节点配置。 最终一致性。恢复点取决于复制延迟,而复制延迟又受网络速度等多种因素影响。Geo 支持使用可编写脚本的手动命令,将主站(primary)故障转移到从站(secondary)。 Geo 会复制并验证 100% 的计划内数据类型。更多详情请参见复制的数据类型表 为从站用户改善读取/克隆(clone)时间。 Geo 并非旨在替代其他备份/恢复解决方案。由于存在复制延迟以及可能从主站复制到损坏数据的风险,客户还应定期对其主站进行备份并测试恢复流程。

故障模式及可用缓解路径的场景

下表概述了前文表格中详述的产品所对应的故障模式及其缓解路径。 Gitaly Cluster (Praefect) 安装假定复制因子为 3 或更大的奇数。

Gitaly 模式 单个 Gitaly 节点丢失 应用程序/数据损坏 区域性中断(实例丢失) 备注
单个 Gitaly 节点 服务中断 - 必须从备份恢复 服务中断 - 必须从备份恢复 服务中断 - 必须等待中断结束
单个 Gitaly 节点 + Geo 从站 服务中断 - 必须从备份恢复,可以手动故障转移到从站 服务中断 - 必须从备份恢复,错误可能已传播到从站 需人工干预 - 故障转移到 Geo 从站
分片式 Gitaly 安装 部分服务中断 - 仅受影响节点上的仓库会受影响,必须从备份恢复 部分服务中断 - 仅受影响节点上的仓库会受影响,必须从备份恢复 服务中断 - 必须等待中断结束
分片式 Gitaly 安装 + Geo 从站 部分服务中断 - 仅受影响节点上的仓库会受影响,必须从备份恢复,可以对受影响的仓库执行手动故障转移到从站 部分服务中断 - 仅受影响节点上的仓库会受影响,必须从备份恢复,错误可能已传播到从站 需人工干预 - 故障转移到 Geo 从站
Gitaly Cluster (Praefect) 安装* 无服务中断 - 10 秒后将仓库主节点切换到另一个节点 不适用;所有写入操作都由多个 Gitaly Cluster (Praefect) 节点投票决定 服务中断 - 必须等待中断结束 目前不支持对 Gitaly Cluster (Praefect) 节点进行快照备份
Gitaly Cluster (Praefect) 安装* + Geo 从站 无服务中断 - 10 秒后将仓库主节点切换到另一个节点 不适用;所有写入操作都由多个 Gitaly Cluster (Praefect) 节点投票决定 需人工干预 - 故障转移到 Geo 从站 目前不支持对 Gitaly Cluster (Praefect) 节点进行快照备份