Designing Concurrent Systems with Apache Zookeeper


This course is unique in that it teaches the best practices and caveats of designing modern concurrent Big Data systems. ZooKeeper is an ideal tool to understand and practice the theory, and to reason about system performance, fault tolerance, and stability.

ZooKeeper is the defacto standard for coordinating multiple components in distributed systems. In this class, we will learn ZooKeeper architecture, design, and implementation. Then we will go through the standard ZooKeeper design patterns and their implementation.

In recent years, most of the design work with ZooKeeper is done through Curator. The curator makes the implementation of the design patterns – called recipes – much easier and more robust. We will work with Elections (such as Leader Latch and Leader Election), Locks, Barriers, and more.

The course includes a balance of theory and lab work.


3 days


Developers, administrators, architects.


Experience and background in software development and administration

Lab environment

Amazon EC2 servers will be provided students for installation, administration, and lab work.  Students would need an SSH client and a browser to access the cluster.

Zero Install: There is no need to install Solr software on students’ machines! (although it is possible)

Course Contents

ZooKeeper fundamentals

  • Distribute the coordination system
  • Design goals and results
  • Common coordination tasks

ZooKeeper Java and C API

  • Goals and capabilities
  • Differences, pros, and cons
  • Labs

ZooKeeper environment

  • Track and react to ZooKeeper changes
  • Handling failures (network, apps)
  • Concurrency issues

Curator and Exhibitor

  • Goals and design
  • Installation and configuration
  • Advantages and current trends

Curator recipes and use cases

  • Elections
  • Locks
  • Barriers
  • Counters
  • Caches
  • Nodes
  • Queues
  • Centralized initialization

ZooKeeper internals

  • Internals
  • Administration