Задать вопрос

Быстрый на запись сервис/БД для логов?

Доброго дня. Возможно я изобретаю колесо, но требуется создать сервис для сбора
и обработки частых событий. События прибывают REST/POST запросом и несут в себе
немного данных в JSON. Периодически группа рабочих задач бежит по собранным
событиям и строит свои расчеты.

Требуется некий сервис/БД, оптимизированная под запись логов. В идеале такой
сервис должен представлять собой большое полотно, на котором размещены два
курсора. Один курсор только пишет, позади него курсор только читает. Казалось
бы, это простейшая работа с файлом, но есть требования:

* Курсор на запись должен писать крайне быстро, желательно без реального I/O,
сразу возвращая управление. Редкая потеря событий не проблема. Некоторым
асинхронным способом база должна регулярно сбрасывать накопленное на диск.
* В буквальном смысле сотни процессов могут одновременно писать события.
Т.к. база пишется только на добавление, никакие блокировки не допустимы.
* Чтение выполняется большими блоками и сразу после чтения данные
автоматически удаляются. Читают не более десятка процессов одновременно.
Один процесс всегда читает один блок или должен быть механизм, согласно
которому два процесса могут узнать, что прочли пересекающиеся данные.
* Данных может быть очень много. С точки зрения будущего, если такой сервис
можно собрать в кластер, то было бы совсем идеально. Иначе придется читать
чаще.
* Так как данных много, то их совсем не за чем держать в памяти попусту,
кроме как для буфера записи.

Может кто–то сталкивался с подобной задачей и может посоветовать как/куда
сбрасывать полотно с логами?
  • Вопрос задан
  • 3520 просмотров
Подписаться 5 Оценить Комментировать
Ответ пользователя portfelio К ответам на вопрос (6)
@portfelio
Кластер из 2+ машин с Riak. Запись в кластер через PB (en.wikipedia.org/wiki/Protocol_Buffers) если есть реализация на вашем ЯП или через REST.
Ответ написан