个人学习GitHub开源项目系列 Cloud-Platform篇
Github Link: https://gitee.com/minull/ace-security
Cloud-Platform简介
Cloud-Platform是国内首个基于Spring Cloud
微服务
化开发平台
,具有统一授权、认证后台管理系统,其中包含具备用户管理、资源权限管理、网关API 管理等多个模块,支持多业务系统并行开发,可以作为后端服务的开发脚手架。代码简洁,架构清晰,适合学习和直接项目中使用。 核心技术采用Spring Boot 2.0.1
以及Spring Cloud (Finchley.RELEASE)
相关核心组件,采用Consul注册中心
,前端采用vue-element-admin
组件。
整体架构图如下
架构摘要
服务鉴权
通过JWT
的方式来加强服务之间调度的权限验证,保证内部服务的安全性。
监控
利用Spring Boot Admin 来监控各个独立Service的运行状态;利用Hystrix Dashboard来实时查看接口的运行状态和调用频率等。
负载均衡
将服务保留的rest进行代理和网关控制,除了平常经常使用的node.js、nginx外,Spring Cloud系列的zuul和ribbon,可以帮我们进行正常的网关管控和负载均衡。其中扩展和借鉴国外项目的扩展基于JWT的Zuul限流插件
,方面进行限流。
服务注册与调用
基于Consul来实现的服务注册与调用,在Spring Cloud中使用Feign, 我们可以做到使用HTTP请求远程服务时能与调用本地方法一样的编码体验,开发者完全感知不到这是远程方法,更感知不到这是个HTTP请求。
熔断机制
因为采取了服务的分布,为了避免服务之间的调用“雪崩”,采用了Hystrix
的作为熔断器,避免了服务之间的“雪崩”。
环境搭建
本机Mac搭建环境
1.MySQL
此处不再详述
2.Redis
Docker直接启动
docker run -p 6379:6379 --name redis -d redis redis-server --appendonly yes
3.Rabiitmq
#安装RabbitMQ到 usr/local/Cellar/rabbitmq/*LatestVersion*
brew install rabbitmq
#启动RabbitMQ
rabbitmq-server
启动后可以访问http://localhost:15672/ guest:guest
4.Consul注册中心
#安装Consul
brew install consul
#查看consul安装路径
which consul
#cd到对应路径启动consul
./consul agent -dev
启动后可以访问http://localhost:8500
6.安装JDK(废话),安装IDE并安装lombok插件
7.运行数据库脚本 顺序如下
ace-admin/db/init.sql、ace-auth-server/db/init.sql、ace-trace
8.修改配置数据库配置
ace-admin/src/main/resources/application.yml、ace-auth-server/src/main/resources/application.yml、
ace-control/src/main/resources/application.yml、ace-generator/src/main/resources/application.yml、
ace-trace/src/main/resources/application.yml
9.按照依赖顺序编译Project 按顺序执行启动各个微服务
(1)CenterBootstrap(ace-center)
(2)AuthBootstrap(ace-auth-server)
(3)AdminBootstrap(ace-admin)
(4)GatewayServerBootstrap(ace-gateway-v2)
(5)TraceBootstrap (ace-trace)
10.启动前端UI工程
https://gitee.com/minull/AG-Admin-v2.0
(1)git clone 前端工程
(2)环境版本准备(版本不对编译不成功)node版本可以使用nvm指定
node 版本:v6.11.2
npm 版本:3.10.10
(3)安装依赖
## 安装依赖
npm install
## 若上述不行则采取下面命令
npm install --registry=https://registry.npm.taobao.org
(4)本地启动前台
# 本地开发 开启服务
npm run dev
项目基本功能截图
首页
服务注册中心 Eureka
服务状态监控 Spring Boot Admin
服务链路监控 Zipkin
服务权限管理
基础配置管理
项目简单分析
1.ace-center 注册中心Eureka
2.ace-common 项目基础包
3.ace-auth 项目鉴权module
可以关注JWTHelper.java和相关的类,含有密钥加密,公钥解析和获取token中的用户信息等重要方法
4.ace-module 业务核心module
5.ace-gate 网关服务
Filter方法中 进行鉴权
核心只做了3件事:
1.从request请求拿到访客的user信息
2.判断用户是否有权限访问api
3.给合法的请求生成一个新的token
熔断器相关配置
6.ace-controller Spring Admin & Zipkin