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

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 Гбит/с исходящего сетевого трафика

Вопросы?Яркин Сергей sega@yark.in

Recommended