技术头条 - 一个快速在微博传播文章的方式     搜索本站
您现在的位置首页 --> 系统架构 --> 用sphinx轻松搞定方便管理的多节点过亿级数据搜索

用sphinx轻松搞定方便管理的多节点过亿级数据搜索

浏览:2967次  出处信息

    概述

    来自俄罗斯的开源全文搜索引擎软件Sphinx,单一索引最大可包含1亿条记录,在1千万条记录情况下的查询速度为0.x秒(毫秒级),实测千万级数据在0.0X秒和0.00X秒占大多数。 Sphinx创建索引的速度为:创建100万条记录的索引只需3~4分钟,实测30W线上复杂的blog数据需要5分钟,创建1000万条记录的索引可以在50分钟内完成,实测时间比这个更长得多,而只包含最新10万条记录的增量索引,重建一次只需几十秒,实测十万条在一分钟不到的时间。 Sphinx 是一个基于 GPL 2 协议颁发的免费开源的全文搜索引擎.它是专门为更好的整合脚本语言和SQL数据库而设计的.当前内置的数据源支持直接从连接到的 MySQL 或 PostgreSQL 获取数据, 或者你可以使用 XML 通道结构(XML pipe mechanism , 一种基于 Sphinx 可识别的特殊xml格式的索引通道) 。

    sphinx安装

    安装见 用Sphinx快速搭建站内搜索功能

    配置多节点协同工作

    第一点,原理

    在sphinx.conf中可以配置index段落里的local和agent两个参数,local = blog_1表示使用本地索引名为blog_1的索引,agent = 10.1.1.1:3312:blog_2表示使用10.1.1.1这个机器的3312端口上服务的blog_2索引。这两个参数均可在此段落中重复出现。

    利用这两个参数,可进行节点与节点间的配置。如图1所示,一个searchd服务在接到请求时两种使用索引的示意图。

    sphinx 54chen

    图1 一个searchd服务在接到请求时两种使用索引的示意图

    第二点,架构

    利用agent参数,可以灵活配置去代理取满足搜索条数的超时时间等等。

    如图2,只需要将索引灵活分布,各自除了自己的local索引以外,全部连成相互的agent,使得别的节点也可以得到自己的索引搜索结果,以此得到分布式的处理结果。

    sphinx 54chen

    图2 一个简单的分布式搜索的例子

    第三点,性能

    分布索引的情况下,实测千万数据量,大致在500qps左右,没有做容灾的方案,如果想容灾,可以考虑将索引做成在某些节点上重复。总得来说,性能还算可以,更具体的架构方案,可能要和具体的业务来分布效果会更好。

建议继续学习:

  1. 怎样用好Google进行搜索    (阅读:14782)
  2. 淘宝搜索:定向抓取网页技术漫谈    (阅读:8271)
  3. 简析搜索引擎中网络爬虫的搜索策略    (阅读:6052)
  4. 几种常见的基于Lucene的开源搜索解决方案对比    (阅读:4697)
  5. 用Sphinx快速搭建站内搜索功能    (阅读:4475)
  6. 基于用户行为分析的搜索引擎自动性能评价    (阅读:4462)
  7. 互联网网站的反爬虫策略浅析    (阅读:4194)
  8. 附近地点搜索初探    (阅读:4195)
  9. Xapian搜索体系结构    (阅读:4089)
  10. 百度搜索URL参数解析    (阅读:4151)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
© 2009 - 2024 by blogread.cn 微博:@IT技术博客大学习

京ICP备15002552号-1