个人学习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

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