View
190
Download
3
Category
Preview:
Citation preview
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%
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
Структура решения на Erlang
3
Erlang/OTP
RabbitMQ + plugins
…
host 1 host N
hardware
operating system
BEAM
hardware
operating system
BEAMCPU cores
Взаимодействие объектов в AMQP
4
Exchange
Queue
Exchange
BindingPublisher
Connection
Channel
Consumer
Queue
Queue
fanout direct topic
durable transient
RabbitMQClient
E2E
AMQP сообщение
5
Message Payload
Headers
Delivery Mode
Content TypeRouting KeyTimestamp
…Prop
ertie
s
Name1 -> Value1
Name2 -> Value2
Name3 -> Value3
Обменники из коробки
6
Q1
Q2
Q3
P
FANOUT
bindingmessage path
Обменники из коробки
7
DIRECT
Q1
Q2
Q3
P
routing key Key1 bind=Key1
bind=Key1
bind=Key2
bindingmessage path
Обменники из коробки
8
TOPIC
Q1
Q2
Q3
P
routing key log.error bind=log.*
bind=*.warn
bind=#.error
bindingmessage path
1 any token ≧0 any tokens
*#
Некоторые расширения протокола Confirms Direct reply-to Exchange to Exchange Bindings Time-To-Live Queue Length Limit
9
Некоторые плагины Management plugin Federation Shovel Web STOMP Tracing Event Exchange
10
11
1
2
3
4
5
Позитивные моменты Простой в понимании и настройке
Кластеризация из коробки
Гибкая маршрутизация сообщений
Хорошая скорость работы и использование ресурсов
Поддержка зеркалированных очередей
Расширяемость с помощью системы плагинов
Поддержка из коробки протоколов AMQP, STOMP, MQTT
Оперативная поддержка в сообществе12
Негативные моменты
Непредсказуемость потребления памяти
Непредсказуемость поведения при проблемах в кластере
Ограниченная масштабируемость при работе с persistent-сообщениями (40K MPS)
13
Примеры использования в Платформе СБИС
Кейсы использования в компании «Тензор»
Асинхронные вызовы методов
События
Между бизнес-логиками
До клиентов
15
Зарождение системы уведомлений
16
Кластер RabbitMQ Web STOMP для подключения веб-пользователей Обменник на каждый тип события 50 тысяч одновременных подключений
Зарождение системы уведомлений
17
fanout
online.sbis.ru:<event-name1>
Cluster
Q
Qfanout
online.sbis.ru:<event-name2>
fanout
online.sbis.ru:<event-nameN>
…
…
Binding churn
Второе поколение
18
Кластер RabbitMQ для публикации Одиночные узлы (web) для для обслуживания подключений пользователей Federation для связи уровней Персональный обменник пользователя Области публикации уведомления 300 тысяч одновременных подключений
Web
Cluster
Второе поколение
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
Второе поколение
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 плагина Много подключений между уровнями
———————————————
———————————————
Третье поколение
21
Shovel для связи уровней Собственный тип для персонального обменника пользователя c TTL Единая точка публикации, свой тип обменника 600 тысяч одновременных подключений
Web
Cluster
Третье поколение
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
Третье поколение
23
Web
Cluster
Ограниченная скорость публикации из-за зеркалирования Повышенная нагрузка при публикации в большой чат
Четвёртое поколение
24
Кластер разбит на независимые узлы маршрутизации Web узлы скомпонованы в группы с лидером Пользователи привязаны к группам Пакетная публикация сообщений
Web group
Route
Четвёртое поколение
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]
Четвёртое поколение
26
1 миллион одновременных подключений
330 тыс исходящих сообщений в секунду 2 Гбит/с исходящего сетевого трафика
Recommended