基于solr4.4
Solr分布式索引过程解析
单个节点的索引过程,以前写的blog http://blog.csdn.net/yangbutao/article/details/9851681 已经做了简单的分析
对于分布式索引,请求处理过程最终会在节点上建立本地索引,多了请求在node间分发的过程。
区别于单个节点的索引的索引处理processor Director2UpdateProcessor,分布式索引请求处理的请求处理是DistributedUpdateProcessor
DistributedUpdateProcessor.processAdd/commit
-----SolrCmdDistributor.distribAdd/commit
在SolrCmdDistributor做索引的分发处理
1、对于索引的add操作:
void processAdd(AddUpdateCommand cmd){
//获取需要分发的nodes列表
nodes = setupRequest(inthash)
if (!forwardToLeader) {
//当前节点是属于该id hash到的shard的leader节点或者replica节点
dropCmd = versionAdd(cmd);
}
if (nodes != null) {
//如果nodes列表不为空,比如当前节点是属于该id hash到的shard的leader节点或者当前节点是不属于该shard的节点