Дмитрий Новиков - tarantool в badoo

Post on 16-Apr-2017

4.033 Views

Category:

Software

5 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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● отказоустойчивость

Почему тарантул? Причина № 0Tarantool: хранение истории посещений

https://www.youtube.com/watch?v=O-MGE3wHkqs

Почему тарантул? Причина № 0Tarantool: хранение истории посещений

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 dissectorhttps://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-php2. статистику по ресурсам

Хотелки

1. tarantool.persistent в tarantool-php2. статистику по ресурсам3. шардинг

Хотелки

1. tarantool.persistent в tarantool-php2. статистику по памяти3. шардинг4. админские таски

Окончание

top related