2017-03-01 58沈剑 架构师之路

一、缘起

《深入浅出搜索架构(上篇)》详细介绍了前三章:

(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分钟前新生成的网页?--转相关推荐

  1. oracle闪回15分钟前,Oracle闪回技术(Flashback)

    闪回技术有闪回表.闪回删除.闪回查询.闪回事务查询.闪回事务.闪回数据库.闪回数据归档.其中,闪回查询.闪回事务查询用来"观察"过去:闪回数据归档并不是一个独立的功能,其功能是扩展 ...

  2. 网页视频15分钟自动暂停_在15分钟内学习网页爬取

    网页视频15分钟自动暂停 什么是网页抓取? (What is Web Scraping?) Web scraping, also known as web data extraction, is th ...

  3. MySQL实现每分钟扫描一次数据库,查找16分钟前的记录和15分钟 以前-16分钟的记录

    描述 每分钟扫描一次数据库,查找15分钟 以前-16分钟的记录. 先从send_ orders获取符合条件的记录,并提取master_ id字段的值与order_id的值 然后从master has_ ...

  4. Geode 15分钟入门指南

    Apache Geode文档 本文档介绍了产品概念,并提供了Apache Geode 1.7的完整设置说明. 源文件可从[Apache Geode Github存储库](../../../../ gi ...

  5. 又一低代码平台火了!15 分钟小白轻松开发在线课堂,人人都是开发者时代来了?

    据艾瑞咨询统计,2020 年中国在线教育行业市场规模 2573 亿元,过去 4 年的复合增长率达 34.5%.如今在线教育行业如火如荼,亟待一款好的在线教育平台. 此时,不少开发者和教育机构遇到新的难 ...

  6. 中海达gps软件wince_应用|无人机航测15分钟能做啥?中海达PPK告诉你答案

    标星+置顶,一秒找到中海达讯 点击上方"中海达讯"→点击右上角"-"→点选"设为星标 ★" 在航测作业中 快速现场成图 生成快拼成果报告 快 ...

  7. 最快15分钟,完成高精度AI模型定制开发

    6月25日,以"AI 赋能软硬件产品创新"为主题的百度大脑开放日西安站正式举行.百度产品架构师现场分享了帮助软硬件解决方案企业以更低成本.更高效率实现 AI 模型开发和应用部署的实 ...

  8. vr设备应用程序_在15分钟内构建一个VR Web应用程序

    vr设备应用程序 在15分钟内,您可以开发一个虚拟现实应用程序,并在Web浏览器,VR头盔或Google Daydream上运行它. 关键是A-Frame ,这是Mozilla VR Team构建的开 ...

  9. 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 ...

最新文章

  1. .NET 程序设计实验 含记事本通讯录代码
  2. matlab怎么输入输出文件,[转载]底层文件输入输出函数
  3. 打开c语言运行不了_手机上有哪些不错的c语言编程软件?
  4. 深度学习(八)RBM受限波尔兹曼机学习-未完待续
  5. 华为鸿蒙战略大会,华为发布鸿蒙2.0手机版的三大战略意义,全场景万物互联只是其一...
  6. 第二章 Java多线程入门类和接口
  7. 从0到1 CTFer成功之路》任意文件读取漏洞---学习笔记
  8. Android项目导入高德地图
  9. R语言入门(第一篇)--R软件基本操作
  10. 个人博客_温州个人博客_Duing-冬忆个人博客
  11. OR(odd ratios)
  12. MyBatis学习(二)--利用MyBatis实现CRUD操作
  13. Sigmastar 方案的相机开发流程和注意点
  14. Unity数据可视化 温度图效果(一)
  15. 3D视觉——4.手势识别(Gesture Recognition)入门——使用MediaPipe含单帧(Singel Frame)和实时视频(Real-Time Video)
  16. Unity事件分发器
  17. Cannot convert value of type 'org.apache.ibatis.session.defaults.DefaultSqlSessionFactory' to requir
  18. 0基础如何成为游戏美术设计师
  19. RPLIDAR思岚雷达学习记录--4--雷达数据实时保存
  20. java working set 是什么_eclipse中的working set是做什么的

热门文章

  1. linux mint 18.3 内核,Linux Mint Linux用户可以升级到18.2 18.3”
  2. python接口自动化测试面试题_Python接口自动化面试题总结
  3. 未来新一代计算机的发展方向,未来计算机的发展方向 (2)
  4. html字体垂直间隔,html实现文字垂直居中且设置间隔
  5. java 文件路径表达式_Java基础(二十二) Lambda表达式和File类
  6. ar linux 删除模块_Linux基础命令---ar
  7. hbase 协处理器 部署_hbase中安装和删除observer协处理器
  8. c语言课程设计怎么做,C语言课程设计————写下流程图! 谢谢
  9. mongodb转json
  10. pandas 索引选取和过滤(四)