Практичный API для хранилища данных

В современном мире приходится думать о том, как увеличить количество обрабатываемых данных в единицу времени. Один из способов достижения этой цели — обрабатывать данные асинхронно. Для этого нужно менять и интерфейсы систем хранения — добавлять к привычным синхронным интерфейсам, работающим по модели «запрос-ответ», асинхронный вариант. Я расскажу о том, как с минимальными усилиями поддерживать несколько интерфейсов для доступа к хранилищу данных. В качестве примера мы рассмотрим дизайн библиотеки для работы с сервисом ZooKeeper, разработанной на C++ командой Яндекс.Карт.