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) 节点进行快照备份 |