Skip to content

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

License

Notifications You must be signed in to change notification settings

justStarNew/SpringCloud

Repository files navigation

Build StatusLicensecodecov

快速开始

先决条件

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

开发环境

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

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

cd common && mvn install

cd auth/authentication-client && mvn install

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

编译 & 启动

  • 1.启动基础服务:docker-compose -f docker-compose.yml 或单个启动docker-compose up 服务名

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

该步骤使用了docker快速搭建相应的基础环境,需要你对docker、docker-compose有一定了解和使用经验。

如你需要使用mysql,请自行搭建即可。

服务服务名端口备注
数据库postgres5432目前各应用共用1个实例,各应用可建不同的database
KV缓存redis6379目前共用,原则上各应用单独实例
消息中间件rabbitmq5672共用
日志收集中间件zipkin-server9411共用
搜索引擎中间件elasticsearch9200共用
日志分析工具kibana5601共用
数据可视化工具grafana3000共用
  • 2.启动配置中心:docker-compose -f docker-compose.yml -f docker-compose.config.yml up apollo-portal

该步骤不是必须,若你想使用apollo为配置中心,通过以上命令启动即可。目前仅demos/producer应用使用了apollo作为配置中心

服务服务名端口备注
apollo配置中心apollo-portal8070配置中心管理后台,访问地址http://localhost:8070
  • 3.创建数据库及表

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

子项目脚本

路径一般为:子项目/db

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

应用脚本

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

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

  • 4.启动应用

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

服务分类服务名依赖基础组件简介应用地址文档
centereureka-serverrabbitmq注册中心http://localhost:8761注册中心文档
centerbus-serverrabbitmq、eureka-server消息中心http://localhost:8071消息中心文档
centerconfig-serverrabbitmq、eureka-server配置中心http://localhost:8888配置中心文档
authauthorization-serverrabbitmq、postgres、eureka-server授权服务http://localhost:8000权限服务文档授权Server文档
authauthentication-serverrabbitmq、postgres、eureka-server签权服务http://localhost:8001认证Server文档
authauthentication-client签权客户端jar包引入
gatewaygateway-webrabbitmq、eureka-server、redisWEB网关http://localhost:8443WEB网关文档
gatewaygateway-adminrabbitmq、postgres、eureka-server、redis网关管理http://localhost:8445网关管理后台文档
monitoradminrabbitmq、eureka-server总体监控http://localhost:8022
monitorhystrix-dashboardrabbitmq、eureka-server性能指标展示http://localhost:8021
monitorturbinerabbitmq、eureka-server性能指标收集http://localhost:8031
  • 5.案例示意图

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

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

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

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

示意图

测试

运行 mvn test 启动测试.

架构

架构

开发指南

项目目录结构

├── auth --授权认证子项目 │ ├── authentication-server --认证组件服务端 │ ├── authentication-client --认证组件客户端 │ ├── authorization-server --授权组件服务端 │ ├── db --子项目公共数据库脚本 │ └── pom.xml --子项目maven配置文件 ├── center --中心子项目 │ ├── bus --消息中心 │ ├── config --配置中心 │ ├── eureka --注册中心 │ └── pom.xml ├── common --通用子项目 │ ├── core --核心类库 │ ├── test --测试工具类库 │ ├── web --WEB核心类库 │ └── pom.xml ├── docs --文档及资源文件 ├── data --server及服务数据存储目录 │ ├── elasticsearch --elasticsearch配置数据存储位置 │ ├── postgres --postgres数据库文件存储目录 │ ├── rabbitmq --rabbitmq数据文件存储目录 │ └── redis --redis数据文件存储目录 ├── gateway --网关子项目 │ ├── gateway-web --基于springcloud gateway的网关 │ ├── gateway-admin --springcloud gateway的网关管理模块 │ └── pom.xml ├── monitor --监控、日志及服务管理子项目 │ ├── admin --springboot admin管理 │ ├── hystrix-dashboard --hystrix监控 │ ├── turbine --turbine监控聚集 │ └── pom.xml ├── demos --demos子项目 │ ├── consumer-feign --消费者服务 feign demo │ ├── consumer-ribbon --消费者服务 ribbon demo │ ├── producer --服务提供者,产品服务 │ ├── producer-jpa --服务提供者,产品服务,jpa和hateoas │ └── pom.xml ├── .env --docker-compose环境变量配置文件 ├── readme.md --readme文档入口 ├── docker-compose.yml --docker compose配置文件,基础组件如数据库、运维组件 ├── docker-compose.override.yml --docker compose配置文件,注册中心、网关、授权认证服务等 ├── docker-compose.apps.yml --docker compose配置文件,应用demo ├── docker-compose.config.yml --docker compose配置文件,apollo配置中心 └── pom.xml --业务服务子项目 

module目录结构

├── logs --日志目录 │ ├── spring.log │ └── spring.log.2018-04-15.0.gz ├── pom.xml --module maven配置文件 ├── src --源码目录 │ ├── main --源文件 │ │ ├── db --服务db脚本目录 │ │ │ ├── db.sql --创建库的脚本 │ │ │ ├── ddl --建表语句等ddl │ │ │ │ ├── mysql --mysql ddl │ │ │ │ └── postgres --postgres ddl │ │ │ └── dml --基础数据dml │ │ ├── docker --docker相关配置文件 │ │ │ └── Dockerfile --dockerfile │ │ ├── docs --接口文档目录,一般由swagger生成 │ │ ├── java --java源码目录 │ │ │ ├── dao --数据操作层 │ │ │ ├── service --业务逻辑层 │ │ │ ├── provider --调用第三方服务的提供类 │ │ │ ├── rest --接口controller │ │ │ ├── entity --实体类 │ │ │ │ ├── form --rest表单校验 │ │ │ │ ├── param --dao参数,可以由form转化来 │ │ │ │ ├── po --实体类 │ │ │ │ └── vo --视图对象 │ │ │ ├── events --事件或消息处理类 │ │ │ ├── config --配置类 │ │ │ ├── exception --异常处理相关类 │ │ │ ├── interceptor --拦截器相关类 │ │ │ └── task --定时任务 │ │ └── resources --配置文件目录 │ │ ├── application.yml --springboot的应用配置文件 │ │ └── bootstrap.yml --springboot的配置文件 │ └── test --测试目录 │ ├── java --java测试案例目录 │ └── resources --配置文件目录 │ └── application.yml --springboot test的配置文件 └── target --编译目标目录 

开发规范

规范文档

功能特性

基础模块

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

开发管理

服务使用技术进度备注
代码生成🏗前后端代码的生成,支持Vue
测试管理🏗
文档管理Swagger2

运维监控

服务使用技术进度备注
服务监控Spring Boot Admin
链路追踪Pinpoint、SkyWalking🏗
操作审计🏗系统关键操作日志记录和查询
日志管理ES + Kibana、Zipkin
监控告警Grafana

平台功能

服务使用技术进度备注
用户管理自开发🏗用户是系统操作者,该功能主要完成系统用户配置。
角色管理自开发🏗角色菜单权限分配、设置角色按机构进行数据范围权限划分。
菜单管理自开发🏗配置系统菜单,操作权限,按钮权限标识等。
机构管理自开发🏗配置系统组织机构,树结构展现,可随意调整上下级。
通知平台自开发🏗短信、邮件、微信模板发送

联系交流

EMail:zhoutaoo@foxmail.com

群1、2已满,请加群3,如下

wechat

About

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

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Java99.0%
  • Other1.0%