已阅读5页,还剩6页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
亿级数据的高并发通用搜索引擎架构设计原创文章作者:张宴 本文版本:v1.0 最后修改:2008.12.09 转载请注明原文链接:/post/385.htm曾经在七月,写过一篇文章基于Sphinx+MySQL的千万级数据全文检索(搜索引擎)架构设计,前公司的分类信息搜索基于此架构,效果明显,甚至将很大一部分带Where条件的MySQL SQL查询,都改用了Sphinx+MySQL搜索。但是,这套架构仍存在局限:一是MySQL本身的并发能力有限,在200300个并发连接下,查询和更新就比较慢了;二是由于MySQL表的主键与Sphinx索引的ID一一对应,从而无法跨多表建立整站查询,而且新增加类别还得修改配置文件,比较麻烦;三是因为和MySQL集成,无法发挥出Sphinx的优势。最近,我设计出了下列这套最新的搜索引擎架构,目前已经写出“搜索查询接口”和“索引更新接口”的beta版。经测试,在一台“奔腾四 3.6GHz 双核CPU、2GB内存”的普通PC机,7000万条索引记录的条件下,“搜索查询接口”平均查询速度为0.0XX秒(查询速度已经达到百度、谷歌、搜狗、中国雅虎等搜索引擎的水平,详见文章末尾的“附2”),并且能够支撑高达5000的并发连接;而“索引更新接口”进行数据分析、入队列、返回信息给用户的全过程,高达1500 Requests/Sec。“队列控制器”这一部分是核心,它要控制队列读取,更新MySQL主表与增量表,更新搜索引擎数据存储层Tokyo Tyrant,准实时(1分钟内)完成更新Sphinx增量索引,定期合并Sphinx索引。我预计在这周写出beta版。图示说明:1、搜索查询接口:、Web应用服务器通过HTTP POST/GET方式,将搜索关键字等条件,传递给搜索引擎服务器的search.php接口;、search.php通过Sphinx的API(我根据最新的Sphinx 0.9.9-rc1 API,改写了一个C语言的PHP扩展sphinx.so),查询Sphinx索引服务,取得满足查询条件的搜索引擎唯一ID(15位搜索唯一ID:前5位类别ID+后10位原数据表主键ID)列表;、search.php将这些ID号作为key,通过Memcache协议一次性从Tokyo Tyrant中mget取回ID号对应的文本数据。、search.php将搜索结果集,按查询条件,进行摘要和关键字高亮显示处理,以JSON格式或XML格式返回给Web应用服务器。2、索引更新接口:、Web应用服务器通过HTTP POST/GET方式,将要增加、删除、更新的内容告知搜索服务器的update.php接口;、update.php将接收到的信息处理后,写入TT高速队列(我基于Tokyo Tyrant做的一个队列系统);注:这两步的速度可达到1500次请求/秒以上,可应对6000万PV的搜索索引更新调用。3、搜索索引与数据存储控制:、“队列控制器”守护进程从TT高速队列中循环读取信息(每次50条,直到末尾);、“队列控制器”将读取出的信息写入搜索引擎数据存储层Tokyo Tyrant;、“队列控制器”将读取出的信息异步写入MySQL主表(这张主表按500万条记录进行分区,仅作为数据永久性备份用);、“队列控制器”将读取出的信息写入MySQL增量表;、“队列控制器”在1分钟内,触发Sphinx更新增量索引,Sphinx的indexer会将MySQL增量表作为数据源,建立增量索引。Sphinx的增量索引和作为数据源的MySQL增量表成对应关系;、“队列控制器”每间隔3小时,短暂停止从TT高速队列中读取信息,并触发Sphinx将增量索引合并入主索引(这个过程非常快),同时清空MySQL增量表(保证了MySQL增量表的记录数始终只有几千条至几十万条,大大加快Sphinx增量索引更新速度),然后恢复从TT高速队列中取出数据,写入MySQL增量表。本架构使用的开源软件:1、Sphinx 0.9.9-rc12、Tokyo Tyrant 1.1.93、MySQL 5.1.304、Nginx 0.7.225、PHP 5.2.6本架构自主研发的程序:1、搜索查询接口(search.php)2、索引更新接口(update.php)3、队列控制器4、Sphinx 0.9.9-rc1 API的PHP扩展(sphinx.so)5、基于Tokyo Tyrant的高速队列系统附1:MySQL FullText、Lucene搜索、Sphinx搜索的第三方对比结果:1、查询速度:MySQL FullText最慢,Lucene、Sphinx查询速度不相上下,Sphinx稍占优势。2、建索引速度:Sphinx建索引速度是最快的,比Lucene快9倍以上。因此,Sphinx非常适合做准实时搜索引擎。3、详细对比数据见以下PDF文档: 下载文件 (已下载 431 次)点击这里下载文件附2:国内各大中文搜索引擎搜索速度分析:以“APMServ张宴”为关键字,比较在各大中文搜索引擎的搜索速度:1、百度:、第一次搜索、第二次搜索分析:百度对第一次搜索的搜索结果做了Cache,所以第二次查询非常快。2、谷歌:、第一次搜索、第二次搜索分析:谷歌也对第一次搜索的搜索结果做了Cache,但两次查询跟百度同比,都要慢一些。3、搜狗:、第一次搜索、第二次搜索、第三次搜索分析:搜狗疑似对第一次搜索的搜索结果做了短暂的Cache,第二次搜索速度非常快,第三次搜索的速度比第二次搜索的速度慢。搜狗第一次搜索的速度跟百度差不多。4、中国雅虎:、第一次
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2020-2025年中级银行从业资格之中级个人贷款高分通关题库A4可打印版
- 学校宣传工作培训会
- 支付结算管理办法
- 药剂科抗生素使用管理培训指南
- 体育局局长个人述职报告
- (河北)部编人教版八年级语文上册期中检测卷
- DB34T-营造林技术规程
- 婴儿护理管理技巧
- 职业生涯管理能力
- 2026届内蒙古师大锦山实验中学高一化学第一学期期末教学质量检测试题含解析
- 生鲜门店食品安全主体责任清单与技术评审指南
- 道路交通标线及信号灯优化项目涉路工程安全评价
- 中石化招标管理办法
- 2025年湖南单招政治题(附答案)
- 酒泉市肃州区社区工作者招聘笔试真题2024
- 胖东来超市临期管理制度
- 基层行-各科室查对制度评分标准
- 南京物业红黑榜管理办法
- 2025年石家庄市市属国有企业招聘笔试考试试题(含答案)
- 社情民意工作培训
- 边疆安全的环境与生态安全研究-洞察阐释
评论
0/150
提交评论