一文剖析高可用向量数据库的本质
面对因电力故障、网络问题或人为操作失误等导致的服务中断,数据库系统高可用能够保证系统在这些情况下仍然不间断地提供服务。如果数据库系统不具备高可用性,那么系统就需要承担停机和数据丢失等重大风险,而这些风险极有可能造成用户流失,从而使数据库系统蒙受经济和声誉上的损失。
对于向量数据库而言,高可用同样重要。随着大语言模型(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 数据安全之路》一文,了解数据安全与隐私的重要性。
相关文章:

一文剖析高可用向量数据库的本质
面对因电力故障、网络问题或人为操作失误等导致的服务中断,数据库系统高可用能够保证系统在这些情况下仍然不间断地提供服务。如果数据库系统不具备高可用性,那么系统就需要承担停机和数据丢失等重大风险,而这些风险极有可能造成用户流失&…...
JavaScript青少年简明教程:异常处理
JavaScript青少年简明教程:异常处理 在 JavaScript 中,异常指的是程序执行过程中出现的错误或异常情况。这些错误可能导致程序无法正常执行,甚至崩溃。ECMA-262规范了多种JavaScript错误类型,这些类型都继承自Error基类。主要的错…...

科普文:Lombok使用及工作原理详解
1. 概叙 Lombok是什么? Project Lombok 是一个 JAVA 库,它可以自动插入编辑器和构建工具,为您的 JAVA 锦上添花。再也不要写另一个 getter/setter 或 equals 等方法,只要有一个注注解,你的类就有一个功能齐全的生成器…...

飞致云开源社区月度动态报告(2024年7月)
自2023年6月起,中国领先的开源软件公司FIT2CLOUD飞致云以月度为单位发布《飞致云开源社区月度动态报告》,旨在向广大社区用户同步飞致云旗下系列开源软件的发展情况,以及当月主要的产品新版本发布、社区运营成果等相关信息。 飞致云开源大屏…...
mybatis-plus——实现动态字段排序,根据实体获取字段映射数据库的具体字段
前言 前端需要根据表头的点击控件可以排序,虽然前端能根据当前页的数据进行对应字段的排序,但也仅局限于实现当前页的排序,无法满足全部数据的排序,所以需要走接口的查询进行排序,获取最全的排序数据 实现方案 前端…...

redis:Linux安装redis,redis常用的数据类型及相关命令
1. 什么是NoSQL nosql[not only sql]不仅仅是sql。所有非关系型数据库的统称。除去关系型数据库之外的都是非关系数据库。 1.1为什么使用NoSQL NoSQL数据库相较于传统关系型数据库具有灵活性、可扩展性和高性能等优势,适合处理非结构化和半结构化数据,…...

JavaScript 和 HTML5 Canvas实现图像绘制与处理
前言 JavaScript 和 HTML5 的 canvas 元素提供了强大的图形和图像处理功能,使得开发者能够在网页上创建动态和交互式的视觉体验。这里我们将探讨如何使用 canvas 和 JavaScript 来处理图像加载,并在其上进行图像绘制。我们将实现一个简单的示例…...

Java之Java基础二十(集合[上])
Java 集合框架可以分为两条大的支线: ①、Collection,主要由 List、Set、Queue 组成: List 代表有序、可重复的集合,典型代表就是封装了动态数组的 ArrayList 和封装了链表的 LinkedList;Set 代表无序、不可重复的集…...

【C++BFS】1162. 地图分析
本文涉及知识点 CBFS算法 LeetCode1162. 地图分析 你现在手里有一份大小为 n x n 的 网格 grid,上面的每个 单元格 都用 0 和 1 标记好了。其中 0 代表海洋,1 代表陆地。 请你找出一个海洋单元格,这个海洋单元格到离它最近的陆地单元格的距…...

实战:安装ElasticSearch 和常用操作命令
概叙 科普文:深入理解ElasticSearch体系结构-CSDN博客 Elasticsearch各版本比较 ElasticSearch 单点安装 1 创建普通用户 #1 创建普通用户名,密码 [roothlink1 lyz]# useradd lyz [roothlink1 lyz]# passwd lyz#2 然后 关闭xshell 重新登录 ip 地址…...

React-Native 宝藏库大揭秘:精选开源项目与实战代码解析
1. 引言 1.1 React-Native 简介 React-Native 是由 Facebook 开发的一个开源框架,它允许开发者使用 JavaScript 和 React 的编程模型来构建跨平台的移动应用。React-Native 的核心理念是“Learn Once, Write Anywhere”,即学习一次 React 的编程模型&am…...

数据结构:二叉树(链式结构)
文章目录 1. 二叉树的链式结构2. 二叉树的创建和实现相关功能2.1 创建二叉树2.2 二叉树的前,中,后序遍历2.2.1 前序遍历2.2.2 中序遍历2.2.3 后序遍历 2.3 二叉树节点个数2.4 二叉树叶子结点个数2.5 二叉树第k层结点个数2.6 二叉树的深度/高度2.7 二叉树…...

召唤生命,阻止轻生——《生命门外》
本书的目的,就是阻止自杀!拉回那些深陷在这样的思维当中正在挣扎犹豫的人,提醒他们珍爱生命,让更多的人,尤其是年轻人从执迷不悟的犹豫徘徊中幡然醒悟,回归正常的生活。 网络上抱孩子跳桥轻生的母亲&#…...

JVM:栈上的数据存储
文章目录 一、Java虚拟机中的基本数据类型 一、Java虚拟机中的基本数据类型 在Java中有8大基本数据类型: 这里的内存占用,指的是堆上或者数组中内存分配的空间大小,栈上的实现更加复杂。 Java中的8大数据类型在虚拟机中的实现:…...
C#实战 - C#实现发送邮件的三种方法
作者:逍遥Sean 简介:一个主修Java的Web网站\游戏服务器后端开发者 主页:https://blog.csdn.net/Ureliable 觉得博主文章不错的话,可以三连支持一下~ 如有疑问和建议,请私信或评论留言! 前言 当使用 C# 编程…...
数模原理精解【5】
文章目录 二元分布满足要求边际分布条件概率例子1例子2 损失函数概率分布期望值例 参考文献 二元分布 满足要求 连续情况下, φ ( x , y ) \varphi (x,y) φ(x,y)为随机变量 X 、 Y X、Y X、Y的联合概率分布(二元分布),如果以下条件满足: …...
C语言篇——使用运算符将16进制数据反转
比如:将一个16进制0xFD,即11111101,反向,输出10111111,即0xBF。 #include <stdio.h>unsigned char reverseBits(unsigned char num) {unsigned char reverse_num 0;int i;for (i 0; i < 8; i) {if ((num &…...
2025年和2024CFA一级SchweserKaplan Notes 全集 (内附分享链接)
CFA一级notes百度网盘下载 2024年和2025年 CFA一级考纲已经正式发布,相比与老考纲,新考纲变化实在不算小。 2024年和2025年 CFA一级notes完整版全 https://drive.uc.cn/s/6394c0b6b1a54?public1 2024年和2025年 cfa二级notes完整版全 https://driv…...
B树的实现:代码示例与解析
B树的实现:代码示例与解析 引言 B树是一种自平衡的树数据结构,广泛应用于文件系统和数据库系统中。它是一种多路搜索树,旨在保持数据有序并允许高效的查找、插入和删除操作。本文将深入探讨B树的实现,提供完整的代码示例和详细的…...

HCIA总结
一、情景再现:ISP网络为学校提供了DNS服务,所以,DNS服务器驻留在ISP网络内,而不再学校网络内。DHCP服务器运行在学校网络的路由器上 小明拿了一台电脑,通过网线,接入到校园网内部。其目的是为了访问谷歌网站…...
CVPR 2025 MIMO: 支持视觉指代和像素grounding 的医学视觉语言模型
CVPR 2025 | MIMO:支持视觉指代和像素对齐的医学视觉语言模型 论文信息 标题:MIMO: A medical vision language model with visual referring multimodal input and pixel grounding multimodal output作者:Yanyuan Chen, Dexuan Xu, Yu Hu…...
ssc377d修改flash分区大小
1、flash的分区默认分配16M、 / # df -h Filesystem Size Used Available Use% Mounted on /dev/root 1.9M 1.9M 0 100% / /dev/mtdblock4 3.0M...

抖音增长新引擎:品融电商,一站式全案代运营领跑者
抖音增长新引擎:品融电商,一站式全案代运营领跑者 在抖音这个日活超7亿的流量汪洋中,品牌如何破浪前行?自建团队成本高、效果难控;碎片化运营又难成合力——这正是许多企业面临的增长困局。品融电商以「抖音全案代运营…...
鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/
使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题:docker pull 失败 网络不同,需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...
【Go语言基础【12】】指针:声明、取地址、解引用
文章目录 零、概述:指针 vs. 引用(类比其他语言)一、指针基础概念二、指针声明与初始化三、指针操作符1. &:取地址(拿到内存地址)2. *:解引用(拿到值) 四、空指针&am…...

莫兰迪高级灰总结计划简约商务通用PPT模版
莫兰迪高级灰总结计划简约商务通用PPT模版,莫兰迪调色板清新简约工作汇报PPT模版,莫兰迪时尚风极简设计PPT模版,大学生毕业论文答辩PPT模版,莫兰迪配色总结计划简约商务通用PPT模版,莫兰迪商务汇报PPT模版,…...

在 Spring Boot 中使用 JSP
jsp? 好多年没用了。重新整一下 还费了点时间,记录一下。 项目结构: pom: <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://ww…...

Vue ③-生命周期 || 脚手架
生命周期 思考:什么时候可以发送初始化渲染请求?(越早越好) 什么时候可以开始操作dom?(至少dom得渲染出来) Vue生命周期: 一个Vue实例从 创建 到 销毁 的整个过程。 生命周期四个…...

【C++】纯虚函数类外可以写实现吗?
1. 答案 先说答案,可以。 2.代码测试 .h头文件 #include <iostream> #include <string>// 抽象基类 class AbstractBase { public:AbstractBase() default;virtual ~AbstractBase() default; // 默认析构函数public:virtual int PureVirtualFunct…...

Spring AOP代理对象生成原理
代理对象生成的关键类是【AnnotationAwareAspectJAutoProxyCreator】,这个类继承了【BeanPostProcessor】是一个后置处理器 在bean对象生命周期中初始化时执行【org.springframework.beans.factory.config.BeanPostProcessor#postProcessAfterInitialization】方法时…...