[Практика проекта Docker] Развертывание промежуточного программного обеспечения сообщений RabbitMQ с использованием Docker
[Практика проекта Docker] Развертывание промежуточного программного обеспечения сообщений RabbitMQ с использованием Docker

1. Введение в RabbitMQ

1.1 Введение в RabbitMQ

RabbitMQэто использоватьErlangнаписано на языке,А RabbitMQ основан на протоколе AMQP. RabbitMQ — сервер очереди брокера сообщений с открытым исходным кодом.,Используется для обмена данными между разрозненными приложениями через общие протоколы.

1.2 Возможности RabbitMQ

  • Открытый исходный код, отличная производительность, гарантированная стабильность.
  • Обеспечить надежный режим доставки сообщений и режим возврата.
  • Идеальная интеграция с Spring AMQP, богатый API.
  • Расширенные режимы кластера, конфигурация выражений, режим высокой доступности, модель зеркальной очереди
  • Обеспечьте высокую надежность и доступность без потери данных

1.3 Сценарии использования RabbitMQ

RabbitMQЭто широко используемая система очередей сообщений с открытым исходным кодом.,Он поддерживает несколько протоколов обмена сообщениями.,вAMQP(Advanced Message Queuing Протокол) является наиболее часто используемым. Ниже приведены некоторые типичные сценарии использования RabbitMQ:

  1. Обработка заказов пользователей и инвентаря:В системе электронной коммерции,Когда пользователь размещает заказ,Система заказов отправляет информацию о заказе в систему инвентаризации через RabbitMQ.,Внедряйте асинхронные операции для обработки заказов и сокращения запасов. Таким образом, даже если система инвентаризации временно недоступна.,Это не помешает созданию заказов,Это обеспечивает развязку между сервисами и высокую доступность системы.
  2. Асинхронная связь:в распределенных системах,Разным компонентам службы может потребоваться совместная работа.,Но не обязательно синхронно ожидать ответа. Например,После регистрации пользователя,Система асинхронно отправляет приветственные электронные письма или SMS-уведомления через RabbitMQ.,Это позволяет избежать длительного ожидания отправки электронного письма пользовательским интерфейсом.
  3. Планирование задач и пакетная обработка:можно использоватьRabbitMQПланируйте запланированные задачи или распределяйте пакетные задания。Например,Задачи по созданию отчетов по ночному анализу данных,Можно запланировать через очередь сообщений в непиковые часы.,Не влияйте на производительность системы в течение дня.
  4. Синхронный и асинхронный внутри приложения:При работе с высокопараллельными или ресурсоемкими задачами,Например, преобразование формата после загрузки изображений, перекодирование видео и т. д.,Вы можете сначала поместить запрос в очередь сообщений.,Асинхронно обрабатывается фоновой службой,Улучшите отзывчивость приложений.
  5. Система уведомлений о сообщениях:для системы уведомлений в реальном времени,Например, уведомления о платежах, обновления статуса логистики и т. д. когда происходит событие,Если платеж завершен,Система отправляет сообщения подписчикам через RabbitMQ.,Реализуйте службу мгновенных уведомлений.
  6. шаблон публикации/подписки:Подходит для сценариев, когда сообщения необходимо передавать нескольким потребителям.。Например,Система рассылки новостей может транслировать каждую вновь опубликованную новость через коммутатор всем клиентам, подписавшимся на эту категорию.
  7. Сбор и обработка журналов:Компоненты системы могут отправлять информацию журнала наRabbitMQ,Обрабатывается и хранится специальной службой сбора журналов.,Это предотвращает влияние обработки журналов на основной бизнес-процесс.
  8. Обработка сглаживания и сдвига пикового трафика:в периоды большого трафика,например, во время рекламных акций,Система может размещать запросы через очередь сообщений.,Плавная обработка пикового трафика,Избегайте прямого воздействия на базы данных или другие основные службы.
  9. Развязка между микросервисами:В микросервисной архитектуре,Сообщения передаются между службами через RabbitMQ вместо прямых вызовов.,Повышенная масштабируемость и отказоустойчивость системы.

2. Проверьте среду Docker.

2.1 Проверьте версию Docker

Проверьте текущую версию Docker

Язык кода:bash
копировать
[root@jeven ~]# docker -v
Docker version 20.10.17, build 100c701

2.2 Проверьте версию операционной системы

Проверьте версию операционной системы сервера,текущая практикасредадляcentos7.6среда。

Язык кода:bash
копировать
[root@jeven ~]# cat /etc/os-release
NAME="CentOS Linux"
VERSION="7 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="7"
PRETTY_NAME="CentOS Linux 7 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:7"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"

CENTOS_MANTISBT_PROJECT="CentOS-7"
CENTOS_MANTISBT_PROJECT_VERSION="7"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="7"

2.3 Проверка статуса Docker

Проверьте статус Docker, чтобы убедиться, что служба Docker хоста работает нормально.

