У меня есть установка, в которой несколько серверов Apache / PHP собирают данные из запроса - в основном параметры Get, обрабатывают их и сохраняют либо в базу данных, либо в плоский файл. С базой данных все в порядке, так как каждый может подключаться независимо и выполнять обновления, но с плоским файлом я использую заказную очередь, которая отправляет все данные на один сервер, на котором находится плоский файл. Мои вопросы:
Могу ли я использовать какие-либо хорошие и надежные системы обработки файлов журналов. Мне в основном нужно агрегировать данные, поступающие в файлы журнала, и сохранять их после некоторой пост-обработки в БД. Если это возможно, я могу просто иметь nginx для регистрации всех запросов (access.log) и запускать серверные демоны для обработки журналов. Я получаю около 1000+ запросов в секунду, поэтому мне определенно нужна очень надежная система
Существуют ли какие-либо хорошие системы очередей, совместимые с PHP и совместно используемые на нескольких машинах. Решение в основном на основе кэша памяти, где вся информация может быть добавлена с любого узла и доступна на любом узле с очень высокой скоростью. Мне нужна система, которая может каждую секунду принимать большой объем данных из очереди, обрабатывать их и делать с ними все необходимое (сохранять в БД). Я не думаю, что наличие очередей на отдельных серверах очень масштабируемо, поскольку мне нужно сделать некоторый уровень агрегации перед сохранением данных. Поскольку данные могут поступать на любой из серверов PHP (в циклическом методе), я обрабатываю MySQL (и, следовательно, использую сложные запросы), если бы я мог собрать все данные на одном сервере и позволить ему выполнить некоторую обработку и сохранить в БД, это облегчило бы мою работу
Спасибо Спарш
Вы действительно предлагаете использовать журналы доступа в качестве подложки данных для асинхронной системы обработки сообщений? Если да - не надо. Он не является транзакционно безопасным, он не предназначен для одновременного доступа.
Я читал ваш вопрос несколько раз, и непонятно, что вы пытаетесь обработать, где и почему.
Есть ли какие-нибудь хорошие системы очередей, совместимые с PHP и разделяемые на нескольких машинах?
Хорошо - это правильный вопрос. Одно из решений, которое я использовал давным-давно, заключалось в использовании системы BSD LPD для управления очередями заданий, но если бы я реализовывал решение сегодня, я бы посмотрел на кролик, бобовый стебель, Сэм...