Skip to content

基于SpringCloud2.1的微服务开发脚手架,整合了spring-security-oauth2、nacos、feign、sentinel、springcloud-gateway等。服务治理方面引入elasticsearch、skywalking、springboot-admin、zipkin等,让项目开发快速进入业务开发,而不需过多时间花费在架构搭建上。持续更新中

License

NotificationsYou must be signed in to change notification settings

coder-zheng/SpringCloud

 
 

Repository files navigation

Build StatusLicensecodecov

快速开始

先决条件

首先本机先要安装以下环境,建议先学习了解springboot和springcloud基础知识。

开发环境搭建

linux和mac下可在项目根目录下执行 ./install.sh 快速搭建开发环境。如要了解具体的步骤,请看如下文档。

具体步骤如下:

  1. 克隆代码库: git clone https://.com/zhoutaoo/SpringCloud.git

  2. 安装公共库到本地仓库:

cd common && mvn install

cd auth/authentication-client && mvn install

  1. 生成ide配置: mvn idea:ideamvn eclipse:eclipse 并导入对应的ide进行开发,IDE安装lombok插件(很重要,否则IDE会显示编译报错)

编译 & 启动

  • 1.启动基础服务:进入docker-compose目录,执行docker-compose -f docker-compose.yml up 或单个启动docker-compose up 服务名, 服务名如下

在启动应用之前,需要先启动数据库、缓存、MQ等中间件,可根据自己需要启动的应用选择启动某些基础组件,一般来说启动mysql、redis、rabbitmq即可,其它组件若有需要,根据如下命令启动即可。

该步骤使用了docker快速搭建相应的基础环境,需要你对docker、docker-compose有一定了解和使用经验。也可以不使用docker,自行搭建以下服务即可。

服务服务名端口备注
数据库mysql3306目前各应用共用1个实例,各应用可建不同的database
KV缓存redis6379目前共用,原则上各应用单独实例
消息中间件rabbitmq5672共用
注册与配置中心nacos8848启动和使用文档
日志收集中间件zipkin-server9411共用
搜索引擎中间件elasticsearch9200共用
日志分析工具kibana5601共用
数据可视化工具grafana3000共用
  • 2.创建数据库及表

只有部分应用有数据库脚本,若启动的应用有数据库的依赖,请初使化表结构和数据后再启动应用。

docker方式脚本初使化:进入docker-compose目录,执行命令 docker-compose up mysql-init

子项目脚本

路径一般为:子项目/db

如:auth/db 下的脚本,请先执行ddl建立表结构后再执行dml数据初使化

应用脚本

路径一般为:子项目/应用名/src/main/db

如:demos/producer/src/main/db 下的脚本

  • 3.启动应用

根据自己需要,启动相应服务进行测试,cd 进入相关应用目录,执行命令: mvn spring-boot:run

以下应用都依赖于rabbitmq、nacos,启动服务前请先启动mq和注册中心

服务分类服务名依赖基础组件简介应用地址文档
centerbus-server消息中心http://localhost:8071消息中心文档
sysadminorganizationmysql、redis用户组织应用http://localhost:8010待完善
authauthorization-servermysql、organization授权服务http://localhost:8000权限服务简介授权server文档
authauthentication-servermysql、organization认证服务http://localhost:8001认证server文档
authauthentication-client认证客户端jar包引入
gatewaygateway-webredisWEB网关http://localhost:8443WEB网关简介 WEB网关文档
gatewaygateway-adminmysql、redis网关管理http://localhost:8445网关管理后台文档
monitoradmin总体监控http://localhost:8022
  • 4.案例示意图

以下是一个用户访问的的示意图,用户请求通过gateway-web应用网关访问后端应用,通过authorization-server应用登陆授权换取token,请求通过authentication-server应用进行权限签别后转发到"您的业务应用"中

authorization-server为授权应用,启动前请初使化好数据库,授权Server文档

authentication-server为签权应用,若有新增接口,请初使化相关权限数据到resource表中。

