Tarantool_qs

Preview:

Citation preview

Tarantool/Qs,

… или об очередях в Tarantoolе

Константин Осипов, kostja@tarantool.org

Quiz: что вы знаете о Tarantool

● Какие есть типы данных?

● Какие есть типы индексов?

● Как делаются бэкапы?

● В чём главное отличие от Redis?

Tarantool: главные факты

● In memory, write ahead logged

● Безразмерные пространства кортежей

● HASH, TREE индексы

● Lua процедуры

● Replication & Backup

Архитектура сервера

Архитектура сервера

Очереди: введение

● СУБД — пионер технологии очередей● Транзакции необходимы, но не достаточны● Очереди — основа High Availability и Scalability

Очереди: за и против

+ Клиент и сервер полностью «развязаны»

+ Состояние задачи всегда известно

+ Применимо для Load Balancing

+ Поддержка приоритетов

- доп. сущность

- больше операций на задачу

Очереди в Web Apps● Рассылка email

● Сжатие картинок

● Наш use case: avatar prefetching:

Tarantool: «очередной» тюнинг

● Развитые Lua процедуры:

– box.fiber, box.cfg, box.space● Специализированные средства IPC

– box.ifc.channel● Специализированные структуры данных

– частичные и bitmap индексы

Queue API

● За основу взято API beanstalkd

● queue.put(), take(), ack(), delete(), release() 

● Учитывает важные вопросы управления очередью:

– Приоритеты

– Таймауты

– Poisoned tasks

«Зависшие» задачи

● box.fiber.id(): идентификатор сессии

● Box.fiber.take() присваивает задаче id сессии

● Background fiber находит и удалаятет «зависшие» задачи

Ожидание в очереди

● box.ifc.channel(): обмен сообщениями между процедурами

● channel:put(), channel:get()

● channel:is_full(), channel:has_waiters()

Системные каналы

● Оповещают о системных событиях● on_connect, on_disconnect,

on_snapshot● pay per use

Частичные индексы

● index.type = HASH|TREE● index.where = lua_function● Содержит лишь данные,

удовлетворяющие предикату

Заключение● Tarantool/Box — high-performance data

engine● Tarnatool/Lua — building block для ваших

highload задач● Tarantool — наш взгляд на то, какой должна

быть удобная СУБД

Ссылки

kostja.osipov@gmail.com

http://tarantool.org

http://github.com/mailru/tarantool - исходный кодhttp://github.com/mailru/tntlua - репозиторий хранимых процедурhttp://nosql-databases.org - обзор альтернатив NoSQLhttp://groups.google.com/group/tarantool-ru - список рассылкиhttp://tarantool.org/dist/ - всегда свежие .tar.gz и .rpmhttp://habrahabr.ru/blogs/nosql - NoSQL на хабре

Константин ОсиповПрограммист, tarantool.org

kostja@tarantool.org

СПАСИБО!