Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Сергей Яркин, Тензор — RabbitMQ. Насколько ценен мех и вкусно мясо?

176 views

Published on

Конференция Dev Party (http://devparty.ru).
Вологда, 25.03.2017

Published in: Software
  • Be the first to comment

  • Be the first to like this

Сергей Яркин, Тензор — RabbitMQ. Насколько ценен мех и вкусно мясо?

  1. 1. RabbitMQ Яркин Сергей системный администратор, ЯГК разработчик Платформы СБИС, Тензор http://www.rabbitmq.com PF Square Sans Pro Regular PF Square Sans Pro Medium PF Square Sans Pro Bold PF Square Sans Pro Italic PF Square Sans Pro Italic Medium PF Square Sans Pro Italic Bold CMYK: 0 60 100 0 CMYK: 100 65 35 20 Blend 20-50% 0%
  2. 2. What is RabbitMQ? Robust messaging for applications Easy to use Runs on all major operating systems Supports a huge number of developer platforms Open source and commercially supported 2
  3. 3. Структура решения на Erlang 3 Erlang/OTP RabbitMQ + plugins … host 1 host N hardware operating system BEAM hardware operating system BEAM CPU
 cores
  4. 4. Взаимодействие объектов в AMQP 4 Exchange Queue Exchange BindingPublisher Connection Channel Consumer Queue Queue fanout direct topic durable transient RabbitMQClient E2E
  5. 5. AMQP сообщение 5 Message Payload Headers Delivery Mode Content Type Routing Key Timestamp … Properties Name1 -> Value1 Name2 -> Value2 Name3 -> Value3
  6. 6. Обменники из коробки 6 Q1 Q2 Q3 P FANOUT binding message path
  7. 7. Обменники из коробки 7 DIRECT Q1 Q2 Q3 P routing key Key1 bind=Key1 bind=Key1 bind=Key2 binding message path
  8. 8. Обменники из коробки 8 TOPIC Q1 Q2 Q3 P routing key log.error bind=log.* bind=*.warn bind=#.error binding message path 1 any token ≧0 any tokens * #
  9. 9. Некоторые расширения протокола Confirms Direct reply-to Exchange to Exchange Bindings Time-To-Live Queue Length Limit 9
  10. 10. Некоторые плагины Management plugin Federation Shovel Web STOMP Tracing Event Exchange 10
  11. 11. 11 1 2 3 4 5
  12. 12. Позитивные моменты Простой в понимании и настройке Кластеризация из коробки Гибкая маршрутизация сообщений Хорошая скорость работы и использование ресурсов Поддержка зеркалированных очередей Расширяемость с помощью системы плагинов Поддержка из коробки протоколов AMQP, STOMP, MQTT Оперативная поддержка в сообществе 12
  13. 13. Негативные моменты Непредсказуемость потребления памяти Непредсказуемость поведения при проблемах в кластере Ограниченная масштабируемость при работе с persistent- сообщениями (40K MPS) 13
  14. 14. Примеры использования в Платформе СБИС
  15. 15. Кейсы использования в компании «Тензор» Асинхронные вызовы методов События Между бизнес-логиками До клиентов 15
  16. 16. Зарождение системы уведомлений 16 Кластер RabbitMQ Web STOMP для подключения веб- пользователей Обменник на каждый тип события 50 тысяч одновременных подключений
  17. 17. Зарождение системы уведомлений 17 fanout online.sbis.ru:<event-name1> Cluster Q Qfanout online.sbis.ru:<event-name2> fanout online.sbis.ru:<event-nameN> … … Binding churn
  18. 18. Второе поколение 18 Кластер RabbitMQ для публикации Одиночные узлы (web) для для
 обслуживания подключений
 пользователей Federation для связи уровней Персональный обменник пользователя Области публикации уведомления 300 тысяч одновременных подключений Web Cluster
  19. 19. Второе поколение 19 direct online.sbis.ru.user direct online.sbis.ru.client direct online.sbis.ru.global direct direct direct Cluster Web fanout online.sbis.ru:<uid> Q Q Q Federation Q Federation Q Federation user-id client-id online.sbis.ru.user online.sbis.ru.client online.sbis.ru.global
  20. 20. Второе поколение 20 direct online.sbis.ru.user direct online.sbis.ru.client direct online.sbis.ru.global direct direct direct Cluster Web fanout online.sbis.ru:<uid> Q Q Q Federation Q Federation Q Federation user-id client-id online.sbis.ru.user online.sbis.ru.client online.sbis.ru.global Копятся неиспользуемые ресурсы Затратная синхронизация очереди federation плагина Много подключений между уровнями ——— ——— ——— ——— ——— ——— ——— ——— ——— ———
  21. 21. Третье поколение 21 Shovel для связи уровней Собственный тип для персонального
 обменника пользователя c TTL Единая точка публикации, свой тип
 обменника 600 тысяч одновременных подключений Web Cluster
  22. 22. Третье поколение 22 fanout entrypoint direct direct direct Cluster Web sibs- user Q Q Q Shovel user-id client-id sbis-ep entrypoint online.sbis.ru.user online.sbis.ru.client online.sbis.ru.global online.sbis.ru:<uid> +TTL
  23. 23. Третье поколение 23 Web Cluster Ограниченная скорость публикации
 из-за зеркалирования Повышенная нагрузка при публикации
 в большой чат
  24. 24. Четвёртое поколение 24 Кластер разбит на независимые узлы
 маршрутизации Web узлы скомпонованы в группы
 с лидером Пользователи привязаны к группам Пакетная публикация сообщений Web group Route
  25. 25. Четвёртое поколение 25 fanout entrypoint Route Web sibs- user online.sbis.ru:<uid> Q Q Q Shovel sbis-ep entrypoint sibs- user online.sbis.ru:<uid> Q Q …… WHERE [sites] AND [users]
  26. 26. Четвёртое поколение 26 1 миллион одновременных подключений 330 тыс исходящих сообщений в секунду 2 Гбит/с исходящего сетевого трафика
  27. 27. Вопросы? Яркин Сергей sega@yark.in

×