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

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

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

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

什么是高可用?

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

高可用 vs. 容错

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

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

高可用黄金标准

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

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

  • 99.999%(五个九)每年的停机时间控制在 5.26 分钟以内。

  • 99.99%(四个九)每年的停机时间控制在 52.60 分钟以内。

  • 99.9%(三个九)每年的停机时间控制在 8.77 小时以内。

  • 99%(两个九)每年的停机时间控制在 3.65 天以内。

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

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,以增强数据备份恢复和处理在线增量数据同步。这些工具加强了服务恢复和数据保护。

Milvus-backup

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

  • 定期备份在线数据。

  • 在不同的 Milvus 集群之间传输或迁移数据。

  • 在数据意外或恶意修改的情况下恢复到原始的历史版本。

  • 在进行重大变更或维护活动之前进行数据备份,例如系统升级。

Milvus-CDC(变更数据捕获)

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

Zilliz Cloud 高可用

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

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

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

总结

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/388141.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python中的print函数总结

文章目录 打印变量打印数学计算多行文本复制n次字符串 x*n,n*x不换行输出多个数据换行符制表位转义原字符字符串切片格式化字符串千位分隔符(只适用于整数和浮点数)浮点数小数部分的精度字符串类型,.表示最大的显示长度整数类型浮点数类型 打…

(新)VMware虚拟机安装Linux教程(超详细)

创作不易,禁止转载抄袭!!!违者必究!!! 创作不易,禁止转载抄袭!!!违者必究!!! 创作不易,禁止转载抄…

C语言:扫雷游戏实现

一、扫雷游戏的分析和设计 扫雷游戏想必大家都玩过吧,初级的玩法是在一个9*9的棋盘上找到没有雷的格子,而今天我们就要做的就是9*9扫雷游戏的实现。 1、游戏功能和规则 使用控制台实现经典的扫雷游戏游戏可以通过菜单实现继续玩或者退出游戏扫雷的棋盘…

Flink SQL 的工作机制

前言 Flink SQL 引擎的工作流总结如图所示。 从图中可以看出,一段查询 SQL / 使用TableAPI 编写的程序(以下简称 TableAPI 代码)从输入到编译为可执行的 JobGraph 主要经历如下几个阶段: 将 SQL文本 / TableAPI 代码转化为逻辑执…

面试经典算法150题系列-数组/字符串操作之多数元素

序言:今天是第五题啦,前面四题的解法还清楚吗?可以到面试算法题系列150题专栏 进行复习呀。 温故而知新,可以为师矣!加油,未来的技术大牛们。 多数元素 给定一个大小为 n 的数组 nums ,返回其…

C#实现深度优先搜索(Depth-First Search,DFS)算法

深度优先搜索(DFS)是一种图搜索算法,它尽可能深入一个分支,然后回溯并探索其他分支。以下是使用C#实现DFS的代码示例: using System; using System.Collections.Generic;class Graph {private int V; // 顶点的数量pr…

大模型算法备案流程最详细说明【流程+附件】

文章目录 一、语料安全评估 二、黑盒测试 三、模型安全措施评估 四、性能评估 五、性能评估 六、安全性评估 七、可解释性评估 八、法律和合规性评估 九、应急管理措施 十、材料准备 十一、【线下流程】大模型备案线下详细步骤说明 十二、【线上流程】算法备案填报…

ChatGLM3-6B模型部署微调实战

准备 视频教程 https://www.bilibili.com/video/BV1ce411J7nZ?p14&vd_source165c419c549bc8d0c2d71be2d7b93ccc 视频对应的资料 https://pan.baidu.com/wap/init?surlAjPi7naUMcI3OGG9lDpnpQ&pwdvai2#/home/%2FB%E7%AB%99%E5%85%AC%E5%BC%80%E8%AF%BE%E3%80%90%E8…

HTTP协议详解(一)

