类似于solr分布式同步索引的方案备忘

 
特点:

1.关于脚本的执行策略:
1.1生成索引的主机运行generateIndex,是每个小时的第14分钟执行,可理解为每隔一个小时执行,执行时脚本会判断是否已经有脚本或索引类在运行。如果为真等到下一个小时再去尝试。
generateIndex的脚本本身的生命周期应该在deadline(目前是23*3600s)之上(23~24h之间),如果Indexer执行完的时间小于deadline,那么IncrementIndexer会一直执行建增量索引并同步到远程主机的indexpathrsync直到deadline为止。当deadline之后,sh会很快执行完。此时crontab在下一个小时的第14分钟时,尝试执行generateIndex.sh会成功。

注意,建全量索引的类Indexer在脚本中只会执行一次。而由于IncrementIndexer的原因,则Indexer对应的全量索引相当于24小时执行一次。IncrementIndexer类会执行0到多次。不管全量增量,只要执行完就会同步索引到远程。

1.2查询主机的cpIndex是通过定时任务不间断执行。但是脚本里也会判断是否已经有该脚本执行。如果有就退出。另外,脚本里面没有deadline的操作也没有任何循环操作,执行周期较短。

2.索引的同步:

2.1并不会将indexpath里面的内容rsync到一个已经存在的indexpathtmp,这样Querier类读文件内容时,还要担心里面的内容是否会安全同步完。而如果先将内容rsync到一个中间文件夹indexpathtmptmp,然后再rename成indexpathtmp,Querier就只关心热切换,不用担心索引的质量。

2.2不管是增量还是全量,都会同步整个索引目录indexpath到远程的indexpathrsync。

3.远程锁的主要操作:`ssh root@host  touch | rm -rf | test -e lockfile`

4.RR的算法:求模取余

5.过程分析:

 
 
posted @ 2012-03-28 16:11  highriver  阅读(781)  评论(0编辑  收藏  举报