Что такое очереди и чем они полезны? Обсудим на сегодняшнем занятии по курсуOtus PHP Professional. (звезда) Для начинающих программистов доступен курс “Otus PHP Basics“. Как результат, вы сможете использовать основной инструмент работы асинхронных отказоустойчивых приложений — очереди. Обсудим вопросы:

  • асинхронный подход обработки данных на основе очередей;

  • несколько стандартных сценариев использования очередей (отправка уведомлений, инвалидация кеша);

  • работу с очередями, используя различные инструменты (очереди на базе, Redis Pub/Sub, Gearman, Beanstalkd);

  • протокол AMPQ и одну из его прикладных реализаций — RabbitMQ. В результате появится навык работать с очередями и организовывать обмен сообщениями между частями приложения.

Преподаватель: Михаил Каморин


Тезисы из вебинара

Задачи


Сервис- ориентированная архитектура (SOA)

Событийная архитектура (EDA)

Очереди: варианты использования

Очереди: особенности

Очереди: проблемы


Реализация очередей

Варианты реализации

Протоколы очередей

RabbitMQ: особенности

Apache kafka: особенности


Очереди RabbitMQ

(звезда) тут сообщения могут теряться, в отличие от Kafka (где все логируется), т.е. она менее надежная

Отправка сообщений

Получение сообщений

Маршрутизация №1: независимые подписчики

(звезда) каждую очередь слушает независимый consumer, тут сообщения дублируются

(warning) хорошо для разных приложений

Маршрутизация №2: конкурирующие подписчики

(звезда) тут очередь одна , за которую конкурируют consumer-ы

(звезда) делаются, когда публикуется сообщений больше чем способен прочитать 1 consumer

(warning) хорошо для одного приложения

Маршрутизация №3: смешанный вариант

Типы точек обмена : алгоритмы маршрутизации

Пример маршрутизации: Topic exchange

Ключ маршрутизации: LEVEL.AppName , LEVEL — уровень логирования

(звезда) пример вх. ключа: Error.MyBackend.WebAPI — упадет в очереди 1 и 3

(звезда) удобно для классификации поддействий (action cases)

Пример: как реализуется RPC


Apache Kafka

(звезда) вместо сообщений тут записи, ограниченного размера (лимит единый для всех записей)

(звезда) вместо очередей — топики (Topic)

Также в Kafka есть:

Группы косньюмеров

Консьмеры и партиционирование

(звезда) возможность сбоя см. на каринке №2, при перебалансировке : нужно чтобы consumer-ы умели как-то распознавать это и откатываться назад в обработке и т.п.


Дополнительные материалы


Tags

Комментарии закрыты