Автор: Ли Вэй
Говоря об очередях сообщений, нам на ум пришли ActiveMQ, RabbitMQ, RocketMQ, Kafka, Pulsar и т. д. Среди такого множества продуктов для очередей сообщений с открытым исходным кодом, как квалифицированный архитектор может предложить экономически эффективное решение? Коммерческие продукты пока не включены в опции.
Далее я будуЭлементы выбора, преимущества RocketMQДва аспекта объясняют, почему выбран RocketMQ.
Элементы выбора
Во-первых, делается краткий обзор и анализ с точки зрения компании, поставщика службы очередей сообщений (обычно группы промежуточного программного обеспечения) и конечного пользователя.
1. С точки зрения компании обратите внимание на следующие моменты:
1. Стоимость технологии Технические затраты обычно включают в себя затраты на сервер, вторичные затраты на разработку, затраты на последующее обслуживание и т. д. Короче говоря, это деньги.
В настоящее время серверы в основном используют облачные серверы, и производительность серверов с одинаковой конфигурацией разных поставщиков облачных услуг также отличается.Как правило, необходимо понимать стоимость сервера: производительность машины поставщика облачных услуг, скидки поставщиков облачных услуг, требуемая конфигурация сервера, количество серверов и текущая стоимость одного сервера Цена, цена со скидкой за один сервер и т.д. 2. Стоимость рабочей силы Затраты на рабочую силу обычно включают стоимость существующего технического персонала и стоимость найма нового персонала. Необходимо учитывать, как выбор новой технологии принимается нынешними техническими специалистами и насколько легко ее освоить. Если это слишком сложно, цикл запуска станет длиннее, реализация бизнес-требований будет медленной, а некоторые люди даже уйдут из компании напрямую.
Стоимость найма новых сотрудников обычно выглядит следующим образом: просмотр резюме, назначение на собеседование, несколько раундов собеседований, предложение, принятие предложения, официальное вступление, испытательный срок и регуляризация. Это включает в себя затраты на подбор персонала, затраты на общение с персоналом, затраты на собеседования и затраты на адаптацию новичков к среде после трудоустройства. 3. Другое В настоящее время интернет-компании на разных этапах предъявляют разные требования к затратам на технологии и трудозатратам, но многие компании определенного масштаба фактически относятся к ним с менталитетом «покупай, покупай, покупай»: пока бизнес развивается быстро, покупая серверы, рекрутинг Люди не проблема.Если стоимость высока, технологии будут использоваться для сокращения затрат и увольнения сотрудников. Это не только боль сотрудников, но и боль бизнеса, и боль компании.
2. С точки зрения группы промежуточного программного обеспечения обратите внимание на следующие моменты:
1. Стабильный Первым и главным пунктом обслуживания на уровне компании является стабильность. Благодаря стабильным компонентам и стабильным службам бизнес может развиваться упорядоченным образом. Так что, независимо от того, когда, стабильность превыше всего. 2. Функциональная поддержка
Разные бизнес-сценарии требуют разных функций.Обычно мы будем рассматривать повторную попытку, механизм недоставленных сообщений, сброс сайта, сообщения о временной задержке, сообщения о транзакциях, переключение ведущий-ведомый и контроль разрешений. 3. Производительность В настоящее время включает задержку записи и пропускную способность. 4. Платформа управления Прежде всего, он должен соответствовать требованиям доступа конечных пользователей, просмотра и устранения неполадок, администраторам управлять темами и удобству для потребителей. Платформа управления имеет лучшие из существующих, что удобно для вторичной разработки. 5. Мониторинг и оповещение Следите за тем, завершена ли тревога, легко ли получить доступ к внутренней системе собственной разработки компании или к отраслевому стандарту Prometheus де-факто. 6. Эксплуатация и техническое обслуживание, поддержка и сообщество с открытым исходным кодом Если продукт запущен, большую часть времени мы занимаемся эксплуатацией, обслуживанием и поддержкой. Эксплуатация и техническое обслуживание включают в себя развертывание службы, миграцию, обновление службы, устранение системных ошибок, вопросы и ответы пользователей, обновление платформы управления, мониторинга и аварийной сигнализации и т. д. 7. Другие Помимо того, что мы можем полагаться на себя, мы также можем использовать силу сообщества. С той же проблемой могли столкнуться другие и отправить PR, который был решен, и мы можем использовать его в качестве справки. Поэтому активность сообщества также является очень важным соображением.
3. С точки зрения конечных пользователей (как правило, включая внутренние исследования и разработки бизнеса и их руководителей)
1. Стабильность Для развития бизнеса и их руководителей их основной задачей является реализация бизнес-логики. Если у службы всегда есть проблемы на три дня и два конца, это фатально для них, поэтому стабильность является основной частью сравнения. 2. Сложность модернизации существующих проектов Преобразование старых проектов на самом деле является наиболее практической частью доступа бизнеса к новому промежуточному программному обеспечению. 3. Удобен ли доступ к новым проектам? Простота доступа напрямую связана с их рабочей нагрузкой. 4. Насколько совместим с текущей структурой микросервисов приложений Интеграция новых проектов и совместимость микросервисной инфраструктуры компании относительно просты. Как правило, промежуточное программное обеспечение учитывает удобство доступа к исследованиям и разработкам для бизнеса при предоставлении услуг.
Преимущества RocketMQ
Далее будут проанализированы преимущества RocketMQ в этом отношении в соответствии с требованиями элементов option.
1. Как RocketMQ решает и дружелюбно отвечает требованиям на уровне компании
1. Стоимость технологии
С точки зрения технологической зрелости, после многотриллионного пика Alibaba Double Eleven, WeBank, Minsheng Bank, Ant Financial, Ping An, ByteDance, Kuaishou, Meituan, JD.com, NetEase и других крупных компаний отрасли. тест, само собой. RocketMQ не предъявляет высоких требований к конфигурации сервера, можно использовать обычные облачные хосты. Однажды мы проверили кластер из 2 ведущих и 2 ведомых устройств твердотельного накопителя 8C 16G 500G, tps отправки может достигать 4–5 Вт, а пиковое потребление tps составляет 20 Вт+, что стабильно на уровне 8–9 Вт. Более того, он также может масштабироваться по горизонтали, не чувствуя себя в соответствии с фактическими потребностями бизнеса. В целом затраты на технологии относительно контролируемы, а талантов много. 2. Стоимость рабочей силы Стоимость рабочей силы в основном состоит из затрат на обучение существующего технического персонала и затрат на набор нового персонала. RocketMQ разработан на java, и код тоже очень стабильный и организованный.Помимо функциональных различий между версиями почти нет изменений в Api и протоколах передачи, что более удобно для апгрейда. Java также является относительно популярным языком, используемым в настоящее время промежуточным программным обеспечением, и широко используется техническим персоналом. RocketMQ используется в финансовой индустрии, такой как: WeBank, Minsheng Bank, Ant Financial и Ping An; другие отраслевые компании, такие как Ali, ByteDance, Kuaishou, Meituan, JD.com, NetEase и т. количество малых и средних предприятий, круг кандидатов относительно больше. Сообщество RocketMQ также относительно активно. Есть много групп DingTalk, групп WeChat и QQ. Документы сообщества очень богаты и полны. Также есть много видео и документов для анализа принципов, которые очень легко изучить и начать работу. . Ниже приведена группа DingTalk. Вы можете присоединиться к группе, чтобы оставить сообщение и ответить на вопросы.
По сравнению с C/C++, C#, Python, Go и т. д., в java больше талантов в очереди сообщений: основная Kafka — это scala + java, а pulsar — это java, что также имеет большие преимущества для найма. В целом технические специалисты RocketMQ лояльны к стоимости рабочей силы.
2. С точки зрения группы промежуточного программного обеспечения, как RocketMQ обеспечивает превосходные возможности для сопровождения бизнеса?
1. Стабильность Надежность на финансовом уровне, Али удваивает одиннадцать, стабильная поддержка, пик новостей на триллионном уровне,В компании, где работает автор, тоже 2 года + ноль аварий.. 2. Богатые функции и множество поддерживаемых сценариев
- Повторная попытка, механизм недоставленных сообщений, удобный и нечувствительный механизм повторных попыток для бизнеса.
- Сообщение о последовательности, сообщение о транзакции
- Поддержка 10 000 уровней количества тем
- фильтрация сообщений
- отслеживание сообщений
- Автоматическое переключение ведущий-ведомый
- Встроенная поддержка мониторинга Prometheus
- Встроенная поддержка простой в использовании платформы управления: консоль RocketMQ.
- Контроль прав доступа (ACL)
3. Производительность
- RocketMQ может поддерживать 99,9% задержки записи в 2 мс, а другое промежуточное программное обеспечение очереди сообщений с открытым исходным кодом в основном превышает 5 мс; в настоящее время большая часть промежуточного программного обеспечения очереди сообщений поддерживает горизонтальное расширение, и горизонтальное расширение пропускной способности может быть почти удовлетворено. . Тест производительности RocketMQ в Didi: _developer.aliyun.com/article/664…_, для справки.
- Отправка и потребление tps и kafka — на порядок, и резкое увеличение количества тем мало влияет на производительность.
4. Платформа управления Консоль RocketMQ изначально поддерживает:GitHub.com/Apache/рок…5. Мониторинг и оповещение RocketMQ Exporter изначально поддерживает Prometheus:GitHub.com/Apache/рок…6. Эксплуатация и техническое обслуживание, поддержка и сообщество с открытым исходным кодом
- Никаких сторонних зависимостей, таких как zk, из коробки
- Группа Dingding, группа WeChat и группа QQ в сообществе очень активны, и у группы Dingding и группы WeChat есть все вопросы и ответы.
- В сообщество недавно пришла барышня Commiter, и команда тоже растет.
В целом RocketMQ стабилен, надежен, имеет хорошую производительность, работает «из коробки» и не зависит от Zookeeper, система более стабильна и менее сложная. Мониторинг, аварийная сигнализация и другие сопутствующие функции завершены, поддержка сцен завершена, сообщество активно, а документация богата — это лучший выбор для команды промежуточного программного обеспечения.
3. Для конечных пользователей: бизнес-руководителей НИОКР и бизнес-НИОКР, их основные заботы заключаются в том, является ли предоставляемая технология стабильной и надежной, а также можно ли быстро и легко получить к ней доступ.
Если посмотреть на эту проблему с уровня группы промежуточного программного обеспечения, RocketMQ стабилен и надежен. RocketMQ предоставляет собственный клиент Java, клиент Spring, клиент C++, клиент Python, клиент Go и другие многотипные и многоязычные клиенты, доступ к которым можно получить единообразно для различных проектов. Spring Cloud фактически стал стандартом де-факто в среде микросервисов, RocketMQ поддерживает интеграцию Spring boot Starter и Spring Cloud Function в среду микросервисов, что более удобно и эффективно для поддержки системы Spring.
Kafka vs RocketMQ
На практике многие люди должны были столкнуться с RocketMQ vs Kafka, Kafka подходит для сценариев, которые нечувствительны к задержке, пакетному типу, контролируемому количеству тем и нечувствительны к потере сообщений. Например, MySQL-2Hive, канал потока данных MySQL-2-Flink, канал потока данных журнала и т. д. в сценариях больших данных.
RocketMQ подходит для бизнес-сценариев, таких как сообщения о финансовых переводах, сообщения об изменении статуса заказа и push-сообщения мобильного телефона. Количество тем в этих сценариях обычно превышает 10 000, что крайне чувствительно к задержке и потере сообщений, а данные обычно обрабатываются в статьях. Для проблемы массивных данных обычно горизонтальное расширение может полностью решить проблему.
Выберите правильный продукт для правильного сценария Универсального продукта не существует, это компромисс и компромисс.
об авторе
Ли Вей, участник сообщества Apache RocketMQ, руководитель клиентского проекта Python, соспонсор пекинского сообщества Apache RocketMQ, участник Apache Doris. В настоящее время работает в Tencent, в основном отвечая за разработку баз данных OLAP, имеет богатый опыт проектирования распределенных систем хранения, исследований и разработок, а также заинтересован в обмене знаниями и общественной деятельности.
Учебные материалы RocketMQ
Alibaba Cloud Zhixing Lab предоставляет серию практических онлайн-сред RocketMQ, включая рабочие документы и экспериментальную среду Ubuntu, вы можете попробовать ее в любое время:
- Рекомендации по началу работы с открытым исходным кодом Apache RocketMQ:
- «Промежуточное ПО для распределенного обмена сообщениями RocketMQ: основные принципы и лучшие практики» с книгой:start.aliyun.com/course?SPM=…
- Играйте в RocketMQ в экосистеме Spring:
Предварительный просмотр эксперимента выглядит следующим образом:
Другие источники
- RocketMQ против ActiveMQ против Kafka:
_ ракета в настоящее время.apache.org/docs/model Iva…_
- Исходный код RocketMQ:
- Исходный код экспортера RocketMQ:
- Исходный код RocketMQ Spring:
- Исходный код клиента RocketMQ C++:
- Исходный код клиента RocketMQ Python:
- Исходный код клиента RocketMQ Go:
- Исходный код консоли RocketMQ:
- Исходный код RocketMQ Flink Connector:
-
Как RocketMQ гарантирует надежность сообщений:
[https://mp.weixin.qq.com/s/imLTVwgm8MOiY1_5s3rdFQ](https://mp.weixin.qq.com/s?__biz=MzIzOTU0NTQ0MA==&mid=2247502152&idx=1&sn=3c356a4b65d50e964f0350a13ba08df3&scene=21#wechat_redirect)
-
Большое раскрытие! Как RocketMQ управляет ходом потребления:
[https://mp.weixin.qq.com/s/rHs9L1gTuFs05Cs2F4JXOw](https://mp.weixin.qq.com/s?__biz=MjM5NTk0NjMwOQ==&mid=2651114644&idx=1&sn=fa93f0264989b536153dc683a246601a&scene=21#wechat_redirect)