Конференция завершена. Ждем вас на HighLoad++ в следующий раз!

PG Saga: зависимые изменения данных в нескольких сервисах без двухфазных коммитов и синхронных зависимостейАрхитектуры, масштабируемость

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

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 - есть вакансия :)

Тезисы

История про опыт Avito в решении одного из вызовов микросервисной архитектуры - реализации бизнес-транзакций с соблюдением консистентности данных между сервисами при использовании архитектурного паттерна Database per Service.

После разделения приложения на несколько сервисов (как следствие, у каждого сервиса своя база данных) уже невозможно сделать все атомарно в 1 ACID-транзакции. Это можно реализовать 2 способами:
- Two-phase commit 2PC;
- sagas.

Как раз мы выбрали паттерн саг - вот об этом я хочу рассказать, в том числе, как мы его реализовали (PG - потому что в нашей реализации в сервисе саг мы используем PostgreSQL).

Другие доклады секции Архитектуры, масштабируемость

Rambler's Top100