Search code examples
javaapache-zookeeperetcdapache-curatoretcd3

Detailed comparison between apache curator and etcd3


I have gone through the documentation of the latest release (released on 30th June,2016) of etcd3 which has many improvements over etcd2. It include,

  • multiplexed streaming watches through a single TCP connection
  • incremental snapshots to avoid performance degradations when creating snapshots.
  • grpc calls to improve client's performance
  • multiplexed streaming leases to decrease network usage.

When it comes to apache curator written on top of apache zookeeper, the advantages of it are being a reliable, matured project with many active clients using it in production.

Zookeeper use separate tcp connection per watch and use separate tcp connection per lease. Also, zookeeper's watch service notify only one event per watch request and we have to put another watch request if we are to continuously watch a specific node. Since etcd3 is using streams with multiplexing, it do not exhaust the network with excess tcp connections.

Also,etcd3 and zookeeper use two different algorithms for consensus, ZAB and raft, where raft is less complex.

I want to implement distributed locks, (use) watches and need to write a mechanism to share commands throughout the cluster using the watch api. This implementation will be plugged to an ESB written in java.

Now my question is, which of those(curator/etcd3) should I choose for my implementation and why?

I would like to see a good explanation since I couldn't find a direct comparison of these two implementations.

Thanks in advance!


Solution

  • Since I couldn't find a good answer, I did some search on both schemes and wrote Apache Zookeeper vs etcd3. Hope this will help others who also has my question.