One service discovery backend to rule them all. The idea behind this was to seamlessly use tools and frameworks that heavily rely on zookeeper, for example, finagle, kafka, and keep/support/maintain just one key-value store. This could facilitate the migration to the nextgen service discovery/distributed configuration services like etcd or consul.
One of these two backends are available:
- etcd
- consul
Unsupported ZooKeeper features (ordered by priority):
- Reliable zxid (X-Consul-Index & X-Etcd-Index)
- Watches
- Ephemeral Nodes
- Sequence Nodes
- ACLs
- Auth
- Process requests in batch (Multi)
- Reliable Stats (?)
Listing of supported requests with some notes:
etcd | consul | |
---|---|---|
CREATE | ✅ 1 | ✅ |
DELETE | ✅ | ✅ |
EXISTS | ✅ | ✅ |
GETDATA | ✅ | ✅ |
SETDATA | ✅ | ✅ |
GETACL | 🚧 | 🚧 |
SETACL | 🚧 | 🚧 |
GETCHILDREN | ✅ | ✅ |
SYNC | ✅ <sup23 | ✅ 2 |
PING | ✅ | ✅ |
GETCHILDREN2 | ✅ | ✅ |
CHECK | ✅ | ✅ |
MULTI | 🚧 | 🚧 |
CREATE2 | ✅1 | ✅ |
CLOSE | ✅ | ✅ |
SETAUTH | 🚧 | 🚧 |
SETWATCHES | 🚧 | 🚧 |
1 Unable to create a node with a key/path equal to an existing directory. (etcd will support this in v3 api: #1855)
2 There is no similar etcd/consul request. For now, it does not proceed.
Using parkeeper is as easy as this:
docker run -p 2181:2181 quay.io/glerchundi/parkeeper -backend-url etcd://127.0.0.1:4001
docker run -p 2181:2181 quay.io/glerchundi/parkeeper -backend-url consul://127.0.0.1:8500
This project is in its early stages, use at your own risk. And of course, any feedback is appreciated as well as issues!