Dennis Anikin - Tarantool Case Studies in Mail.Ru Group

  • View
    3.969

  • Download
    0

  • Category

    Software

Preview:

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

support@tarantool.org

anikin@corp.mail.ru

Спасибо!

Recommended