一.项目介绍
地址
后端:https://gitee.com/geek_qi/cloud-platform
前端:https://gitee.com/geek_qi/Cloud-Platform-UI-V2
介绍
Cloud-Platform是国内首个基于Spring Cloud微服务化开发平台,具有统一授权、认证后台管理系统,其中包含具备用户管理、资源权限管理、网关API 管理等多个模块,支持多业务系统并行开发,可以作为后端服务的开发脚手架。代码简洁,架构清晰,适合学习和直接项目中使用。 核心技术采用Spring Boot 2.1.2以及Spring Cloud (Greenwich.RELEASE) 相关核心组件,采用Nacos注册和配置中心,集成流量卫兵Sentinel,前端采用vue-element-admin组件,Elastic Search自行集成。
系统结构
架构详解
- 中台化前端
集成d2admin
中台化前端,优化前端架构和功能布局,支撑中台服务化的应用开发。 - JWT 鉴权
通过JWT
的方式来进行用户认证和信息传递,保证服务之间用户无状态的传递。 - 监控
利用 Spring Boot Admin 来监控各个独立 Service 的运行状态;利用 Hystrix Dashboard 来实时查看接口的运行状态和调用频率等。 - 负载均衡
将服务保留的 rest 进行代理和网关控制,除了平常经常使用的 node.js、nginx 外,Spring Cloud 系列的 zuul 和 ribbon,可以帮我们进行正常的网关管控和负载均衡。其中扩展和借鉴国外项目的扩展基于 JWT 的Zuul限流插件
,方面进行限流。 - 服务注册与调用
基于Nacos
来实现的服务注册与调用,在 Spring Cloud 中使用 Feign, 我们可以做到使用 HTTP 请求远程服务时能与调用本地方法一样的编码体验,开发者完全感知不到这是远程方法,更感知不到这是个 HTTP 请求。 - 熔断与流控
因为采取了服务的分布,为了避免服务之间的调用“雪蹦”,我采用了 Hystrix 的作为熔断器,避免了服务之间的“雪蹦”。
集成阿里Sentinel
进行接口流量控制,通过熔断和降级处理避免服务之间的调用“雪崩”。
项目结构
- ace-security
- ace-api--------------跨服务调用通用dto数据对象
- ace-modules--------------公共服务模块(基础系统和JWT鉴权、搜索、OSS)
- ace-dev-base---------------通用脚手架(基础jwtsdk、开发常用工具类)
- ace-gate-----------------网关负载中心
- ace-infrastructure--------------运维中心(监控、链路、naco注册中心、sentinel熔断流控)
二.运行环境
mysql一个,redis一个,sentiel一个,nacos注册中心一个
这里推荐使用 docker安装,docker 安装到 linux系统,有购买服务器的可以安装到服务器上,没有的建议本地安装虚拟机,然后虚拟机安装 linux系统,接着就可以通过 docker安装相关服务了,安装过程请自行百度。
三.启动过程遇到的问题
这里主要讲我遇到的问题。。。
- 项目后端一直启动报错,识别不到 bootstrap.yml文件
解决方法:
springboot工程2.4.0版本以上,需要设置环境参数-Dspring.cloud.bootstrap.enabled=true
- 加载 nacos配置报错,出现空指针报错
解决方法:
我这里出现这个错误的原因是因为我的 redis设置了密码,而项目 redis默认没有密码,所以报错,所以在 application.yml中配置 redis密码即可(踩坑!踩坑!) - 启动后端时执行 npm install总报错
首先注意 npm版本与python版本兼容性,建议使用作者推荐的 node版本
以上报错可能是 node没有识别到 python系统环境,建议手动配置
执行npm config get userconfig
查看 node配置文件位置,找到后打开,再里面加上如下语句
以上报错可能是因为没有配置 node-sass镜像地址,执行以下与语句解决
npm config set sass_binary_site=https://npm.taobao.org/mirrors/node-sass
以上报错应该是验证出现问题,解决方法如下:
打开package-lock.json
文件,把里面 but got前面的 sha1替换为后面的 sha即可
以上就是我在启动这两个项目是遇到的问题
npm install
安装成功后,执行 npm run dev
启动项目:
访问 http://localhost:9572/
后就会进入登录界面
登录成功后会显示如下界面,此时说明成功连接后端服务器了