Немного фона.
Очень большое монолитное приложение Django. Все компоненты используют одну и ту же базу данных. Нам нужно разделить службы, чтобы мы могли самостоятельно обновлять некоторые части системы, не затрагивая остальных.
Мы используем RabbitMQ в качестве брокера для Сельдерей.
Сейчас у нас есть два варианта:
- Услуги HTTP, использующие интерфейс REST.
- JSONRPC через AMQP для службы цикла событий
Моя команда склоняется к HTTP, потому что то, с чем они знакомы, но я думаю, что преимущества использования RPC над AMQP намного перевешивают его.
AMQP предоставляет нам возможности для легкого добавления в балансировку нагрузки и высокую доступность с гарантированными доставкой сообщений.
В то время как с HTTP мы должны создавать клиентские HTTP-обертки для работы с интерфейсами REST, мы должны установить балансировщик нагрузки и настроить эту инфраструктуру, чтобы иметь HA и т.д.
С AMQP я могу просто создать еще один экземпляр службы, он будет подключаться к той же очереди, что и другие экземпляры, и bam, HA и балансировка нагрузки.
Я что-то пропустил с мыслями о AMQP?