Springcloud Alibaba сейчас настолько популярен, что я всегда хотел написать серию блогов на основе Springcloud Alibaba, чтобы шаг за шагом построить микросервисную архитектуру, и, наконец, решил начать первую статью этой серии с сегодняшнего дня — базовая подготовка среды.
Содержание этой серии статей в основном основано на трех микросервисах: пользовательский сервисAccountService
, заказать услугуOrderService
, обслуживание продуктаProductService
Используемые компоненты:
- Центр регистрации, Центр конфигурации Nacos
- Страж ограничения тока
- Распределенные транзакции Seata
- Шлюз SpringCloud Gateway
- Аутентификация и авторизация Spring Cloud Oauth2
- докер, докер-сочинение
Из-за относительно большого количества используемых компонентов развертывание будет очень громоздким.Самое главное, что нет сервера ресурсов.Поэтому в процессе разработки я буду поэтапно развертывать некоторые компоненты с помощью docker-compose.
Содержание этой статьи заключается в использовании Dokcer-compose для развертывания Nacos, Sentinel, Mysql в качестве базовой среды для следующей серии статей.
Если вы не очень хорошо знакомы с docker или docker-compose, вы можете прочитать мои предыдущие две статьи, прочитав их, я думаю, вы сможете быстро начать.
- Основы 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`
- остановить контейнер из-за добавления
--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日知录
Конфигурация.Nacos успешно установлен!
mysql
Используйте клиентский инструмент для подключения к службе mysql и просмотраhis_config_info
Таблица, подтвердите, есть ли только конфигурацияMySQL успешно установлен!
sentinel
доступhttp://192.168.136.129:8858
Войти под учетной записью дозорный/sentinelSentinel успешно установлен!
На данный момент компоненты, необходимые в предыдущем периоде, были успешно установлены, поэтому на этом выпуске «Микросервисы Spring Cloud Alibaba — базовая подготовка среды» следует заканчивать. Увидимся в следующем выпуске!
Личный общедоступный номер: ежедневная запись JAVA,javadaily.cn