大规模检索系统

简介: 本讲介绍大规模检索系统如何通过分布式技术加速检索。通过索引拆分,将倒排索引分散到多台服务器内存中,减少单机数据规模和磁盘访问,从而提升单次查询效率。结合分发服务器与负载均衡,实现高吞吐、低延迟的分布式检索架构。

10 | 索引拆分:大规模检索系统如何使用分布式技术加速检索?
在互联网行业中,分布式系统是一个非常重要的技术方向。我们熟悉的搜索引擎、广告引擎和推荐引擎,这些大规模的检索系统都采用了分布式技术。

分布式技术有什么优点呢?分布式技术就是将大任务分解成多个子任务,使用多台服务器共同承担任务,让整体系统的服务能力相比于单机系统得到了大幅提升。而且,在 第 8 讲 中我们就讲过,在索引构建的时候,我们可以使用分布式技术来提升索引构建的效率。

那今天,我们就来聊一聊,大规模检索系统中是如何使用分布式技术来加速检索的。.

简单的分布式结构是什么样的?

一个完备的分布式系统会有复杂的服务管理机制,包括服务注册、服务发现、负载均衡、流量控制、远程调用和冗余备份等。在这里,我们先抛开分布式系统的实现细节,回归到它的本质,也就是从「让多台服务器共同承担任务」入手,来看一个简单的分布式检索系统是怎样工作的。

首先,我们需要一台接收请求的服务器,但是该服务器并不执行具体的查询工作,它只负责任务分发,我们把它叫作 分发服务器。真正执行检索任务的是 多台索引服务器,每台索引服务器上都保存着完整的倒排索引,它们都能完成检索的工作。

当分发服务器接到请求时,它会根据负载均衡机制,将当前查询请求发给某台较为空闲的索引服务器进行查询。具体的检索工作由该台索引服务器独立完成,并返回结果。

分发服务器接到请求,根据负载均衡机制,分发服务器分发给某台索引服务器全量索引数据全量索引数据全量索引数据索引服务器2索引服务器1索引服务器n索引服务器处理求,返回检索结果

现在,分布式检索系统的结构你已经知道了,那它的效率怎么样呢?举个例子,如果一台索引服务器一秒钟能处理 1000 条请求,那我们同时使用 10 台索引服务器,整个系统一秒钟就能处理 10000 条请求了。也就是说,这样简单的分布式系统,就能大幅提升整个检索系统的处理能力。

但是,这种简单的分布式系统有一个问题:它仅能提升检索系统整体的「吞吐量」,而不能缩短一个查询的检索时间。也就是说,如果单机处理一个查询请求的耗时是 1 秒钟,那不管我们增加了多少台机器,单次查询的检索时间依然是 1 秒钟。所以,如果我们想要缩短检索时间,这样的分布式系统是无法发挥作用的。

那么,我们能否利用多台机器,来提升单次检索的效率呢?我们先来回顾一下,在前面讨论工业级的倒排索引时我们说过,对于存储在磁盘上的大规模索引数据,我们要尽可能地将数据加载到内存中,以此来减少磁盘访问次数,从而提升检索效率。

根据这个思路,当多台服务器的总内存量远远大于单机的内存时,我们可以把倒排索引拆分开,分散加载到每台服务器的内存中。这样,我们就可以避免或者减少磁盘访问,从而提升单次检索的效率了。

即使原来的索引都能加载到内存中,索引拆分依然可以帮助我们提升单次检索的效率。这是因为,检索时间和数据规模是正相关的。当索引拆分以后,每台服务器上加载的数据都会比全量数据少,那每台服务器上的单次查询所消耗的时间也就随之减少了。

因此,索引拆分是检索加速的一个重要优化方案,至于索引应该如何拆分,以及拆分后该如何检索,工业界也有很多不同的实现方法。你可以先自己想一想,然后我们再一起来看看,工业界一般都是怎么做的。

相关文章
|
2月前
|
存储 关系型数据库 MySQL
数据库检索
本文探讨如何用B+树为海量磁盘数据建立高效索引。由于磁盘访问远慢于内存,关键在于减少磁盘I/O次数。B+树通过多路平衡查找、节点大小匹配磁盘块、顺序访问优化等方式,显著提升磁盘数据检索效率,广泛应用于MySQL等数据库系统。
|
3月前
|
缓存 运维 监控
一次内存诊断,让资源利用率提升 40%:揭秘隐式内存治理
阿里云云监控 2.0 推出 SysOM 底层操作系统诊断能力,基于 eBPF + BTF 协同分析,无需侵入业务,即可一键完成从物理页到文件路径、再到容器进程的全栈内存归因,让“黑盒内存”无所遁形。
693 95
|
1月前
|
存储 人工智能 自然语言处理
GEO优化:成功前奏的关键布局与实操清单
本文将深入探讨GEO优化的前期关键布局,并提供一份实操清单,帮助企业在AI时代抢占先机。
181 8
|
2月前
|
存储 弹性计算 人工智能
大模型应用开发
大模型应用开发指通过API与大模型交互,构建智能化应用。不同于传统Java开发,其核心在于调用部署在云端或本地的大模型服务。企业可选择开放API、云平台或本地服务器部署,各具成本、安全与性能权衡。本章将详解部署方式与开发实践,助你快速入门。
|
2月前
|
NoSQL Java 数据库连接
SpringBoot框架
SpringBoot简化Spring开发,核心功能包括starter起步依赖、自动配置及内嵌服务器支持。通过@SpringBootApplication实现自动化配置,支持多种配置方式,优先级为:命令行参数 > 系统属性 > properties > yml/yaml。可自定义starter实现模块化集成。
|
7月前
|
安全 生物认证 数据安全/隐私保护
微信加人频繁怎么快速解除???
微信加人频繁限制的技术分析与解决方案 1. 微信加人限制机制解析
|
9月前
|
数据可视化 BI API
不用买系统、不请IT,用二维码搭起高效电子巡更流程
本文介绍了一种利用二维码实现高效电子巡更的解决方案。相比传统系统,这种方式无需购买昂贵设备或聘请IT人员,仅通过手机扫码即可完成巡检任务。它具有部署简单、调整灵活的特点,支持定位记录、现场拍照上传等功能,有效防止造假。同时,异常处理流程清晰,可直接扫码上报并自动通知负责人,大幅提升效率。此外,系统支持多人协作与权限管理,数据查询方便且可导出分析。真实案例显示,该方法已在商场、校园和制造企业中成功应用,显著提高了巡更完成率和问题响应速度,降低了成本。对于预算有限但追求高效管理的单位来说,这是一种实用且可行的选择。
|
开发者
2024 乘风者计划全新启航!快来加入吧!
 2021年,阿里云开发者社区焕新升级,重磅推出“乘风者计划”!诚邀四海技术博主入驻社区,泼墨云间,书写天地。入驻社区,即可享丰厚权益! 新的一年,乘风者计划重磅升级!
251935 81
|
数据可视化 前端开发 定位技术
[LBS学习笔记4]地理特征POI、AOI、路径轨迹
今天继续LBS地理信息的学习,目标是写到10篇博客的时候,做出一个地图工具页面用,包含地图空间索引Geohash、S2、H3的可视化展示。
1007 0