Использование amqp в основе архитектуры бэкенда для...

13
Использование AMQP в основе архитектуры бэкенда для мобильного приложения.

Upload: phpdevby

Post on 16-Jun-2015

1.897 views

Category:

Technology


6 download

TRANSCRIPT

Использование AMQP в основе архитектуры бэкенда для мобильного приложения.

Требования к системе

Должна легко масштабироваться (горизонтально)

Должна быть возможность выполнять асинхронные запросы

Максимальная простота

Архитектура в первом приближении

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 слоя

Повысилась гибкость масштабирования

Повысилась производительность

Используемые типы обмена сообщениями

Async call (Routing) Sync call (RPC)

Бенчмарки. Hello World

Бенчмарки. DB Insert

Бенчмарки. DB Insert (2 consumers)

Бенчмарки. DB Insert (async)

Ссылки

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