Solr-Recovery
2018-02-27 16:23:29 1 举报
Solr Recovery流程
作者其他创作
大纲/内容
旧
true
RS-RL-getRecentUpdates
增量同步,并刷新索引
return false
存在
false
RS-dorecovery()
是否存在最新更新版本
PS-sync()
RS-sendPreRecovery
与主节点上的最新版本比较
找出需要同步的版本,并从远程获取
结束
获取本地日志记录的最新100个版本
PS-new
没有
(1)获取主节点recent versions(2)当前节点启动时记录的100个版本,分别取%20位置个和%80位置(3)当前节点最新更近更新的一批版本中最老的版本注:主要有两种情况需要考虑,即启动和非刚启动的情况。如果最新更新的100个版本中的最老的版本已经大于启动时100个版本中最新的版本,则说明要更新了
RS-上一次整个索引的拷贝是否完成
RS-RU-getVersions(100)
RS表示:RecoveryStretegyPS表示:PeerSyncRecentUpdates:RUUpdateLog:UL
startupversion size==0
replicate
RS-publish to recovery state
有无异常
启动后收到了较多更新
同步开始,从节点状态置为recovery,如果同步过程中主节点发现与从节点的通信失败,则会置从节点状态为Down,但是同步仍在进行。直到同步结束,从想将状态置为active,但是检测发现目前状态是down,所以并不允许直接置为active,因为这个状态只能由recovery恢复。另外,主节点在将从置为down时,会重新发LIR(leader initial recovery)请求,这实际是主动通知从节点进行recovery请求,但是因为原来从节点上的recovery请求并未停止,所以导致新的recovery无法进行,而且从节点处理这个请求为异步请求。
return true
获取主节点最新更新的100个版本
有
startupversion==null
不存在
比较两个分配版本新旧
true or false
收藏
0 条评论
下一页