Upload
fuenteovejuna
View
1.220
Download
8
Embed Size (px)
DESCRIPTION
Citation preview
Tarantool/Silverboxefficient in-memory storage
Юрий Востриков, Mail.Ru
26 октября 2010, HighLoad++
Высоконагруженные плоские таблицы
Примеры
I sessionsI passwd
Характерные особенности
I select only by (primary) keyI no joinsI no complex wheres, no aggregatesI sizeof(data) < 256BI высокая доступность
Скорость разных типов памяти
Tape is dead, disk is tape, RAM is disk.
Задержка произвольного доступа
I RAM — 25 nsI HDD — 8’000’000 ns
Пропускная способность последовательного доступа
I RAM — 6’400 MB/sI HDD — 170 MB/s
The Answer
Tarantool — frameworkI In-memory storageI Network IOI Persistence facilitiesI Hot Standby/Replication
SilverBox — Key-Value storage
I Tuple storageI Native binary protocolI Memcached protocol emulation
Устройство SLAB аллокатора
I Высокая скоростьI Рассчитан на хранение множества мелких объектовI Низкие накладные расходыI Отсутствие внешней фрагментации
meta
allo
c
free . . .
free list
“phantom” pointers
4MB
Массаракш: код наизнанку
FSM, libev only
read1
read2
process
write1
loop
Fiber, libev+libcoro
read1
read2
process
write1
loop
Persistance
WALread
prepare
commit/rollback
reply
writer
Snapshot
main process
child
HDDfork
I Запись строго последовательнаяI Copy on Write
Hot Standby
Local
port
master beholder
I Zero downtime апгрейд
Remote/Log Streaming
master replica1
replica2
I Readonly реплики наудаленных серверах
IProto/Silverbox binary protocol
I async safe: каждый запрос маркирован sync числомI tuple storage
< key1, value1, key2, value2, . . . , valuen >
I атомарные операции: +/−, and , or , xorI namespacesI индексы — u32 или stringI несколько индексов в одном namespace
Эмуляция memcached
I нет evictionsI expire — отложенный, с помощью background fiber
Производительность
I latencyI цена сисколаI пропускная способность дисков невелика
1 KB × 100000 rps = 1MB × 100rps = 100 MB/secI u32 в два раза быстрее string key
Что дальше?
I новый формат WALI расширенная версия бинарного протоколаI LuaI Эмуляция протокола redis
Open Source
http://opensource.mail.ru/http://github.com/mailru/[email protected]
Спасибо!
Вопросы?