1. Зачем использовать очередь сообщений?
(1) Развязка: Развязка может выполняться между несколькими системами, а первоначальный метод вызова через сеть изменен на использование MQ для асинхронной передачи сообщений.Если операция не требует синхронизации, ее можно использовать вместо нее. взаимодействует между разными системами, так что между проектами не будет сцепления, и не будет слишком большого влияния между системами.Даже если система зависнет, просто сообщения сжимаются в MQ и их никто не потребляет. системы.
(2) Асинхронный: добавьте схему операции в несколько шагов.Эти шаги не нужно выполнять синхронно.Например, если клиент создает заказ, ему также необходимо добавить трек в систему отслеживания клиентов, обновить инвентарь из систему инвентаризации и перейдите в систему клиентов, измените статус клиента и т. д. Таким образом, если система вызывается напрямую, она будет генерировать много времени, что неприемлемо для клиентов, а такие операции, как добавление треков клиентов, не нужно синхронизировать. последующие обновления отслеживания, запасов, состояния и другой информации размещаются в MQ, а затем выполняются асинхронно, что может ускорить доступ к системе и улучшить качество обслуживания клиентов.
(3) Сглаживание пиковых нагрузок: для трафика доступа к системе существуют периоды пиковой нагрузки и периоды низкой пиковой нагрузки. Например, в обычное время трафик системы невелик, а одновременных запросов в секунду всего более 100. Нет давления на систему для обработки, и все спокойно. Когда происходит определенное событие панической покупки, одновременный доступ к системе резко увеличивается, например, достигает 5000 одновременных запросов в секунду, а наша система может обрабатывать только 2000 запросов в секунду, тогда наша система и база данных могут выйти из строя из-за слишком большого трафика. В это время, если мы используем MQ для сокращения пиков трафика, помещаем большое количество пользовательских сообщений непосредственно в MQ, а затем наша система потребляет эти сообщения в соответствии со своей максимальной потребляемой мощностью, что может обеспечить стабильность системы, но это может быть необходимо для отслеживания бизнес-логики, чтобы вернуть пользователя на определенную страницу или уведомить его о результате позже другими способами.
2. Каковы преимущества и недостатки очередей сообщений?
Преимущества: 1. Выполнение операций разъединения операций со сложными конструкциями и множеством проектных систем, что снижает эксплуатационную сложность системы и снижает стоимость обслуживания системы.
2. Асинхронизируйте некоторые системные операции, которые могут выполняться асинхронно, сократите время отклика операции и улучшите взаимодействие с пользователем.
3. Он может срезать пики для высокого расхода, чтобы обеспечить бесперебойную работу системы.
Недостатки: 1. Снижение доступности системы. Например, если MQ введен в систему, что, если MQ зависнет? В общем, чем больше внешних зависимостей вы вводите, тем больше
хрупка, и каждая проблема с зависимостями приведет к краху всей системы.
2. Увеличена сложность системы. Необходимо учитывать различные ситуации MQ, такие как: повторное потребление сообщений, потеря сообщений, гарантированный порядок потребления и т. д.
3, проблема согласованности данных. Например, система A сообщила заказчику, что операция прошла успешно, в это время операция BC прошла успешно, а операция D не удалась, в результате чего данные оказались неточными.
согласуется.
3. Каковы преимущества и недостатки kafka, activemq, RabbitMQ и RocketMQ?
| характеристика | ActiveMQ | RabbitMQ | RocketMQ | kafka |
|---|---|---|---|---|
| Производительность одной машины | 10000-уровень, пропускная способность на порядок ниже, чем у RocketMQ и kafka | 10000-уровень, пропускная способность на порядок ниже, чем у RocketMQ и kafka | 100 000, RocketMQ также является своего рода MQ, который может поддерживать высокую пропускную способность. | На уровне 100 000 самым большим преимуществом Kafka является его большая пропускная способность.Он обычно используется с системами больших данных для расчета данных в реальном времени, сбора журналов и других сценариев. |
| Влияние количества тем на пропускную способность | Тематика может достигать уровня сотен или тысяч, а пропускная способность немного снизится. Это большое преимущество RocketMQ, который может поддерживать большое количество тем на одном и том же количестве машин. | Когда есть десятки или сотни тем, пропускная способность значительно падает. Поэтому при одинаковом количестве машин Кафка старается, чтобы количество топиков не было слишком большим. Если вы поддерживаете масштабные темы, вам нужно добавить больше машин | ||
| Своевременность | мс уровень | Микросекундный уровень, который является основной особенностью rabbitmq, задержка самая низкая | мс уровень | Задержка в мс |
| Доступность | Высокий, основанный на архитектуре ведущий-ведомый для достижения доступности | Высокий, основанный на архитектуре ведущий-ведомый для достижения доступности | Очень высокая, распределенная архитектура | Очень высокий, кафка распределена, одни данные имеют несколько копий, несколько машин не работают, данные не будут потеряны, и это не приведет к недоступности |
| надежность сообщения | Меньшая вероятность потери данных | После настройки оптимизации параметров можно достичь нулевой потери | После настройки параметров сообщение может достичь нулевых потерь | |
| Поддержка функций | Функции и полнота поля MQ | На основе разработки erlang, поэтому параллельная производительность чрезвычайно высока, производительность превосходна, а задержка низкая. | MQ имеет относительно полные функции и хорошую распределенную масштабируемость. | Функция относительно проста, в основном поддерживает функцию добавления одного MQ. |
| Преимущество | Очень зрелый, мощный и используемый в большом количестве компаний и проектов в отрасли. | Разработан на языке erlang, с отличной производительностью, низкой задержкой, пропускной способностью 10 000 уровней, полными функциями MQ, очень хорошим интерфейсом управления и активным сообществом; интернет-компании используют его больше | Интерфейс прост в использовании, ALI выпустила безопасность, высокую пропускную способность, легко распределенное расширение, более активное сообщество, поддержку крупномасштабной тематикой, поддержки сложных бизнес-сценариев, которые могут быть настроены на основе разработки исходного кода. | Сверхвысокая пропускная способность, задержка на уровне мс, чрезвычайно высокая доступность и надежность, а также простое распределенное расширение |
| недостаток | Изредка вероятность потери сообщений низкая, а активность сообщества невысокая | Пропускная способность низкая, голосовая разработка на erlang непроста в настройке, а динамическое расширение кластера вызывает затруднения. | Интерфейс не соответствует стандартной спецификации JMS.Миграция некоторых систем требует внесения значительных изменений в код, а технология находится под угрозой отказа. | Возможность повторного потребления сообщений |
| заявление | В основном используется для развязки и асинхронности, реже используется в сценариях с большой пропускной способностью. | оба используют | Используется в крупномасштабном, сложном бизнесе | Он широко используется для вычислений в реальном времени и сбора журналов больших данных и является отраслевым стандартом. |
В общем, итог такой: В общие бизнес-системы необходимо внедрить MQ.Поначалу все использовали ActiveMQ, но сейчас его мало используют. Он не проверен сценариями с большой пропускной способностью, а сообщество неактивно, поэтому использовать его не рекомендуется. Позже все начали использовать rabbitMQ, но он был разработан на языке erlang.Если вы не владеете erlang, он практически неуправляем для компании.Это открытый исходный код, с высокой активностью сообщества и относительно стабильной поддержкой. Все больше и больше компаний сейчас используют RocketMQ, но остерегайтесь риска быть заброшенными. Если у компании есть силы поддерживать и развивать ее самостоятельно, рекомендуется ее использовать. В противном случае выберите RabbitMQ. Если речь идет о вычислениях в реальном времени и сборе журналов больших данных, Kafka является отраслевым стандартом.
Таким образом, малым и средним компаниям с общей технической подготовкой следует использовать RabbitMQ, а крупным компаниям с сильными возможностями исследования и разработки инфраструктуры рекомендуется RocketMQ.
Следующий"Как обеспечить высокую доступность очередей сообщений》