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:8500This project is in its early stages, use at your own risk. And of course, any feedback is appreciated as well as issues!