I looked broadly at Zookeeper / Curator , Eureka , etcd , and the consul. Zookeeper / curator and Eureka are in many ways the most polished and easiest to integrate if you are in the Java world. etcd is pretty cool and very flexible, but it's really just an HA key store, so you will need to write a lot of code to turn it into a stubborn service for the discovery system.
Consul (for me) is the best of both worlds. This is a service self-assertion system written on top of serf , using a raft for cluster consensus and gossip for communication. It provides discovery / registration endpoints with a well-documented REST api, and also allows you to discover services with DNS SRV records and register services with configuration (i.e. you can register a database or application with which you cannot integrate the client, or if you just want your service discovery to be disconnected from your application)
I wrote a blog post about the consul where you can find out more and go through my "try" demo
I also discussed service discovery with etcd and docker if you want to know more about what this user code looks like.
The last thing! etcd and consul are written in go, so maintaining them is much easier than Java solutions like zookeeper. All you need is the consul / etcd binary. no dependencies, no related libraries, no jvm.
ben schwartz May 24 '14 at 9:20 2014-05-24 21:20
source share