All Projects → smart-cloud → smart-cloud

smart-cloud / smart-cloud

Licence: Apache-2.0 License
基于springboot && springcloud的脚手架,支持服务合并部署与拆分部署、接口加解密签名、日志数据 脱敏、接口数据mock、接口文档自动生成、请求幂等校验、接口日志&&sql日志切面打印、分表分库分布式事务、国际化语言等

Programming Languages

java
68154 projects - #9 most used programming language
FreeMarker
481 projects

Projects that are alternatives of or similar to smart-cloud

smart-cloud-examples
基于springcloud的脚手架(smart-cloud)示例,支持服务合并部署与拆分部署、接口加解密签名、日志数据脱敏、接口数据mock、接口文档自动生成、请求幂等校验、接口日志&&sql日志切面打印、分表分库分布式事务等
Stars: ✭ 23 (-86.23%)
Mutual labels:  rabbitmq, springcloud, integration-test, openfeign, dynamic-datasource
Mall Learning
mall学习教程,架构、业务、技术要点全方位解析。mall项目(40k+star)是一套电商系统,使用现阶段主流技术实现。涵盖了SpringBoot 2.3.0、MyBatis 3.4.6、Elasticsearch 7.6.2、RabbitMQ 3.7.15、Redis 5.0、MongoDB 4.2.5、Mysql5.7等技术,采用Docker容器化部署。
Stars: ✭ 10,236 (+6029.34%)
Mutual labels:  rabbitmq, mybatis, springcloud
Goodskill
🐂基于springcloud +dubbo构建的模拟秒杀项目,模块化设计,集成了分库分表、elasticsearch🔍、gateway、mybatis-plus、spring-session等常用开源组件
Stars: ✭ 786 (+370.66%)
Mutual labels:  rabbitmq, mybatis, springcloud
spring-boot-examples
本仓库为《Spring Boot 系列文章》代码仓库,欢迎点赞、收藏。
Stars: ✭ 52 (-68.86%)
Mutual labels:  rabbitmq, mybatis, mybatis-plus
vm-engine
vm-engine为“微视频”网站的后端,java语言开发。涉及技术包括,springboot,springcloud,mybaties,docker,websocket,rabbitmq,redis等。
Stars: ✭ 57 (-65.87%)
Mutual labels:  rabbitmq, mybatis, springcloud
Fw Cloud Framework
基于springcloud全家桶开发分布式框架(支持oauth2认证授权、SSO登录、统一下单、微信公众号服务、Shardingdbc分库分表、常见服务监控、链路监控、异步日志、redis缓存等功能),实现基于Vue全家桶等前后端分离项目工程
Stars: ✭ 717 (+329.34%)
Mutual labels:  rabbitmq, gateway, springcloud
Java-CS-Record
记录准备春招实习过程中,学习与复习的知识(模块化整理,非面试题速成)。注:暂停更新,后续请移步博客
Stars: ✭ 73 (-56.29%)
Mutual labels:  rabbitmq, mybatis, springcloud
Lamp Cloud
lamp-cloud 基于Jdk11 + SpringCloud + SpringBoot的微服务快速开发平台,其中的可配置的SaaS功能尤其闪耀, 具备RBAC功能、网关统一鉴权、Xss防跨站攻击、自动代码生成、多种存储系统、分布式事务、分布式定时任务等多个模块,支持多业务系统并行开发, 支持多服务并行开发,可以作为后端服务的开发脚手架。代码简洁,注释齐全,架构清晰,非常适合学习和企业作为基础框架使用。
Stars: ✭ 4,125 (+2370.06%)
Mutual labels:  gateway, mybatis, springcloud
Mall
mall项目是一套电商系统,包括前台商城系统及后台管理系统,基于SpringBoot+MyBatis实现,采用Docker容器化部署。 前台商城系统包含首页门户、商品推荐、商品搜索、商品展示、购物车、订单流程、会员中心、客户服务、帮助中心等模块。 后台管理系统包含商品管理、订单管理、会员管理、促销管理、运营管理、内容管理、统计报表、财务管理、权限管理、设置等模块。
Stars: ✭ 54,797 (+32712.57%)
Mutual labels:  rabbitmq, mybatis, springcloud
seckill parent
基于springboot+springcloud的高并发和商品秒杀项目,通过redis,rabbitmq等技术实现秒杀的高并发。
Stars: ✭ 59 (-64.67%)
Mutual labels:  rabbitmq, mybatis, springcloud
Springbootlearning
《Spring Boot教程》源码
Stars: ✭ 2,065 (+1136.53%)
Mutual labels:  rabbitmq, mybatis, springcloud
Spring Boot Examples
about learning Spring Boot via examples. Spring Boot 教程、技术栈示例代码,快速简单上手教程。
Stars: ✭ 26,812 (+15955.09%)
Mutual labels:  rabbitmq, mybatis, springcloud
Pdf
编程电子书,电子书,编程书籍,包括C,C#,Docker,Elasticsearch,Git,Hadoop,HeadFirst,Java,Javascript,jvm,Kafka,Linux,Maven,MongoDB,MyBatis,MySQL,Netty,Nginx,Python,RabbitMQ,Redis,Scala,Solr,Spark,Spring,SpringBoot,SpringCloud,TCPIP,Tomcat,Zookeeper,人工智能,大数据类,并发编程,数据库类,数据挖掘,新面试题,架构设计,算法系列,计算机类,设计模式,软件测试,重构优化,等更多分类
Stars: ✭ 12,009 (+7091.02%)
Mutual labels:  rabbitmq, mybatis, springcloud
Mall Swarm
mall-swarm是一套微服务商城系统,采用了 Spring Cloud Hoxton & Alibaba、Spring Boot 2.3、Oauth2、MyBatis、Docker、Elasticsearch、Kubernetes等核心技术,同时提供了基于Vue的管理后台方便快速搭建系统。mall-swarm在电商业务的基础集成了注册中心、配置中心、监控中心、网关等系统功能。文档齐全,附带全套Spring Cloud教程。
Stars: ✭ 7,874 (+4614.97%)
Mutual labels:  rabbitmq, mybatis, springcloud
Xc Spring Cloud Alibaba
spring cloud alibaba(2.2.1最新版)+nacos+dubbo+gateWay+sentinel+rocketmq+(pgsql/mysql8.0的json支持)+ignite集成可用于docker分布式框架+分布式自动化任务+mybatis多数据源+seate+ shardingSphere分布式分库事务解决方案
Stars: ✭ 131 (-21.56%)
Mutual labels:  gateway, mybatis, springcloud
Supermarket
设计精良的网上商城系统,包括前端、后端、数据库、负载均衡、数据库缓存、分库分表、读写分离、全文检索、消息队列等,使用SpringCloud框架,基于Java开发。该项目可部署到服务器上,不断完善中……
Stars: ✭ 1,278 (+665.27%)
Mutual labels:  rabbitmq, mybatis, springcloud
hanzo-cloud
SpringCloud(Hoxton.SR5) + SpringBoot(2.3.0.RELEASE)的 SaaS型微服务后端脚手架。授权中心开发完毕。文档地址:https://www.kancloud.cn/hanzo/hanzo
Stars: ✭ 15 (-91.02%)
Mutual labels:  gateway, mybatis-plus, springcloud
Springboot Templates
springboot和dubbo、netty的集成,redis mongodb的nosql模板, kafka rocketmq rabbit的MQ模板, solr solrcloud elasticsearch查询引擎
Stars: ✭ 100 (-40.12%)
Mutual labels:  rabbitmq, starter, mybatis
common-datax
基于DataX的通用数据同步微服务,一个Restful接口搞定所有通用数据同步
Stars: ✭ 51 (-69.46%)
Mutual labels:  mybatis, mybatis-plus, dynamic-datasource
robert
基于SpringCloud的企业级微服务多租户系统、多语言的脚手架, 代码组件化、高内聚低耦合,代码简介,注释丰富容易上手,该项目包括用于开发分布式应用程序服务的必要组件,支持多应用程序访问,并使开发人员可以轻松地使用Spring Cloud编程模型来开发分布式应用程序服务。
Stars: ✭ 45 (-73.05%)
Mutual labels:  rabbitmq, mybatis, springcloud

