Advertisement

101 способ приготовления RabbitMQ и немного о pipeline архитектуре / Филонов Павел (Positive Technologies)

Ontico
Ontico
Jan. 15, 2016
Advertisement

More Related Content

Slideshows for you(19)

Similar to 101 способ приготовления RabbitMQ и немного о pipeline архитектуре / Филонов Павел (Positive Technologies)(20)

Advertisement

More from Ontico(20)

Recently uploaded(20)

Advertisement

101 способ приготовления RabbitMQ и немного о pipeline архитектуре / Филонов Павел (Positive Technologies)

  1. 101 способ приготовления RabbitMQ и немного о pipeline архитектуре Павел Филонов Positive Technologies
  2. Пролог Действующие лица: АРХИТЕКТОР, РУКОВОДИТЕЛЬ. Сцена 1. Будний день. Офис Р: Прекрасное начало дня! Нельзя найти лучшего времени для новой задачи! А: Что еще за новая задача!? Р: Было принято решение: тебе поручается разработать архитектуру для нового продукта! А: Что еще за новый продукт?! Р: Подробностей пока нет, но мы уверены, что тебе понравится! А: (произносит с сарказмом) Не сомневаюсь.
  3. Завязка «Формальные требования» • Нужно будет обрабатывать события, много и быстро. • Обрабатывать нужно по-разному, потом расскажем, как. • События будут приходить из разных источников. • Нужно быстро сделать прототип. • Должно работать «хорошо» и «всюду».
  4. Завязка «Формальные требования» • Нужно будет обрабатывать события, много и быстро. • Обрабатывать нужно по-разному, потом расскажем, как. • События будут приходить из разных источников. • Нужно быстро сделать прототип. • Должно работать «хорошо» и «всюду».
  5. Проблема выбора Нет на свете такой глупости, которую не придумали бы ещё древние греки!
  6. Шаблоны Многослойная Событийно ориентированная Сервисно ориентированная Конвейерная Микроядерная Пространственно ориентированная
  7. Шаблоны Многослойная Событийно ориентированная Сервисно ориентированная Конвейерная Микроядерная Пространственно ориентированная
  8. Связующее ПО
  9. Связующее ПО
  10. Пользователи AMQP • The Deutsche Börse • JPMorgan • NASA • Red Hat • VMware • Google • OpenStack • Microsoft Azure Service Bus • AT&T https://www.amqp.org/about/examples
  11. Основные элементы Publisher Exchange Queue Consumer Binding Gate Filter A Filter B Filter CFilter DDB Raw input
  12. RabbitMQ + pipeline • Асинхронная обработка  • Простое добавление обработчиков  • Гибкая маршрутизация  • Удобная отладка 
  13. RabbitMQ + pipeline • Масштабируемость читателей и писателей  • Масштабируемость брокеров  • Устойчивость к перезагрузкам и отказам 
  14. Шеф, у нас проблема!
  15. Типы exchange • Fanout – 35000 mps • Direct – 35000 mps  • Topic – 10000 mps  • Consistent-Hash – 40000  Intel Xeon E5-2630L 2.4 Ghz 16 Gb RAM Ubuntu 14.04 x64 RabbitMQ 3.5.6
  16. Пакетная обработка • Apache Kafka и ZeroMQ делают «из коробки»   • Сделать пакетную обработку самостоятельно   • Увеличиваем задержки 
  17. Пакетная обработка 0 5000 10000 15000 20000 25000 30000 35000 40000 256 1024 4096 16384 65536 262144 1048576 Message size (bytes) bytes/sec/30000 msg/s
  18. Переполнение очередей  - интенсивность потока заявок - интенсивность обслуживания - коэффициент загрузки системы     Средняя длина очереди 0 5 10 15 20 25 0.5 0.6 0.7 0.8 0.9 Коэффициент загрузки системы
  19. Переполнение очередей • Сообщения сбрасываются из памяти на диск   • Блокируются писатели  • Всё очень замедляется  • Никто не падает 
  20. Переполнение очередей • Ограничиваем размер очередей   • Ограничиваем время жизни сообщений   • Используем RabbitMQ flow control  
  21. Горшочек, не вари! Filter A Queue B 10 000 Filter B   Filter A Queue B 10 000 000 Filter B  Filter A Queue B 10 000 000 Filter B  Time
  22. Масштабирование Queue A Filter A Filter A Queue B Stateless filters Stateful filters Queue A1 Filter A2 Filter A1 Queue B Queue A2 Router
  23. Statefull filters • Нужно хранить состояние  • Нужно делать сегментацию  • Не используйте без веской причины! 
  24. Сегментация • Делаем свой h(m) mod N  • Делаем свой consistent hash   • Используем RabbitMQ Sharding plugin   • Используем consistent- hash-exchange  
  25. В заключение • Выбирай. Но осторожно. Но выбирай. • Не бойтесь последствий вашего выбора, но справляйтесь с ними.
  26. Спасибо за внимание!
Advertisement