Стендбай в бою: масштабируем приложение в топ-2 мировом классифайдеБазы данных

Доклад принят в программу конференции
Константин Евтеев
Авито

DBA Unit Leader.
Карьеру начал с PostgreSQL версии 7.4 и Microsoft SQL Server 2000. До Авито занимался миграциями нагруженных проектов с MSSQL Server на PostgreSQL и администрированием обоих СУБД. В Авито пришел в 2014 году на роль разработчика баз данных, в настоящий момент возглавляю команду DBA.
Активно участвую в жизни PostgreSQL community.

DBA в Авито:
Поддерживают и развивают персистентные системы
- OLTP:PostgreSQL
- NOSQL: MongoDB, Tarantool, Redis
- OLAP: Clickhouse
- системы очередей и потоковой обработки данных: Kafka, RabbitMQ
- сопутствующая инфраструктура: backup, failover, database discovery, различные proxy, мониторинг, алертинг
- Выдают базы данных из поддерживаемого списка по запросу команд, строят DBaaS
- Консультируют команды по любым вопросам, связанным с персистеными системами
- Помогают с выбором хранилища и архитектуры, проводят аудит существующих решений и поиском узких мест

PS
https://www.avito.ru/company/job/dp-eng - есть вакансия :)

Тезисы

В данном докладе я хочу поделиться опытом Авито, полученным за годы эксплуатации бинарной репликации и стендбаев. Мы многое переосмыслили, разработали свои подходы и техники, планы восстановления после аварий в распределенных системах.

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

Вторая часть выступления — о подводных камнях, о которых многие даже не подозревает, а другие принимают все риски. Речь пойдет о различных кейсах, которые могут привести к деградации вашего приложения и способах решения, а именно:
* высокий уровень TPS;
* применение DDL;
* отправка большого кол-ва WAL-файлов в архив и восстановление из архива;
* и др.

Расскажу про использование пула стендбаев и переключения запросов между ними. Также о планах восстановления после аварий для приведения в согласованное состояние мастера, стендбаев и архива.

PostgreSQL
,
Tarantool
,
Организация системы кеширования
,
Архитектурные паттерны
,
Отказоустойчивость
,
Оптимизация производительности
,
Распределенные системы
,
Архитектура данных, потоки данных, версионирование
,
Масштабирование с нуля
,
Критерии выбора технологий для проекта

Другие доклады секции Базы данных