标签:Lucene style blog http io ar color os 使用
题记:关于SolrCloud的Recovery策略已经写了四篇了,这篇应该是系统介绍Recovery策略的最后一篇了。本文主要介绍Solr的主从同步复制。它与前文<Solr4.8.0源码分析(22)之SolrCloud的Recovery策略(三)>略有不同,前文讲到的是SolrCloud的leader与replica之间的同步,不需要通过配置solrconfig.xml来实现。而本文主要介绍单机模式下,利用solrconfig.xml来实现主从服务器的同步。
分布式环境下,由于高并发的问题,通常我们需要部署多台服务器来负载均衡,从而避免,单点访问的热点问题,或者因负载过高而造成服务器瘫痪的问题等等。 solr4.x之后推出了solrcloud的分布式集群方案,与4.x之前的Master/Slave集群模式,架构上发生了重大变化,solrcloud不仅仅解决了,高并发的负载均衡问题,也解决了海量数据的检索性能问题,对一份巨大的索引,采用分而治之的方法索引到多个独立的节点上,但是这样并不代表,4.x之前的Master/Slave架构就被淘汰出局了,其实solrcloud里面也是综合运用了主从的方式,来解决并发的问题。 如果数据量不是很大的情况下,没必要采用solrcloud方案,但这时候,又需要解决高并发问题,或者服务器单点故障问题怎么办? 答案还是采取经典的主从架构模式来解决,
1 <requestHandler name="/replication" class="solr.ReplicationHandler" > 2 <lst name="master"> 3 <!--什么时候出发同步,参数名replicateAfter,取值可以是startup commit optimize --> 4 <str name="replicateAfter">startup</str> 5 <str name="replicateAfter">commit</str> 6 7 <!--数据备份 参数名backupAfter 同样可以似乎startup commit optimize --> 8 <!-- <str name="backupAfter">optimize</str> --> 9 10 <!--配置要同步的配置文件 --> 11 <str name="confFiles">schema.xml,stopwords.txt,elevate.xml</str> 12 <!--提交同步时间间隔,默认是10秒,一般不用改动 --> 13 <str name="commitReserveDuration">00:00:10</str>
14 <!--备份的个数-->
15 <str name="maxNumberOfBackups">1</str>
16 </lst>
17 </requestHandler>
参数说明:
1 <requestHandler name="/replication" class="solr.ReplicationHandler" > 2 <lst name="slave"> 3 4 <!--主服务的同步地址--> 5 <str name="masterUrl">http://master_host:port/corename/replication</str> 6 7 <!--同步轮询的时间间隔,是应用还击而定 --> 8 <str name="pollInterval">00:00:20</str> 9 <str name="compression">internal</str> 10 <!--Http相关参数设置--> 11 <str name="httpConnTimeout">5000</str> 12 <str name="httpReadTimeout">10000</str> 13 14 <!-- 如果主服务设置认证,在此设置登录用户名密码 --> 15 <str name="httpBasicAuthUser">username</str> 16 <str name="httpBasicAuthPassword">password</str> 17 </lst> 18 </requestHandler>
参数说明:
如果是一个master,多个slave时候,当多个slave从master下载文件时候对master的负荷会特别大。为了避免这种情况,可以使用repeater模式来改善,即一个节点即当master又当slave:
1 <requestHandler name="/replication" class="solr.ReplicationHandler"> 2 <lst name="master"> 3 <str name="replicateAfter">commit</str> 4 <str name="confFiles">schema.xml,stopwords.txt,synonyms.txt</str> 5 </lst> 6 <lst name="slave"> 7 <str name="masterUrl">http://master.solr.company.com:8080/solr</str> 8 <str name="pollInterval">00:00:60</str> 9 </lst> 10 </requestHandler>
1 <requestHandler name="/replication" class="solr.ReplicationHandler" > 2 <lst name="master"> 3 <str name="enable">${enable.master:false}</str> 4 <str name="replicateAfter">commit</str> 5 <str name="confFiles">schema.xml,stopwords.txt</str> 6 </lst> 7 <lst name="slave"> 8 <str name="enable">${enable.slave:false}</str> 9 <str name="masterUrl">http://master_host:8983/solr</str> 10 <str name="pollInterval">00:00:60</str> 11 </lst> 12 </requestHandler>
1 #solrcore.properties in master 2 enable.master=true 3 enable.slave=false 4 5 #solrcore.properties in slave 6 enable.master=false 7 enable.slave=true
本节主要介绍了Replication的主从复制的配置,实现过程,以及HTTP API。从实现过程中看,跟前文讲的还是保持一致的。到目前为止终于把SolrCloud的recovery的策略这一系列写完了。下一个系列想学习下SolrCloud的OverSee,感觉网上将OverSee的不怎么多,正好来学习下这个。
Solr4.8.0源码分析(24)之SolrCloud的Recovery策略(五)
标签:Lucene style blog http io ar color os 使用
原文地址:http://www.cnblogs.com/rcfeng/p/4154462.html