Hello List,
I am familiar with Solr's architecture.
In Solr you got i.e. a master-server and every slave is requesting whether the master has changed something since the last request.
This way the data between master and slave is consistent.
However, watching the concept of ElasticSearch there are some things that made me curious:
First: The replication progress itself:
Are you just sending the indexing-request to all the other replica-nodes or are you streaming complete index-segments to them? I do not mean initial replication in this case.
Second:
What happens if two updates are happening at nearly the same time?
Imagine your picture of 4 nodes (see: http://www.elasticsearch.org/videos/2010/02/08/es-distributed-diagram.html).
My first indexing-request goes to Node#1, while the second indexing-request (for the same document) goes to Node#3 due to load-balancing. Now Node#1 tries to replicate to Node#3 and Node#3 does the same to Node#1. What happens? Who is right?
This example could be even more complex. Imagine you got 10 replicas. There is latency, everytime. Sure, it's small, but it is there.
Thank you!