smart cloud

build codecov Language grade: Java license jdk version EN doc CN doc

一、功能特征

一个基于spring cloud实现的脚手架。所实现功能如下:

示例工程见smart-cloud-examples

二、模块说明

smart-cloud
├── smart-api-core -- 接口权限、加解密、签名等注解 && 用户上下文
│    ├──smart-api-annotation -- 接口权限、加解密、签名等注解
│    └──smart-user-context -- 用户上下文
├── smart-code-generate -- 代码生成
├── smart-common-pojo -- 公共对象(VO、DTO、BO、DO等)
├── smart-common-web -- web模块公共处理
├── smart-constants -- 常量模块
├── smart-exception -- 异常模块
├── smart-mask -- 敏感数据混淆
├── smart-test -- test封装
│  ├──smart-cloud-starter-test -- test封装
│  ├──smart-cloud-starter-test-mock-rabbitmq -- test rabbitmq模块封装
│  ├──smart-cloud-starter-test-mock-redis -- test redis模块封装
│  └──smart-cloud-test-core -- test 单元测试、集成测试封装
├── smart-utility -- 工具类
└── smart-could-starter -- 框架封装
     ├── smart-cloud-starter-configure -- 框架配置属性封装
     ├── smart-cloud-starter-core -- 框架核心(自定义注解、异常封装、请求响应公共参数、业务相关工具类)
     ├── smart-cloud-starter-feign -- feign封装(可拆可合、切面处理)
     ├── smart-cloud-starter-global-id -- 分布式id生成器
     ├── smart-cloud-starter-job -- 定时任务封装
     ├── smart-cloud-starter-locale -- 国际化封装
     ├── smart-cloud-starter-log4j2 -- 日志封装(log4j2封装,支持日志敏感数据脱敏)
     ├── smart-cloud-starter-method-log -- 方法切面日志封装
     ├── smart-cloud-starter-mock -- mock封装(mock工具类、常用mock策略、请求接口mock拦截器)
     ├── smart-cloud-starter-mp-shardingjdbc -- mybatis plus、dynamic-datasource、shardingjdbc封装(支持多数据源、分库分表、分布式事务;mapper工具类)
     ├── smart-cloud-starter-mybatis-plus -- mybatis plus、dynamic-datasource封装(支持多数据源、分布式事务;mapper工具类、表隐私字段加解密等)
     ├── smart-cloud-starter-rabbitmq -- rabbitmq封装(消费失败,自动放入延迟队列重新消费)
     ├── smart-cloud-starter-redis -- redis封装、自定义分布式锁注解
     └── smart-cloud-starter-web -- web封装(日志切面、异常处理、参数校验)

