54
Tarantool – use cases

Основные кейсы использования in-memory СУБД на примере Тарантула и проектов Mail.Ru Group / Денис Аникин (Mail.Ru

  • Upload
    ontico

  • View
    256

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Основные кейсы использования in-memory СУБД на примере Тарантула и проектов Mail.Ru Group / Денис Аникин (Mail.Ru

Tarantool – use cases

Page 2: Основные кейсы использования in-memory СУБД на примере Тарантула и проектов Mail.Ru Group / Денис Аникин (Mail.Ru

Tarantool

• Что такое Tarantool?

Page 3: Основные кейсы использования in-memory СУБД на примере Тарантула и проектов Mail.Ru Group / Денис Аникин (Mail.Ru

Tarantool

• Что такое Tarantool?• Tarantool – это очень-очень быстрая СУБД с сервером приложений на

борту

Page 4: Основные кейсы использования in-memory СУБД на примере Тарантула и проектов Mail.Ru Group / Денис Аникин (Mail.Ru

Tarantool

• Что такое Tarantool?• Tarantool – это очень-очень быстрая СУБД с сервером приложений на

борту• Почему Tarantool?

Page 5: Основные кейсы использования in-memory СУБД на примере Тарантула и проектов Mail.Ru Group / Денис Аникин (Mail.Ru

Tarantool

• Что такое Tarantool?• Tarantool – это очень-очень быстрая СУБД с сервером приложений на

борту• Почему Tarantool?• Чтобы ответить на этот вопрос, надо посмотреть на кейсы

Page 6: Основные кейсы использования in-memory СУБД на примере Тарантула и проектов Mail.Ru Group / Денис Аникин (Mail.Ru

Tarantool

• Что такое Tarantool?• Tarantool – это очень-очень быстрая СУБД с сервером приложений на

борту• Почему Tarantool?• Чтобы ответить на этот вопрос, надо посмотреть на кейсы

• Но если кратко, то Tarantool

• Быстрый во всех смыслах этого слова• Экономный• Универсальный• Простой

Page 7: Основные кейсы использования in-memory СУБД на примере Тарантула и проектов Mail.Ru Group / Денис Аникин (Mail.Ru

Tarantool - кейсы использования

• Быстрый OLTP (онлайн обработка транзакций)• Быстрый OLAP (онлайн аналитика)• Экономия денег• Устранение зоопарков• Быстрое и надежное кэширование• Сервер приложений внутри СУБД, интеграция нескольких СУБД• Быстрая разработка фич, микросервисы, минимально времени на борьбу с

высокой нагрузкой• Упрощение эксплуатации• IoT-платформа

Page 8: Основные кейсы использования in-memory СУБД на примере Тарантула и проектов Mail.Ru Group / Денис Аникин (Mail.Ru

Быстрый OLTP

• Транзакции в почти реальном времени• Latency порядка 1 миллисекунды• Огромная пропускная способность – сотни тысяч или даже миллионы QPS

Примеры:

- Система сессий- Очереди- Пуш-уведомления- Роутинг запросов (для шардинга)

Page 9: Основные кейсы использования in-memory СУБД на примере Тарантула и проектов Mail.Ru Group / Денис Аникин (Mail.Ru

Система сессий

Auth

Tarantool

Authentication

Web server

1M QPS!

Read/Write

User

Page 10: Основные кейсы использования in-memory СУБД на примере Тарантула и проектов Mail.Ru Group / Денис Аникин (Mail.Ru

Очереди

Queue Tarantool

Push/pop

Web server

?K QPS! Read/Write

Back-end

Push

Page 11: Основные кейсы использования in-memory СУБД на примере Тарантула и проектов Mail.Ru Group / Денис Аникин (Mail.Ru

Пуш-уведомления

QueueCluster

Events

News

Email

myMailcloudapp

QueueClusterQueueCluster

QueueClusterQueue

ClusterStorageCluster

iOSAPI

AndroidAPI

MobilePhone/Tablet

MobilePhone/Tablet

Page 12: Основные кейсы использования in-memory СУБД на примере Тарантула и проектов Mail.Ru Group / Денис Аникин (Mail.Ru

Роутинг запросов (шардинг)

Backend

Tarantool

Query

Web server

200-300K QPS!

BackendBackendBackendBackend

Page 13: Основные кейсы использования in-memory СУБД на примере Тарантула и проектов Mail.Ru Group / Денис Аникин (Mail.Ru

Быстрый OLAP

• Аналитика в реальном времени• Много источников данных• Надо провести аналитику и принять решение в режиме реального времени

Примеры:

- Система онлайн рекламы- Антиспам- «Разбери свой ящик»- Антибрутфорс- Антифрод

Page 14: Основные кейсы использования in-memory СУБД на примере Тарантула и проектов Mail.Ru Group / Денис Аникин (Mail.Ru

Система онлайн рекламы

Web server

SourceOf

data

10+ ad units

Web serverWeb

server

Ad system

SourceOf

data

SourceOf

data

Page 15: Основные кейсы использования in-memory СУБД на примере Тарантула и проектов Mail.Ru Group / Денис Аникин (Mail.Ru

Антиспам

Web server

Tarantool

Web serverMX

Anti Spam

Tarantool

Tarantool

TarantoolTarantool

ClassificationClusterization

Page 16: Основные кейсы использования in-memory СУБД на примере Тарантула и проектов Mail.Ru Group / Денис Аникин (Mail.Ru

«Разбери свой ящик»

Web server

Tarantool

Web server

Web

Sort foldersMake decision

10 milliseconds

Page 17: Основные кейсы использования in-memory СУБД на примере Тарантула и проектов Mail.Ru Group / Денис Аникин (Mail.Ru

Антибрутфорс

Auth

Tarantool

Web server

Anti BruteForce

200K QPS!

Read/Write

Page 18: Основные кейсы использования in-memory СУБД на примере Тарантула и проектов Mail.Ru Group / Денис Аникин (Mail.Ru

Антифрод

TarantoolWeb

server

Anti fraudForce

?K QPS!

Read/Write

Page 19: Основные кейсы использования in-memory СУБД на примере Тарантула и проектов Mail.Ru Group / Денис Аникин (Mail.Ru

Экономия денег

• Уменьшаем количество серверов• Убираем плату за лицензию• Снижаем цену поддержки

Примеры:

- Mail.Ru – профили пользователей- Mail.Ru – офлайн-сообщения Mail.Ru Agent- Mail.Ru – система токенов для сборщиков почты

Page 20: Основные кейсы использования in-memory СУБД на примере Тарантула и проектов Mail.Ru Group / Денис Аникин (Mail.Ru

Профили

Web server

Page load

Ajax request

Mobile API callWeb serverWeb

serverTarantool

1M QPS!8x, 15% CPU

Page 21: Основные кейсы использования in-memory СУБД на примере Тарантула и проектов Mail.Ru Group / Денис Аникин (Mail.Ru

Офлайн-сообщения Mail.Ru Agent

Web server

Save a message

Load messagesWeb server

MRIMTarantool

100-200K QPS! 500Gb

Page 22: Основные кейсы использования in-memory СУБД на примере Тарантула и проектов Mail.Ru Group / Денис Аникин (Mail.Ru

Система токенов для сборщиков почты

Web server

Put token

Get tokenWeb serverMailCollector

TokenTarantool

1M QPS!

Refresh token

Page 23: Основные кейсы использования in-memory СУБД на примере Тарантула и проектов Mail.Ru Group / Денис Аникин (Mail.Ru

Устранение зоопарков

• Уменьшаем количество различных NoSQL СУБД в своем арсенале• Упрощаем администрирование и деплой• Убираем несогласованность данных

Page 24: Основные кейсы использования in-memory СУБД на примере Тарантула и проектов Mail.Ru Group / Денис Аникин (Mail.Ru

Zoo

Web

Redis

Memcache

MySQL

MongoDB

Page 25: Основные кейсы использования in-memory СУБД на примере Тарантула и проектов Mail.Ru Group / Денис Аникин (Mail.Ru

Zoo

Web

Redis

Memcache

MySQL

MongoDB

Page 26: Основные кейсы использования in-memory СУБД на примере Тарантула и проектов Mail.Ru Group / Денис Аникин (Mail.Ru

Zoo

Web Tarantool

Page 27: Основные кейсы использования in-memory СУБД на примере Тарантула и проектов Mail.Ru Group / Денис Аникин (Mail.Ru

Быстрое и надежное кэширование

• Ускоряем текущий кэш• Делаем кэш персистентным• Добавляем к кэшу репликацию и делаем его highly available• И не меняем текущий код! Tarantool полностью поддерживает

интерфейс Memcached!

Page 28: Основные кейсы использования in-memory СУБД на примере Тарантула и проектов Mail.Ru Group / Денис Аникин (Mail.Ru

Caching

Web Memcache

• Not reliable• No replication• Slow

Disk

Replica

Page 29: Основные кейсы использования in-memory СУБД на примере Тарантула и проектов Mail.Ru Group / Денис Аникин (Mail.Ru

Caching

Web Tarantool

• Reliable• Replication• Fast

Disk

Replica

Page 30: Основные кейсы использования in-memory СУБД на примере Тарантула и проектов Mail.Ru Group / Денис Аникин (Mail.Ru

Сервер приложений внутри СУБД

• Разрабатываем логику прямо внутри СУБД• Интегрируемся с другими СУБД

Page 31: Основные кейсы использования in-memory СУБД на примере Тарантула и проектов Mail.Ru Group / Денис Аникин (Mail.Ru

Разрабатываем логику внутри СУБД

Web DBMS

Get

Set

Page 32: Основные кейсы использования in-memory СУБД на примере Тарантула и проектов Mail.Ru Group / Денис Аникин (Mail.Ru

Разрабатываем логику внутри СУБД

Web Tarantool

CallStored

procedure

Page 33: Основные кейсы использования in-memory СУБД на примере Тарантула и проектов Mail.Ru Group / Денис Аникин (Mail.Ru

Интегрируемся с другими СУБД

Web

DBMS 1Get

Set

DBMS 2

Page 34: Основные кейсы использования in-memory СУБД на примере Тарантула и проектов Mail.Ru Group / Денис Аникин (Mail.Ru

Интегрируемся с другими СУБД

Web Tarantool

CallStored

procedure

AnotherDBMS

Page 35: Основные кейсы использования in-memory СУБД на примере Тарантула и проектов Mail.Ru Group / Денис Аникин (Mail.Ru

Микросервисы

• Уменьшаем количество компонент с 4-5 до 2• Радикально уменьшаем количество серверов (в разы)• Минимизируем время вывода приложения в продакшн• Минимизируем затраты команды на борьбу с высокой нагрузкой

Page 36: Основные кейсы использования in-memory СУБД на примере Тарантула и проектов Mail.Ru Group / Денис Аникин (Mail.Ru

Уменьшаем количество компонент

Nginx

Memcache

MySQLWEBDB

Proxy

Page 37: Основные кейсы использования in-memory СУБД на примере Тарантула и проектов Mail.Ru Group / Денис Аникин (Mail.Ru

Уменьшаем количество компонент

Nginx

Memcache

MySQLWEBDB

Proxy

Page 38: Основные кейсы использования in-memory СУБД на примере Тарантула и проектов Mail.Ru Group / Денис Аникин (Mail.Ru

Уменьшаем количество компонент

Nginx

Memcache

TarantoolWEBDB

Proxy

Page 39: Основные кейсы использования in-memory СУБД на примере Тарантула и проектов Mail.Ru Group / Денис Аникин (Mail.Ru

Уменьшаем количество компонент

Nginx

Tarantool

Page 40: Основные кейсы использования in-memory СУБД на примере Тарантула и проектов Mail.Ru Group / Денис Аникин (Mail.Ru

Уменьшаем количество компонент

Nginx

Tarantool

Page 41: Основные кейсы использования in-memory СУБД на примере Тарантула и проектов Mail.Ru Group / Денис Аникин (Mail.Ru

Уменьшаем количество серверов

Nginx

TarantoolTarantool

Nginx

Десятки микросервисов на 2+2 commodity серверах!

Page 42: Основные кейсы использования in-memory СУБД на примере Тарантула и проектов Mail.Ru Group / Денис Аникин (Mail.Ru

Минимизируем время выхода в продакшн

REST API

• HTTP included• Fault-tolerance included• Sharding included

Luaprocedure

Page 43: Основные кейсы использования in-memory СУБД на примере Тарантула и проектов Mail.Ru Group / Денис Аникин (Mail.Ru

Минимизируем борьбу с высокой нагрузкой

REST API

• HTTP included• Fault-tolerance included• Sharding included• 100+K RPS included

Luaprocedure

Page 44: Основные кейсы использования in-memory СУБД на примере Тарантула и проектов Mail.Ru Group / Денис Аникин (Mail.Ru

Упрощаем эксплуатацию

• Отсутствуют ручные регулярные процедуры (такие как vacuum и т.д.)• Простая система горячих бэкапов• Простая система горячего подключения реплики• Простой перенос с сервера на сервер• Простая и понятная структура хранения данных

Page 45: Основные кейсы использования in-memory СУБД на примере Тарантула и проектов Mail.Ru Group / Денис Аникин (Mail.Ru

Простая система горячих бэкапов

DBMS Backup

Как создать backup с горячей базы данных?А как создать горячую реплику?

Page 46: Основные кейсы использования in-memory СУБД на примере Тарантула и проектов Mail.Ru Group / Денис Аникин (Mail.Ru

Простая система горячих бэкапов

Tarantool Backup

Snapshot(immutable)

Transactionlog

Копируется просто командой scp!!!

Page 47: Основные кейсы использования in-memory СУБД на примере Тарантула и проектов Mail.Ru Group / Денис Аникин (Mail.Ru

Простая система горячего подключения реплики

Tarantool Replica

Snapshot(immutable)

Transactionlog

Копируется просто командой scp!!!

Page 48: Основные кейсы использования in-memory СУБД на примере Тарантула и проектов Mail.Ru Group / Денис Аникин (Mail.Ru

Простая система переноса с сервера на сервер

Tarantool Replica

Snapshot(immutable)

Transactionlog

Поднимаем репликуГоворим реплике, что мастер вот тамЖдем, пока реплика догонитсяДелаем реплику мастеромВсе!

Page 49: Основные кейсы использования in-memory СУБД на примере Тарантула и проектов Mail.Ru Group / Денис Аникин (Mail.Ru

Простая и понятная структура хранения

Tarantool

Snapshot(immutable)

Transactionlog

Все изменения применяются в лог транзакций и больше никуда на диск!

Page 50: Основные кейсы использования in-memory СУБД на примере Тарантула и проектов Mail.Ru Group / Денис Аникин (Mail.Ru

IoT-платформа (вишенка на торте)

• Сервер приложений + СУБД на IoT-устройствах• Может работать на устройствах даже с несколькими мегабайтами

оперативной памяти!• Может эффективно работать с медленными одноядерными ЦПУ• Может эффективно использовать ненадежную флэш-память• Может делать peer-to-peer master-master репликацию между устройствами

без облака• Может работать без доступа в Интернет

Page 51: Основные кейсы использования in-memory СУБД на примере Тарантула и проектов Mail.Ru Group / Денис Аникин (Mail.Ru

IoT-платформа (вишенка на торте)

• Мало оперативной памяти• Слабый ЦПУ• Моргающий Интернет• Сложно релизить софт• Медленная и ненадежная flash-память

IoTустройство

Page 52: Основные кейсы использования in-memory СУБД на примере Тарантула и проектов Mail.Ru Group / Денис Аникин (Mail.Ru

IoT-платформа (вишенка на торте) • Peer to peer master-master

replication• Состояние между устройствами

и облаком всегда синхронно!

IoTустройство

IoTустройство

Tarantool in Cloud

Page 53: Основные кейсы использования in-memory СУБД на примере Тарантула и проектов Mail.Ru Group / Денис Аникин (Mail.Ru

Заключение

• Я не хочу сказать, что Tarantool – это серебряная пуля

• Скорее Tarantool это СУБД-платформа-конструктор для хайлоуда, аналитики, всего, что должно работать в онлайне или риалтайм

• Если у вас онлайн и риалтайм, то обязательно взгляните на Tarantool!

Page 54: Основные кейсы использования in-memory СУБД на примере Тарантула и проектов Mail.Ru Group / Денис Аникин (Mail.Ru

На связи!

[email protected]

[email protected]

tarantool.org

facebook.com/TarantoolDatabase