100% compitible with ZooKeeper by protocol and data model starting 21.12.
Why we need ClickHouse Keeper?
ZooKeeper it's like an unnatural component of ClickHouse: it requires JVM, turning it and so on - some operational efforts. It's tp diffucult.
It's drop-in replacement of ZooKeeper (so it possible to use it with Kafka or Hadoops 😮) written in C++.
It has additional advantages:
- compressed logs and snapshots.
- no issuses with transactional id overflow (zxid)
- no issuses with large packets
- better memory usage
- no issuses with GC and Java heap
Can run embedded into clickhouse-server - no need for separate process.
But if you use it as a separate node it will be faster. But it's recommended only for large clusters, if you have a hundred of nodes it's better to seperate ClickHouse Keeper.
Don't be confused, if you want to ran ClickHouse keeper as a separate node from ClickHouse Server it's the same binary.