24

GitHub - zhoutaoo/SpringCloud: 基于SpringCloud2.0的微服务开发脚手架,整合了sprin...

 4 years ago
source link: https://github.com/zhoutaoo/SpringCloud
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

readme.md

Build Status License codecov

快速开始

先决条件

首先本机先要安装以下环境,建议先学习了解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 up 服务名 或单个启动docker-compose up 服务名

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

该步骤使用了docker快速搭建相应的基础环境,需要你对docker、docker-compose有一定了解和使用经验。(注:请使用阿里的docker镜像)

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

服务 服务名 端口 备注 数据库 postgres 5432 目前各应用共用1个实例,各应用可建不同的database KV缓存 redis 6379 目前共用,原则上各应用单独实例 消息中间件 rabbitmq 5672 共用 日志收集中间件 zipkin-server 9411 共用 搜索引擎中间件 elasticsearch 9200 共用 日志分析工具 kibana 5601 共用 数据可视化工具 grafana 3000 共用
  • 2.启动配置中心:docker-compose -f docker-compose.yml -f docker-compose.config.yml up apollo-portal

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

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

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

子项目脚本

路径一般为:子项目/db

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

应用脚本

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

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

  • 4.启动应用

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

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

服务分类 服务名 依赖基础组件 简介 应用地址 文档 center eureka-server 无 注册中心 http://localhost:8761 注册中心文档 center bus-server

消息中心 http://localhost:8071 消息中心文档 center config-server

配置中心 http://localhost:8888 配置中心文档 sysadmin organization postgres、redis 用户组织应用 http://localhost:8010 待完善 auth authorization-server postgres、organization 授权服务 http://localhost:8000 权限服务简介授权server文档 auth authentication-server postgres、organization 认证服务 http://localhost:8001 认证server文档 auth authentication-client 无 认证客户端 jar包引入

gateway gateway-web redis WEB网关 http://localhost:8443 WEB网关简介 WEB网关文档 gateway gateway-admin postgres、redis 网关管理 http://localhost:8445 网关管理后台文档 monitor admin

总体监控 http://localhost:8022

monitor hystrix-dashboard

性能指标展示 http://localhost:8021

monitor turbine

性能指标收集 http://localhost:8031

  • 5.案例示意图

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

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

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

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

示意图

  • 6.前端项目

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

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

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

常见问题

测试

运行 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
├── sysadmin             --系统管理子项目
│   ├── db                 --系统管理子项目数据库脚本
│   ├── organization       --组织管理应用,包括用户、角色、资源、菜单、组织架构的管理
│   └── pom.xml
├── monitor              --监控、日志及服务管理子项目
│   ├── admin              --springboot admin管理
│   ├── hystrix-dashboard  --hystrix监控
│   ├── turbine            --turbine监控聚集 
│   └── pom.xml
├── webapps              --web项目的基础父工程,定义常用依赖等
│   ├── webapp-parent      --web项目的父工程,新建业务应用父工程
│   └── 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 OAuth2 ✅ Jwt模式 服务容错 SpringCloud Hystrix ✅

服务调用 SpringCloud OpenFeign ✅

对象存储 FastDFS ?

任务调度 Elastic-Job ?

分库分表 Mycat ?

数据权限

? 使用mybatis对原查询做增强,业务代码不用控制,即可实现。

开发管理

服务 使用技术 进度 备注 代码生成

? 前后端代码的生成,支持Vue 测试管理

?

文档管理 Swagger2 ✅

运维监控

服务 使用技术 进度 备注 服务监控 Spring Boot Admin ✅

链路追踪 SkyWalking ✅

操作审计

? 系统关键操作日志记录和查询 日志管理 ES + Kibana、Zipkin ✅

监控告警 Grafana ✅

平台功能

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

联系交流

EMail:[email protected]

群1、2、3、4、5已满,请加群6

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

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

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

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

问问题的三要素

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

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

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

687474703a2f2f3132342e3235302e38332e35373a393039302f7765636861742f7765636861742e706e67


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK