SlideShare a Scribd company logo
Tarantool в Badoo
Хранение пользовательских сессий
Типичная сессия
Количество запросов (read)
Количество запросов (write)
Количество сессий
История
● С++ версия (~ 2008 г.)
История
● С++ версия (~ 2008 г.)
C++ API
C версия
cpu
Время ответа (get_active_session)
Сменившаяся обстановка
1. хранение данных только в памяти
old sstor2
Схема сложного рестарта
new sstor2
php
Сменившаяся обстановка
1. хранение данных только в памяти
2. сложный рестарт
Сменившаяся обстановка
1. хранение данных только в памяти
2. сложный рестарт
3. BMA
Users: BMA vs Site
BMA -- поиск стораджа
BMA -- поиск стораджа
● memcachedb
BMA -- поиск стораджа
● memcachedb
● redis
BMA -- поиск стораджа
● memcachedb
● redis
● handler socket
BMA -- поиск стораджа
● memcachedb
● redis
● handler socket
● mongodb
BMA -- поиск стораджа
● memcachedb
● redis
● handler socket
● mongodb
● tarantool
BMA -- поиск стораджа
● memcachedb
● redis
● handler socket
● mongodb
● handler socket + memcached
BMA: handler socket updates, rps
BMA: handler socket reads, rps
BMA: memcache requests, rpm
Сменившаяся обстановка
● хранение данных только в памяти
● сложный рестарт
● поддержка двух параллельных миров
Сменившаяся обстановка
● хранение данных только в памяти
● сложный рестарт
● поддержка двух параллельных миров
● Mobile Web
Mobile Web: users
Сменившаяся обстановка
● хранение данных только в памяти
● сложный рестарт
● поддержка трёх параллельных миров
Сменившаяся обстановка
● хранение данных только в памяти
● сложный рестарт
● поддержка трёх параллельных миров
● race conditions
race condition
script 1 script 2 val
get 0
get 0
val++, set 1
val++, set 1
Конфликты
Сменившаяся обстановка
● хранение данных только в памяти
● сложный рестарт
● поддержка трёх параллельных миров
● race conditions
Всякое бывает
Сменившаяся обстановка
● хранение данных только в памяти
● сложный рестарт
● поддержка трёх параллельных миров
● race conditions
● отказоустойчивость
Почему тарантул? Причина № 0
Tarantool: хранение истории посещений
https://www.youtube.com/watch?v=O-MGE3wHkqs
Почему тарантул? Причина № 0
Tarantool: хранение истории посещений
https://www.youtube.com/watch?v=O-MGE3wHkqs
tarantool: there no problems anymore
Проблема Тарантул решает
данные только в памяти ну это понятно
Выход есть: тарантул
Проблема Тарантул решает
сложный рестарт деплой скриптов + dofile()
Выход есть: тарантул
Проблема Тарантул решает
три мира засунем всё в один
Выход есть: тарантул
Проблема Тарантул решает
race condition бьём большую сессию на группы
cas для групп
Выход есть: тарантул
Проблема Тарантул решает
отказоустойчивость мастер-слейв репликацией
box.space.sessions
box.space.users
box.space.users
box.space.users
ss_create
ss_set
ss_set: cas logic
ss_set: cas logic
ss_get
ss_del
ss_get_user_sessions
ss_get_active_session
ss_attach/ss_detach
ss_stats
php-connector
php-connector
● Бага с 32 байтами
php-connector
● Бага с 32 байтами
● рассинхронизация
Wireshark dissector
https://github.com/badoo/tarantool-dissector
Wireshark with tarantool dissector
рассинхронизация
php-connector
● Бага с 32 байтами
● рассинхронизация
● таймауты
php-connector
● Бага с 32 байтами
● рассинхронизация
● таймауты
● всякая мелочь
Тарантул: корки
at_exit
тарантул: ffi crash
Тарантул: lua crash
Happy end
tarantool: graphs
Хотелки
1. tarantool.persistent в tarantool-php
tarantool->connect() 1.5 vs 1.6
tarantool->connect() 1.5 vs 1.6
Хотелки
1. tarantool.persistent в tarantool-php
2. статистику по ресурсам
Хотелки
1. tarantool.persistent в tarantool-php
2. статистику по ресурсам
3. шардинг
Хотелки
1. tarantool.persistent в tarantool-php
2. статистику по памяти
3. шардинг
4. админские таски
Окончание

More Related Content

