14
Tarantool/Silverbox efficient in-memory storage Юрий Востриков, Mail.Ru 26 октября 2010, HighLoad++

Tarantool Silverbox, Юрий Востриков

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: Tarantool Silverbox, Юрий Востриков

Tarantool/Silverboxefficient in-memory storage

Юрий Востриков, Mail.Ru

26 октября 2010, HighLoad++

Page 2: Tarantool Silverbox, Юрий Востриков

Высоконагруженные плоские таблицы

Примеры

I sessionsI passwd

Характерные особенности

I select only by (primary) keyI no joinsI no complex wheres, no aggregatesI sizeof(data) < 256BI высокая доступность

Page 3: Tarantool Silverbox, Юрий Востриков

Скорость разных типов памяти

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

Page 4: Tarantool Silverbox, Юрий Востриков

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

Page 5: Tarantool Silverbox, Юрий Востриков

Устройство SLAB аллокатора

I Высокая скоростьI Рассчитан на хранение множества мелких объектовI Низкие накладные расходыI Отсутствие внешней фрагментации

meta

allo

c

free . . .

free list

“phantom” pointers

4MB

Page 6: Tarantool Silverbox, Юрий Востриков

Массаракш: код наизнанку

FSM, libev only

read1

read2

process

write1

loop

Fiber, libev+libcoro

read1

read2

process

write1

loop

Page 7: Tarantool Silverbox, Юрий Востриков

Persistance

WALread

prepare

commit/rollback

reply

writer

Snapshot

main process

child

HDDfork

I Запись строго последовательнаяI Copy on Write

Page 8: Tarantool Silverbox, Юрий Востриков

Hot Standby

Local

port

master beholder

I Zero downtime апгрейд

Remote/Log Streaming

master replica1

replica2

I Readonly реплики наудаленных серверах

Page 9: Tarantool Silverbox, Юрий Востриков

IProto/Silverbox binary protocol

I async safe: каждый запрос маркирован sync числомI tuple storage

< key1, value1, key2, value2, . . . , valuen >

I атомарные операции: +/−, and , or , xorI namespacesI индексы — u32 или stringI несколько индексов в одном namespace

Page 10: Tarantool Silverbox, Юрий Востриков

Эмуляция memcached

I нет evictionsI expire — отложенный, с помощью background fiber

Page 11: Tarantool Silverbox, Юрий Востриков

Производительность

I latencyI цена сисколаI пропускная способность дисков невелика

1 KB × 100000 rps = 1MB × 100rps = 100 MB/secI u32 в два раза быстрее string key

Page 12: Tarantool Silverbox, Юрий Востриков

Что дальше?

I новый формат WALI расширенная версия бинарного протоколаI LuaI Эмуляция протокола redis

Page 13: Tarantool Silverbox, Юрий Востриков

Open Source

http://opensource.mail.ru/http://github.com/mailru/[email protected]

Page 14: Tarantool Silverbox, Юрий Востриков

Спасибо!

Вопросы?