Микросервисы SpringCloud Alibaba на практике — базовая подготовка среды

Java

Springcloud Alibaba сейчас настолько популярен, что я всегда хотел написать серию блогов на основе Springcloud Alibaba, чтобы шаг за шагом построить микросервисную архитектуру, и, наконец, решил начать первую статью этой серии с сегодняшнего дня — базовая подготовка среды.

Содержание этой серии статей в основном основано на трех микросервисах: пользовательский сервисAccountService, заказать услугуOrderService, обслуживание продуктаProductService

Используемые компоненты:

  • Центр регистрации, Центр конфигурации Nacos
  • Страж ограничения тока
  • Распределенные транзакции Seata
  • Шлюз SpringCloud Gateway
  • Аутентификация и авторизация Spring Cloud Oauth2
  • докер, докер-сочинение

Из-за относительно большого количества используемых компонентов развертывание будет очень громоздким.Самое главное, что нет сервера ресурсов.Поэтому в процессе разработки я буду поэтапно развертывать некоторые компоненты с помощью docker-compose.
image.png

Содержание этой статьи заключается в использовании Dokcer-compose для развертывания Nacos, Sentinel, Mysql в качестве базовой среды для следующей серии статей.

Если вы не очень хорошо знакомы с docker или docker-compose, вы можете прочитать мои предыдущие две статьи, прочитав их, я думаю, вы сможете быстро начать.

контейнерный

mysql

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

  • запустить эфемерный контейнер
    docker run -p3306:3306 --rm --name mysql -e MYSQL_ROOT_PASSWORD=123456 -v /app/cloud/mysql/data:/var/lib/mysql mysql:5.7
    Здесь необходимо смонтировать каталог хоста, и нет необходимости повторно инициализировать данные после запуска docker-compse.
  • Используйте клиент mysql для подключения к вашему контейнеру, а затем импортируйте таблицу данных nacos
    `https://github.com/alibaba/nacos/tree/develop/distribution/conf/
    nacos-mysql.sql`
    image.png
  • остановить контейнер из-за добавления--rmпараметры, поэтому контейнер автоматически удаляется
    docker stop 3475ef078d3a

nacos

Давайте взглянем на переменные среды NACOS, как показано в следующей таблице:

элемент конфигурации описывать необязательный параметр По умолчанию
MODE Кластерный/автономный режим cluster/standalone cluster
PREFERHOSTMODE поддерживается ли имя хоста hostname/ip ip
NACOSSERVERPORT Номер сервисного порта
8848
SPRINGDATASOURCEPLATFORM Автономный режим поддерживает mysql mysql / empty empty
MYSQLMASTERSERVICE_HOST Хост главного узла mysql

MYSQLMASTERSERVICE_PORT Порт главного узла mysql
3306
MYSQLMASTERSERVICEDBNAME имя базы данных главного узла mysql

MYSQLMASTERSERVICE_USER имя пользователя главного узла mysql

MYSQLMASTERSERVICE_PASSWORD пароль главного узла mysql

MYSQLSLAVESERVICE_HOST Хост подчиненного узла mysql

MYSQLSLAVESERVICE_PORT Порт подчиненного узла mysql
3306

Nacos поддерживает конфигурацию master-slave.Учитывая проблему с ресурсами, мы настраиваем только один сервер mysql.Учащиеся с ресурсами могут создать среду master-slave.

sentinel

Sentinel относительно прост, прямая конфигурацияsentinel-dashboardПросто зеркально отразите. (Нет необходимости вводить компонент sentinel в начале серии. Чтобы потом не вводить его отдельно, я в этот раз тоже добавил его в свой docker-compose)

seata

По некоторым причинам, Seata не выпустила официальное изображение и временно застряла.

docker-compose

Ниже приведен файл docker-compose, который я написал, вы можете изменить его самостоятельно.

version: "3"
services:
  mysql:
    container_name: mysql
    image: mysql:5.7
    environment:
      - MYSQL_ROOT_PASSWORD=123456
    volumes:
      - /app/cloud/mysql/data:/var/lib/mysql
    ports:
      - "3306:3306"
    restart: always

  nacos:
    image: nacos/nacos-server:1.1.4
    container_name: nacos
    environment:
      - PREFER_HOST_MODE=hostname
      - MODE=standalone
      - MYSQL_DATABASE_NUM=1
      - SPRING_DATASOURCE_PLATFORM=mysql
      - MYSQL_MASTER_SERVICE_HOST=mysql
      - MYSQL_MASTER_SERVICE_DB_NAME=nacos_config
      - MYSQL_MASTER_SERVICE_PORT=3306
      - MYSQL_MASTER_SERVICE_USER=root
      - MYSQL_MASTER_SERVICE_PASSWORD=123456
    volumes:
      - /app/cloud/nacos/logs:/home/nacos/logs
    ports:
      - "8848:8848"
    depends_on:
      - mysql
    restart: always


  sentinel:
    image: bladex/sentinel-dashboard:latest
    container_name: sentinel
    ports:
      - "8858:8858"
    restart: always

загрузить его на свой сервер, выполнитьdocker-compose up -dзапуск команды

Экологическая проверка

nacos

посетить накосhttp://192.168.136.129:8848/nacos, используйте пароль учетной записи nacos/nacos для входа, добавьтеname=JAVA日知录Конфигурация.image.pngNacos успешно установлен!

mysql

Используйте клиентский инструмент для подключения к службе mysql и просмотраhis_config_infoТаблица, подтвердите, есть ли только конфигурацияimage.pngMySQL успешно установлен!

sentinel

доступhttp://192.168.136.129:8858Войти под учетной записью дозорный/sentinelimage.pngSentinel успешно установлен!

На данный момент компоненты, необходимые в предыдущем периоде, были успешно установлены, поэтому на этом выпуске «Микросервисы Spring Cloud Alibaba — базовая подготовка среды» следует заканчивать. Увидимся в следующем выпуске!

Личный общедоступный номер: ежедневная запись JAVA,javadaily.cn

微信公众号