一文剖析高可用向量数据库的本质

2024-07-31 17:26:01 浏览数 (3)

面对因电力故障、网络问题或人为操作失误等导致的服务中断,数据库系统高可用能够保证系统在这些情况下仍然不间断地提供服务。如果数据库系统不具备高可用性,那么系统就需要承担停机和数据丢失等重大风险,而这些风险极有可能造成用户流失,从而使数据库系统蒙受经济和声誉上的损失。

对于向量数据库而言,高可用同样重要。随着大语言模型(LLM)的爆火,向量数据库备受关注,并已成为各种生成式 AI(GenAI)应用(如 RAG)技术栈中不可或缺的一部分。此外,开发者不再只将向量数据库用于原型设计。越来越多开发者开始在大规模企业级 AI 应用和生产中部署向量数据库。因此,确保向量数据库的高可用性对于提供稳定的业务服务和出色的用户体验变得更加重要。

我们将通过本文探索向量数据库高可用性的本质,并分析 Milvus 向量数据库和 Zilliz Cloud(全托管 Milvus 服务)如何实现高可用。

01.什么是高可用

数据库系统中的高可用(HA)是指持续提供服务,将停机时间降至最低,确保系统几乎在任何时间都可访问,即使在日常维护或发生小故障时也是如此。主要的实现高可用途径为消除单点故障,并确保用户始终可以不间断地访问所需数据。在消除单点故障时常用做法包括冗余系统(Redundant Systems)、故障转移机制(Failover)和负载均衡来,从而管理和分配流量。

02.高可用vs.容错

高可用(HA)和容错是数据库系统设计中确保系统可靠性的相关概念。然而,它们在实现方法和效果上有所不同。高可用侧重于通过快速恢复系统组件来最小化停机时间,确保服务在大部分时间内可访问,将服务中断的影响降至最低。另一方面,容错的目的是通过使用专用基础设施来实现零停机时间和零数据丢失,允许在组件失败时无缝运行。因此,相比于高可用,容错机制需要消耗的资源更多、成本开销也更大。

虽然高可用和容错在概念上存在差异,但是两者的目的都是快速恢复服务、有效解决故障,因此,在某些语境下两个概念的含义相同。

03.高可用黄金标准

高可用虽然不保证 100% 的正常运行时间,但也会努力将正常运行时间控制在 99%以上。我们常听见的“五个九”黄金标准,是指确保系统 99.999% 的正常运行时间。当然,还有其他各个级别的可用性等级,包括“四个九”(99.99%)、“三个九”(99.9%)和“两个九”(99%)。虽然每个级别的可用性都会有潜在停机时间,但本质上还是为了追求为用户提供可靠、安心的服务。

那这些可用性标准和等级到底具体意味着什么?让我们来算一算:

  • 99.999%(五个九)每年的停机时间控制在 5.26 分钟以内。
  • 99.99%(四个九)每年的停机时间控制在 52.60 分钟以内。
  • 99.9%(三个九)每年的停机时间控制在 8.77 小时以内。
  • 99%(两个九)每年的停机时间控制在 3.65 天以内。

高可用的级别越高,相关成本也越高。理由是需要使用更先进的基础设施和技术来降低停机时间。有关高可用级别的选择直接影响您的业务运营方式。需要在成本和业务需求之间做出平衡,并选择合适的可用性等级。

04.Milvus向量数据库如何实现高可用

Milvus 是一款高可用的云原生、分布式开源向量数据库,可以轻松部署在 Kubernetes 上。Milvus 通过内存副本(Replica)机制以及各种备份、恢复和同步工具实现系统可靠性。我们将从架构设计、功能和支持工具的角度分析 Milvus 如何实现高可用。

云原生架构支持在 Kubernetes 上快速部署 Milvus

Milvus 采用了云原生分布式架构,将存储和计算分离,便于直接部署到 Kubernetes (K8s) 集群。

通过K8s 的高可用特性和 Milvus 的分布式架构,Milvus 能够轻松实现:

  • 多可用区部署:Milvus 支持跨多个可用区进行部署,将副本分布到不同的区域以增加可靠性。如果一个区域遇到问题,其他区域的副本仍可继续运行。这种做法增强了系统整体的可用性。
  • 健康检查和自愈:K8s 的健康检查机制定期监控服务状态。如果发现 Milvus 节点出现故障或不健康,Kubernetes 会自动重启或替换它,以保持服务连续性。
  • 负载均衡和流量管理:Milvus 高效地在容器之间分配网络流量,避免瓶颈,帮助提升性能和可用性。
  • 存储冗余:Milvus 利用 Kubernetes 的持久卷(PV)和持久卷声明(PVC)来确保数据存储在可靠的存储系统上,保障数据的持久性和可用性。

内存副本机制

Milvus 支持内存副本功能。此功能将完整的数据段加载到单独的查询节点,并在内存中启用多个段副本,以提高性能和可用性。如果带有副本的节点失败或遇到错误,查询请求会迅速重定向到另一个副本节点,无需重新加载数据,从而保持连续的查询服务。更多详情,请阅读文档。

高效的备份、恢复和同步工具

Milvus 提供了专业的工具,如 Milvus-backup 和 Milvus-CDC,以增强数据备份恢复和处理在线增量数据同步。这些工具加强了服务恢复和数据保护。

1.Milvus-backup

Milvus-backup 是一个辅助用户高效备份和恢复原始数据的工具,支持备份恢复整个实例或特定 Collection。以下为 Milvus-backup 的使用场景:

  • 定期备份在线数据。
  • 在不同的 Milvus 集群之间传输或迁移数据。
  • 在数据意外或恶意修改的情况下恢复到原始的历史版本。
  • 在进行重大变更或维护活动之前进行数据备份,例如系统升级。

2.Milvus-CDC(变更数据捕获)

Milvus-CDC 是一个捕获并实时同步上游 Milvus Collection 变更并将其下沉到下游 Milvus 实例的工具。它允许用户指定一个实例作为源,另一个作为目标,实现所有或选定部分 Collection 的实时无缝数据同步。与 Milvus-backup 结合使用时,Milvus-CDC 允许用户实施高可用或灾难恢复解决方案。

05.Zilliz Cloud 高可用

Zilliz Cloud 是基于 Milvus 构建的全托管向量数据库,助力开发人员搭建 GenAI 应用,充分释放非结构化数据的潜力。

Zilliz Cloud 通过资源组(resource group)实现物理隔离,提供多租、备份和恢复、99.9% 服务 SLA 等特性和功能。资源组和多租户功能能够帮助实现用户和数据隔离,防止因意外或人为操作导致的数据丢失。Zilliz Cloud 提供了比 Milvus 离线部署更强大的数据保护和更好的服务弹性。

您可通过系统可用性页面查看 Zilliz Cloud 系统状态。

06.总结

向量数据库高可用至关重要。Milvus 通过为 Kubernetes 部署优化的云原生分布式架构,增强了系统弹性和可靠性。Milvus 支持故障转移和无缝扩展,并整合了高级功能,如内存副本、备份恢复和数据同步工具。

基于 Milvus 搭建的全托管向量数据库服务 Zilliz Cloud 则提供了更强大的数据保护和服务弹性。Zilliz Cloud 通过资源组实现物理隔离,提供多租户、备份恢复,99.9% SLA 等功能和特性,因此相比 Milvus 将系统高可用提升至新高度。

欢迎阅读《如何规避近年频发的数据安全事故?浅谈 SaaS 数据安全之路》一文,了解数据安全与隐私的重要性。

作者介绍

乔燕良

Zilliz Quality Assurance Lead

0 人点赞