DDMQ — это продукт очереди сообщений, основанный на архитектуре Dida (DiDi) для поездок. Он был разработан на основе Apache RocketMQ и представляет собой распределённое промежуточное ПО для обмена сообщениями.
DDMQ обеспечивает низкую задержку, высокую пропускную способность, доступность и надёжность обмена сообщениями для различных бизнес-линий DiDi. Пользователи могут легко подключаться к DDMQ для отправки и получения сообщений через унифицированную веб-консоль и простой в использовании SDK. Они могут наслаждаться богатым функционалом и стабильным сервисом обмена сообщениями.
Основные функции:
-
Модель сообщений: поддержка P2P, Pub/Sub и других моделей сообщений.
-
Хранение больших объёмов сообщений и поддержка истории сообщений: использование RocketMQ и Kafka в качестве основного механизма хранения сообщений.
-
Низкая задержка и высокая пропускная способность: миллисекундная задержка и миллионы сообщений в секунду на одном компьютере.
-
Отложенные сообщения: возможность установить точную задержку для каждого сообщения до секунд, поддержка обратных вызовов в формате Thrift и HTTP. Предлагается широкий спектр типов сообщений, включая отложенные и циклически отложенные сообщения.
-
Транзакционные сообщения: предоставление функций распределённых транзакций, аналогичных X/Open XA, что позволяет достичь согласованности в распределённых системах.
-
Многоязычные клиенты: предоставляются SDK для основных языков программирования, таких как PHP, Java, Go, C/C++, Python и другие. API поддерживает удобный высокоуровневый интерфейс.
-
Сложные функции преобразования и фильтрации сообщений: поддерживается использование Groovy-скриптов на стороне сервера для преобразования и фильтрации содержимого сообщений, что может значительно уменьшить объём данных, передаваемых между клиентами и серверами, а также снизить нагрузку на обработку сообщений на клиентах.
-
Удобная веб-панель управления: предоставляет пользователям простой способ запрашивать ресурсы, такие как темы, группы потребителей и подписки, через веб-интерфейс. Также предоставляет функции просмотра и сброса прогресса потребления.
Архитектура DDMQ:
Централизованная архитектура с несколькими модулями:
- carrera-common: предоставляет общий код для других модулей и инкапсулирует операции ZK.
- carrera-producer: модуль прокси-сервера для производителей, который включает в себя сервер Thrift и отвечает за пересылку сообщений от клиентов брокеру.
- carrera-consumer: модуль прокси-сервера для потребителей, который также включает в себя сервер Thrift и предоставляет SDK для извлечения сообщений и отправки их через HTTP подписчикам.
- carrera-chronos: модуль отложенных сообщений, использующий RocksDB в качестве хранилища для отложенных сообщений.
- carrera-sdk: SDK для производства и потребления сообщений, поддерживающий основные языки программирования.
- rocketmq: модифицированная версия открытого исходного кода RocketMQ (версия 4.2.0), которая добавляет такие функции, как автоматическое переключение между главным и подчинённым узлами брокера.
- carrera-console: пользовательский веб-интерфейс, разработанный на Spring, для управления конфигурацией.
- carrera-monitor: модуль мониторинга, предоставляющий мониторинг давления потребления и состояния кластера.
- carrera-docker: предоставляет образ DDMQ для одиночных машин, упрощая развёртывание и использование.
Развёртывание:
- Внешние зависимости: 64-битная операционная система, Linux/Unix/Mac, 64-битный JDK 1.8+, Maven 3.2.x, MySQL 5.7.x, Tomcat 7/8/9, Zookeeper 3.4.x.
- Шаги развёртывания: развёртывание MySQL и Zookeeper, инициализация структуры и данных MySQL, развёртывание пользовательского веб-интерфейса, инициализация данных узлов Zookeeper.
- Развёртывание Producer Proxy, Consumer Proxy и Chronos.
Для получения дополнительной информации о DDMQ, включая инструкции по использованию и документацию по внесению вклада, рекомендуется обратиться к исходному тексту.
Опубликовать ( 0 )