1 Star 0 Fork 189

ljq / spring-cloud-plus

forked from gourd-hu / spring-cloud-plus 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
BSD-3-Clause

spring-cloud-plus

项目地址

系统介绍

spring-cloud-plus 是以spring-cloud-alibaba为基础并整合一些常用框架的分布式基础开发平台。 项目以组件模块的方式构建,实现项目模块可插拔组装。工作中遇到的一些常用框架,我都会整合到此项目,并持续更新。

目标

  • 成为一个简单易用、快速高效、功能丰富、安全稳定的分布式项目脚手架。
  • 让每个人都可以独立、快速、高效地开发一套分布式项目!

技术架构图

技术架构图

技术栈

  • 基础:springboot + springcloud
  • 持久化:MybatisPlus
  • 连接池:Druid
  • 数据库:Mysql
  • 项目构建:Maven
  • API网关: Gateway
  • 日志:Logback
  • 注册、配置中心: Nacos
  • 服务调用: Feign + Ribbon
  • 熔断、降级:Sentinel
  • 分布式事务:Seata
  • 分布式锁:Redisson
  • 鉴权: Shiro + jwt-token
  • 缓存: Redis、springCache
  • 工作流:Activiti
  • 定时任务: Quartz
  • 消息中间件:ActiveMq
  • 文件操作:FastDFS、EasyExcel
  • 搜索存储引擎:Elasticsearch
  • 接口文档:Swagger、knife4j
  • 应用监控:spring-boot-admin
  • 前置负载:Nginx
  • 链路追踪:Skywalking
  • 项目部署:docker-compose

组件模块

模块 描述 功能
cmpt-base 基础模块 项目所必须的依赖包和配置和基础类
cmpt-core 核心模块 项目公共的工具类等
cmpt-cloud 分布式模块 注册、配置中心、分布式事务等
cmpt-rbac 鉴权模块 RBAC鉴权模型,用户、角色、权限分配等
cmpt-cache 缓存模块 redis集群、redisson分布式锁、springcache注解式缓存
cmpt-quartz 定时调度模块 quartz动态定时任务,并持久化到mysql数据库
cmpt-activiti 工作流模块 activiti整合,及请假Demo
cmpt-notice 通讯模块 邮件、短信、websocket等
cmpt-file 文件模块 文件上传、下载、预览,Excel导入导出等
cmpt-es 搜索引擎模块 elasticSearch 搜索引擎整合
cmpt-activemq 消息模块 消息的发送和消费
cmpt-log 日志模块 logback日志、操作日志记录等
cmpt-flyway 脚本执行模块 数据库脚本自动执行
generator-boot 代码生成模块 mybatisPlus的代码生成工具,一键生成基础代码

项目模块

模块 描述 功能
boot-admin-web 应用监控模块 监控应用线程、内存、垃圾回收、配置等监控
gateway-web 网关模块 负责服务路由转发,可作为服务统一入口
openapi-web 开放平台模块 外部接口调用入口、签名鉴权等
admin-web 主项目 整合了所有的组件模块,启动这个模块,就可以测试所有的功能啦
sub-webb 辅助项目 简单的cloud项目,用于测试分布式服务调用和分布式事务等
sub-api 辅助API模块 封装feign调用,方便复用

文档

线上接口文档:http://47.103.5.190:10001/doc.html
接口文档

如何开始

  • 项目默认环境为: local
  • 所有项目模块都可以直接启动,配置信息都放在Nacos中了。如果需要修改配置地址信息等,可自己添加application.yaml然后修改,项目中提供了一份demo文件可参考: 配置
  • 有时会报Sentinel的配置类型转换异常,需要调整JDK版本,我使用的版本是:1.8.0_231 是可以正常启动的。具体参看: sentinel异常

部署

集成功能

核心功能:

  • 用户权限管理:

框架:shiro +jwt,使用jwt-token作为用户身份Id;
支持承租人模式;token续期等

  • 网关:

负责服务路由转发,可作为服务统一入口

  • 开放平台:

通过签名验证方式,鉴权外部接口调用

  • 动态数据源:

动态多数据源(支持读写分离,如果只有一个数据库,可将master和slave配置成一样即可);
数据库连接密码加密;

  • 缓存:

框架:springCache、redis、redisson ;
封装redis、redisson工具类;

  • 分布式事务:

框架:seata(AT模式); 集成以nacos为配置中心

  • 定时任务:

