1。缘起《深入浅出搜索架构(上篇)》详细介绍了前三章:(1)全网搜索引擎的架构与流程(2)站内搜索引擎的架构与流程(3)搜索原理与核心数据结构《深入浅出搜索架构(中篇)》介绍:(4)流量数据量从小到大,常用搜索方案及架构变化(5)数据量、并发、扩展架构方案本文将讨论:(6)为什么百度可以实时检索15分钟前发布的新信息消息?为什么58同城可以实时检索1秒前发布的帖子?搜索引擎的实时结构是本文要讨论的问题。2、实时搜索引擎架构为了保证搜索引擎在大数据量、高并发情况下的实时性,在架构设计上有两个关键点:(1)索引分类(2)dump&merge索引分类《深入浅出搜索架构(上篇)》介绍搜索引擎底层原理是在数据量非常大的情况下,为了保证倒排索引高效的检索效率,任何对数据的更新都不会修改索引中的索引即时的。一旦出现碎片化,检索效率就会大大降低。既然索引数据不能实时修改,那么如何保证能索引到最新的网页呢?索引分为全量库、日增量库和小时增量库。如下图所示:(1)全索引库300亿条数据(2)日库1天内修改1000万条数据(3)小时库1小时内修改50万条数据,当有修改时当请求发生时,只会操作最高级别的索引,例如小时库。当一个查询请求发生时,会同时查询各级索引,并将结果合并,得到最准确的数据:(1)全库是一个紧凑存储的索引,无碎片,速度快(2)天空数据库存储紧密,快(3)小时数据库数据量小,速度也快。数据写入和读取都是实时的,所以58同城即使全库有300亿条数据,也能检索到1秒前发布的帖子。新的问题来了:时库的数据什么时候体现到日库,日库的数据什么时候体现到全库?dump&merge是通过两个异步工具来完成的:dumper:导出在线数据合并:将离线数据合并到更高级别的索引到小时数据库,每小时一次,并合并到每日数据库;每天一次,将离线数据合并到全库;这样可以保证每小时库和每天库的数据量不会特别大;如果数据量和并发量较大,可以增加周库和月库进行缓冲。3、总结大数据量高并发实时搜索引擎架构的两个要点:(1)索引分类(2)dump&merge《深入浅出搜索架构(上篇)》中提到,全网搜索引擎分为Spider,搜索和索引,排名部分。本文介绍Search&Index如何实时修改和检索,Spider子系统如何在全网实时发现新生成的网页。这是另一个问题,将在以后的文章中讨论。【本文为专栏作者《58神剑》原创稿件,转载请联系原作者】点此阅读更多该作者好文
