Ex: Zookeeper

Architecture

Zookeeper is represented like hierarchical namespace.

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/c916c690-f0c0-4717-b7bd-d3c2d4ba9204/Untitled.png

Zookeeper has master-slave architecture.

Followers must send any write request to leader and wait until it successfully broadcasted.

All nodes have copy of the data in its local cache. So reads are fast.

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/0f638ff1-659f-4c7d-b335-255515059eef/Untitled.png

But followers might be lagging behind. So in this case Zookeeper provides sync operation. In this case all read operations after read would see all writes that happened before sync.

Clients can register watches and get notification if value is updated.

Safety guarantees

ZAB protocol

... TODO

Use cases