百度如何能实时检索到15分钟前新生成的网页?--转
一、缘起
《深入浅出搜索架构(上篇)》详细介绍了前三章:
(1)全网搜索引擎架构与流程
(2)站内搜索引擎架构与流程
(3)搜索原理与核心数据结构
《深入浅出搜索架构(中篇)》介绍了:
(4)流量数据量由小到大,常见搜索方案与架构变迁
(5)数据量、并发量、扩展性架构方案
本篇将讨论:
(6)百度为何能实时检索出15分钟之前新出的新闻?58同城为何能实时检索出1秒钟之前发布的帖子?搜索引擎的实时性架构,是本文将要讨论的问题。
二、实时搜索引擎架构
大数据量、高并发量情况下的搜索引擎为了保证实时性,架构设计上的两个要点:
(1)索引分级
(2)dump&merge
索引分级
《深入浅出搜索架构(上篇)》介绍了搜索引擎的底层原理,在数据量非常大的情况下,为了保证倒排索引的高效检索效率,任何对数据的更新,并不会实时修改索引,一旦产生碎片,会大大降低检索效率。
既然索引数据不能实时修改,如何保证最新的网页能够被索引到呢?
索引分为全量库、日增量库、小时增量库。
如下图所述:
(1)300亿数据在全量索引库中
(2)1000万1天内修改过的数据在天库中
(3)50万1小时内修改过的数据在小时库中
当有修改请求发生时,只会操作最低级别的索引,例如小时库。
当有查询请求发生时,会同时查询各个级别的索引,将结果合并,得到最新的数据:
(1)全量库是紧密存储的索引,无碎片,速度快
(2)天库是紧密存储,速度快
(3)小时库数据量小,速度也快
数据的写入和读取都是实时的,所以58同城能够检索到1秒钟之前发布的帖子,即使全量库有300亿的数据。
新的问题来了:小时库数据何时反映到天库中,天库中的数据何时反映到全量库中呢?
dump&merge
这是由两个异步的工具完成的:
dumper:将在线的数据导出
merger:将离线的数据合并到高一级别的索引中去
小时库,一小时一次,合并到天库中去;
天库,一天一次,合并到全量库中去;
这样就保证了小时库和天库的数据量都不会特别大;
如果数据量和并发量更大,还能增加星期库,月库来缓冲。
三、总结
超大数据量,超高并发量,实时搜索引擎的两个架构要点:
(1)索引分级
(2)dump&merge
如《深入浅出搜索架构(上篇)》中所述,全网搜索引擎分为Spider, Search&Index, Rank三个部分。本文描述的是Search&Index如何实时修改和检索,Spider子系统如何能实时找到全网新生成的网页,又是另外一个问题,未来撰文讲述。
转载于:https://www.cnblogs.com/davidwang456/p/7550108.html
百度如何能实时检索到15分钟前新生成的网页?--转相关推荐
- oracle闪回15分钟前,Oracle闪回技术(Flashback)
闪回技术有闪回表.闪回删除.闪回查询.闪回事务查询.闪回事务.闪回数据库.闪回数据归档.其中,闪回查询.闪回事务查询用来"观察"过去:闪回数据归档并不是一个独立的功能,其功能是扩展 ...
- 网页视频15分钟自动暂停_在15分钟内学习网页爬取
网页视频15分钟自动暂停 什么是网页抓取? (What is Web Scraping?) Web scraping, also known as web data extraction, is th ...
- MySQL实现每分钟扫描一次数据库,查找16分钟前的记录和15分钟 以前-16分钟的记录
描述 每分钟扫描一次数据库,查找15分钟 以前-16分钟的记录. 先从send_ orders获取符合条件的记录,并提取master_ id字段的值与order_id的值 然后从master has_ ...
- Geode 15分钟入门指南
Apache Geode文档 本文档介绍了产品概念,并提供了Apache Geode 1.7的完整设置说明. 源文件可从[Apache Geode Github存储库](../../../../ gi ...
- 又一低代码平台火了!15 分钟小白轻松开发在线课堂,人人都是开发者时代来了?
据艾瑞咨询统计,2020 年中国在线教育行业市场规模 2573 亿元,过去 4 年的复合增长率达 34.5%.如今在线教育行业如火如荼,亟待一款好的在线教育平台. 此时,不少开发者和教育机构遇到新的难 ...
- 中海达gps软件wince_应用|无人机航测15分钟能做啥?中海达PPK告诉你答案
标星+置顶,一秒找到中海达讯 点击上方"中海达讯"→点击右上角"-"→点选"设为星标 ★" 在航测作业中 快速现场成图 生成快拼成果报告 快 ...
- 最快15分钟,完成高精度AI模型定制开发
6月25日,以"AI 赋能软硬件产品创新"为主题的百度大脑开放日西安站正式举行.百度产品架构师现场分享了帮助软硬件解决方案企业以更低成本.更高效率实现 AI 模型开发和应用部署的实 ...
- vr设备应用程序_在15分钟内构建一个VR Web应用程序
vr设备应用程序 在15分钟内,您可以开发一个虚拟现实应用程序,并在Web浏览器,VR头盔或Google Daydream上运行它. 关键是A-Frame ,这是Mozilla VR Team构建的开 ...
- mvc移动创建oracle表,使用 ASP.NET MVC (C#)在15分钟内创建电影数据库应用程序 | Microsoft Docs...
使用 ASP.NET MVC 在 15 分钟内创建电影数据库应用程序 (C#)Create a Movie Database Application in 15 Minutes with ASP.NE ...
最新文章
- .NET 程序设计实验 含记事本通讯录代码
- matlab怎么输入输出文件,[转载]底层文件输入输出函数
- 打开c语言运行不了_手机上有哪些不错的c语言编程软件?
- 深度学习(八)RBM受限波尔兹曼机学习-未完待续
- 华为鸿蒙战略大会,华为发布鸿蒙2.0手机版的三大战略意义,全场景万物互联只是其一...
- 第二章 Java多线程入门类和接口
- 从0到1 CTFer成功之路》任意文件读取漏洞---学习笔记
- Android项目导入高德地图
- R语言入门(第一篇)--R软件基本操作
- 个人博客_温州个人博客_Duing-冬忆个人博客
- OR(odd ratios)
- MyBatis学习(二)--利用MyBatis实现CRUD操作
- Sigmastar 方案的相机开发流程和注意点
- Unity数据可视化 温度图效果(一)
- 3D视觉——4.手势识别(Gesture Recognition)入门——使用MediaPipe含单帧(Singel Frame)和实时视频(Real-Time Video)
- Unity事件分发器
- Cannot convert value of type 'org.apache.ibatis.session.defaults.DefaultSqlSessionFactory' to requir
- 0基础如何成为游戏美术设计师
- RPLIDAR思岚雷达学习记录--4--雷达数据实时保存
- java working set 是什么_eclipse中的working set是做什么的
热门文章
- linux mint 18.3 内核,Linux Mint Linux用户可以升级到18.2 18.3”
- python接口自动化测试面试题_Python接口自动化面试题总结
- 未来新一代计算机的发展方向,未来计算机的发展方向 (2)
- html字体垂直间隔,html实现文字垂直居中且设置间隔
- java 文件路径表达式_Java基础(二十二) Lambda表达式和File类
- ar linux 删除模块_Linux基础命令---ar
- hbase 协处理器 部署_hbase中安装和删除observer协处理器
- c语言课程设计怎么做,C语言课程设计————写下流程图! 谢谢
- mongodb转json
- pandas 索引选取和过滤(四)