Upload
mailru-group
View
3.969
Download
0
Embed Size (px)
Citation preview
Tarantool Case StudiesDennis Anikin, Director Engineering,Email & Cloud at Mail.Ru
Что такое Tarantool?
• СУБД с сервером приложений• Открытый исходный код• Разрабатывается в Mail.Ru• Существует с 2007 года• Основное применение: heavy read/write workloads• Настоящая СУБД с транзакциями, но быстрая как кэш!
Mail.Ru Group включает продукты
Основаны на Tarantool
Когда использовать Tarantool?
No cache properties
• 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
Отсутствуют свойства кэша
• 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
DBDB
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
И свойства СУБД никуда не потерялись
TarantoolDBDB
DBDBСУБД
Когда использовать Tarantool?
Cache
Отсутствуют свойства СУБД
• Persistence• ACID Transactions• Replication• Stored procedures• Tables, Indexes, Secondary indexes• Cursors, range and full scan queries
Когда использовать Tarantool?
СУБД
Свойства СУБД
• Persistence• ACID Transactions• Replication• Stored procedures• Tables, Indexes, Secondary indexes• Cursors, range and full scan queries
И все свойства кэша
Tarantool
Когда использовать Tarantool?
СУБД
Cache
Когда использовать Tarantool?
Database
Свойства СУБД
• Persistence• ACID Transactions• Replication• Stored procedures• Tables, Indexes, Secondary indexes• Cursors, range and full scan queries
Cache
Когда использовать Tarantool?
Database
Cache Свойства кэша
• 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?
Database
Cache И новые проблемы!
• Sub 1 ms latency is not guaranteed• 100K-300K QPS is not guaranteed• Inconsistency• Cold start
Когда использовать Tarantool?
Database
Cache • Не совсем СУБД• Не совсем кэш• И новые проблемы
Когда использовать Tarantool?
СУБД
Cache • Свойства СУБД• Свойства кэша• Нет новых проблем
Tarantool
Когда использовать Tarantool?
• Свойства СУБД• Свойства кэша• Нет новых проблем
Tarantool
Когда использовать Tarantool?
TarantoolСУБД Cache
База данных и кэш в одном флаконе
Когда использовать Tarantool?
TarantoolDB Cache
База данных и кэш в одном флаконеHot data
Sub 1ms latency99% of requests <1 ms99,9% of requests <3 ms
Write heavy workloads100K per core
1M+ QPS per node
99,99% availability
Heavy parallelizedworkloads
Small number of nodes
Свойства специфичные для кэша• 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)• SQL (in flux)• Disk store (in flux)
Базы данныхMySQL, Oracle, Postgres Redis, CouchBase, Aerospike
Reliability Speed
Базы данныхMySQL, Oracle, Postgres Redis, CouchBase, Aerospike
Reliability Speed
Use cases
Use cases• Система аутентификации• Система пуш уведомлений• Система показа рекламы
• Видео проигрыватель• Веб аналитика• Хранилище сообщений мессенджеров• Антиспам• Замена 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 СУБД
Система аутентификации
Система аутентификации
Система аутентификации
Система аутентификацииПо логину и паролю
Auth
Tarantool
AuthenticationWeb
server
Anti BruteForce
50K QPS (transactions)
Read/Write
User
Система аутентификацииПо сессии/токену
Web server
Page load
Ajax request
Mobile API callWeb
serverWeb server
SessionTarantool
ProfilesTarantool
1M QPS!
4x, 20%
8x, 15%
Система пуш уведомлений
Система пуш уведомлений
ServerSide
ServerSide
ServerSide
MobilePhone/Tablet
MobilePhone/Tablet
Система пуш уведомлений
ServerSide
ServerSide
ServerSide
iOSAPI
AndroidAPI
MobilePhone/Tablet
MobilePhone/Tablet
Система пуш уведомлений
ServerSide
ServerSide
ServerSide
?
iOSAPI
AndroidAPI
MobilePhone/Tablet
MobilePhone/Tablet
Система пуш уведомлений
ServerSide
ServerSide
ServerSide
Tarantool
iOSAPI
AndroidAPI
MobilePhone/Tablet
MobilePhone/Tablet
Система пуш уведомлений
ServerSide
ServerSide
ServerSide
Tarantool
iOSAPI
AndroidAPI
MobilePhone/Tablet
MobilePhone/Tablet
Events
QueueTarantool
Система пуш уведомлений
ServerSide
ServerSide
ServerSide
Tarantool
iOSAPI
AndroidAPI
MobilePhone/Tablet
MobilePhone/Tablet
Events
QueueTarantool
200K QPS read/write
Система показа рекламы
Система показа рекламы
Web server
SourceOf
data
10+ рекламных блоков
Web serverWeb
server
Ad system
SourceOf
data
SourceOf
data
Система показа рекламы
Web server
SourceOf
data
10+ рекламных блоков
Web serverWeb
server
Ad system
SourceOf
data
SourceOf
data
• Per each unit out of 10+
Система показа рекламы
Web server
SourceOf
data
10+ рекламных блоков
Web serverWeb
server
Ad system
SourceOf
data
SourceOf
data
• Per each unit out of 10+• Lookup to all the sources
Система показа рекламы
Web server
SourceOf
data
10+ рекламных блоков
Web serverWeb
server
Ad system
SourceOf
data
SourceOf
data
• Per each unit out of 10+• Lookup to all the sources• Aggregate the result
Система показа рекламы
Web server
SourceOf
data
10+ рекламных блоков
Web serverWeb
server
Ad system
SourceOf
data
SourceOf
data
• Per each unit out of 10+• Lookup to all the sources• Aggregate the result• Determine which ad to show
Система показа рекламы
Web server
SourceOf
data
10+ рекламных блоков
Web serverWeb
server
Ad system
SourceOf
data
SourceOf
data
• Per each unit out of 10+• Lookup to all the sources• Aggregate the result• Determine which ad to show• Spending less than 1 ms!
Система показа рекламы
Web server
SourceOf
data
10+ рекламных блоков
Web serverWeb
server
Ad system
SourceOf
data
SourceOf
data
• Total read QPS is 3M• Transactions per sec is 1M
И это были только 3 кейса
Вывод такой:• вам нужно читать/писать горячие данные• с производительностью 100K QPS• параллельно• и вам нужно время ответа менее чем 1 мс• и 99.99% uptime• и вы хотите выжать все соки из ваших серверов• при этом иметь транзакции, репликацию, persistence и
все другие свойства классических СУБД• и все это в базе данных, которую легко
администрировать
If
Вывод такой:• вам нужно читать/писать горячие данные КЭШ• с производительностью 100K QPS КЭШ• параллельно КЭШ• и вам нужно время ответа менее чем 1 мс КЭШ• и 99.99% uptime СУБД• и вы хотите выжать все соки из ваших серверов КЭШ• при этом иметь транзакции, репликацию, persistence и
все другие свойства классических СУБД СУБД• и все это в базе данных, которую легко
администрировать СУБД
If
then use Tarantool
facebook.com/TarantoolDatabase
tarantool.org
Спасибо!