One fundamental difference between ElasticSearch and Solr
alexdong.com
alexdong.com
Just to point out a few corrections: * Solr does have a transaction log. When using soft commits, the tx log is used to recover any volatile writes in the event of a crash * Solr replicates in a similar manner to ES. It no longer does full-index replication as indicated by the article. A write comes in and is routed to the shard leader and replicas. * Solr too has "High Availability built-in" with automatic failover of shards
One fundamental difference the article does not address is the robustness of Solr's cluster management. Solr uses ZooKeeper under the hood which implements the Paxos algorithm to avoid issues like "split-brain syndrome". ElasticSearch has implemented its own distributed coordination and is susceptible to such issues.
Only if configured wrong: setting discovery.zen.minimum_master_nodes to N/2 + 1 where N is the number of master nodes in the cluster prevents split-brain. Nodes that don't see enough master nodes will go into a catatonic state and won't accept writes, effectively preventing a split-brain syndrome.
https://github.com/elasticsearch/elasticsearch/issues/2488
This particular bug is probably fixable, but reaching consensus on a set of master nodes in the general case, without race conditions, is quite hard.
> Solr uses ZooKeeper under the hood which implements the
> Paxos algorithm
ZooKeeper does not implement Paxos.http://blog.socialcast.com/realtime-search-solr-vs-elasticse...
It should probably be pointed out that this comparison is slightly unfair as of Solr 4, however, and needs to be re-compared against a SolrCloud... But given SC relies on ZooKeeper, this is not nearly as easy a setup as EC.