Apache RocketMQ
![]() | В этой статье есть несколько проблем. Пожалуйста, помогите улучшить его или обсудите эти проблемы на странице обсуждения . ( Узнайте, как и когда удалять эти шаблонные сообщения )
|
![]() | |
Разработчик(и) | Фонд программного обеспечения Apache |
---|---|
Первоначальный выпуск | 2012 год |
Стабильная версия | 5.0.0 / 9 сентября 2022 г [1] |
Репозиторий | Репозиторий RocketMQ |
Написано в | Ява |
Операционная система | Кросс-платформенный |
Тип | Потоковая обработка , Брокер сообщений |
Лицензия | Лицензия Апач 2.0 |
Веб-сайт | ракетаmq |
РакетаMQ [2] — это распределенная платформа обмена сообщениями и потоковой передачи с низкой задержкой, высокой производительностью и надежностью, емкостью уровня триллиона и гибкой масштабируемостью. Это промежуточное программное обеспечение для распределенного обмена сообщениями третьего поколения, исходный код которого был открыт Alibaba в 2012 году. 21 ноября 2016 года Alibaba пожертвовала RocketMQ Apache Software Foundation . В следующем году, 20 февраля, Apache Software Foundation объявил Apache RocketMQ проектом высшего уровня.
История
[ редактировать ]Разработку RocketMQ можно разделить на три этапа. [3]
Первое поколение использует режим push при транспортировке данных и реляционную базу данных при хранении данных. Он показывает низкую задержку при доставке сообщений и соответствует командам типичной платформы электронной коммерции. [4] с распределенными транзакциями.
Второе поколение использует режим извлечения при транспортировке данных и файловую систему при хранении данных. Он уделил больше внимания стабильности и надежности и показывает сопоставимую производительность с первым поколением по времени отклика и Kafka по сбору журналов.
Третье поколение сочетает в себе режим Pull с некоторыми операциями Push. Он унаследовал преимущества первого и второго поколения и демонстрирует высокую производительность в сценариях параллелизма и обработки больших объемов данных.
Функции
[ редактировать ]Было проведено много сравнений между различными решениями для обмена сообщениями, и широко известно, что когда количество тем резко увеличивается, пропускная способность RocketMQ падает гораздо меньше, чем Kafka. [5] Поскольку характеристики высокой производительности, высокой надежности и высокой способности работать в режиме реального времени, все больше и больше усилий было приложено к сочетанию RocketMQ и других компонентов протокола во всех типах сценариев обмена сообщениями, таких как MQTT. [6]
Клиентский SDK | Протокол и спецификация | Заказное сообщение | Запланированное сообщение | Пакетное сообщение | Широковещательное сообщение | Фильтр сообщений | Повторная доставка, инициируемая сервером |
---|---|---|---|---|---|---|---|
Java, C/C++, Python, Go, Nodejs | Модель извлечения, поддержка TCP, JMS, OpenMessaging | Обеспечьте строгий порядок сообщений и возможность изящного масштабирования. | Поддерживается | Поддерживается режим синхронизации, позволяющий избежать потери сообщений. | Поддерживается | Поддерживаемые выражения фильтра свойств на основе SQL92. | Поддерживается |
Хранение сообщений | Сообщение имеет обратную силу | Приоритет сообщения | Высокая доступность и аварийное переключение | Трек сообщений | Конфигурация | ||
Высокопроизводительное хранилище файлов с низкой задержкой | Поддерживаемая временная метка и смещение два указывают | Не поддерживается | Поддерживается модель Master-Slave, без дополнительного комплекта. | Поддерживается | Работает «из коробки», пользователю нужно обратить внимание только на несколько конфигураций. |
Архитектура
[ редактировать ]
RocketMQ состоит из четырех частей: серверов имен, брокеров, производителей и потребителей. Каждый из них может быть расширен горизонтально без единой точки отказа. Как показано на изображении слева.
Кластер серверов имен
[ редактировать ]Легкий компонент для обнаружения служб, который можно использовать для чтения и записи информации о маршрутизации. Каждый из них записывает глобальную информацию и поддерживает быстрое расширение хранилища.
Брокерский кластер
[ редактировать ]Они используют облегченные механизмы TOPIC и QUEUE для управления хранением данных. Для реализации отказоустойчивости предоставляются две или три копии данных. И Клиент может получить сообщение в модели Push and Pull. Кроме того, также поддерживаются аварийное восстановление и расширенная статистика показателей.
Продюсерский кластер
[ редактировать ]Производители могут быть распределены, а сообщения от производителей к брокерам могут быть сбалансированы посредством многопутевого использования. Кроме того, поддерживаются быстрый отказ и низкая задержка.
Потребительский кластер
[ редактировать ]Потребители также могут быть распределены по модели push и pull, и они могут подписываться на сообщения в режиме реального времени, потреблять сообщения в единице кластера. Также поддерживается широковещательная рассылка сообщений.
Приложения
[ редактировать ]Существует как минимум пять аспектов, к которым может относиться Apache RocketMQ:
- Интеграция гетерогенных систем;
- Развязка между приложениями;
- Магистраль в механизме, управляемом событиями, и модели сложной событийной архитектуры;
- Каналы репликации данных;
- Интеграция с механизмом расчета расхода;
- Потоковый доступ к данным.
Обслуживание сообщества
[ редактировать ]Команда RocketMQ многое сделала для поддержания активности сообщества. Встречи, семинары, ApacheCon и марафоны кода регулярно проводятся в Пекине, Шэньчжэне и Ханчжоу для привлечения новых участников и коммиттеров. Пакеты тестирования OpenMessaging теперь доступны для RocketMQ, помогая RocketMQ идти в ногу с глобальным стандартом распределенного обмена сообщениями. [7] Что касается управления версиями, был принят ряд стандартизированных процессов разработки программного обеспечения. Последняя версия — 4.2.0, на подходе 4.3.0. Более подробную информацию можно получить здесь .
Награды
[ редактировать ]Награда за самое популярное программное обеспечение с открытым исходным кодом в Китае в 2016 г. Архивировано 19 июня 2018 г. на Wayback Machine.
Награда за самое популярное программное обеспечение с открытым исходным кодом в Китае в 2017 г. Архивировано 19 июня 2018 г. на Wayback Machine.
Самая популярная награда в области программного обеспечения с открытым исходным кодом в Китае в 2018 г. Архивировано 2 января 2019 г. на Wayback Machine.
См. также
[ редактировать ]- Апач ActiveMQ
- Апач Флинк
- Апач Qpid
- Апач Самза
- Потоковая передача Apache Spark
- Служба распространения данных
- Шаблоны корпоративной интеграции
- Корпоративная система обмена сообщениями
- Потоковая аналитика
- SOA, управляемая событиями
- Промежуточное программное обеспечение, ориентированное на сообщения
- Сервис-ориентированная архитектура
- Апач Кафка
Ссылки
[ редактировать ]- ^ «Примечания к выпуску — Apache RocketMQ — Версия 5.0.0» . 9 сентября 2022 г. Проверено 27 сентября 2022 г.
- ^ «apache/rocketmq» . Гитхаб . Проверено 25 мая 2018 г.
- ^ «От Alibaba до Apache: прошлое, настоящее и будущее RocketMQ» . ИнфоQ . Проверено 26 июня 2018 г.
- ^ Ляо, Цзяньвэй; Чжуан, Сяодань; Фан, Реньи; Пэн, Сяонин (2017). «На пути к общей структуре распределенных сообщений для приложений обработки онлайн-транзакций» . Доступ IEEE . 5 : 18166–18178. Бибкод : 2017IEEA...518166L . дои : 10.1109/ACCESS.2017.2717930 .
- ^ Облако, Alibaba (04 января 2018 г.). «Kafka против RocketMQ — результаты стресс-тестов по нескольким темам» . Середина . Проверено 8 июля 2018 г.
- ^ Юэ, Ма; Жуйян, Ян; Цзяньвэй, Солнце; Кайфэн, Яо (2017). «Сервер отправки сообщений протокола MQTT на основе RocketMQ». 2017 10-я Международная конференция по интеллектуальным вычислительным технологиям и автоматизации (ICICTA) . стр. 295–298. дои : 10.1109/ICICTA.2017.72 . ISBN 978-1-5386-1230-9 . S2CID 28825800 .
- ^ «Среда тестирования OpenMessaging» . openmessaging.cloud . Проверено 8 июля 2018 г.