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.过程分析:

     
     
  • 相关阅读:
    第一章ASP.NET SignalR简介
    第六章SignalR的服务器广播
    第五章SignalR的实时高频通讯
    第四章SignalR自托管主机
    第三章SignalR在线聊天例子
    第二章SignalR所支持的平台
    DevExpress ASPxHtmlEditor控件格式化并导出Word (修复中文字体导出丢失)
    改进的简单Tooltips显示
    C# WebForm 使用NPOI 2 生成简单的word文档(.docx)
    一些自用的小工具,分享给非程序猿们
  • 原文地址:https://www.cnblogs.com/highriver/p/2421468.html
Copyright © 2011-2022 走看看