本项目采用spring-cloud-boot-docker为基础架构,目的在于搭建一个微服务快速开发脚手架.
- 微服务关键词
1. 鉴权
2. 配置
3. 监控
4. 日志
5. 自动化运维
6. 一致性
- 环境搭建
准备一台centos7 内存4G+, 安装如下插件
1. jdk8
2. maven
3. git
4 .mysql
5. docker
6. docker-compose
7. 使用docker安装rancher
- 技术选型
1. Hibernate-Validator 参数校验框架
2. Mybatis 数据库框架
3. hutool工具类
4. lombok插件
5. docker 编译插件,实现快速将jar打包成镜像(mvn package docker:build)
6. docker-compose 服务编排
7. zuul 服务网关
8. feign 服务调用
9. hystrix 熔断超时设置
10. Log4j2 日志框架
11.容器管理 Rancher
- 未来愿景
1. docker 将镜像上传私有库
2. docker 跨主机部署
3. docker 数据库多容器共享数据库
4. 集成rabbitMQ消息系统
5. 集成redis缓存插件
6. 实现mysql主从复制
7. 集成elk日志分析系统
8. 集成oss对象存储系统
9. 集成分库分表插件
10. zuul集成oauth2权限验证框架
- 部署运行
1. git clone <url>
2. 进入项目的当前目录,依次执行如下构建命令
2.1 编译打包,排除测试类
mvn clean package -Dmaven.test.skip=true
2.2 构建镜像
mvn package docker:build
mvn package -Dmaven.test.skip=true docker:build(推荐:排除测试类)
3. 构建成功,运行docker images出现如下页面
4. 运行docker-compose up 启动服务
- 系统架构图
- Demo 业务流程图
- 服务注册中心
- 网关接口汇总页面
支持环境级别的基于角色的访问控制,方便用户通过角色配置控制用户或用户组对开发环境或者生产环境的访问权限
提供了可视化的运维界面
提供了主机资源管理、容器编排、扩容、缩容、资源监控、负载均衡、配置管理以及 API 调用等重要功能
- 应用创建的容器
- 容器的详细信息
本方案采用zuul集成oauth2协议
部署要点:
网关模块对外暴露端口
其他微服务模块不对外暴露端口
通过内网IP实现接口调用
- 获取授权(token有效期30d)
http://111.231.189.44:8768/oauth/token?grant_type=client_credentials&scope=app&client_id=acme&client_secret=acmesecret
result:
{
"access_token": "294d68ef-5d1c-4d07-9bc7-4e1132c2cef8",
"token_type": "bearer",
"expires_in": 2584089,
"scope": "app"
}
- 拿到access_token请求接口,否则报权限错误
http://111.231.189.44:8768/api/order/rest/order/getOrderInfoById?orderId=2&access_token=294d68ef-5d1c-4d07-9bc7-4e1132c2cef8
不传access_token:
{
"error": "unauthorized",
"error_description": "Full authentication is required to access this resource"
}
传access_token:
{
"code": 0,
"success": true,
"message": "success",
"data": {
"id": 2,
"userId": 1,
"commodityId": 1,
"purchaesCount": 1,
"payStatus": 1
}
}
XXL是一系列开源软件的集合:任务调度、配置中心、消息队列、RPC通讯、API管理、Web框架、爬虫、Excel工具、搜索、SSO