当前位置: 首页 > 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)。

在这里插入图片描述

相关文章:

  • Go 语言入门:(一) 环境安装
  • uniapp 微信小程序遇到的坑
  • 8.Three.js中的 StereoCamera 立体相机详解+示例代码
  • 鼠标获取坐标 vs 相机获取坐标
  • Vue 2 和 Vue 3 中 Vue 实例变量方法的功能差异对比,包含关键方法的详细说明和表格总结
  • 网工备考考纲变化总结
  • ElasticSearch深入解析(五):如何将一台电脑上的Elasticsearch服务迁移到另一台电脑上
  • 详解RabbitMQ工作模式之工作队列模式
  • 定时器的源码介绍与简单实现——多线程编程简单案例[多线程编程篇(5)]
  • Java方法执行机制与入口点实现深度解析
  • HarmonyOS SDK助力鸿蒙版今日水印相机,真实地址防护再升级
  • 第36课 常用快捷操作——用“鼠标右键”退出当前命令
  • RestRequest ,newtonsoft解析
  • 在VS2022中使用Lua与c交互(二)
  • 佛山大旺高新区3650 M5 ERP服务器维修案例
  • 服务器部署flask
  • 第十四章-PHP与HTTP协议
  • 微信聊天机器人搭建 教程/开发
  • 12前端项目----添加购物车1.0
  • 基于 SpringBoot 与 Redis 的缓存预热案例
  • “90后”樊鑫履新乌兰察布市察右中旗副旗长人选
  • 海南儋州市委副书记任延新已赴市人大常委会履新
  • 外交部:对伊朗拉贾伊港口爆炸事件遇难者表示深切哀悼
  • 黄仁勋访华期间表示希望继续与中国合作,贸促会回应
  • 黄永年:说狄仁杰的奏毁淫祠
  • “天链”继续上新!长三乙火箭成功发射天链二号05星