当前位置: 首页 > news >正文

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

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

对于向量数据库而言,高可用同样重要。随着大语言模型(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数据库相较于传统关系型数据库具有灵活性、可扩展性和高性能等优势,适合处理非结构化和半结构化数据&#xff0c…...

JavaScript 和 HTML5 Canvas实现图像绘制与处理

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

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进制数据反转

比如&#xff1a;将一个16进制0xFD&#xff0c;即11111101&#xff0c;反向&#xff0c;输出10111111&#xff0c;即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一级考纲已经正式发布&#xff0c;相比与老考纲&#xff0c;新考纲变化实在不算小。 2024年和2025年 CFA一级notes完整版全 https://drive.uc.cn/s/6394c0b6b1a54?public1 2024年和2025年 cfa二级notes完整版全 https://driv…...

B树的实现:代码示例与解析

B树的实现&#xff1a;代码示例与解析 引言 B树是一种自平衡的树数据结构&#xff0c;广泛应用于文件系统和数据库系统中。它是一种多路搜索树&#xff0c;旨在保持数据有序并允许高效的查找、插入和删除操作。本文将深入探讨B树的实现&#xff0c;提供完整的代码示例和详细的…...

HCIA总结

一、情景再现&#xff1a;ISP网络为学校提供了DNS服务&#xff0c;所以&#xff0c;DNS服务器驻留在ISP网络内&#xff0c;而不再学校网络内。DHCP服务器运行在学校网络的路由器上 小明拿了一台电脑&#xff0c;通过网线&#xff0c;接入到校园网内部。其目的是为了访问谷歌网站…...

Frozen-Flask :将 Flask 应用“冻结”为静态文件

Frozen-Flask 是一个用于将 Flask 应用“冻结”为静态文件的 Python 扩展。它的核心用途是&#xff1a;将一个 Flask Web 应用生成成纯静态 HTML 文件&#xff0c;从而可以部署到静态网站托管服务上&#xff0c;如 GitHub Pages、Netlify 或任何支持静态文件的网站服务器。 &am…...

从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)

设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile&#xff0c;新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...

【HTML-16】深入理解HTML中的块元素与行内元素

HTML元素根据其显示特性可以分为两大类&#xff1a;块元素(Block-level Elements)和行内元素(Inline Elements)。理解这两者的区别对于构建良好的网页布局至关重要。本文将全面解析这两种元素的特性、区别以及实际应用场景。 1. 块元素(Block-level Elements) 1.1 基本特性 …...

2023赣州旅游投资集团

单选题 1.“不登高山&#xff0c;不知天之高也&#xff1b;不临深溪&#xff0c;不知地之厚也。”这句话说明_____。 A、人的意识具有创造性 B、人的认识是独立于实践之外的 C、实践在认识过程中具有决定作用 D、人的一切知识都是从直接经验中获得的 参考答案: C 本题解…...

Pinocchio 库详解及其在足式机器人上的应用

Pinocchio 库详解及其在足式机器人上的应用 Pinocchio (Pinocchio is not only a nose) 是一个开源的 C 库&#xff0c;专门用于快速计算机器人模型的正向运动学、逆向运动学、雅可比矩阵、动力学和动力学导数。它主要关注效率和准确性&#xff0c;并提供了一个通用的框架&…...

Linux离线(zip方式)安装docker

目录 基础信息操作系统信息docker信息 安装实例安装步骤示例 遇到的问题问题1&#xff1a;修改默认工作路径启动失败问题2 找不到对应组 基础信息 操作系统信息 OS版本&#xff1a;CentOS 7 64位 内核版本&#xff1a;3.10.0 相关命令&#xff1a; uname -rcat /etc/os-rele…...

探索Selenium:自动化测试的神奇钥匙

目录 一、Selenium 是什么1.1 定义与概念1.2 发展历程1.3 功能概述 二、Selenium 工作原理剖析2.1 架构组成2.2 工作流程2.3 通信机制 三、Selenium 的优势3.1 跨浏览器与平台支持3.2 丰富的语言支持3.3 强大的社区支持 四、Selenium 的应用场景4.1 Web 应用自动化测试4.2 数据…...

适应性Java用于现代 API:REST、GraphQL 和事件驱动

在快速发展的软件开发领域&#xff0c;REST、GraphQL 和事件驱动架构等新的 API 标准对于构建可扩展、高效的系统至关重要。Java 在现代 API 方面以其在企业应用中的稳定性而闻名&#xff0c;不断适应这些现代范式的需求。随着不断发展的生态系统&#xff0c;Java 在现代 API 方…...

永磁同步电机无速度算法--基于卡尔曼滤波器的滑模观测器

一、原理介绍 传统滑模观测器采用如下结构&#xff1a; 传统SMO中LPF会带来相位延迟和幅值衰减&#xff0c;并且需要额外的相位补偿。 采用扩展卡尔曼滤波器代替常用低通滤波器(LPF)&#xff0c;可以去除高次谐波&#xff0c;并且不用相位补偿就可以获得一个误差较小的转子位…...

​​企业大模型服务合规指南:深度解析备案与登记制度​​

伴随AI技术的爆炸式发展&#xff0c;尤其是大模型&#xff08;LLM&#xff09;在各行各业的深度应用和整合&#xff0c;企业利用AI技术提升效率、创新服务的步伐不断加快。无论是像DeepSeek这样的前沿技术提供者&#xff0c;还是积极拥抱AI转型的传统企业&#xff0c;在面向公众…...