Модельная реализация интерфейса ZooKeeper для тестирования

Материал из Wiki - Факультет компьютерных наук
Перейти к: навигация, поиск
Компания Яндекс
Учебный семестр Осень 2018
Учебный курс 3-4-й курс
Максимальное количество студентов, выбравших проект: ?



Для координации реплик в ClickHouse используется ZooKeeper. Многие пользователи ClickHouse хотели бы иметь возможность использовать для координации некоторые другие системы вместо ZooKeeper. Рассматриваемыми вариантами таких систем являются Etcd, Consul, FoundationDB. Это весьма проблематично, так как эти системы существенно отличаются по интерфейсам и возможностям.

Тем не менее, для того, чтобы эта задача стала возможной, в ClickHouse обобщён интерфейс взаимодействия с ZooKeeper, и теперь на его место можно подставлять другие реализации. В первую очередь, это полезно для тестирования. Хотя в ClickHouse есть интеграционные тесты, поднимающие кластер и эмулирующие network partitions, они довольно громоздкие, и для тестирования корректности использования интерфейса, было бы также полезно сделать модельную реализацию интерфейса, подменяющую ZooKeeper.

Для целей тестирования, эта реализация может быть не распределённой и не сохраняющей данные при перезапуске, но с широкой возможностью эмуляции сбоев, чтобы удобнее протестировать корректность работы прикладного кода в краевых случаях.

Если с модельной реализацией всё пойдёт хорошо, то это приоткроет путь для поддержки другой системы координации вместо ZooKeeper.