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

Golang|分布式索引架构

  • 当文档数量巨大时,如一亿个文档,倒排索引难以全部放入单机内存。
  • 正排索引将热数据和冷数据分别存储在内存和磁盘中。
  • 分布式搜索引擎将数据分布在不同服务器上以应对大量数据。

  • 倒排索引的水平切分

在这里插入图片描述

  • 水平切分按关键词划分数据,如JAVA和算法在A服务器,专家和北京在B服务器。
  • 水平切分的优点是搜索关键词快速,缺点是多关键词搜索需要从多台服务器获取数据并归并。
  • 水平切分存在正排索引冗余存储的问题,浪费存储空间,比如上面文档1在多个倒排链上都存在,就意味着在A和B服务器上都有对应的冗余文件。

  • 倒排索引的垂直切分

在这里插入图片描述

  • 垂直切分每台服务器存储所有关键词,但链条减少。
  • 垂直切分的优点是搜索功能在某台服务器宕机时仍可使用,缺点是搜索速度取决于最慢的服务器。
  • 垂直切分的代码编写简单,搜索请求在每台服务器上独立处理后合并结果。

  • 分布式索引架构

在这里插入图片描述

  • 分布式架构包括多个worker,每个worker上存储正排索引和倒排索引。
  • 数据被平分为三份,每份分配给一个group,group内部有两台worker进行备份和负载分担。
  • 服务注册中心(etcd)负责决定请求走向哪个group,负载均衡策略选择具体的worker。
  • worker通过etcd进行服务注册和发现,知道其他worker的IP和端口号。
  • 可选的proxy层可以缓存连接和进行限流保护。

  • etcd 作为服务注册中心。
  • etcd 是一个 开源、分布式、高可用 的 键值对(key-value)存储系统。
  • 主要用于存储和管理集群配置、服务发现信息等关键数据。
  • 常用于 Kubernetes 的核心组件中(比如 k8s 的存储后端就是 etcd)。

在这里插入图片描述

http://www.xdnf.cn/news/187669.html

相关文章:

  • DDD(领域驱动设计)详解
  • 【C++类与对象高频面试问题总结2】
  • 在VS2022中使用Lua与c交互(二)
  • 读书笔记--华为从偶然到必然之创新与技术开发阅读有感
  • 交换机配置DHCP
  • 使用python实现自动化拉取压缩包并处理流程
  • 深入理解CSS3:Flex/Grid布局、动画与媒体查询实战指南
  • Python初学 有差异的知识点总结(一)
  • 构建“云中”高并发:12306技术改造的系统性启示
  • mac 基于Docker安装minio
  • Flutter介绍、Flutter Windows Android 环境搭建 真机调试
  • ETL架构、数据建模及性能优化实践
  • GPU 架构入门笔记
  • git pull报错error: cannot lock ref ‘refs/remotes/origin/feature/xxx
  • 【C语言】初阶算法相关习题(二)
  • Python-librosa库提取音频数据的MFCC特征
  • 线下CPG零售的核心:POG与销量的循环优化
  • 浅谈PCB传输线(一)
  • docker安装Canal1.1.5,MySQL5.7踩坑
  • Ubuntu中C++项目安装二次规划库——qpOASES 库
  • 论文阅读_Search-R1_大模型+搜索引擎
  • 怎么样才能在idea中写入spark程序
  • 无人船 | 图解基于LQR控制的路径跟踪算法(以全驱动无人艇WAMV为例)
  • 仙宫云ComfyUI —【Wan2.1】AI视频生成部署
  • 【计算机视觉】TorchVision 深度解析:从核心功能到实战应用 ——PyTorch 官方计算机视觉库的全面指南
  • VINS-FUSION:跑通手机录制数据
  • EasyRTC嵌入式音视频通信SDK智能安防与监控系统的全方位升级解决方案
  • 杰理-安卓通过map获取时间的时候,部分手机切换sbc和aac时候单耳无声音
  • 超级好用的​​参数化3D CAD 建模​​图形库 (CadQuery库介绍)
  • 【亚马逊云】AWS Wavelength 从理论讲解到实验演练