框架:quartz;
quartz表结构自动生成;
业务代码动态增加定时任务;
数据持久化到Mysql数据库;

  • 分布式调用:

注册发现中心:Nacos;
feignClient远程调用;
ribbon负载均衡、sentinel熔断降级 ;

  • 配置中心:

框架:nacos; 支持配置及日志等级热更新;

  • 限流熔断:

框架:sentinel;接口限流、降级、系统保护、热点数据限流、权限设置等;
规则持久化到Nacos;

  • 通讯:

aliyun短信通知; 邮件通知(文本、html、附件、模板);

  • 文件:

openoffice在线预览文件; easyexcel实现Excel文件导入导出; fastDfs文件上传、下载; FlyingSaucer+thymeleaf实现动态模板文件转pdf打印;

  • 工作流

框架:activiti
请假流程Demo

  • 消息:

框架:activeMq 支持点对点和订阅发布模式,消息持久化

  • async:

支持@Async注解异步方法;
异步线程池直接使用。

  • 日志记录:

logback日志记录,以小时为单位生成日志文件;
操作日志记录,根据配置策略规定所有接口都生成日志还是指定注解的接口生成日志; 记录请求地址、参数、返回、异常及接口耗时等并持久化到数据库默认保留30天的日志。

  • 搜索引擎

框架:elasticSearch; 分布式、RESTful 风格的搜索和数据分析引擎;

  • 工具类:

1)地址ip获取工具(IpAddressUtil);
2)日期处理工具(DateUtil);
3)分布式全局唯一订单号生成、分布式全局唯一主键id生成工具(OrderNumberUtil、IdGeneratorUtil);
4)md5加密工具、AES加解密工具(Md5Util、AesHopeUtil);
5)汉字拼音生成工具(Pinyin4jUtil);
6)铭感词脱敏工具(SensitiveInfoUtil); 7)集合转换复制工具(CollectionUtil);
8)redis操作工具类、redisson锁工具类(RedisUtil、RedisLockUtil);
9)RestTemplate远程调用工具了(RestTemplateUtil);

  • 其他功能:

1)统一异常处理,自定义业务异常;
2)spring-retry接口重试,自定义接口重试次数、间隔、和重试的异常;
3)AOP接口防重复提交,唯一条件:指定时间内,用户id+请求url+参数 控制唯一性;
4)实体类公共字段填充:is_deleted,version,created_by,created_time,updated_by,updated_time ;
5)p6spy sql日志打印,打印sql耗时、替换参数后的sql;
6)jasypt文本加解密,可用于数据库密码、redis密码、邮箱密码等加密;
密文生成:https://blog.csdn.net/HXNLYW/article/details/98635913
7)图形验证码生成校验

辅助功能:

  • knife4j:

接口文档、接口调试;
本地地址:http://localhost:10001/doc.html

  • flyway:

数据库脚本自动执行,只需要将sql脚本放在 /db目录下,项目启动就会自动执行脚本。

  • generator:

mybatisPlus自动生成基础代码

  • druid监控:

本地地址:http://localhost:10001/druid/login.html 账号密码:admin

  • springbootadmin监控:

springboot应用监控,线程、内存、垃圾回收、配置等监控;
本地地址:http://localhost:8769

作者

名字:葫芦胡
邮箱:13584278267@163.com
博客:https://blog.csdn.net/HXNLYW
微信号:13584278267 (欢迎咨询)

写在最后

本项目正在开发阶段,由于码主白天要上班,只有晚上、周末能挤点时间来敲敲代码,所以进度可能比较慢,文档、注释也不齐全。 各位大侠就将就着看,但随着时间的推移。文档,注释,启动说明等码主我一定会补全的。

BSD 3-Clause License Copyright (c) 2020, 葫芦胡 All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

简介

spring-cloud-plus 是以spring-cloud-alibaba为基础并整合一些常用框架的分布式基础开发平台。 目标成为一个简单易用、快速高效、功能丰富、安全稳定的分布式项目脚手架。让每个人都可以独立、快速、高效地开发一套分布式项目 展开 收起
Java
BSD-3-Clause
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Java
1
https://gitee.com/ljq0525/spring-cloud-plus.git
git@gitee.com:ljq0525/spring-cloud-plus.git
ljq0525
spring-cloud-plus
spring-cloud-plus
master

搜索帮助

344bd9b3 5694891 D2dac590 5694891