三、技术栈

名称 说明
spring boot 手脚架
spring cloud gateway 服务网关
nacos 服务注册、配置中心
spring boot admin 服务监控
openfeign 声明式服务调用
sleuthlog4j2 链路追踪、日志
mybatismybatis plus ORM
dynamic-datasource 多数据源
seata 分布式事务
sharding jdbc 分库分表
redisembedded-redis 缓存、集成测试
sentinel 限流、熔断降级
rabbitmq 消息队列
fastdfs 文件存储
xxl-job 定时任务
easyexcel excel导入导出
Hibernator-Validator 参数校验
mockitopodam 单元测试、数据mock
h2 数据库集成测试
embedded-redis redis集成测试
rabbitmq-mock rabbitmq集成测试
freemarker 用于代码生成
yapiidea yapi upload plugin 接口文档
jasypt-spring-boot 配置文件中敏感数据加解密
Lombok 简化代码

四、服务合并原理

  • 合并服务只需修改pom.xml,将待合并的服务import进去即可。
  • rpc接口通过自定义注解SmartFeignClient实现。单个服务独自部署时,FeignClient会生效;当服务提供者和服务消费者合并部署时,FeignClient注解会失效,此时rpc接口将通过实现类对象直接调用。具体逻辑见SmartFeignClientCondition

五、相关说明

(一)服务合并遇到的问题

单个服务以jar的形式,通过maven引入合并服务中。在单体服务中,feign接口通过http请求;服务合并后,feign接口通过内部进程的方式通信。

1、rpc与rpc实现类冲突

自定义条件注解封装FeignClient。使其在单体服务时,rpc走feign;在合体服务时,rpc走内部进程通信。

2、yaml文件的自动加载

自定义注解YamlScan,用来加载配置的yaml文件(支持正则匹配)。通过SPI机制,在spring.factories文件中添加EnvironmentPostProcessor的实现类,通过其方法参数SpringApplication获取启动类的信息,从而获取YamlScan注解配置的yaml文件信息。然后将yaml文件加到ConfigurableEnvironment中。

3、启动类注解冲突

自定义条件注解SmartSpringCloudApplicationCondition,只会让启动类标记的启动注解生效。

4、maven打包异常

合体服务打包时,单体服务依赖的包也打进单体服务jar。通过maven profiles解决

(二)日志数据脱敏

1.从日志侧切入,自定义标签,打印日志时进行脱敏处理;
2.自定义jackson的序列化器;打印日志时,采用自定义的序列化器;
3.通过反射获取log传入参数的MaskRule注解信息,最终根据注解规则进行字符串的截取与替换。

(三)接口mock数据

接口通过切面拦截的方式,通过反射可以获取返回对象的所有信息,然后根据对象的属性类型,可以随机生成数据;对于特定要求的数据,可以制定mock规则,生成指定格式的数据。

(四)测试

1、单元测试

利用单元测试,提高测试覆盖率。

2、集成测试

  • 在集成测试下,关闭nacos,减少依赖。
  • 依赖的服务rpc接口,通过mockito走挡板。
  • redis层使用embedded-redis做集成测试。
  • rabbitmq层使用rabbitmq-mock做集成测试
  • 数据库层使用h2做集成测试(另外两种方案:方案一通过事务回滚还原测试用例对DB的修改;方案二在测试用例执行前删除相关的表)。

3、系统测试

(五)接口文档

1、接口文档由以下步骤自动生成:

通过idea yapi upload plugin插件,上传到yapi server

2、接口文档效果图

概要

详情

六、错误码说明

所属模块 code message
smart-constants 200 成功
smart-constants 101 校验失败
smart-constants 102 数据不存在
smart-constants 103 数据已存在
smart-constants 400 签名错误
smart-constants 401 无权限访问
smart-constants 404 请求url错误
smart-constants 408 请求超时
smart-constants 409 重复提交
smart-constants 412 参数不全
smart-constants 415 请求方式不支持
smart-constants 416 请求类型不支持
smart-constants 417 获取锁失败
smart-constants 418 上传文件大小超过限制
smart-constants 419 当前会话已失效,请重新登陆
smart-constants 500 服务器异常
smart-constants 501 获取Request失败
smart-constants 502 获取Response失败
smart-constants 503 rpc请求失败
smart-constants 504 rpc返回结果异常
smart-cloud-starter-web 2001 待校验参数object不能为null
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].