The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
Подскажите, на чем сделать очередь?, !*! universite, 24-Май-17, 04:03  [смотреть все]
Сейчас реализована через файл.
Добавляю элементы, дописывая в конец файла, каждый элемент с новой строки.
Беру N элементов очереди через awk и после обработки каждого єлемента удаляю через awk.

Хочется упростить свой велосипед, уменьшить IOPS.

Использовать Redis ? memcache ?

  • Подскажите, на чем сделать очередь?, !*! 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 к примеру. Промышленное решение рекомендованное лучшими блогописателями :)

      Применимость его в вашем случае- под еще большим вопросом.

  • Подскажите, на чем сделать очередь?, !*! ACCA, 22:56 , 25-Май-17 (7)
    > Использовать Redis ? memcache ?

    Ты бы ещё суперкомпьютер купил.

    mkfifo queue
    process1 > queue &
    process2 < queue

    4Mбайт буфер для твоих строк. Бонусом получаешь синхронизацию - если один процесс быстрее другого, то он будет притормаживать на I/O.

  • Подскажите, на чем сделать очередь?, !*! Аноним, 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
    Могу для вас похожие проблемы решать за небольшие биткоины.
    Решение для удаления файлов кроме трех последних тоже мое.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру