[Moscow.pm] nosql сервер под очередь задач
Nick Knutov
mail на knutov.com
Сб Янв 12 14:08:28 PST 2013
Да, тарантул - вторая база, на которую я смотрел, но там тоже в
документации ничего подходящего не нашел, чтобы сразу, а не делать
вручную циклов с опросом.
У нас убунту лтс, но мы умеем пересобирать пакеты под себя.
Про остальное понял лишь примерно, но думаю к релизу документация про
эти моменты станет понятней :)
Заодним, а есть какая-нибудь статистика, пользуется ли тарантул сейчас
популярностью где-то за пределами разработчиков с собственными
серверами? Есть смысл добавлять его поддержку на шаред хостинге?
13.01.2013 3:38, Ivan Petrov пишет:
>> Подскажите, какие сейчас есть nosql серверы, вроде Redis, чтобы не
>> на яве и с биндингом для перла и можно было повесить хук на
>> появление данных? И, наверное, все данные должны сохранятся при
>> потере питания, а скорость не очень критична - данных не много.
>
> http://tarantool.org
>
> мы сейчас тарантул допилили до того чтобы можно было сделать
> полноценную очередь, мало того мы ее в процессе делания на нем и
> соответственно в ближ недели она появится
>
> вкратце что будет
>
> 1. консюмер может сказать "дай задачу" с таймаутом. далее ему либо не
> вернется ничего либо выдастся задача.
> 2. если задач нет консюмер будет ее ожидать, получать будет по факту
> ее появления
> 3. очередей поддерживается множество
> 4. если консьюмер отваливается сервер сам выводит задачу из статуса
> taken (взята) в статус ready (готова ко взятию)
> ну и тому подобное.
>
> примерный API что мы делаем - компиляция бинстолка и наших размышлений
> будет такой:
>
> продюсер:
>
> put - кладет задачу в очередь
> можно указать:
> - интервал задержки
> - TTL
> - TTR
> - приоритет
>
> push - то же что и put но в начало очереди
> такие задания выполнятся в первую очередь
>
> консюмер:
>
> take - берет задачу на выполнение (та помечается как taken), если за
> время TTR задача не будет исполнена, задача перепометится как
> ready
>
> ack - сообщает очереди что задача выполнена (задача удаляется из
> очереди). проверяет некоторые условия вроде того что "этот
> консюмер брал и только он может сообщить о выполнении)
>
> touch - продлить ttr выполняемой задаче
>
> release - вернуть задачу в очередь невыполненной (можно отложить
> повторное выполнение, изменить TTL, TTRL при этом). тоже
> проверяет некоторые условия
>
> requeue - вернуть задачу в очередь (в статус ready), но поставить ее
> не в начало очереди а в конец
>
> done - перевести задачу в статус "выполнена"
>
> bury - закопать задачу (например после N неудачных попыток)
>
>
> просто запросы:
>
> delete - удаление таска
> peek - получить таск
> meta - получить метаинфу по таску (TTL, TTR, счетчики итп)
> dig(unbury) - откопать задачу
> kick - откопать N задач
>
> stats - получить статистику по вчем очередям (счетчики/размеры итп)
>
> для Perl у тарантула есть DR::Tarantool который на базе AnyEvent
> внутрях и так же Coro. есть синхронная версия (AE+condvars).
> DR сейчас отвязали от зависимостей на libtarantool, поэтому не
> страдает от обновления этих библиотек и сильно проще в сборке стал.
> есть в Debian (правда пока в unstable)
>
> еще Монс пилил свой драйвер для тарантула, но в Debian я пока его не
> добавил (собираюсь). бенчмаркать он будет скорее всего получше чем DR.
>
>
> ну и еще насчет тарантула:
>
> тарантул потихоньку из noSQL БД превращается в апликейшн сервер.
>
> например у него появились сокеты (пока не запушены в основную ветку,
> но очень скоро там будут). таким образом у него появляется возможность
> ваять свои серверы на борту у которых будет еще и noSQL БД (одна из
> самых быстрых). серверы со своими протоколами (вплоть до http) которые
> по прикидкам будут бенчмаркать на уровне nodejs и возможно nginx. но
> при этом на борту таки БД. но к этому пока двигаемся. как там
> говорится "оставайтесь с нами" :)
>
--
Best Regards,
Nick Knutov
http://knutov.com
ICQ: 272873706
Voice: +7-904-84-23-130
Подробная информация о списке рассылки Moscow-pm