PDF
Осваиваем Tarantool 1.6 / Евгений Шадрин (Sberbank Digital Ventures)
PPTX
Разработка real-time приложений с RethinkDB / Илья Вербицкий (Независимый кон...
PPTX
Dennis Anikin - Tarantool Case Studies in Mail.Ru Group
PDF
Доклад Антона Поварова на Tarantool Meetup. "Tarantool в Badoo: хранение исто...
PDF
nginx.CHANGES.2015 / Игорь Сысоев, Валентин Бартенев (Nginx)
PDF
Мониторинг ожиданий в PostgreSQL / Курбангалиев Ильдус (Postgres Professional)
PDF
Современная операционная система: что надо знать разработчику / Александр Кри...
PDF
Что особенного в СУБД для данных в оперативной памяти / Константин Осипов (Ta...
Осваиваем Tarantool 1.6 / Евгений Шадрин (Sberbank Digital Ventures)
Разработка real-time приложений с RethinkDB / Илья Вербицкий (Независимый кон...
Dennis Anikin - Tarantool Case Studies in Mail.Ru Group
Доклад Антона Поварова на Tarantool Meetup. "Tarantool в Badoo: хранение исто...
nginx.CHANGES.2015 / Игорь Сысоев, Валентин Бартенев (Nginx)
Мониторинг ожиданий в PostgreSQL / Курбангалиев Ильдус (Postgres Professional)
Современная операционная система: что надо знать разработчику / Александр Кри...
Что особенного в СУБД для данных в оперативной памяти / Константин Осипов (Ta...

What's hot (20)

PDF
Строим сервисы на базе Nginx и Tarantool / Василий Сошников, Андрей Дроздов (...
PDF
PostgreSQL: практические примеры оптимизации SQL-запросов / Иван Фролков (Po...
PPTX
Тюним память и сетевой стек в Linux: история перевода высоконагруженных серве...
PPTX
Flashcache в mamba.ru / Яковлев Александр Юрьевич (ЗАО Мамба)
PDF
Принципы и приёмы обработки очередей / Константин Осипов (Mail.ru)
PDF
Хранение данных на виниле / Константин Осипов (tarantool.org)
PDF
Путь от монолита на PHP к микросервисам на Scala / Денис Иванов (2GIS)
ODP
Константин Осипов (Mail.Ru)
PPTX
Основные кейсы использования in-memory СУБД на примере Тарантула и проектов M...
PPTX
Поиск наизнанку
PDF
Сага о кластере. Все что вы хотели знать про горизонтальное масштабирование в...
PDF
Linux API с точки зрения разработчика веб-сервера / Валентин Бартенев (NGINX,...
PPT
Основы индексирования и расширенные возможности EXPLAIN в MySQL / Василий Лук...
PDF
Реализация восстановления после аварий / Сергей Бурладян (Avito)
PPTX
За счет чего Tarantool такой оптимальный / Денис Аникин (Mail.Ru)
PPTX
Защита данных и датацентров от катастроф. Подход Nutanix / Максим Шапошников ...
PDF
Практика совместного использования Lua и C в opensource спам-фильтре Rspamd /...
PPTX
Mysql vs postgresql
PDF
Оптимизация программ для современных процессоров и Linux, Александр Крижановс...
PDF
Использование Tarantool для хранения чатов и лент друзей (Константин Осипов)
Строим сервисы на базе Nginx и Tarantool / Василий Сошников, Андрей Дроздов (...
PostgreSQL: практические примеры оптимизации SQL-запросов / Иван Фролков (Po...
Тюним память и сетевой стек в Linux: история перевода высоконагруженных серве...
Flashcache в mamba.ru / Яковлев Александр Юрьевич (ЗАО Мамба)
Принципы и приёмы обработки очередей / Константин Осипов (Mail.ru)
Хранение данных на виниле / Константин Осипов (tarantool.org)
Путь от монолита на PHP к микросервисам на Scala / Денис Иванов (2GIS)
Константин Осипов (Mail.Ru)
Основные кейсы использования in-memory СУБД на примере Тарантула и проектов M...
Поиск наизнанку
Сага о кластере. Все что вы хотели знать про горизонтальное масштабирование в...
Linux API с точки зрения разработчика веб-сервера / Валентин Бартенев (NGINX,...
Основы индексирования и расширенные возможности EXPLAIN в MySQL / Василий Лук...
Реализация восстановления после аварий / Сергей Бурладян (Avito)
За счет чего Tarantool такой оптимальный / Денис Аникин (Mail.Ru)
Защита данных и датацентров от катастроф. Подход Nutanix / Максим Шапошников ...
Практика совместного использования Lua и C в opensource спам-фильтре Rspamd /...
Mysql vs postgresql
Оптимизация программ для современных процессоров и Linux, Александр Крижановс...
Использование Tarantool для хранения чатов и лент друзей (Константин Осипов)
Ad

Viewers also liked (20)

PDF
Tarantool как платформа для микросервисов / Антон Резников, Владимир Перепели...
PDF
Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)
PDF
"Обзор Tarantool DB"
PDF
Golang в avito
PDF
«Как 200 строк на Go помогли нам освободить 15 серверов» – Паша Мурзаков (Badoo)
PDF
Олег Анастасьев "Ближе к Cassandra". Выступление на Cassandra Conf 2013
PDF
Cоциальный граф "Одноклассников" в myTarget
PDF
Франкенштейнизация Voldemort или key-value данные в Одноклассниках. Роман Ан...
PDF
Micro-services, Упрощаем монолитные приложения
PDF
Класс!ная Cassandra
PDF
"Building data streams" Константин Евтеев (Avito)
PDF
За гранью NoSQL: NewSQL на Cassandra
PDF
Зачем в Avito Аналитика?
PDF
HBase on Dev{Highload}
PDF
My talk at Highload++ 2015
PDF
"Кластеры баз данных: делаем сложные вещи просто" Андрей Тихонов (Avito)
PDF
[RakutenTechConf2014] [D-4] The next step of LeoFS and Introducing NewDB Project
PDF
Tarantool: как обрабатывать 
1,5 млрд запросов в сутки?
PDF
(Не)безопасный frontend
PDF
Использование Tarantool в качестве платформы виртуализации данных / Константи...
Tarantool как платформа для микросервисов / Антон Резников, Владимир Перепели...
Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)
"Обзор Tarantool DB"
Golang в avito
«Как 200 строк на Go помогли нам освободить 15 серверов» – Паша Мурзаков (Badoo)
Олег Анастасьев "Ближе к Cassandra". Выступление на Cassandra Conf 2013
Cоциальный граф "Одноклассников" в myTarget
Франкенштейнизация Voldemort или key-value данные в Одноклассниках. Роман Ан...
Micro-services, Упрощаем монолитные приложения
Класс!ная Cassandra
"Building data streams" Константин Евтеев (Avito)
За гранью NoSQL: NewSQL на Cassandra
Зачем в Avito Аналитика?
HBase on Dev{Highload}
My talk at Highload++ 2015
"Кластеры баз данных: делаем сложные вещи просто" Андрей Тихонов (Avito)
[RakutenTechConf2014] [D-4] The next step of LeoFS and Introducing NewDB Project
Tarantool: как обрабатывать 
1,5 млрд запросов в сутки?
(Не)безопасный frontend
Использование Tarantool в качестве платформы виртуализации данных / Константи...
Ad

Similar to Дмитрий Новиков - Tarantool в Badoo (20)

PDF
Олег Царев, Кирилл Коринский Сравнительный анализ хранилищ данных
PDF
Address Sanitizer или как сделать программы на c/с++ надежнее и безопаснее (К...
PDF
Как перезапустить проблемное приложение и одновременно отладить его
PPT
Лекция № 2 Организация ЭВМ и систем
PPT
Лекция №2 Организация ЭВМ и систем
PDF
Реактивный раздатчик ok.ru/music
PPTX
Погружение в виртуальную память и большие страницы / Константин Новаковский (...
PDF
Опыт построения комплексного катастрофоустойчивого решения NetApp и фрагмента...
PDF
Build your own multistack JS startup
PDF
Построение мультисервисного стартапа в реалиях full-stack javascript
ODP
распределенное файловое хранилище (Nginx, zfs, perl). перепелица мамонтов. зал 2
PDF
Внутреннее устройство PostgreSQL: временные таблицы и фрагментация памяти / Г...
PPTX
Опыт внедрения и использования распределенной системы хранения данных на осно...
PDF
стриминг видео на ок
PDF
Andrey Borodin "Architecture of online backup for various DBMS"
PDF
Поговорим про память
PDF
Call of Postgres: Advanced Operations (part 2)
PDF
Кадры решают все, или стриминг видео в «Одноклассниках». Александр Тоболь
PDF
"Мы два месяца долбались, а потом построили индекс" (c) Аксенов
PDF
Архитектура и программирование потоковых многоядерных процессоров для научных...
Олег Царев, Кирилл Коринский Сравнительный анализ хранилищ данных
Address Sanitizer или как сделать программы на c/с++ надежнее и безопаснее (К...
Как перезапустить проблемное приложение и одновременно отладить его
Лекция № 2 Организация ЭВМ и систем
Лекция №2 Организация ЭВМ и систем
Реактивный раздатчик ok.ru/music
Погружение в виртуальную память и большие страницы / Константин Новаковский (...
Опыт построения комплексного катастрофоустойчивого решения NetApp и фрагмента...
Build your own multistack JS startup
Построение мультисервисного стартапа в реалиях full-stack javascript
распределенное файловое хранилище (Nginx, zfs, perl). перепелица мамонтов. зал 2
Внутреннее устройство PostgreSQL: временные таблицы и фрагментация памяти / Г...
Опыт внедрения и использования распределенной системы хранения данных на осно...
стриминг видео на ок
Andrey Borodin "Architecture of online backup for various DBMS"
Поговорим про память
Call of Postgres: Advanced Operations (part 2)
Кадры решают все, или стриминг видео в «Одноклассниках». Александр Тоболь
"Мы два месяца долбались, а потом построили индекс" (c) Аксенов
Архитектура и программирование потоковых многоядерных процессоров для научных...

More from Mail.ru Group (20)

PDF
Автоматизация без тест-инженеров по автоматизации, Мария Терехина и Владислав...
PDF
BDD для фронтенда. Автоматизация тестирования с Cucumber, Cypress и Jenkins, ...
PDF
Другая сторона баг-баунти-программ: как это выглядит изнутри, Владимир Дубровин
PDF
Использование Fiddler и Charles при тестировании фронтенда проекта pulse.mail...
PDF
Управление инцидентами в Почте Mail.ru, Антон Викторов
PDF
DAST в CI/CD, Ольга Свиридова
PDF
Почему вам стоит использовать свой велосипед и почему не стоит Александр Бел...
PDF
CV в пайплайне распознавания ценников товаров: трюки и хитрости Николай Масл...
PDF
RAPIDS: ускоряем Pandas и scikit-learn на GPU Павел Клеменков, NVidia
PDF
WebAuthn в реальной жизни, Анатолий Остапенко
PDF
AMP для электронной почты, Сергей Пешков
PDF
Как мы захотели TWA и сделали его без мобильных разработчиков, Данила Стрелков
PDF
Кейсы использования PWA для партнерских предложений в Delivery Club, Никита Б...
PDF
Метапрограммирование: строим конечный автомат, Сергей Федоров, Яндекс.Такси
PDF
Как не сделать врагами архитектуру и оптимизацию, Кирилл Березин, Mail.ru Group
PDF
Этика искусственного интеллекта, Александр Кармаев (AI Journey)
PDF
Нейро-машинный перевод в вопросно-ответных системах, Федор Федоренко (AI Jour...
PDF
Конвергенция технологий как тренд развития искусственного интеллекта, Владими...
PDF
Обзор трендов рекомендательных систем от Пульса, Андрей Мурашев (AI Journey)
PDF
Мир глазами нейросетей, Данила Байгушев, Александр Сноркин ()
Автоматизация без тест-инженеров по автоматизации, Мария Терехина и Владислав...
BDD для фронтенда. Автоматизация тестирования с Cucumber, Cypress и Jenkins, ...
Другая сторона баг-баунти-программ: как это выглядит изнутри, Владимир Дубровин
Использование Fiddler и Charles при тестировании фронтенда проекта pulse.mail...
Управление инцидентами в Почте Mail.ru, Антон Викторов
DAST в CI/CD, Ольга Свиридова
Почему вам стоит использовать свой велосипед и почему не стоит Александр Бел...
CV в пайплайне распознавания ценников товаров: трюки и хитрости Николай Масл...
RAPIDS: ускоряем Pandas и scikit-learn на GPU Павел Клеменков, NVidia
WebAuthn в реальной жизни, Анатолий Остапенко
AMP для электронной почты, Сергей Пешков
Как мы захотели TWA и сделали его без мобильных разработчиков, Данила Стрелков
Кейсы использования PWA для партнерских предложений в Delivery Club, Никита Б...
Метапрограммирование: строим конечный автомат, Сергей Федоров, Яндекс.Такси
Как не сделать врагами архитектуру и оптимизацию, Кирилл Березин, Mail.ru Group
Этика искусственного интеллекта, Александр Кармаев (AI Journey)
Нейро-машинный перевод в вопросно-ответных системах, Федор Федоренко (AI Jour...
Конвергенция технологий как тренд развития искусственного интеллекта, Владими...
Обзор трендов рекомендательных систем от Пульса, Андрей Мурашев (AI Journey)
Мир глазами нейросетей, Данила Байгушев, Александр Сноркин ()

Дмитрий Новиков - Tarantool в Badoo