本文做者:HelloGitHub-秦人html
本文适合有 SpringBoot 和 SpringCloud 基础知识的人群,跟着本文可以使用和快速搭建 SpringCloud 项目。java
HelloGitHub 推出的《讲解开源项目》系列,今天给你们带来一款基于 SpringCloud2.1 的微服务开发脚手开源项目——SpringCloudmysql
项目源码地址:github.com/zhoutaoo/Sp…git
微服务是能够独立部署、水平扩展、独立访问的服务单元。Java 中常见最小的微服务单元就是基于 SpringBoot 框架的一个独立项目。一个微服务只作一件事(单一职责),多个微服务组合才能称之为一个完整的项目或产品。那么多个微服务的就须要来管理,而 SpringCloud 就是统筹这些微服务的大管家。它是一系列有序框架的集合,简单易懂、易部署易维护的分布式系统开发工具包。github
今天介绍的开源项目就是基于 SpringCloud2.1 的脚手架,让项目开发快速进入业务开发,而不需过多时间花费在架构搭建上,下面就让咱们一块儿来看看这个项目的使用吧。web
这里以一个网关(gateway-admin)微服务来讲明。redis
项目目录结构以下图:spring
目录说明:sql
一个完整的项目,微服务架构通常包括下面这些服务:docker
下面介绍了三种运行的方式:
Linux 和 Mac 系统下可在项目根目录下执行 ./install.sh
快速搭建开发环境。
不推荐此方法,但仍是简单介绍下。
基础环境安装:mysql、redis,rabbitmq
环境运行:
git clone https://github.com/zhoutaoo/SpringCloud.git #克隆项目
复制代码
安装认证公共包到本地 maven 仓库,执行以下命令:
cd common
mvn clean install #安装认证公共包到本地 maven 仓库
复制代码
安装注册中心 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)、网关服务(gateway)、组织管理服务(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 命令安装
# 安装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
复制代码
须要构建镜像的其余服务有:(注:操做和消息中心镜像构建方式相似)
网关管理服务 (gateway-admin、gateway-web)
组织服务(sysadmin/organization)
认证服务 (auth/authentication-server)
受权服务(auth authorization-server)
管理台服务(monitor/admin)
Nacos 服务中心
全部服务都正常启动,在 nacos 管理中心可查看,实例数表示运行此服务的个数,值为 1 能够理解为服务正常启动。
查看后台服务
命令行执行:docker ps -a
查看 docker 全部进程信息
经过访问微服务对外暴露的接口(swagger)检测服务是否可用。
swager 接口地址:http://IP:port/swagger-ui.html
测试以下图:
微服务(SpringBoot、SpringCloud、Docker)如今吵得特别火,它并非一门新的技术,而是在老技术的基础上衍生出来的,增长了一些新的特性。
教程至此,你应该可以经过 SpringCloud 这项目快速搭建微服务了。那么就能够开始你的微服务学习之旅了,是时候更新一下本身的技能树了,让咱们一块儿来学习微服务吧!
『讲解开源项目系列』——让对开源项目感兴趣的人再也不畏惧、让开源项目的发起者再也不孤单。跟着咱们的文章,你会发现编程的乐趣、使用和发现参与开源项目如此简单。欢迎留言联系咱们、加入咱们,让更多人爱上开源、贡献开源~