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

78
Tarantool в Badoo Хранение пользовательских сессий

Upload: mailru-group

Post on 16-Apr-2017

4.033 views

Category:

Software


5 download

TRANSCRIPT

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

Tarantool в BadooХранение пользовательских сессий

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

Типичная сессия

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

Количество запросов (read)

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

Количество запросов (write)

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

Количество сессий

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

История

● С++ версия (~ 2008 г.)

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

История

● С++ версия (~ 2008 г.)

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

C++ API

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

C версия

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

cpu

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

Время ответа (get_active_session)

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

Сменившаяся обстановка1. хранение данных только в памяти

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

old sstor2

Схема сложного рестарта

new sstor2

php

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

Сменившаяся обстановка1. хранение данных только в памяти2. сложный рестарт

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

Сменившаяся обстановка1. хранение данных только в памяти2. сложный рестарт3. BMA

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

Users: BMA vs Site

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

BMA -- поиск стораджа

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

BMA -- поиск стораджа● memcachedb

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

BMA -- поиск стораджа● memcachedb● redis

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

BMA -- поиск стораджа● memcachedb● redis● handler socket

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

BMA -- поиск стораджа● memcachedb● redis● handler socket● mongodb

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

BMA -- поиск стораджа● memcachedb● redis● handler socket● mongodb● tarantool

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

BMA -- поиск стораджа● memcachedb● redis● handler socket● mongodb● handler socket + memcached

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

BMA: handler socket updates, rps

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

BMA: handler socket reads, rps

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

BMA: memcache requests, rpm

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

Сменившаяся обстановка● хранение данных только в памяти● сложный рестарт● поддержка двух параллельных миров

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

Сменившаяся обстановка● хранение данных только в памяти● сложный рестарт● поддержка двух параллельных миров● Mobile Web

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

Mobile Web: users

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

Сменившаяся обстановка● хранение данных только в памяти● сложный рестарт● поддержка трёх параллельных миров

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

Сменившаяся обстановка● хранение данных только в памяти● сложный рестарт● поддержка трёх параллельных миров● race conditions

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

race condition

script 1 script 2 val

get 0

get 0

val++, set 1

val++, set 1

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

Конфликты

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

Сменившаяся обстановка● хранение данных только в памяти● сложный рестарт● поддержка трёх параллельных миров● race conditions

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

Всякое бывает

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

Сменившаяся обстановка● хранение данных только в памяти● сложный рестарт● поддержка трёх параллельных миров● race conditions● отказоустойчивость

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

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

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

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

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

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

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

tarantool: there no problems anymore

Проблема Тарантул решает

данные только в памяти ну это понятно

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

Выход есть: тарантул

Проблема Тарантул решает

сложный рестарт деплой скриптов + dofile()

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

Выход есть: тарантул

Проблема Тарантул решает

три мира засунем всё в один

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

Выход есть: тарантул

Проблема Тарантул решает

race condition бьём большую сессию на группыcas для групп

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

Выход есть: тарантул

Проблема Тарантул решает

отказоустойчивость мастер-слейв репликацией

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

box.space.sessions

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

box.space.users

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

box.space.users

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

box.space.users

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

ss_create

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

ss_set

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

ss_set: cas logic

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

ss_set: cas logic

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

ss_get

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

ss_del

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

ss_get_user_sessions

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

ss_get_active_session

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

ss_attach/ss_detach

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

ss_stats

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

php-connector

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

php-connector● Бага с 32 байтами

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

php-connector● Бага с 32 байтами● рассинхронизация

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

Wireshark dissectorhttps://github.com/badoo/tarantool-dissector

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

Wireshark with tarantool dissector

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

рассинхронизация

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

php-connector● Бага с 32 байтами● рассинхронизация● таймауты

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

php-connector● Бага с 32 байтами● рассинхронизация● таймауты● всякая мелочь

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

Тарантул: корки

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

at_exit

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

тарантул: ffi crash

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

Тарантул: lua crash

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

Happy end

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

tarantool: graphs

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

Хотелки

1. tarantool.persistent в tarantool-php

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

tarantool->connect() 1.5 vs 1.6

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

tarantool->connect() 1.5 vs 1.6

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

Хотелки

1. tarantool.persistent в tarantool-php2. статистику по ресурсам

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

Хотелки

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

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

Хотелки

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

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

Окончание