Промежуточное ПО для обмена сообщениями: почему мы выбираем RocketMQ

задняя часть Архитектура облачный носитель

6.13头图.jpg

Автор: Ли Вэй

Говоря об очередях сообщений, нам на ум пришли 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. Стоимость технологии2.png

С точки зрения технологической зрелости, после многотриллионного пика 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. Вы можете присоединиться к группе, чтобы оставить сообщение и ответить на вопросы.

3F8FC69E-02B9-4A45-B842-B4C3A0D94FEA.png

По сравнению с 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:

start.aliyun.com/course?SPM=…

4.png

  • «Промежуточное ПО для распределенного обмена сообщениями RocketMQ: основные принципы и лучшие практики» с книгой:start.aliyun.com/course?SPM=…

5.png

  • Играйте в RocketMQ в экосистеме Spring:

start.aliyun.com/course?SPM=…

6.png

Предварительный просмотр эксперимента выглядит следующим образом: ​7.png

Другие источники

  • RocketMQ против ActiveMQ против Kafka:

_ ракета в настоящее время.apache.org/docs/model Iva…_

  • Исходный код RocketMQ:

_ GitHub.com/Apache/рок…_

  • Исходный код экспортера RocketMQ:

_ GitHub.com/Apache/рок…_

  • Исходный код RocketMQ Spring:

_ GitHub.com/Apache/рок…_

  • Исходный код клиента RocketMQ C++:

_ GitHub.com/Apache/рок…_

  • Исходный код клиента RocketMQ Python:

_ GitHub.com/Apache/рок…_

  • Исходный код клиента RocketMQ Go:

_ GitHub.com/Apache/рок…_

  • Исходный код консоли RocketMQ:

_ GitHub.com/Apache/рок…_

  • Исходный код RocketMQ Flink Connector:

_ GitHub.com/Apache/рок…_

  • Как 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)