Автор этой статьи: HelloGitHub-Цинь люди
Эта статья подходит для людей с базовыми знаниями о SpringBoot и SpringCloud.Следуя этой статье, вы можете использовать и быстро собрать проект SpringCloud.
от HelloGitHub«Объяснение проектов с открытым исходным кодом»Серия, сегодня я представляю вам проект разработки микросервисов с открытым исходным кодом на основе SpringCloud2.1——SpringCloud
Адрес исходного кода проекта:GitHub.com/Чжоу Таоох/SP…
Введение в микросервисы
Микросервисы — это сервисные единицы, которые можно развертывать независимо, масштабировать по горизонтали и получать к ним независимый доступ. Наименьшая общая микросервисная единица в Java — это независимый проект, основанный на фреймворке SpringBoot. Микросервис выполняет только одну задачу (единая ответственность), а сочетание нескольких микросервисов можно назвать законченным проектом или продуктом. Затем необходимо управлять несколькими микросервисами, а SpringCloud — большая экономка для координации этих микросервисов. Это набор упорядоченных фреймворков, набор инструментов для разработки распределенных систем, который легко понять, развернуть и обслуживать.
Представленный сегодня проект с открытым исходным кодом — это скаффолдинг на основе Spring Cloud 2.1, позволяющий быстро перейти к развитию бизнеса, не тратя слишком много времени на построение архитектуры.Давайте посмотрим на использование этого проекта.
2. Структура проекта
Вот микросервис шлюза (gateway-admin) для иллюстрации.
Структура каталогов проекта выглядит следующим образом:
Описание каталога:
- db: Скрипт базы данных инициализации проекта.
- docker: каталог файла конфигурации Docker, который упаковывает микросервисы в виде образов Docker.
- config: каталог с информацией о конфигурации проекта, включая конфигурацию базы данных, конфигурацию преобразования сообщений и т. д.
- dao: рабочий каталог базы данных, в основном для добавления, удаления, проверки и изменения базовых данных.
- entity: каталог классов сущностей проекта.
- события: каталог обработки событий.
- исключение: Каталог обработки исключений, который обрабатывает глобальные исключения по аспектам.
- rest: каталог контроллера микросервиса, который является интерфейсом, предоставляемым внешнему миру.
- service: каталог бизнес-уровня микросервиса.
- GatewayAdminApplication: класс входа Microservice SpringBoot.
- ресурсы: каталог файла конфигурации проекта.
- test: каталог модульных тестов проекта.
- pom.xml: файл объектной модели проекта maven.
3. Реальная боевая операция
3.1 Предпосылки
- Убедитесь, что Git, Java8, Maven установлены локально.
- Имейте некоторые знания о SpringMVC, потому что SpringBoot основан на эволюции SpringMVC.
- Иметь некоторое представление о движке контейнеров приложений Docker и Docker-compose.
3.2 Описание микросервисной архитектуры
Полный проект микросервисной архитектуры обычно включает следующие сервисы:
- Реестр (часто используемые фреймворки Nacos, Eureka)
- Унифицированный шлюз (часто используемый фреймворк Gateway, Zuul)
- Центр аутентификации (распространенные решения по внедрению технологий Jwt, OAuth)
- Распределенные транзакции (распространенные фреймворки Txlcn, Seata)
- файловая служба
- бизнес Сервис
3.3 Запуск проекта
Вот три способа запуска:
Первый: операция в один клик
Его можно запустить в корневом каталоге проекта в системах Linux и Mac../install.sh
Быстро создайте среду разработки.
Второй: запустить в локальной среде
Этот метод не рекомендуется, но кратко.
-
Установка базовой среды: mysql, redis, rabbitmq
-
Среда работает:
git clone https://github.com/zhoutaoo/SpringCloud.git #克隆项目
-
Чтобы установить сертифицированный общедоступный пакет в локальный репозиторий maven, выполните следующую команду:
cd common mvn clean install #安装认证公共包到本地 maven 仓库
-
Установить реестр Nacos
- скачатьNacos
- Выполните следующую команду:
unzip nacos-server-0.9.0.zip OR tar -xvf nacos-server-0.9.0.tar.gz cd nacos/bin bash startup.sh -m standalone # Linux 启动命令 cmd startup.cmd # Windows 启动命令
-
Запустите службы шлюза, службы проверки подлинности, бизнес-службы и т. д.
Вот пример службы шлюза: выполнитьGatewayAdminApplication.java
Уведомление: служба аутентификации (auth), служба шлюза (шлюз) и служба управления организацией (sysadmin) должны выполнить сценарий инициализации базы данных.
Доступно через интерфейс swager:http://localhost:8445/swagger-ui.htmlПроверьте, прошла ли установка успешно. Если к ней можно получить доступ нормально, это означает, что служба успешно запущена.
инструкция:
-
Файл application.yml в основном настраивает информацию о подключении rabbitmq, redis и mysql.
spring: rabbitmq: host: ${RABBIT_MQ_HOST:localhost} port: ${RABBIT_MQ_PORT:5672} username: ${RABBIT_MQ_USERNAME:guest} password: ${RABBIT_MQ_PASSWORD:guest} redis: host: ${REDIS_HOST:localhost} port: ${REDIS_PORT:6379} #password: ${REDIS_PASSWORD:} lettuce: pool: max-active: 300 datasource: driver-class-name: com.mysql.jdbc.Driver url: jdbc:${DATASOURCE_DBTYPE:mysql}://${DATASOURCE_HOST:localhost}:${DATASOURCE_PORT:3306}/sc_gateway?characterEncoding=UTF-8&useUnicode=true&useSSL=false username: ${DATASOURCE_USERNAME:root} password: ${DATASOURCE_PASSWORD:root123}
-
Файл bootstrap.yml в основном настраивает базовую информацию о службе (порт, имя службы), адрес реестра и т. д.
server: port: ${SERVER_PORT:8445} spring: application: name: gateway-admin cloud: nacos: discovery: server-addr: ${REGISTER_HOST:localhost}:${REGISTER_PORT:8848} config: server-addr: ${REGISTER_HOST:localhost}:${REGISTER_PORT:8848} file-extension: yml sentinel: transport: dashboard: ${SENTINEL_DASHBOARD_HOST:localhost}:${SENTINEL_DASHBOARD_PORT:8021}
Третий тип: работающая среда Docker
-
Установка базовой среды
-
Установить через команду docker
# 安装redis docker run -p 6379:6379 --name redis -d docker.io/redis:latest --requirepass "123456" # 安装mysql docker run --name mysql5.7 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root123 -d docker.io/mysql:5.7 # 安装rabbitmq docker run -d -p 15672:15672 -p 5672:5672 -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin --name rabbitmq docker.io/rabbitmq:latest
-
Его также можно установить с помощью команды docker-compose.
cd docker-compose docker-compose up -d #docker-compose 安装mysql,redis,rabbitmq 服务
-
-
Скачать проект на локальный
git clone https://github.com/zhoutaoo/SpringCloud.git #克隆项目
-
Установите сертифицированный общедоступный пакет в локальный репозиторий maven и выполните следующую команду:
cd common && mvn install #安装认证公共包到本地maven仓库
-
docker-compose для запуска Nacos
cd docker-compose docker-compose -f docker-compose.yml -f docker-compose.nacos.yml up -d nacos #启动注册中心
-
Создайте образ центра сообщений
cd ./center/bus mvn package && mvn docker:build cd docker-compose #启动消息中心 docker-compose -f docker-compose.yml -f docker-compose.center.yml up -d bus-server
Другими службами, которым необходимо создавать зеркала, являются: (Примечание: операция аналогична созданию зеркала центра сообщений)
-
Службы управления шлюзом (шлюз-админ, шлюз-веб)
-
Служба организации (сисадмин/организация)
-
Служба аутентификации (auth/authentication-server)
-
Служба авторизации (сервер авторизации авторизации)
-
Служба Management Desk (монитор/администратор)
3.4 Эффект операции
Сервисный центр Накос
Все службы запускаются нормально, что можно посмотреть в центре управления nacos.Количество экземпляров указывает на количество запущенных данной службы.Значение 1 означает, что служба запускается нормально.
Просмотр фоновых служб
Выполнение командной строки:docker ps -a
Просмотреть всю информацию о процессе докера
Проверьте, доступна ли служба, обратившись к интерфейсу (swagger), предоставляемому микрослужбой.
адрес интерфейса swager:http://IP:port/swagger-ui.html
Тест выглядит следующим образом:
Четвертый, последний
Микросервисы (SpringBoot, SpringCloud, Docker) сейчас очень шумные, это не новая технология, а производная от старой технологии с добавлением некоторых новых функций.
На этом этапе руководства вы сможете быстро создавать микросервисы с помощью проекта SpringCloud. Затем вы можете начать свое путешествие по изучению микросервисов, пришло время обновить ваше дерево навыков, давайте изучать микросервисы вместе!
5. Ссылки
«Объяснение серии проектов с открытым исходным кодом»——Пусть больше не боятся люди, интересующиеся проектами с открытым исходным кодом, и пусть инициаторы проектов с открытым исходным кодом больше не остаются в одиночестве. Следите за нашими статьями, и вы откроете для себя радости программирования, насколько легко им пользоваться, и узнаете, как легко участвовать в проектах с открытым исходным кодом. Добро пожаловать, чтобы оставить сообщение, чтобы связаться с нами, присоединиться к нам, позволить большему количеству людей влюбиться в открытый исходный код и внести свой вклад в открытый исходный код ~