Устройство репликации в in-memory базе данных Reindexer С++

Доклад принят в программу конференции
Олег Герасимов
Ростелеком Информационные Технологии

Директор по разработке в АО «Рестрим».

Тезисы

Мы разрабатываем in-memory базу данных для платформы Wink - облачного телевидения/кинотеатра, как быстрый и умный кэш для контентных данных. Каждая нода системы содержит свою копию кэша, а за репликацию данных из централизованного хранилища отвечает код бэка — приложения на golang.

В какой-то момент такая схема перестала быть удобной в эксплуатации, и мы приняли решение переложить функцию репликации на движок in-memory. При реализации мы рассматривали несколько альтернативных подходов к архитектуре репликации для решения задачи, в итоге остановились на комбинированном подходе: логическая репликация по WAL + live stream обновлений.

В докладе расскажу о наиболее интересных деталях подкапотной реализации:
* как реализовывали сервер, как реализовывали клиент — и то и то приложения на C++11;
* какая многопоточная модель используется;
* где и как нашлись узкие бутылочные горлышки, и как их удалось пофиксить своими lock free-буферами.

И, кроме этого, расскажу, как оптимизировали in-memory WAL, чтобы он занимал минимум памяти и вмещал максимум данных.

C/C++
,
Базы данных / другое
,
Оптимизация производительности
,
Распределенные системы
,
Синхронизация данных, параллельная обработка, CDN

Другие доклады секции С++