Sphinx分布式搜索配置

Sphinx分布式搜索配置

作者:admin |  时间:2014-02-25 |  浏览:3017 |  0 条评论

为提高可伸缩性,Sphinx提供了分布式检索能力。分布式检索可以改善查询延迟问题(即缩短查询时间)和提高多服务器、多CPU或多核环境下的吞吐率(即每秒可以完成的查询数)。这对于大量数据(即十亿级的记录数和TB级的文本量)上的搜索应用来说是很关键的。
其关键思想是对数据进行水平分区(HP,Horizontally partition),然后并行处理。
分区不能自动完成,您需要
 1. 在不同服务器上设置Sphinx程序集(indexer和searchd)的多个实例;
 2. 让这些实例对数据的不同部分做索引(并检索);
 3. 在searchd的一些实例上配置一个特殊的分布式索引;
 4. 然后对这个索引进行查询.
这个特殊索引只包括对其他本地或远程索引的引用,因此不能对它执行重新建立索引的操作,相反,如果要对这个特殊索引进行重建,要重建的是那些被这个索引被引用到的索引。
当searchd收到一个对分布式索引的查询时,它做如下操作
 1. 连接到远程代理;
 2. 执行查询;
 3. (在远程代理执行搜索的同时)对本地索引进行查询;
 4. 接收来自远程代理的搜索结果;
 5. 将所有结果合并,删除重复项;
 6. 将合并后的结果返回给客户端.
在应用程序看来,普通索引和分布式索引完全没有区别。 也就是说,分布式索引对应用程序而言是完全透明的,实际上也无需知道查询使用的索引是分布式的还是本地的。
任一个searchd实例可以同时做为主控端(master,对搜索结果做聚合)和从属端(只做本地搜索)。这有如下几点好处:
 1. 集群中的每台机器都可以做为主控端来搜索整个集群,搜索请求可以在主控端之间获得负载平衡,相当于实现了一种HA(high availability,高可用性),可以应对某个节点失效的情况。
 2. 如果在单台多CPU或多核机器上使用,一个做为代理对本机进行搜索的searchd实例就可以利用到全部的CPU或者核。

分布式实例:sphinx_se.conf
#
# se5 master index
#
index se
{    
     type                          = distributed
     agent                         = 127.0.0.1:9528:se
     agent                         = 127.0.0.1:9529:se
     agent                         = 127.0.0.1:9530:se
     agent                         = 127.0.0.1:9531:se
     agent                         = 127.0.0.1:9532:se
    
     agent_connect_timeout         = 1000
     agent_query_timeout           = 3000
}
searchd
{
     listen                         = 9312
     log                            = /data1/webserver/sphinx-for-chinese/var/log/se/searchd.log
     query_log                      = /data1/webserver/sphinx-for-chinese/var/log/se/query.log
     read_timeout                   = 3600
     max_children                   = 20
     pid_file                       = /data1/webserver/sphinx-for-chinese/var/log/se/searchd.pid
     max_matches                    = 500
     seamless_rotate                = 1
     preopen_indexes                = 1
     unlink_old                     = 1
     attr_flush_period              = 900
     compat_sphinxql_magics         = 0
}
本文标签:

发表评论

电子邮件地址不会被公开。

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>