SlideShare a Scribd company logo
Использование 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

More Related Content

PPTX
Асинхронная обработка данных: RabbitMQ, Comet
PPTX
Использование асинхронной очереди сообщений в высоконагруженном проекте / Анд...
PDF
Об очередях (AMQP)
PDF
«Миллион открытых каналов с данными по сети» – Илья Биин (Zenhotels)
PDF
Golang в avito
PDF
«Как 200 строк на Go помогли нам освободить 15 серверов» – Паша Мурзаков (Badoo)
PDF
Взаимодействие сервисов через Advanced Message
 Queuing Protocol
PDF
Perl и SPDY
Асинхронная обработка данных: RabbitMQ, Comet
Использование асинхронной очереди сообщений в высоконагруженном проекте / Анд...
Об очередях (AMQP)
«Миллион открытых каналов с данными по сети» – Илья Биин (Zenhotels)
Golang в avito
«Как 200 строк на Go помогли нам освободить 15 серверов» – Паша Мурзаков (Badoo)
Взаимодействие сервисов через Advanced Message
 Queuing Protocol
Perl и SPDY

What's hot (18)

PDF
Smirnov Twisted Python
PDF
Как не надо писать приложения, основанные на протоколе TCP (Артём Гавриченков)
PDF
Twisted Framework - сетевые приложения в Python
PDF
OSSDEV-2015: ReOpenLDAP
PPTX
Дмитрий Лазаренко-«Живая миграция и отказоустойчивость контейнеров в гибридно...
PDF
Практическая реализация распределенного отказоустойчивого Comet сервера на Er...
PPTX
Yevgen Lysenko "Practical experience of using AWS Lambda in a high-loaded PHP...
PDF
Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)
PDF
2021.09.04 PHP FWDays. Our experience of transferring Laravel microservices t...
PPT
Макс Лапшин - "EventMachine и evented архитектура"
PDF
Роман Иманкулов-«Быстрые и масштабируемые приложения с Sync API»
PDF
"Отказоустойчивый standby PostgreSQL (HAProxy + PgBouncer)" Виктор Ягофаров (...
PPTX
Использование 0MQ для построения low latency распределёных систем, Андрей Охл...
PPTX
сергей спиридонов
PPTX
Поддержка высоконагруженного проекта: мониторинг, резервирование, обслуживани...
PDF
Extreme Cloud Storage on FreeBSD, Андрей Пантюхин
PPTX
Синхронная репликацтя БД: какая от неё польза? (Алексей Юрченко)
PDF
"Кластеры баз данных: делаем сложные вещи просто" Андрей Тихонов (Avito)
Smirnov Twisted Python
Как не надо писать приложения, основанные на протоколе TCP (Артём Гавриченков)
Twisted Framework - сетевые приложения в Python
OSSDEV-2015: ReOpenLDAP
Дмитрий Лазаренко-«Живая миграция и отказоустойчивость контейнеров в гибридно...
Практическая реализация распределенного отказоустойчивого Comet сервера на Er...
Yevgen Lysenko "Practical experience of using AWS Lambda in a high-loaded PHP...
Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)
2021.09.04 PHP FWDays. Our experience of transferring Laravel microservices t...
Макс Лапшин - "EventMachine и evented архитектура"
Роман Иманкулов-«Быстрые и масштабируемые приложения с Sync API»
"Отказоустойчивый standby PostgreSQL (HAProxy + PgBouncer)" Виктор Ягофаров (...
Использование 0MQ для построения low latency распределёных систем, Андрей Охл...
сергей спиридонов
Поддержка высоконагруженного проекта: мониторинг, резервирование, обслуживани...
Extreme Cloud Storage on FreeBSD, Андрей Пантюхин
Синхронная репликацтя БД: какая от неё польза? (Алексей Юрченко)
"Кластеры баз данных: делаем сложные вещи просто" Андрей Тихонов (Avito)
Ad

Viewers also liked (11)

PDF
События, шины и интеграция данных в непростом мире микросервисов / Валентин Г...
PPTX
Мастер-класс "Микросервисы: удобно, надежно, серебрянопульно" / Евгений Павло...
PPTX
Microservice vs. Monolithic Architecture
PDF
Распределенные системы в Одноклассниках / Олег Анастасьев (Одноклассники)
PDF
Архитектура растущего проекта на примере ВКонтакте / Алексей Акулович (ВКонт...
PDF
Архитектура поиска в Avito / Андрей Смирнов (Avito)
PPSX
Архитектура поиска в Booking.com / Иван Круглов (Booking.com)
PDF
Как сделать высоконагруженный сервис, не зная количество нагрузки / Олег Обле...
PDF
Чему мы научились, разрабатывая микросервисы / Вадим Мадисон (RuTube)
PPTX
Дизайн REST API для высокопроизводительных систем / Александр Лебедев (Новые ...
ODP
Apache Kafka Demo
События, шины и интеграция данных в непростом мире микросервисов / Валентин Г...
Мастер-класс "Микросервисы: удобно, надежно, серебрянопульно" / Евгений Павло...
Microservice vs. Monolithic Architecture
Распределенные системы в Одноклассниках / Олег Анастасьев (Одноклассники)
Архитектура растущего проекта на примере ВКонтакте / Алексей Акулович (ВКонт...
Архитектура поиска в Avito / Андрей Смирнов (Avito)
Архитектура поиска в Booking.com / Иван Круглов (Booking.com)
Как сделать высоконагруженный сервис, не зная количество нагрузки / Олег Обле...
Чему мы научились, разрабатывая микросервисы / Вадим Мадисон (RuTube)
Дизайн REST API для высокопроизводительных систем / Александр Лебедев (Новые ...
Apache Kafka Demo
Ad

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

ODP
Middleware
PPT
PPT
PPT
Сервер Flash-вещаний (RTMP) на Python или создание высоконагруженных сетевых ...
PDF
FT & HA Rails приложений приложений — это просто
PPTX
Отечественные решения на базе SDN и NFV для телеком-операторов
PPT
F# функциональный язык "новой" волны
PPT
Платформа для автоматического тестирования Erlang проектов на примере UserGat...
PPTX
Переход на Php 7 и итоги
PPT
Web programming modern tendencies
PDF
Применение WAN Automation Engine для предоставления новых услуг и онлайн-опт...
PPTX
Использование 0MQ для построения распределёных систем (Андрей Охлопков, Алекс...
PDF
Антон Тюрин, Евгений Сафронов, Инфраструктура под Cocaine
PDF
JavaFest. Дмитрий Сергеев. Data processing with Kafka Streams and Spring Fram...
PDF
Symfony в архитектуре Upwork Enterprise
PDF
Семинар 8. Параллельное программирование на MPI (часть 1)
PPTX
Мировые информационные ресурсы. Лекция 5
PPTX
Создание и развитие отечественной платформы с открытым программным кодом для ...
PDF
Pconnect: граната в руках обезьяны
Middleware
Сервер Flash-вещаний (RTMP) на Python или создание высоконагруженных сетевых ...
FT & HA Rails приложений приложений — это просто
Отечественные решения на базе SDN и NFV для телеком-операторов
F# функциональный язык "новой" волны
Платформа для автоматического тестирования Erlang проектов на примере UserGat...
Переход на Php 7 и итоги
Web programming modern tendencies
Применение WAN Automation Engine для предоставления новых услуг и онлайн-опт...
Использование 0MQ для построения распределёных систем (Андрей Охлопков, Алекс...
Антон Тюрин, Евгений Сафронов, Инфраструктура под Cocaine
JavaFest. Дмитрий Сергеев. Data processing with Kafka Streams and Spring Fram...
Symfony в архитектуре Upwork Enterprise
Семинар 8. Параллельное программирование на MPI (часть 1)
Мировые информационные ресурсы. Лекция 5
Создание и развитие отечественной платформы с открытым программным кодом для ...
Pconnect: граната в руках обезьяны

More from phpdevby (10)

PPT
Безопасность веб-приложений. Так ли опасна виртуальная угроза?
PPTX
MongoDB. Области применения, преимущества и узкие места, тонкости использован...
PPTX
Современная разработка сайтов на CMF Drupal.
PPTX
Php архитектор - кто он?
PPT
Как удержать проект от анархии с помощью Git
PPT
Как удержать проект от анархии с помощью Git
PPT
Sphinx в реальных проектах: шишки и плюшки
ODP
Как удержать проект от анархии с помощью Git.
PPTX
PHP 5.4: Что нового?
PDF
Сайт на Zend Framework в составе промышленной системы
Безопасность веб-приложений. Так ли опасна виртуальная угроза?
MongoDB. Области применения, преимущества и узкие места, тонкости использован...
Современная разработка сайтов на CMF Drupal.
Php архитектор - кто он?
Как удержать проект от анархии с помощью Git
Как удержать проект от анархии с помощью Git
Sphinx в реальных проектах: шишки и плюшки
Как удержать проект от анархии с помощью Git.
PHP 5.4: Что нового?
Сайт на Zend Framework в составе промышленной системы

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

  • 1. Использование AMQP в основе архитектуры бэкенда для мобильного приложения.
  • 2. Требования к системе  Должна легко масштабироваться (горизонтально)  Должна быть возможность выполнять асинхронные запросы  Максимальная простота
  • 3. Архитектура в первом приближении  HTTPD layer - PHP приложение на Apache/nginx c использованием MVC, но источник данных для модели не база данных, а  API layer – приложение написанное на чём- то (пока PHP). Напрямую общается с БД. Может принимать как синхронные, так и асинхронные запросы.  База Данных – пока это MySQL
  • 4. Архитектура с REST API  Архитектура масштабируема  API может хэндлить синхронные и асинхронные запросы  НО!!! API уровень не достаточно гибок
  • 5. AMQP. Базовые понятия  AMQP - Advanced Message Queuing Protocol, протокол для передачи данных между частями системы через AMQP-брокер, который осуществляет маршрутизацию, распределение потоков данных и т.д.  Реализации: ZeroMQ, Apache Qpid, RabbitMQ и т.д.  RabbitMQ – масштабируется из коробки, хорошая документация на сайте, написан на Erlang, чаще других попадался в поиске )))
  • 6. AMQP. Базовые понятия  Producer – программа которая шлет сообщение  Consumer – программа которая ждет сообщения  Exchange – принимает сообщение от P. и посылает его в Q. (post office)  Queue – буфер для хранения сообщений (почтовый ящик)
  • 7. Архитектура с AMQP  Изменения коснулись API слоя  Повысилась гибкость масштабирования  Повысилась производительность
  • 8. Используемые типы обмена сообщениями  Async call (Routing)  Sync call (RPC)
  • 13. Ссылки  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