ZooKeeper alternatives? (cluster coordination service) [closed]
Asked Answered
L

11

80

ZooKeeper is a highly available coordination service for data centers. It originated in the Hadoop project. One can implement locking, fail over, leader election, group membership and other coordination issues on top of it. Are there any alternatives to ZooKeeper? (free software of course)

Lemming answered 18/5, 2011 at 16:26 Comment(0)
H
64

I've looked extensively at Zookeeper/Curator, Eureka, etcd, and 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 is really just a HA key store so you would have to write a lot of code to turn it into an opinionated service discovery system.

Consul is (to me) the best of both worlds. It is an opinionated service discovery system written on top of serf, using raft for cluster consensus and gossip for communication. It exposes the 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. so you can register a database or application you can't integrate a client with, or if you just want to keep your service discovery decoupled from your app)

I've written a blog post about consul where you can learn more and walk through my "try it out" demo

I've also discussed service discovery with etcd & docker if you want to see more about what that custom code might look like.

One last thing! etcd & consul are written in go, so maintaining them is much easier then java solutions like zookeeper. All you need is the consul / etcd binary. no dependencies, no linked libraries, no jvm.

Haemolysis answered 24/5, 2014 at 21:20 Comment(0)
F
26

There's a very promising alternative to ZooKeeper called etcd (github.com/coreos/etcd), written by CoreOS team. Unlike Doozerd, etcd is being actively developed.

Forecourt answered 13/10, 2013 at 19:54 Comment(0)
G
12

Just discovered Accord (C) and OpenReplica/ConCoord (Python) which may be interesting solutions

[EDIT] The Hashicorp crew, of Vagrant and Packer fame, are cooking "a decentralized solution for service discovery and orchestration" called Serf.

[EDIT2] Hashicorp strikes again ! They just released Consul, built on top of Serf. The pitch: "a solution for service discovery and configuration, completely distributed, highly available, scalable to thousands of nodes and services across multiple datacenters".

Galloway answered 16/5, 2012 at 10:1 Comment(2)
Accord is an up-and-coming project for write-intensive loads. It uses CoroSync, which is also used by Qpid and can be used with Linux HA.Charlottecharlottenburg
Accord appears to be dead: "This site can’t be reached / www.osrg.net’s server IP address could not be found."Jacquerie
H
7

Yes, there is also Doozerd (https://github.com/ha/doozerd). Take a good look at it, it's a nice, single binary distributed coordination service developed by Heroku. With bindings/libraries for java/python/ruby/node. Very easy to get started with and play around.

Honeysuckle answered 5/6, 2011 at 21:23 Comment(1)
Doozerd is nice but it's unmaintained and doesn't have a production track-record.Charlottecharlottenburg
R
5

Take a look at Serf. There is a comparison vs Zookeeper and others here.

Roughspoken answered 27/1, 2014 at 0:55 Comment(0)
B
4

OpenReplica from my research group is a highly available FOSS coordination service for data centers. It can be used for implementing locking, fail over, leader election, group membership and other coordination services. It differs from ZooKeeper in two critical ways:

  • It uses an object-oriented API. This makes it much easier to write coordination services. Synchronization code for OpenReplica looks exactly like its textbook counterpart; there is no need to master a file and upcall-based API like in ZooKeeper and Chubby.

  • It enables dynamic membership updates to the replica set. There is no need for static configuration files. The system is integrated into DNS (authoritative, slave for OpenReplica, or Amazon Route 53).

We actively support the system, do not hesitate to let us know if you have further questions.

Betake answered 19/5, 2012 at 4:57 Comment(3)
1) ZooKeeper is object-oriented, see zookeeper.apache.org/doc/trunk/zookeeperProgrammers.html 2) ? ZK is basically a femto filesystem for storing infrastructure metadata, which also supports presence detection (ephemeral nodes) and observers.Charlottecharlottenburg
I've pulled the git repo and it seems the last commit is from May. Hope you still hanging around :)Refuel
Hi Barry: ZooKeeper is not object-oriented. The main abstractions (znodes, paths, watches) are all there to support the maintenance of a small object and the API is that of a filesystem. If you take a closer look at OpenReplica, you can see that there is a big difference between the filesystem API of ZK and OO API of OpenReplica. wizzard0: We're alive and kicking! New release slated for early April.Betake
S
1

There's a project called Noah on github that looks interesting, it says that it's "loosely based on Apache ZooKeeper" https://github.com/lusis/Noah with REST support being a key feature (ZK has this as a contrib/option rather than built in).

Scrapbook answered 19/5, 2011 at 15:55 Comment(1)
Noah might be useful for applications that do not require high availability or where job security is optional.Charlottecharlottenburg
C
1

There are different tools that optimize for different engineering trade-offs.

  • ZooKeeper Scales marginally for reads; writes with many observers can be slow. It is proven and has a sizable community.
  • Accord Seems interesting for write-intensive uses, however typical use-cases already have domain-specific solutions (i.e., logging, telemetry).

The others are somewhat interesting but generally unproven. Don't get this wrong if intended for production usage.

Charlottecharlottenburg answered 23/5, 2012 at 11:59 Comment(0)
P
1

I'd found this comparison of Zookeeper, etcd and Doozer: http://devo.ps/blog/zookeeper-vs-doozer-vs-etcd/

Serf (serfdom.io) is also a nice solution as it is simple! But you must consider, SERF is just a cluster-manager which enables you to send custom events to all cluster nodes. Thats nice, but you have to write your own shell scripts (aka events). See this example: "https://www.digitalocean.com/community/articles/how-to-set-up-a-serf-cluster-on-several-ubuntu-vps"

The advantage is, you're getting a very simple cluster-manager and you're able to combine this with your favorite configuration, deployment or continuous integration tool.

Primatology answered 24/4, 2014 at 16:35 Comment(0)
T
1

I know this post is quite old, but someone who is looking at all possible alternatives I would also like to suggest JGroups library which is mature enough to be used in production environment. I have used it successfully in one of my projects mainly for distributed coordination and to share messages between cluster. It also support AWS support in addition to its flexible architecture where you can customize its stack to get what you need. I suggest you to have a look at it

Tutto answered 4/6, 2015 at 8:57 Comment(0)
L
0

It seems Corosync is also like ZooKeeper.

Lemming answered 26/10, 2012 at 7:2 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.