27
RabbitMQ Яркин Сергей системный администратор, ЯГК разработчик Платформы СБИС, Тензор http://www.rabbitmq.com

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

Embed Size (px)

Citation preview

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

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. Насколько ценен мех и вкусно мясо?

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. Насколько ценен мех и вкусно мясо?

Структура решения на Erlang

3

Erlang/OTP

RabbitMQ + plugins

host 1 host N

hardware

operating system

BEAM

hardware

operating system

BEAMCPU cores

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

Взаимодействие объектов в AMQP

4

Exchange

Queue

Exchange

BindingPublisher

Connection

Channel

Consumer

Queue

Queue

fanout direct topic

durable transient

RabbitMQClient

E2E

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

AMQP сообщение

5

Message Payload

Headers

Delivery Mode

Content TypeRouting KeyTimestamp

…Prop

ertie

s

Name1 -> Value1

Name2 -> Value2

Name3 -> Value3

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

Обменники из коробки

6

Q1

Q2

Q3

P

FANOUT

bindingmessage path

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

Обменники из коробки

7

DIRECT

Q1

Q2

Q3

P

routing key Key1 bind=Key1

bind=Key1

bind=Key2

bindingmessage path

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

Обменники из коробки

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. Насколько ценен мех и вкусно мясо?

Некоторые расширения протокола Confirms Direct reply-to Exchange to Exchange Bindings Time-To-Live Queue Length Limit

9

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

Некоторые плагины Management plugin Federation Shovel Web STOMP Tracing Event Exchange

10

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

11

1

2

3

4

5

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

Позитивные моменты Простой в понимании и настройке

Кластеризация из коробки

Гибкая маршрутизация сообщений

Хорошая скорость работы и использование ресурсов

Поддержка зеркалированных очередей

Расширяемость с помощью системы плагинов

Поддержка из коробки протоколов AMQP, STOMP, MQTT

Оперативная поддержка в сообществе12

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

Негативные моменты

Непредсказуемость потребления памяти

Непредсказуемость поведения при проблемах в кластере

Ограниченная масштабируемость при работе с persistent-сообщениями (40K MPS)

13

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

Примеры использования в Платформе СБИС

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

Кейсы использования в компании «Тензор»

Асинхронные вызовы методов

События

Между бизнес-логиками

До клиентов

15

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

Зарождение системы уведомлений

16

Кластер RabbitMQ Web STOMP для подключения веб-пользователей Обменник на каждый тип события 50 тысяч одновременных подключений

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

Зарождение системы уведомлений

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. Насколько ценен мех и вкусно мясо?

Второе поколение

18

Кластер RabbitMQ для публикации Одиночные узлы (web) для для обслуживания подключений пользователей Federation для связи уровней Персональный обменник пользователя Области публикации уведомления 300 тысяч одновременных подключений

Web

Cluster

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

Второе поколение

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. Насколько ценен мех и вкусно мясо?

Второе поколение

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. Насколько ценен мех и вкусно мясо?

Третье поколение

21

Shovel для связи уровней Собственный тип для персонального обменника пользователя c TTL Единая точка публикации, свой тип обменника 600 тысяч одновременных подключений

Web

Cluster

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

Третье поколение

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. Насколько ценен мех и вкусно мясо?

Третье поколение

23

Web

Cluster

Ограниченная скорость публикации из-за зеркалирования Повышенная нагрузка при публикации в большой чат

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

Четвёртое поколение

24

Кластер разбит на независимые узлы маршрутизации Web узлы скомпонованы в группы с лидером Пользователи привязаны к группам Пакетная публикация сообщений

Web group

Route

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

Четвёртое поколение

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. Насколько ценен мех и вкусно мясо?

Четвёртое поколение

26

1 миллион одновременных подключений

330 тыс исходящих сообщений в секунду 2 Гбит/с исходящего сетевого трафика

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

Вопросы?Яркин Сергей [email protected]