zoukankan      html  css  js  c++  java
  • 类似于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.过程分析:

     
     
  • 相关阅读:
    Nancy 寄宿IIS
    原子操作
    CSRF跨站请求伪造
    CORS跨域
    C# 运算符
    Mysql 函数
    Mongodb for .Net Core 驱动的应用
    Mongodb for .Net Core 封装类库
    制作项目模板
    压缩图片
  • 原文地址:https://www.cnblogs.com/highriver/p/2421468.html
Copyright © 2011-2022 走看看