Solrcloud 后台写操作

Solrcloud write operation behind the scene

想详细了解SolrCloud的写操作,对架构有几个疑问:

  1. Zookeeper是否向所有leader发送文档写入请求?

    solrwiki:每个分片可以存在多个副本;同一分片的这些副本称为副本。分片中的一个副本是领导者,由领导者选举过程指定。

  2. 云有领导者和副本,所以所有领导者都有运行在索引文档之前下面描述的散列过程还是由特定的领导者负责?

    Solr Wiki文档 ID 用于计算 Solr 用于确定将文档发送到哪个分片以进行索引的哈希。

  3. 如果文档索引由于某种原因失败(leader 宕机)那么从属节点会尝试重新索引该文档还是什么是故障转移机制?

  4. 只有当分片内的所有副本都成功索引文档时,写入操作才被视为完成。 对还是错?

这是我的理解

1) ZooKeeper 不会向SolrCloud 写入任何文档。 ZooKeeper 是每个 SolrCloud 节点用来存储共享配置并跟踪每个节点的共享状态以帮助选举领导者和监视副本状态的资源。 ZooKeeper 不参与任何集合或任何更新的任何查询。 另见

2) 至少对于 SolrJ 客户端来说,选择将节点写入哪个分片是由客户端而不是领导者完成的 有关详细信息,请参阅 here and see https://lucene.apache.org/solr/guide/7_0/shards-and-indexing-data-in-solrcloud.html

3) 我不知道那个问题的答案

4)写操作成功如下

Transaction logs are integral to the data guarantees of Solr4, and also a place people get into trouble, so let’s talk about them a bit. The indexing flow in SolrCloud is as follows: Incoming documents are received by a node and forwarded to the proper leader. From the leader they’re sent to all replicas for the relevant shard. The replicas respond to their leader. The leader responds to the originating node. After all the leaders have responded, the originating node replies to the client. At this point, all documents have been flushed to the tlog for all the nodes in the cluster!

来自

https://lucidworks.com/2013/08/23/understanding-transaction-logs-softcommit-and-commit-in-sorlcloud/

希望对你有所帮助