Язык кода:bash
копировать
[root@jeven ~]# systemctl status docker
● docker.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)
   Active: active (running) since Sun 2024-05-12 08:34:14 CST; 1 day 10h ago
     Docs: https://docs.docker.com
 Main PID: 11565 (dockerd)
    Tasks: 28
   Memory: 1.2G
   CGroup: /system.slice/docker.service

3. Загрузите образ RabbitMQ.

скачатьRabbitMQЗеркалоbitnami/rabbitmq,Версияlatest

Язык кода:bash
копировать
[root@jeven ~]#  docker pull bitnami/rabbitmq
Using default tag: latest
latest: Pulling from bitnami/rabbitmq
0796bf144e3f: Pull complete
0aa278e6d559: Pull complete
f37134480d36: Pull complete
3ca5a05c65cf: Pull complete
88bb7bc42515: Pull complete
d707818752e6: Pull complete
b8a937a01956: Pull complete
efb772451b7f: Pull complete
db7fe513e59c: Pull complete
0d37a623156d: Pull complete
2e1d8d64104c: Pull complete
1bc67f22006e: Pull complete
891457114828: Pull complete
1161d96f1d40: Pull complete
Digest: sha256:a45676c71cf551fe942245b7ae133f9fd09f6278bb53fa98e18a00cf6abdbd90
Status: Downloaded newer image for bitnami/rabbitmq:latest
docker.io/bitnami/rabbitmq:latest

4. Развертывание службы RabbitMQ.

4.1 Создайте каталог для монтирования

Создать каталог монтирования /data/rabbitmq/data

Язык кода:bash
копировать
mkdir -p /data/rabbitmq/data && cd /data/rabbitmq/

авторизация каталога

Язык кода:bash
копировать
 chmod -R 777 /data/rabbitmq/

4.2 Запуск контейнера RabbitMQ

Для развертывания с помощью docker-cli воспользуйтесь следующими методами.

Язык кода:bash
копировать
docker run -d --name rabbitmq --restart always  -v /data/rabbitmq/data:/bitnami   -e RABBITMQ_USERNAME=admin -e RABBITMQ_PASSWORD=admin    -p 5672:5672 -p 15672:15672       bitnami/rabbitmq:latest

использование докера режим создания,Пожалуйста, обратитесь к следующемуdocker-compose.yamlФайлы развертывания。Эта практикаиспользование докера При развертывании в режиме создания вы можете настроить порт сопоставления, а также переменные входа в учетную запись и пароль.

Язык кода:bash
копировать
version: '3'
services:
  rabbitmq:
    image: bitnami/rabbitmq:latest
    container_name: rabbitmq
    restart: always
    environment:
      - RABBITMQ_USERNAME=admin
      - RABBITMQ_PASSWORD=admin
    ports:
      - 5672:5672
      - 15672:15672
    volumes:
      - /data/rabbitmq/data:/bitnami

Используйте следующую команду, чтобы начать создание контейнера RabbitMQ.

Язык кода:bash
копировать
docker compose up -d

4.3 Просмотр состояния контейнера RabbitMQ

Проверьте состояние контейнера RabbitMQ, чтобы убедиться, что контейнер запускается нормально.

Язык кода:bash
копировать
[root@jeven rabbitmq]# docker compose ps
NAME                COMMAND                  SERVICE             STATUS              PORTS
rabbitmq            "/opt/bitnami/script…"   rabbitmq            running             0.0.0.0:5672->5672/tcp, 0.0.0.0:15672->15672/tcp, :::5672->5672/tcp, :::15672->15672/tcp

4.4 Проверка журналов контейнера RabbitMQ

Проверьте журнал контейнера RabbitMQ, чтобы убедиться, что служба RabbitMQ работает нормально и нет серьезных ошибок.

Язык кода:bash
копировать
docker compose logs

5. Посетите домашнюю страницу RabbitMQ.

5.1 Войдите на страницу входа в RabbitMQ

Доступ через браузер: http://192.168.3.166:15672/, замените IP на IP-адрес вашего собственного сервера. Если доступ к странице входа невозможен, проверьте, закрыт ли локальный брандмауэр или разрешены ли соответствующие порты. Облачному серверу также необходимо установить правила группы безопасности.

5.2 Посетите домашнюю страницу RabbitMQ

Введите пароль учетной записи, который мы установили: admin/admin, чтобы войти в RabbitMQ.

6. Резюме

Использование Docker для развертывания RabbitMQ значительно упрощает процесс установки и настройки. Экземпляр службы, содержащий подключаемый модуль управления, можно запустить с помощью простой команды. Контейнеризованный RabbitMQ облегчает управление версиями и горизонтальное расширение, а также поддерживает сохранение данных во избежание потери сообщений. Кроме того, Docker Compose можно легко интегрировать с другими микросервисами для формирования стабильной архитектуры обмена сообщениями. В целом этот подход повышает эффективность разработки и удобство обслуживания системы.

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose