docker部署安装milvus(向量数据库)、配置依赖etcd和MinIO
Milvus 概述
Milvus 是一款开源的向量数据库,专为处理海量向量数据而设计。它支持高效的相似性搜索和实时分析,广泛应用于推荐系统、图像检索、自然语言处理等领域。Milvus 提供分布式架构,可横向扩展以应对高并发和大规模数据场景。
核心特性
- 高性能相似性搜索:支持欧氏距离(L2)、内积(IP)、余弦相似度等多种距离度量方式,优化近邻搜索(ANN)算法。
- 多索引支持:提供 IVF_FLAT、IVF_PQ、HNSW、Annoy 等索引类型,平衡查询速度与精度。
- 分布式架构:通过分片和副本机制实现水平扩展,支持 PB 级数据存储。
- 多语言 SDK:提供 Python、Java、Go 等语言的客户端,便于集成到现有系统。
- 云原生支持:兼容 Kubernetes,支持 Helm 部署,与主流云服务无缝对接。
适用场景
- 推荐系统:通过用户/商品向量快速匹配相似项。
- 图像/视频检索:以图搜图、内容去重等场景。
- 语义搜索:结合 NLP 模型处理文本相似性查询。
基本概念
- Collection:类似传统数据库的表,用于存储向量和元数据。
- Partition:数据分区的逻辑单元,提升查询效率。
- Entity:一条数据记录,包含向量和可选标量字段。
1. etcd配置安装
什么是etcd
etcd是一个分布式键值存储系统,由CoreOS开发并开源,常用于服务发现、配置共享和协调分布式系统。它采用Raft一致性算法保证数据强一致性,支持高可用和容错特性,是Kubernetes等云原生系统的核心组件。
主要特性
高可用性
通过Raft协议实现多节点数据同步,即使部分节点故障也能保持服务可用。支持领导者选举和自动故障转移,避免单点问题。
强一致性
所有数据变更操作需经Raft集群多数节点确认,确保读取到的数据始终为最新状态。提供线性一致性和顺序一致性保证。
Watch机制
允许客户端监听键值的变化,实时获取更新通知。常用于动态配置更新或服务发现场景。
Lease与TTL
支持为键值设置租约(Lease),绑定生存时间(TTL)。到期后自动删除相关数据,适用于临时节点管理等场景。
使用场景
服务发现
微服务架构中,服务实例注册地址到etcd,其他服务通过查询etcd动态发现依赖服务。配合Watch机制实现实时更新。
配置管理
集中存储系统配置,客户端监听配置键的变化。配置修改后所有节点自动同步,无需重启服务。
分布式锁
利用etcd的原子操作(如CAS)和Lease特性实