Tarantool – кейсы использования Dennis Anikin, Director Engineering, Email & Cloud at Mail.Ru https://www.facebook.com/TarantoolDatabase Что такое Tarantool? • • • • • • СУБД с сервером приложений Открытый исходный код Разрабатывается в Mail.Ru Существует с 2008 года Основное применение: высоконагруженные системы Настоящая СУБД с транзакциями, но быстрая как кэш! Mail.Ru Group включает продукты Основаны на Tarantool Когда использовать Tarantool? Отсутствуют свойства кэша СУБД • • • • • • • Sub 1 ms latency 100K-300K QPS per one CPU core 100K updates per node Small number of nodes (money saver) Expiration Always up, no maintenance windows Optimized for heavy parallel workloads Когда использовать Tarantool? А что если СУБД еще и шардированна? Отсутствуют свойства кэша DB DB DB DB СУБД • • • • • • • Sub 1 ms latency 100K-300K QPS per one CPU core 100K updates per node Small number of nodes (money saver) Expiration Always up, no maintenance windows Optimized for heavy parallel workloads Когда использовать Tarantool? Присутствуют свойства кэша! DB DB DB DB СУБД Tarantool • • • • • • • Sub 1 ms latency 100K-300K QPS per one CPU core 100K updates per node Small number of nodes (money saver) Expiration Always up, no maintenance windows Optimized for heavy parallel workloads И свойства СУБД никуда не потерялись Когда использовать Tarantool? Отсутствуют свойства СУБД Cache • • • • • • Persistence ACID Transactions Replication Stored procedures Tables, Indexes, Secondary indexes Cursors, range and full scan queries Когда использовать Tarantool? Свойства СУБД СУБД Tarantool • • • • • • Persistence ACID Transactions Replication Stored procedures Tables, Indexes, Secondary indexes Cursors, range and full scan queries И все свойства кэша Когда использовать Tarantool? Cache СУБД Когда использовать Tarantool? Cache Database Свойства СУБД • • • • • • Persistence ACID Transactions Replication Stored procedures Tables, Indexes, Secondary indexes Cursors, range and full scan queries Когда использовать Tarantool? Cache Database Свойства кэша • • • • • • • Sub 1 ms latency 100K-300K QPS per one CPU core 100K updates per node Small number of nodes (money saver) Expiration Always up, no maintenance windows Optimized for heavy parallel workloads Когда использовать Tarantool? Cache Database И новые проблемы! • • • • Sub 1 ms latency не гарантировано 100K-300K QPS не гарантировано Несогласованность данных Холодный старт Когда использовать Tarantool? Cache Database • • • Не совсем СУБД Не совсем кэш И новые проблемы Когда использовать Tarantool? Cache СУБД • • • Tarantool Свойства СУБД Свойства кэша Нет новых проблем Когда использовать Tarantool? • • • Tarantool Свойства СУБД Свойства кэша Нет новых проблем Когда использовать Tarantool? База данных и кэш в одном флаконе СУБД Tarantool Cache Когда использовать Tarantool? Горячие данные База данных и кэш в одном флаконе Нагрузка на запись – до 1 миллиона транзакций в секунду на одном ядре ЦПУ 99,99% доступность Оптимальна при большой параллельно й нагрузке Sub 1ms latency 99% запросов < 1 ms 99,9% запросов < 3 ms СУБД Tarantool Кэш Не нужно много серверов Свойства специфичные для кэша • • • • • • • • Sub 1 ms latency 100K-300K QPS per one CPU core Expiration Fast write operations (>100K QPS per node) Memcached interface Always up, no maintenance windows Optimal memory footprint Optimized for heavy parallel workloads Свойства специфичные для кэша • • • • • • • • Sub 1 ms latency 100K-300K QPS per one CPU core Expiration Fast write operations (>100K QPS per node) Memcached interface Always up, no maintenance windows Optimal memory footprint Optimized for heavy parallel workloads Но их нет в СУБД! In Tarantool • • • • • • • • Sub 1 ms latency 100K-300K QPS per one CPU core Expiration Fast write operations (>100K QPS per node) Memcached interface Always up, no maintenance windows Optimal memory footprint Optimized for heavy parallel workloads Свойства СУБД • • • • • • Persistence ACID Transactions Replication (master-slave & master-master) Stored procedures Non-blocking server side scripting Convenient backups • • • • • • Cursors, Range & Full scan queries Primary & Secondary indexes Tables Fast write operations (>100K QPS per node) SQL (in pipeline) Disk store (in pipeline) Свойства СУБД • • • • • • Persistence ACID Transactions Replication (master-slave & master-master) Stored procedures Non-blocking server side scripting Convenient backups • • • • • • Cursors, Range & Full scan queries Primary & Secondary indexes Tables Fast write operations (>100K QPS per node) SQL Disk store Но их нет в кэше! In Tarantool • • • • • • Persistence ACID Transactions Replication (master-slave & master-master) Stored procedures Non-blocking server side scripting Convenient backups • • • • • • Cursors, Range & Full scan queries Primary & Secondary indexes Tables Fast write operations (>100K QPS per node) Disk store SQL (in flux) Базы данных MySQL, Oracle, Postgres Reliability Redis, CouchBase, Aerospike Speed Базы данных MySQL, Oracle, Postgres Reliability Redis, CouchBase, Aerospike Speed Кейсы использования Кейсы использования • Система аутентификации • Система пуш уведомлений • Система показа рекламы • • • • • • • • Видео проигрыватель Веб аналитика Хранилище сообщений мессенджеров Антиспам Замена memcached Система мониторинга Система рейтингов И многое другое … Система аутентификации Система аутентификации • Востребованная (10-1M RPS) Система аутентификации • Востребованная (10-1M RPS) • Низкая latency (sub 1 ms) Система аутентификации • Востребованная (10-1M RPS) • Низкая latency (sub 1 ms) • Высокая доступность Система аутентификации • • • • Востребованная (10-1M RPS) Низкая latency (sub 1 ms) Высокая доступность Постоянно ходит в хранилище Система аутентификации • • • • • Востребованная (10-1M RPS) Низкая latency (sub 1 ms) Высокая доступность Постоянно ходит в хранилище Anti brute-force/anti fraud Система аутентификации • • • • • • Востребованная (10-1M RPS) Низкая latency (sub 1 ms) Высокая доступность Постоянно ходит в хранилище Anti brute-force/anti fraud Почти каждое обращение – это транзакция Система аутентификации • • • • • • • Востребованная (10-1M RPS) Низкая latency (sub 1 ms) Высокая доступность Постоянно ходит в хранилище Anti brute-force/anti fraud Почти каждое обращение – это транзакция Много неизбежной лишней работы Система аутентификации • • • • • • • • Востребованная (10-1M RPS) Низкая latency (sub 1 ms) Высокая доступность Постоянно ходит в хранилище Anti brute-force/anti fraud Почти каждое обращение – это транзакция Много неизбежной лишней работы Большой размер данных Система аутентификации • • • • • • • • • • Востребованная (10-1M RPS) Низкая latency (sub 1 ms) Высокая доступность Постоянно ходит в хранилище Anti brute-force/anti fraud Почти каждое обращение – это транзакция Много неизбежной лишней работы Большой размер данных Expiration Persistence Система аутентификации • • • • • • • • • • Востребованная (10-1M RPS) КЭШ Низкая latency (sub 1 ms) КЭШ Высокая доступность Постоянно ходит в хранилище КЭШ Anti brute-force/anti fraud Почти каждое обращение – это транзакция Много неизбежной лишней работы Большой размер данных Expiration КЭШ Persistence Система аутентификации • • • • • • • • • • Востребованная (10-1M RPS) Низкая latency (sub 1 ms) Высокая доступность СУБД Постоянно ходит в хранилище Anti brute-force/anti fraud СУБД Почти каждое обращение – это транзакция СУБД Много неизбежной лишней работы Большой размер данных Expiration Persistence СУБД Система аутентификации Система аутентификации Система аутентификации Система аутентификации По логину и паролю Anti Brute Force Authentication Web server Auth Read/Write 50K QPS (transactions) User Tarantool Система аутентификации По сессии/токену Page load Ajax request Web Web server Web server server Session Tarantool 4x, 20% Mobile API call Profiles Tarantool 1M QPS! 8x, 15% Система пуш уведомлений Система пуш уведомлений Server Side Server Side Server Side Mobile Phone/ Tablet Mobile Phone/ Tablet Система пуш уведомлений Server Side Android API Mobile Phone/ Tablet iOS API Mobile Phone/ Tablet Server Side Server Side Система пуш уведомлений Server Side Android API Mobile Phone/ Tablet iOS API Mobile Phone/ Tablet Server Side Server Side ? Система пуш уведомлений Server Side Android API Mobile Phone/ Tablet iOS API Mobile Phone/ Tablet Server Side Server Side Tarantool Система пуш уведомлений Server Side События Server Side Server Side Android API Mobile Phone/ Tablet iOS API Mobile Phone/ Tablet Queue Tarantool Tarantool Система пуш уведомлений Server Side 200K QPS read/write События Server Side Server Side Android API Mobile Phone/ Tablet iOS API Mobile Phone/ Tablet Queue Tarantool Tarantool Система показа рекламы Система показа рекламы 10+ рекламных блоков Ad system Source Of data Source Of data Source Of data Web Web server Web server server Система показа рекламы 10+ рекламных блоков Web Web server Web server server • Per each unit out of 10+ Ad system Source Of data Source Of data Source Of data Система показа рекламы 10+ рекламных блоков Web Web server Web server server • Per each unit out of 10+ • Lookup to all the sources Ad system Source Of data Source Of data Source Of data Система показа рекламы 10+ рекламных блоков Web Web server Web server server • Per each unit out of 10+ • Lookup to all the sources • Aggregate the result Ad system Source Of data Source Of data Source Of data Система показа рекламы 10+ рекламных блоков Web Web server Web server server • • • • Per each unit out of 10+ Lookup to all the sources Aggregate the result Determine which ad to show Ad system Source Of data Source Of data Source Of data Система показа рекламы 10+ рекламных блоков Web Web server Web server server • • • • • Per each unit out of 10+ Lookup to all the sources Aggregate the result Determine which ad to show Spending less than 1 ms! Ad system Source Of data Source Of data Source Of data Система показа рекламы 10+ рекламных блоков Web Web server Web server server • Total read QPS is 3M • Transactions per sec is 1M Ad system Source Of data Source Of data Source Of data И это были только 3 кейса Вывод такой: If • • • • • • • вам нужно читать/писать горячие данные с производительностью 100K QPS параллельно и вам нужно время ответа менее чем 1 мс и 99.99% uptime и вы хотите выжать все соки из ваших серверов при этом иметь транзакции, репликацию, persistence и все другие свойства классических СУБД • и все это в базе данных, которую легко администрировать Вывод такой: If • • • • • • • вам нужно читать/писать горячие данные КЭШ с производительностью 100K QPS КЭШ параллельно КЭШ и вам нужно время ответа менее чем 1 мс КЭШ и 99.99% uptime СУБД и вы хотите выжать все соки из ваших серверов КЭШ при этом иметь транзакции, репликацию, persistence и все другие свойства классических СУБД СУБД • и все это в базе данных, которую легко администрировать СУБД then use Tarantool Спасибо! [email protected] [email protected] tarantool.org facebook.com/TarantoolDatabase