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:

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.