协议 为了使数据在网络上从源头到达目的,网络通信的参与方必须遵循相同的规则,这套规则称为协议,它最终体现为在网络上传输的数据包的格式。 一、HTTP 协议介绍 HTTP(Hyper Text Transfer Protocol): 全…

Monorepo简介

Monorepo 第一章:与Monorepo的邂逅第二章:Multirepo的困境第三章:Monorepo的魔力 - 不可思议的解决问题能力第四章:Monorepo的挑战与应对策略第五章:总结第六章:参考 第一章:与Monorepo的邂逅 …

【AI大模型】分布式训练:深入探索与实践优化

欢迎来到 破晓的历程的 博客 ⛺️不负时光,不负己✈️ 文章目录 一、分布式训练的核心原理二、技术细节与实现框架1. 数据并行与模型并行2. 主流框架 三、面临的挑战与优化策略1. 通信开销2. 数据一致性3. 负载均衡 4.使用示例示例一:TensorFlow中的数据…

VAE、GAN与Transformer核心公式解析

VAE、GAN与Transformer核心公式解析 VAE、GAN与Transformer:三大深度学习模型的异同解析 【表格】VAE、GAN与Transformer的对比分析 序号对比维度VAE(变分自编码器)GAN(生成对抗网络)Transformer(变换器&…

设计师的素材管理神器,eagle、千鹿大测评

前言 专业的设计师都会精心维护自己的个人素材库,常常需要耗费大量时间用于浏览采集、分类标注、预览筛选、分享协作,还要管理字体、图片、音视频等各类设计素材 如果你作为设计师的话,今天,就为大家带来两款热门的素材管理工具…

SpringMVC中的常用注解

目录 SpringMVC的定义 SpringMVC的常用注解 获取Cookie和Session SpringMVC的定义 Spring Web MVC 是基于 Servlet API 构建的原始 Web 框架,从⼀开始就包含在 Spring 框架中。它的正式名称“Spring Web MVC”来⾃其源模块的名称(Spring-webmvc),但它…

全麦饼:健康与美味的完美结合

在追求健康饮食的当下,全麦饼以其独特的魅力脱颖而出,成为了众多美食爱好者的新宠。食家巷全麦饼,顾名思义,主要由全麦面粉制作而成。与普通面粉相比,全麦面粉保留了小麦的麸皮、胚芽和胚乳,富含更多的膳食…

免费聊天回复神器微信小程序

客服在手机上通过微信聊天,回复客户咨询的时候,如果想把整理好的话术一键发给客户,又不想切换微信聊天窗口,微信小程序是一个很好的选择 微信小程序支持微信聊天 客服在手机上通过微信聊天,回复客户咨询的时候&#x…

Shell编程——简介和基础语法(1)

文章目录 Shell简介什么是ShellShell环境第一个Shell脚本Shell脚本的运行方法 Shell基础语法Shell变量Shell传递参数Shell字符串Shell字符串截取Shell数组Shell运算符 Shell简介 什么是Shell Shell是一种程序设计语言。作为命令语言,它交互式解释和执行用户输入的命…

linux进程控制——进程等待——wait、waitpid

前言:本节内容仍然是进程的控制,上一节博主讲解的是进程控制里面的进程创建、进程退出、终止。本节内容将讲到进程的等待——等待是为了能够将子进程的资源回收,是父进程等待子进程。 我们前面的章节也提到过等待, 那里的等待是进…

ThreadPoolExecutor工作原理及源码详解

一、前言 创建一个线程可以通过继承Thread类或实现Runnable接口来实现,这两种方式创建的线程在运行结束后会被虚拟机回收并销毁。若线程数量过多,频繁的创建和销毁线程会浪费资源,降低效率。而线程池的引入就很好解决了上述问题,…

计算机组成原理---机器中的数字表示

二进制,八进制,十六进制之间转化 十进制转二进制 75.3的整数部分75: 75.3小数部分0.3: 原则:1.先除r/乘r得到的是结果部分中接近小数点的数字 2.都是取结果一部分(余数/整数部分),使…