Сергей Яркин, Тензор — rabbitmq. Насколько ценен мех и...
TRANSCRIPT
![Page 1: Сергей Яркин, Тензор — RabbitMQ. Насколько ценен мех и вкусно мясо?](https://reader034.vdocuments.pub/reader034/viewer/2022050900/5aac5bf87f8b9a435e8b488b/html5/thumbnails/1.jpg)
RabbitMQЯркин Сергей
системный администратор, ЯГК разработчик Платформы СБИС, Тензор
http://www.rabbitmq.com
PF Square Sans Pro RegularPF Square Sans Pro MediumPF Square Sans Pro Bold
PF Square Sans Pro ItalicPF Square Sans Pro Italic MediumPF Square Sans Pro Italic Bold
CMYK: 0 60 100 0
CMYK: 100 65 35 20
Blend
20-50% 0%
![Page 2: Сергей Яркин, Тензор — RabbitMQ. Насколько ценен мех и вкусно мясо?](https://reader034.vdocuments.pub/reader034/viewer/2022050900/5aac5bf87f8b9a435e8b488b/html5/thumbnails/2.jpg)
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
![Page 3: Сергей Яркин, Тензор — RabbitMQ. Насколько ценен мех и вкусно мясо?](https://reader034.vdocuments.pub/reader034/viewer/2022050900/5aac5bf87f8b9a435e8b488b/html5/thumbnails/3.jpg)
Структура решения на Erlang
3
Erlang/OTP
RabbitMQ + plugins
…
host 1 host N
hardware
operating system
BEAM
hardware
operating system
BEAMCPU cores
![Page 4: Сергей Яркин, Тензор — RabbitMQ. Насколько ценен мех и вкусно мясо?](https://reader034.vdocuments.pub/reader034/viewer/2022050900/5aac5bf87f8b9a435e8b488b/html5/thumbnails/4.jpg)
Взаимодействие объектов в AMQP
4
Exchange
Queue
Exchange
BindingPublisher
Connection
Channel
Consumer
Queue
Queue
fanout direct topic
durable transient
RabbitMQClient
E2E
![Page 5: Сергей Яркин, Тензор — RabbitMQ. Насколько ценен мех и вкусно мясо?](https://reader034.vdocuments.pub/reader034/viewer/2022050900/5aac5bf87f8b9a435e8b488b/html5/thumbnails/5.jpg)
AMQP сообщение
5
Message Payload
Headers
Delivery Mode
Content TypeRouting KeyTimestamp
…Prop
ertie
s
Name1 -> Value1
Name2 -> Value2
Name3 -> Value3
![Page 6: Сергей Яркин, Тензор — RabbitMQ. Насколько ценен мех и вкусно мясо?](https://reader034.vdocuments.pub/reader034/viewer/2022050900/5aac5bf87f8b9a435e8b488b/html5/thumbnails/6.jpg)
Обменники из коробки
6
Q1
Q2
Q3
P
FANOUT
bindingmessage path
![Page 7: Сергей Яркин, Тензор — RabbitMQ. Насколько ценен мех и вкусно мясо?](https://reader034.vdocuments.pub/reader034/viewer/2022050900/5aac5bf87f8b9a435e8b488b/html5/thumbnails/7.jpg)
Обменники из коробки
7
DIRECT
Q1
Q2
Q3
P
routing key Key1 bind=Key1
bind=Key1
bind=Key2
bindingmessage path
![Page 8: Сергей Яркин, Тензор — RabbitMQ. Насколько ценен мех и вкусно мясо?](https://reader034.vdocuments.pub/reader034/viewer/2022050900/5aac5bf87f8b9a435e8b488b/html5/thumbnails/8.jpg)
Обменники из коробки
8
TOPIC
Q1
Q2
Q3
P
routing key log.error bind=log.*
bind=*.warn
bind=#.error
bindingmessage path
1 any token ≧0 any tokens
*#
![Page 9: Сергей Яркин, Тензор — RabbitMQ. Насколько ценен мех и вкусно мясо?](https://reader034.vdocuments.pub/reader034/viewer/2022050900/5aac5bf87f8b9a435e8b488b/html5/thumbnails/9.jpg)
Некоторые расширения протокола Confirms Direct reply-to Exchange to Exchange Bindings Time-To-Live Queue Length Limit
9
![Page 10: Сергей Яркин, Тензор — RabbitMQ. Насколько ценен мех и вкусно мясо?](https://reader034.vdocuments.pub/reader034/viewer/2022050900/5aac5bf87f8b9a435e8b488b/html5/thumbnails/10.jpg)
Некоторые плагины Management plugin Federation Shovel Web STOMP Tracing Event Exchange
10
![Page 11: Сергей Яркин, Тензор — RabbitMQ. Насколько ценен мех и вкусно мясо?](https://reader034.vdocuments.pub/reader034/viewer/2022050900/5aac5bf87f8b9a435e8b488b/html5/thumbnails/11.jpg)
11
1
2
3
4
5
![Page 12: Сергей Яркин, Тензор — RabbitMQ. Насколько ценен мех и вкусно мясо?](https://reader034.vdocuments.pub/reader034/viewer/2022050900/5aac5bf87f8b9a435e8b488b/html5/thumbnails/12.jpg)
Позитивные моменты Простой в понимании и настройке
Кластеризация из коробки
Гибкая маршрутизация сообщений
Хорошая скорость работы и использование ресурсов
Поддержка зеркалированных очередей
Расширяемость с помощью системы плагинов
Поддержка из коробки протоколов AMQP, STOMP, MQTT
Оперативная поддержка в сообществе12
![Page 13: Сергей Яркин, Тензор — RabbitMQ. Насколько ценен мех и вкусно мясо?](https://reader034.vdocuments.pub/reader034/viewer/2022050900/5aac5bf87f8b9a435e8b488b/html5/thumbnails/13.jpg)
Негативные моменты
Непредсказуемость потребления памяти
Непредсказуемость поведения при проблемах в кластере
Ограниченная масштабируемость при работе с persistent-сообщениями (40K MPS)
13
![Page 14: Сергей Яркин, Тензор — RabbitMQ. Насколько ценен мех и вкусно мясо?](https://reader034.vdocuments.pub/reader034/viewer/2022050900/5aac5bf87f8b9a435e8b488b/html5/thumbnails/14.jpg)
Примеры использования в Платформе СБИС
![Page 15: Сергей Яркин, Тензор — RabbitMQ. Насколько ценен мех и вкусно мясо?](https://reader034.vdocuments.pub/reader034/viewer/2022050900/5aac5bf87f8b9a435e8b488b/html5/thumbnails/15.jpg)
Кейсы использования в компании «Тензор»
Асинхронные вызовы методов
События
Между бизнес-логиками
До клиентов
15
![Page 16: Сергей Яркин, Тензор — RabbitMQ. Насколько ценен мех и вкусно мясо?](https://reader034.vdocuments.pub/reader034/viewer/2022050900/5aac5bf87f8b9a435e8b488b/html5/thumbnails/16.jpg)
Зарождение системы уведомлений
16
Кластер RabbitMQ Web STOMP для подключения веб-пользователей Обменник на каждый тип события 50 тысяч одновременных подключений
![Page 17: Сергей Яркин, Тензор — RabbitMQ. Насколько ценен мех и вкусно мясо?](https://reader034.vdocuments.pub/reader034/viewer/2022050900/5aac5bf87f8b9a435e8b488b/html5/thumbnails/17.jpg)
Зарождение системы уведомлений
17
fanout
online.sbis.ru:<event-name1>
Cluster
Q
Qfanout
online.sbis.ru:<event-name2>
fanout
online.sbis.ru:<event-nameN>
…
…
Binding churn
![Page 18: Сергей Яркин, Тензор — RabbitMQ. Насколько ценен мех и вкусно мясо?](https://reader034.vdocuments.pub/reader034/viewer/2022050900/5aac5bf87f8b9a435e8b488b/html5/thumbnails/18.jpg)
Второе поколение
18
Кластер RabbitMQ для публикации Одиночные узлы (web) для для обслуживания подключений пользователей Federation для связи уровней Персональный обменник пользователя Области публикации уведомления 300 тысяч одновременных подключений
Web
Cluster
![Page 19: Сергей Яркин, Тензор — RabbitMQ. Насколько ценен мех и вкусно мясо?](https://reader034.vdocuments.pub/reader034/viewer/2022050900/5aac5bf87f8b9a435e8b488b/html5/thumbnails/19.jpg)
Второе поколение
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
QFederation
QFederation
QFederation
user-id
client-id
online.sbis.ru.user
online.sbis.ru.client
online.sbis.ru.global
![Page 20: Сергей Яркин, Тензор — RabbitMQ. Насколько ценен мех и вкусно мясо?](https://reader034.vdocuments.pub/reader034/viewer/2022050900/5aac5bf87f8b9a435e8b488b/html5/thumbnails/20.jpg)
Второе поколение
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
QFederation
QFederation
QFederation
user-id
client-id
online.sbis.ru.user
online.sbis.ru.client
online.sbis.ru.global
Копятся неиспользуемые ресурсы Затратная синхронизация очереди federation плагина Много подключений между уровнями
———————————————
———————————————
![Page 21: Сергей Яркин, Тензор — RabbitMQ. Насколько ценен мех и вкусно мясо?](https://reader034.vdocuments.pub/reader034/viewer/2022050900/5aac5bf87f8b9a435e8b488b/html5/thumbnails/21.jpg)
Третье поколение
21
Shovel для связи уровней Собственный тип для персонального обменника пользователя c TTL Единая точка публикации, свой тип обменника 600 тысяч одновременных подключений
Web
Cluster
![Page 22: Сергей Яркин, Тензор — RabbitMQ. Насколько ценен мех и вкусно мясо?](https://reader034.vdocuments.pub/reader034/viewer/2022050900/5aac5bf87f8b9a435e8b488b/html5/thumbnails/22.jpg)
Третье поколение
22
fanout
entrypoint
direct
direct
direct
Cluster Web
sibs-user
Q
QQ Shovel
user-id
client-idsbis-ep
entrypoint
online.sbis.ru.user
online.sbis.ru.client
online.sbis.ru.global
online.sbis.ru:<uid>
+TTL
![Page 23: Сергей Яркин, Тензор — RabbitMQ. Насколько ценен мех и вкусно мясо?](https://reader034.vdocuments.pub/reader034/viewer/2022050900/5aac5bf87f8b9a435e8b488b/html5/thumbnails/23.jpg)
Третье поколение
23
Web
Cluster
Ограниченная скорость публикации из-за зеркалирования Повышенная нагрузка при публикации в большой чат
![Page 24: Сергей Яркин, Тензор — RabbitMQ. Насколько ценен мех и вкусно мясо?](https://reader034.vdocuments.pub/reader034/viewer/2022050900/5aac5bf87f8b9a435e8b488b/html5/thumbnails/24.jpg)
Четвёртое поколение
24
Кластер разбит на независимые узлы маршрутизации Web узлы скомпонованы в группы с лидером Пользователи привязаны к группам Пакетная публикация сообщений
Web group
Route
![Page 25: Сергей Яркин, Тензор — RabbitMQ. Насколько ценен мех и вкусно мясо?](https://reader034.vdocuments.pub/reader034/viewer/2022050900/5aac5bf87f8b9a435e8b488b/html5/thumbnails/25.jpg)
Четвёртое поколение
25
fanout
entrypoint
Route Web
sibs-user
online.sbis.ru:<uid>
Q
Q
Q Shovelsbis-ep
entrypoint sibs-user
online.sbis.ru:<uid>
Q
Q
……WHERE[sites] AND [users]
![Page 26: Сергей Яркин, Тензор — RabbitMQ. Насколько ценен мех и вкусно мясо?](https://reader034.vdocuments.pub/reader034/viewer/2022050900/5aac5bf87f8b9a435e8b488b/html5/thumbnails/26.jpg)
Четвёртое поколение
26
1 миллион одновременных подключений
330 тыс исходящих сообщений в секунду 2 Гбит/с исходящего сетевого трафика