Здрасти!
Нужно сделать веб-приложение, которое работает по API "асинхронно", то-есть запросы по API не требуют незамедлительного ответа.
Вот как я его щас представляю
Работу по обработке запросов выполняются сервера 1, 2, 3 ... Эти сервера только читают MySQL, писать им ничего не нужно.
Запрос в API перекидывается одному из серверов, тот помещает задачу в очередь. А воркеры берут доступную задачу и выполняют.
Так вот, как организовать единую очередь между серверами, чтобы :
- одна задача бралась только одним воркером
- задача вставленная в очередь одним сервером могла быть исполнена любым другим
- падение одного сервера никак не влияла на работу других
Для организации очереди я рассматривал Redis. Но я так понял что он работает по принципу master-slave, а мне нужно чтобы серверы были самодостаточны. Может что другое предложите?
Ну или вообще архитектура неверно построена?
Скорость не так важна, главное иметь возможность легко маштабировать и надежность.