gateway-admin可动态调整gateway-web的路由策略,测试前请先配置网关的转发策略,路由策略配置

示意图

  • 6.前端项目

确确保gateway-admin、gateway-web、organization、authorization-server、authentication-server服务启动,然后启动

前端项目(该项目目前还在开发中)

大家启动如有问题,可以先到这里看看,也可以加入交流群

常见问题

测试

运行 mvn test 启动测试.

架构与开发

架构

开发指南

开发指南

功能与特性

功能预览

用户管理 用户管理

角色管理 角色管理

服务容错 服务容错

API文档 API文档

组织架构管理 组织架构管理

基础服务

服务使用技术进度备注
注册中心Nacos
配置中心Nacos
消息总线SpringCloud Bus+Rabbitmq
灰度分流OpenResty + lua🏗
动态网关SpringCloud Gateway多种维度的流量控制(服务、IP、用户等),后端可配置化🏗
授权认证Spring Security OAuth2Jwt模式
服务容错SpringCloud Sentinel
服务调用SpringCloud OpenFeign
对象存储FastDFS/Minio🏗
任务调度Elastic-Job🏗
分库分表Mycat🏗
数据权限🏗使用mybatis对原查询做增强,业务代码不用控制,即可实现。

平台功能

服务使用技术进度备注
用户管理自开发用户是系统操作者,该功能主要完成系统用户配置。
角色管理自开发角色菜单权限分配、设置角色按机构进行数据范围权限划分。
菜单管理自开发🏗配置系统菜单,操作权限,按钮权限标识等。
机构管理自开发🏗配置系统组织机构,树结构展现,可随意调整上下级。
网关动态路由自开发🏗网关动态路由管理

开发运维

服务使用技术进度备注
代码生成🏗前后端代码的生成,支持Vue
测试管理🏗
文档管理Swagger2
服务监控Spring Boot Admin
链路追踪SkyWalking
操作审计🏗系统关键操作日志记录和查询
日志管理ES + Kibana、Zipkin
监控告警Grafana

更新日志

2019-10-18:

1.使用nacos替代eureka为服务的注册中心

2.使用nacos替代apollo为服务的配置中心

3.引入使用sentinel替换掉hystrix,引入sentinel-dasard

4.使用jetcache作两级缓存,优化缓存性能

5.网关启动时加载数据库中的路由到redis缓存

6.其它已知bug修复

联系交流

加入贡献代码

请入群 请戳这里 加群主微信。

请作者喝饮料

如果你觉的有帮助到您,可以请作者喝饮料,这样更有动力,谢谢。

学习交流

EMail:[email protected]

群1、2、3、4、5、6、7、8、9已满,请加群10,加群请戳这里

此些群仅为技术交流群,请大家不要讨论政治、发广告等与技术无关的东西。大家如若有问题可以在群里直接发问,我会抽空答复。

请大家问问题时尽量描述清楚背景与问题关键信息,描述的越清楚越容易得到答案。也更容易判断问题可能点,节省判断的时间,而不用来回问答。

同时也鼓励群友们积极回复已知的问题,大家相互帮助共同成长。如有bug或新需求也可以直接提交issue到,我会酌情处理。

如果你发现你的问题很久都没有人答复,那很有可能就是问题描述的不够清楚,别人无法回复。

问问题的三要素

  1. 说明背景,使用了哪个模块,要做什么?

  2. 怎么输入或操作的得到了什么结果? 截图,日志

  3. 哪里不明白或有什么疑问 ?

Stargazers over time

Stargazers over time

About

基于SpringCloud2.1的微服务开发脚手架,整合了spring-security-oauth2、nacos、feign、sentinel、springcloud-gateway等。服务治理方面引入elasticsearch、skywalking、springboot-admin、zipkin等,让项目开发快速进入业务开发,而不需过多时间花费在架构搭建上。持续更新中

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Java 82.3%
  • TSQL 8.4%
  • PLpgSQL 6.9%
  • Shell 2.1%
  • Dockerfile 0.3%