Tarantool

advertisement
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 
Спасибо!
support@tarantool.org
anikin@corp.mail.ru
tarantool.org
facebook.com/TarantoolDatabase
Download