Apache RocketMQ - Apache RocketMQ
Разработчики) | Фонд программного обеспечения Apache |
---|---|
изначальный выпуск | 2012 |
Стабильный выпуск | 4.5.2 / 1 августа 2019 г. |
Репозиторий | Репозиторий RocketMQ |
Написано в | Ява |
Операционная система | Кроссплатформенность |
Тип | Потоковая обработка, Брокер сообщений |
Лицензия | Лицензия Apache 2.0 |
Интернет сайт | ракета |
RocketMQ[1] - это платформа для распределенного обмена сообщениями и потоковой передачи с низкой задержкой, высокой производительностью и надежностью, триллионной емкостью и гибкой масштабируемостью. Это промежуточное ПО третьего поколения для распределенного обмена сообщениями с открытым исходным кодом. Алибаба в 2012 году. 21 ноября 2016 года Alibaba передала RocketMQ в дар Фонд программного обеспечения Apache. В следующем году, 20 февраля, Apache Software Foundation объявил Apache RocketMQ проектом верхнего уровня.
История
Разработку RocketMQ можно разделить на три этапа.[2]
Первое поколение использует режим push для передачи данных и реляционную базу данных в хранилище данных. Он показывает низкую задержку при доставке сообщений и соответствует требованиям типичной платформы электронной коммерции.[3] с распределенными транзакциями.
Второе поколение использует режим извлечения при передаче данных и файловую систему при хранении данных. Он уделил больше внимания стабильности и надежности и показывает сопоставимую производительность с первым поколением по времени отклика и Kafka по сбору журналов.
Третье поколение сочетает в себе режим извлечения с некоторыми операциями извлечения. Он наследует преимущества первого и второго поколения и демонстрирует высокую производительность в сценариях параллелизма и обработки больших объемов данных.
Функции
Было проведено много сравнений между различными решениями для обмена сообщениями, и широко известно, что при резком увеличении количества тем пропускная способность RocketMQ упала намного меньше, чем у Kafka.[4] Благодаря характеристикам высокой производительности, высокой надежности и высокой способности к работе в реальном времени, все больше и больше усилий было приложено к комбинации RocketMQ и других компонентов протокола во всех типах сценариев обмена сообщениями, таких как MQTT.[5]
Клиентский SDK | Протокол и спецификация | Заказанное сообщение | Запланированное сообщение | Пакетное сообщение | Трансляция сообщение | Фильтр сообщений | Повторная доставка, инициированная сервером |
---|---|---|---|---|---|---|---|
Java, C / C ++, Python, Go, Nodejs | Модель pull, поддержка TCP, JMS, OpenMessaging | Обеспечьте строгий порядок сообщений и плавное масштабирование | Поддерживается | Поддерживается, с режимом синхронизации, чтобы избежать потери сообщения | Поддерживается | Поддерживаются выражения фильтра свойств на основе SQL92 | Поддерживается |
Хранение сообщений | Сообщение ретроактивно | Приоритет сообщения | Высокая доступность и отказоустойчивость | Сообщение Трек | Конфигурация | ||
Высокая производительность и низкая задержка для хранения файлов | Поддерживаемая метка времени и смещение два указывает | Не поддерживается | Поддерживается, модель Master-Slave, без другого комплекта | Поддерживается | Работа из коробки, пользователю нужно обратить внимание только на несколько конфигураций |
Архитектура
RocketMQ состоит из четырех частей: серверов имен, брокеров, производителей и потребителей. Каждый из них может быть расширен по горизонтали без единой точки отказа. Как показано на изображении слева.
Кластер NameServer
Облегченный компонент для обнаружения сервисов, который можно использовать для чтения и записи информации о маршрутизации. Каждый из них записывает глобальную информацию и поддерживает быстрое расширение хранилища.
Брокерский кластер
Они используют легкие механизмы TOPIC и QUEUE для управления хранилищем данных. Для обеспечения отказоустойчивости предоставляются две или три копии данных. И Клиент может получить сообщение в модели Push and Pull. Кроме того, также поддерживаются аварийное восстановление и расширенная статистика метрик.
Кластер продюсеров
Производители могут быть распределены и развернуты, а сообщения от производителей к брокерам могут быть сбалансированы с помощью многопутевости. Кроме того, поддерживаются быстрый отказ и низкая задержка.
Потребительский кластер
Потребители также могут быть распределены, развернуты в модели push и pull, и они могут подписываться на сообщения в реальном времени, потреблять сообщения в единицах кластера. Также поддерживается рассылка сообщений.
Приложения
Apache RocketMQ может иметь отношение как минимум к пяти аспектам:
- Интеграция гетерогенных систем ;
- Разделение между приложениями;
- Магистраль событийного механизма и модель сложной событийной архитектуры;
- Каналы репликации данных;
- Интеграция с движком расчета расхода;
- Доступ к потоковым данным.
Поддержка сообщества
Команда RocketMQ много сделала для активизации сообщества. Встречи, семинары, ApacheCon и Code Marathon регулярно проводятся в Пекине, Шэньчжэне, Ханчжоу для привлечения новых участников и участников. Наборы тестов OpenMessaging в настоящее время доступны для RocketMQ, и это позволяет RocketMQ идти в ногу с мировым стандартом распределенного обмена сообщениями.[6] Что касается управления версиями, принят ряд стандартизированных процессов разработки программного обеспечения. Последняя версия - 4.2.0, и 4.3.0 уже в пути. Более подробную информацию можно получить в здесь.
Награды
Самая популярная в Китае награда за программное обеспечение с открытым исходным кодом, 2016 г.
Самая популярная в Китае награда за программное обеспечение с открытым исходным кодом, 2017 г.
Самая популярная в Китае награда за программное обеспечение с открытым исходным кодом 2019
Смотрите также
- Apache ActiveMQ
- Apache Flink
- Apache Qpid
- Apache Samza
- Потоковая передача Apache Spark
- Служба распространения данных
- Шаблоны корпоративной интеграции
- Система обмена сообщениями предприятия
- Потоковая аналитика
- SOA, управляемая событиями
- По промежуточного слоя, ориентированного на сообщения
- Сервис-Ориентированная Архитектура
- StormMQ
- Апач Кафка
Рекомендации
- ^ "apache / rocketmq". GitHub. Получено 2018-05-25.
- ^ «От Alibaba к Apache: прошлое, настоящее и будущее RocketMQ». InfoQ. Получено 2018-06-26.
- ^ Ляо, Цзяньвэй; Чжуан, Сяодань; Fan, Renyi; Пэн, Сяонин (2017). «На пути к общей структуре распределенных сообщений для приложений обработки онлайн-транзакций». Доступ IEEE. 5: 18166–18178. Дои:10.1109 / ACCESS.2017.2717930.
- ^ Облако, Alibaba (4 января 2018 г.). "Kafka vs. RocketMQ - результаты нескольких стресс-тестов". Середина. Получено 2018-07-08.
- ^ Юэ, Ма; Жуйян, Ян; Цзяньвэй, Сунь; Кайфэн, Яо (2017). «Сервер передачи сообщений протокола MQTT на основе RocketMQ». 2017 10-я Международная конференция по интеллектуальным вычислительным технологиям и автоматизации (ICICTA). С. 295–298. Дои:10.1109 / ICICTA.2017.72. ISBN 978-1-5386-1230-9.
- ^ «Платформа тестирования OpenMessaging». openmessaging.cloud. Получено 2018-07-08.