Использование amqp в основе архитектуры бэкенда для...
TRANSCRIPT
Требования к системе
Должна легко масштабироваться (горизонтально)
Должна быть возможность выполнять асинхронные запросы
Максимальная простота
Архитектура в первом приближении
HTTPD layer - PHP приложение на Apache/nginx c использованием MVC, но источник данных для модели не база данных, а
API layer – приложение написанное на чём-то (пока PHP). Напрямую общается с БД. Может принимать как синхронные, так и асинхронные запросы.
База Данных – пока это MySQL
Архитектура с REST API
Архитектура масштабируема
API может хэндлить синхронные и асинхронные запросы
НО!!! API уровень не достаточно гибок
AMQP. Базовые понятия
AMQP - Advanced Message Queuing Protocol, протокол для передачи данных между частями системы через AMQP-брокер, который осуществляет маршрутизацию, распределение потоков данных и т.д.
Реализации: ZeroMQ, Apache Qpid, RabbitMQ и т.д.
RabbitMQ – масштабируется из коробки, хорошая документация на сайте, написан на Erlang, чаще других попадался в поиске )))
AMQP. Базовые понятия
Producer – программа которая шлет сообщение
Consumer – программа которая ждет сообщения
Exchange – принимает сообщение от P. и посылает его в Q. (post office)
Queue – буфер для хранения сообщений (почтовый ящик)
Архитектура с AMQP
Изменения коснулись API слоя
Повысилась гибкость масштабирования
Повысилась производительность
Ссылки
http://en.wikipedia.org/wiki/Advanced_Message_Queuing_Protocol
http://www.rabbitmq.com/
http://highscalability.com/
http://kshamko.blogspot.com/2012/05/amqp-story.html