- Подскажите, на чем сделать очередь?, f2404, 04:30 , 24-Май-17 (1)
> Сейчас реализована через файл. > Добавляю элементы, дописывая в конец файла, каждый элемент с новой строки. > Беру N элементов очереди через awk и после обработки каждого єлемента удаляю > через awk. > Хочется упростить свой велосипед, уменьшить IOPS. > Использовать Redis ? memcache ?Просто хранить файл в ОЗУ (tmpfs)?
- Подскажите, на чем сделать очередь?, ыы, 09:12 , 24-Май-17 (2)
> Сейчас реализована через файл. > Добавляю элементы, дописывая в конец файла, каждый элемент с новой строки. > Беру N элементов очереди через awk и после обработки каждого єлемента удаляю > через awk. > Хочется упростить свой велосипед, уменьшить IOPS. > Использовать Redis ? memcache ?Упрощение велосипеда зависит области его применения. Следует определить что реально вам от него надо, из этого будет очевиден путь его упрощения. Вы же описали сам велосипед, без того зачем он нужен.
- Подскажите, на чем сделать очередь?, ыы, 09:45 , 24-Май-17 (3)
>> Сейчас реализована через файл. >> Добавляю элементы, дописывая в конец файла, каждый элемент с новой строки. >> Беру N элементов очереди через awk и после обработки каждого єлемента удаляю >> через awk. >> Хочется упростить свой велосипед, уменьшить IOPS. >> Использовать Redis ? memcache ? > Упрощение велосипеда зависит области его применения. Следует определить что реально вам > от него надо, из этого будет очевиден путь его упрощения. > Вы же описали сам велосипед, без того зачем он нужен.Поясню свою мысль: самая простая очередь - это на перле массив. push помещает в конец массива строку shift- берет с начала массива строку и удаляет ее из массива. делаете это в бесконечном цикле... Эффективность - на порядки выше вашего решения. Применимость в вашем случае - под вопросом. Или, если ваше приложение подвержено большим нагрузкам - пойти в поисковик и набрать "сервер очередей". Тот же Gearman к примеру. Промышленное решение рекомендованное лучшими блогописателями :) Применимость его в вашем случае- под еще большим вопросом.
- Подскажите, на чем сделать очередь?, universite, 10:44 , 24-Май-17 (4) –1
- Подскажите, на чем сделать очередь?, universite, 12:32 , 25-Май-17 (5)
- Подскажите, на чем сделать очередь?, PavelR, 14:38 , 25-Май-17 (6)
> И gearmand интересно.Есть еще beanstalkd, знакомые веб-разработчики почему-то на него ушли с gearmand. Не знаю, насколько он интересен в сравнении с gearmand.
- Подскажите, на чем сделать очередь?, ACCA, 22:56 , 25-Май-17 (7)
> Использовать Redis ? memcache ?Ты бы ещё суперкомпьютер купил. mkfifo queue process1 > queue & process2 < queue 4Mбайт буфер для твоих строк. Бонусом получаешь синхронизацию - если один процесс быстрее другого, то он будет притормаживать на I/O.
- Подскажите, на чем сделать очередь?, ыы, 09:55 , 26-Май-17 (8)
> быстрее другого, то он будет притормаживать на I/O.Это очень, очень плохой подход.
- Подскажите, на чем сделать очередь?, DeadLoco, 19:13 , 04-Июн-17 (9)
> Это очень, очень плохой подход.Чем же?
- Подскажите, на чем сделать очередь?, ACCA, 07:04 , 28-Июн-17 (10)
>> Это очень, очень плохой подход. > Чем же?Тем, что притормаживает. Можно молча выбрасывать строки, которые не успели обработать. Micro$oft way - Word именно так печатает документы, в которых обсчитался с нумерацией страниц.
- Подскажите, на чем сделать очередь?, DeadLoco, 14:53 , 01-Июл-17 (11)
>>> Это очень, очень плохой подход. >> Чем же? > Тем, что притормаживает.фейспалм.тхт Ну, значит никсовые пайпы, на которых строятся конвейеры процессов, и которые существуют на свете дольше, чем вы - это "очень, очень плохой подход"? Пионеры юные, головы чугунные (с)
- Подскажите, на чем сделать очередь?, Аноним, 16:42 , 03-Окт-17 (12)
//Схватился за головуИспользовать /dev/head Если вы любите файлы, то должны понимать, что ФС это на самом деле БД, и строчкой в ней является сам файл, а не строка в файле. Вместо файла делаете директорию. В ней уже файлы с задачами. Обрабатываете эти файлы по отдельности и удаляете после. Выгода в том, что процессы ставящие задачи не ждут, пока другие туда запишут. Процессы исполнители можно запускать как угодно. while true do find tasks -type f | xargs -l -I{} sh worker.sh {} 2>&1 >>workers.log && rm -f {} sleep 1; done Как тут заметили, директорию можно смонтировать как тмпфс. Тогда вся жизнь будет происходить в памяти. Но при ребуте сервера вы будете терять данные. Если задания не критичные, то вперед. Я бы так делать не стал. PS Могу для вас похожие проблемы решать за небольшие биткоины. Решение для удаления файлов кроме трех последних тоже мое.
|