文章目录
2024
单体项目
- 单体的mall项目-商城项目
- 开源的前后端分离的微服务的商城项目
- 开源项目Studio-Vue—校园工作室管理系统(含前后台,SpringBoot+Vue)
- 开源地址
- RuoYi-Vue-Plus-后台管理系统
分布式集群框架-单个项目
- 系统演示
- 最好用的行为验证码工具
- SMS4J-短信聚合框架
- ballcat-快速搭建企业级后台管理系统-脚手架
- ballcat-codegen-代码生成器
自己没有启动成功
- dromara-优秀的开源博主
- 疯狂的狮子-优秀的开源博主
- warm-flow-国产自研工作流-审批流程
分布式项目
- SpringBoot+微服务学习项目spring-cloud-study
- mall学习教程
- 微服务管理系统RuoYi-Cloud-Plus
- mall-swarm是一套微服务商城系统
- mall是单体项目 这个是升级的微服务项目
mall单体项目架构
mall
├── mall-common -- 工具类及通用代码
├── mall-mbg -- MyBatisGenerator生成的数据库操作代码
├── mall-security -- SpringSecurity封装公用模块
├── mall-admin -- 后台商城管理系统接口
├── mall-search -- 基于Elasticsearch的商品搜索系统
├── mall-portal -- 前台商城系统接口
└── mall-demo -- 框架搭建时的测试代码
系统架构
mall实用技术收集整理
-
mall-common – 工具类及通用代码
- RequestUtil 获取请求真实IP地址 添加登录记录
- GlobalExceptionHandler 全局异常处理类
- ApiException 自定义API异常
- WebLog controler统一的日志封装
- SwaggerProperties Swagger自定义配置
- BaseSwaggerConfig Swagger基础配置
- BaseRedisConfig Redis基础配置
- CommonPage 通用分页数据封装类
- CommonResult 通用返回结果封装类
- ResultCode API返回码封装类
-
mall-mbg – MyBatisGenerator生成的数据库操作代码
-
mall-security – SpringSecurity封装公用模块
- SpringUtil 通过name 或者class 获取Bean
- CommonSecurityConfig SpringSecurity通用配置
- SecurityConfig SpringSecurity相关配置,仅用于配置SecurityFilterChain
- RedisCacheAspect Redis缓存切面,防止Redis宕机影响正常业务逻辑
-
mall-admin – 后台商城管理系统接口
- MallSecurityConfig mall-security模块相关配置
- GlobalCorsConfig 全局跨域配置
-
mall-search – 基于Elasticsearch的商品搜索系统
- 因为这个是单体项目,没有getaway网关路由转发,所有只能通过nginx进行域名转发
-
mall-portal – 前台商城系统接口
- 多个后端依赖同一个security ,通过配置进行不同的用户登录拦截。
- component 像发送和接受异步消息,定时器都写到这个包里面
-
mall-demo – 框架搭建时的测试代码
- 使用各种mysql,接口访问等在其他地方不方便实验的功能
mall-swarm分布式电商项目
-
引用地址
这个是个人学习的笔记
-
mall-swarm
是一套微服务商城系统,采用了 Spring Cloud 2021 & Alibaba、Spring Boot 2.7、Oauth2、MyBatis、Elasticsearch、Docker、Kubernetes等核心技术,同时提供了基于Vue的管理后台方便快速搭建系统。mall-swarm
在电商业务的基础集成了注册中心、配置中心、监控中心、网关等系统功能。文档齐全,附带全套Spring Cloud教程。 -
组织结构
mall ├── mall-common -- 工具类及通用代码模块 ├── mall-mbg -- MyBatisGenerator生成的数据库操作代码模块 ├── mall-auth -- 基于Spring Security Oauth2的统一的认证中心 ├── mall-gateway -- 基于Spring Cloud Gateway的微服务API网关服务 ├── mall-monitor -- 基于Spring Boot Admin的微服务监控中心 ├── mall-admin -- 后台管理系统服务 ├── mall-search -- 基于Elasticsearch的商品搜索系统服务 ├── mall-portal -- 移动端商城系统服务 ├── mall-demo -- 微服务远程调用测试服务 └── config -- 配置中心存储的配置
后端技术选型
技术 | 说明 | 官网 |
---|---|---|
Spring Cloud | 微服务框架 | https://spring.io/projects/spring-cloud |
Spring Cloud Alibaba | 微服务框架 | https://github.com/alibaba/spring-cloud-alibaba |
Spring Boot | 容器+MVC框架 | https://spring.io/projects/spring-boot |
Spring Security Oauth2 | 认证和授权框架 | https://spring.io/projects/spring-security-oauth |
MyBatis | ORM框架 | http://www.mybatis.org/mybatis-3/zh/index.html |
MyBatisGenerator | 数据层代码生成 | http://www.mybatis.org/generator/index.html |
PageHelper | MyBatis物理分页插件 | http://git.oschina.net/free/Mybatis_PageHelper |
Knife4j | 文档生产工具 | https://github.com/xiaoymin/swagger-bootstrap-ui |
Elasticsearch | 搜索引擎 | https://github.com/elastic/elasticsearch |
RabbitMq | 消息队列 | https://www.rabbitmq.com/ |
Redis | 分布式缓存 | https://redis.io/ |
MongoDb | NoSql数据库 | https://www.mongodb.com/ |
Docker | 应用容器引擎 | https://www.docker.com/ |
Druid | 数据库连接池 | https://github.com/alibaba/druid |
OSS | 对象存储 | https://github.com/aliyun/aliyun-oss-java-sdk |
MinIO | 对象存储 | https://github.com/minio/minio |
JWT | JWT登录支持 | https://github.com/jwtk/jjwt |
LogStash | 日志收集 | https://github.com/logstash/logstash-logback-encoder |
Lombok | 简化对象封装工具 | https://github.com/rzwitserloot/lombok |
Seata | 全局事务管理框架 | https://github.com/seata/seata |
Portainer | 可视化Docker容器管理 | https://github.com/portainer/portainer |
Jenkins | 自动化部署工具 | https://github.com/jenkinsci/jenkins |
Kubernetes | 应用容器管理平台 | https://kubernetes.io/ |
系统架构
- 更加复杂的微服务部署
业务架构
mall-swarm实用技术收集整理
-
- 引用地址
这个是个人学习的笔记
- 引用地址
-
脚本-配置-文档
- mall-admin.sh 这个是
Linux脚本
,自动删除旧的镜像并部署新的镜像。 - 里面有各种sql的脚本,自己建数据库的时候,可以参考。
- deploy_windows.md 这个是wondows部署文档
- mall-admin-deployment.yaml
这个是k8s中部署的yaml文件
- logstash.conf elk日志收集的配置文件
- nginx.conf 这个是nginx的配置
docker-compose-env.yml k8s一键部署全部的中间件 docker-compose-app.yml k8s一键部署全部应用
- mall-admin.sh 这个是
-
mall-common – 工具类及通用代码模块
- WebLogAspect 拦截器统一记录接口的入参和出参
- RedisServiceImpl redis操作实现
-
mall-mbg -- MyBatisGenerator生成的数据库操作代码模块
- generatorConfig.xml
这个可以生成全部数据库表,也可以生成指定库表的代码,同时包含具体的sql语句
- generatorConfig.xml
-
mall-auth – 基于Spring Security Oauth2的统一的认证中心
-
mall-gateway – 基于Spring Cloud Gateway的微服务API网关服务
-
bootstrap-dev.yml 配置中心和注册中心的配置
-
application.yml
这个地方进行认证和路径的路由
-
SwaggerHandler 自定义Swagger的各个配置节点
-
filter
-
AuthGlobalFilter 将登录用户的JWT转化成用户信息的全局过滤器
-
IgnoreUrlsRemoveJwtFilter 白名单路径访问时移除JWT请求头的过滤器
-
-
config
-
GlobalCorsConfig 全局跨域配置 注意:前端从网关进行调用时需要配置
-
IgnoreUrlsConfig 网关白名单配置
-
ResourceServerConfig 资源服务器配置
-
SwaggerResourceConfig Swagger资源配置
-
-
AuthorizationManager 鉴权管理器,用于判断是否有资源的访问权限
-
-
mall-monitor – 基于Spring Boot Admin的微服务监控中心
- SecuritySecureConfig SpringSecurity相关配置
-
mall-admin – 后台管理系统服务
- FlagValidator 用户验证状态是否在指定范围内的注解
- PmsProductAttributeCategoryController 各种controler
- ResourceRoleRulesHolder 资源与角色访问对应关系操作组件
-
mall-search – 基于Elasticsearch的商品搜索系统服务
- EsProduct 搜索商品的信息 ElasticSearchRepository 通过封装工具操作es
- EsProductRepository 搜索商品ES操作类
-
mall-portal – 移动端商城系统服务
- 这个也是通过网关路由过来的
- RabbitMqConfig 消息队列相关配置
- RedisConfig Redis相关配置
- CancelOrderSender 取消订单消息的发出者
-
config – 配置中心存储的配置
这个是存储的文件夹
-
mall-demo – 微服务远程调用测试服务
- FeignRequestInterceptor 用于Feign传递请求头的拦截器
spring-boot-demo
-
demo-orm-mybatis 演示了 Spring Boot 如何与原生的 mybatis 整合,使用了 mybatis 官方提供的脚手架
mybatis-spring-boot-starter
可以很容易的和 Spring Boot 整合。 -
demo-orm-mybatis-mapper-page 演示了 Spring Boot 如何集成通用Mapper插件和分页助手插件,简化Mybatis开发,带给你难以置信的开发体验。
-
demo-orm-mybatis-plus 演示了 Spring Boot 如何集成 mybatis-plus,简化Mybatis开发,带给你难以置信的开发体验。
-
demo-properties 演示如何获取配置文件的自定义配置,以及如何多环境下的配置文件信息的获取
-
demo-ratelimit-guava Spring Boot 项目如何通过 AOP 结合 Guava 的 RateLimiter 实现限流,旨在保护 API 被恶意频繁访问的问题。
-
demo-ratelimit-redis 主要演示了 Spring Boot 项目如何通过 AOP 结合 Redis + Lua 脚本实现分布式限流,旨在保护 API 被恶意频繁访问的问题,是
spring-boot-demo-ratelimit-guava
的升级版。 -
demo-rbac-security 主要演示了 Spring Boot 项目如何集成 Spring Security 完成权限拦截操作。本 demo 为基于前后端分离的后端权限管理部分,不同于其他博客里使用的模板技术,希望对大家有所帮助。
-
demo-session 主要演示了 Spring Boot 如何通过 Spring Session 实现Session共享、重启程序Session不失效。
-
demo-sharding-jdbc 主要演示了如何集成
sharding-jdbc
实现分库分表操作,ORM 层使用了Mybatis-Plus
简化开发,童鞋们可以按照自己的喜好替换为 JPA、通用Mapper、JdbcTemplate甚至原生的JDBC都可以。 -
demo-social 主要演示 Spring Boot 项目如何实现第三方登录,包括QQ登录、GitHub登录、微信登录、谷歌登录、微软登录、小米登录、企业微信登录。
-
spring-boot-demo-swagger 此 demo 主要演示了 Spring Boot 如何集成原生 swagger ,自动生成 API 文档。
-
demo-swagger-beauty demo 主要演示如何集成第三方的 swagger 来替换原生的 swagger,美化文档样式
-
demo-task 此 demo 主要演示了 Spring Boot 如何快速实现定时任务。
-
demo-task-quartz 此 demo 主要演示了 Spring Boot 如何集成 Quartz 定时任务,并实现对定时任务的管理,包括新增定时任务,删除定时任务,暂停定时任务,恢复定时任务,修改定时任务启动时间,以及定时任务列表查询。
-
demo-task-xxl-job 此 demo 主要演示了 Spring Boot 如何集成 XXL-JOB 实现分布式定时任务,并提供绕过
xxl-job-admin
对定时任务的管理的方法,包括定时任务列表,触发器列表,新增定时任务,删除定时任务,停止定时任务,启动定时任务,修改定时任务,手动触发定时任务。 -
demo-upload 本 demo 演示了 Spring Boot 如何实现本地文件上传以及如何上传文件至七牛云平台。前端使用 vue 和 iview 实现上传页面。
-
demo-ureport2 本 demo 主要演示了 Spring Boot 项目如何快速集成 ureport2 实现任意复杂的中国式报表功能。
-
demo-websocket-socketio 此 demo 主要演示了 Spring Boot 如何使用
netty-socketio
集成 WebSocket,实现一个简单的聊天室。 -
demo-zookeeper 此 demo 主要演示了如何使用 Spring Boot 集成 Zookeeper 结合AOP实现分布式锁。
-
demo-mongodb 演示了 Spring Boot 如何集成 MongoDB,使用官方的 starter 实现增删改查。
-
demo-mq-kafka 演示了 Spring Boot 如何集成 kafka,实现消息的发送和接收。
-
demo-mq-rabbitmq 演示了 Spring Boot 如何集成 RabbitMQ,并且演示了基于直接队列模式、分列模式、主题模式、延迟队列的消息发送和接收。
-
demo-mq-rocketmq rocketmq的集成
-
demo-multi-datasource-jpa 演示 Spring Boot 如何集成 JPA 的多数据源。
这个的思路是,配置主从数据库,主从数据库自动同步,修改和新增操作在主数据库,读操作在从数据库。 -
demo-multi-datasource-mybatis Spring Boot 如何集成 Mybatis 的多数据源。可以自己基于AOP实现多数据源,这里基于 Mybatis-Plus 提供的一个优雅的开源的解决方案来实现。
-
demo-oauth 这个是搭建认证服务
-
demo-logback 演示了如何使用 logback 记录程序运行过程中的日志,以及如何配置 logback,可以同时生成控制台日志和文件日志记录,文件日志以日期和大小进行拆分生成。
-
demo-log-aop 演示如何使用 aop 切面对请求进行日志记录,并且记录 UserAgent 信息。
可以同时记录所有接口的入参和出参
-
demo-ldap Spring Boot完成对LDAP的基本CURD操作, 并给出以登录为实战的API示例
-
demo-https 主要演示了Spring Boot如何集成 https
-
demo-helloworld 最简单的接口访问
-
demo-flyway 如何使用 Flyway 去初始化项目数据库,同时支持数据库脚本的版本控制。
-
这个里面多数是demo,有的不需要本地安装组件依赖,多数本地可以运行。
-
exception-handler demo
演示了如何在Spring Boot中进行统一的异常处理,
包括了两种方式的处理:第一种对常见API形式的接口进行异常处理,统一封装返回格式;第二种是对模板页面请求的异常处理,统一处理错误页面。 -
demo-email
主要演示了 Spring Boot 如何整合邮件功能
,包括发送简单文本邮件、HTML邮件(包括模板HTML邮件)、附件邮件、静态资源邮件。 -
demo-elasticsearch 这个是搜索引擎es相关的demo
-
demo-elasticsearch-rest-high-level-client 这个是搜索引擎es相关的demo
-
demo-dubbo dubbo的应用示例
-
demo-docker 这个是直接从idea打包到服务器的镜像
-
demo-codegen http://localhost:8081/demo/index.html 页面代码生成器
-
demo-cache-redis 这个是redis集成的相关的示例
-
demo-actuator 这个没有搞明白
-
demo-websocket
-
此 demo 主要演示了 Spring Boot 如何集成 WebSocket,实现后端主动往前端推送数据。网上大部分websocket的例子都是聊天室,本例主要是推送服务器状态信息。前端页面基于vue和element-ui实现。
推送的信息包括:cpu,内存,服务器信息,Java虚拟机信息,磁盘状态等基础信息。
其中jvm信息统计的是当前应用的jvm信息。 -
应用,这个可以放在自己的应用中,可以及时的了解到应用的健康状态。
-
访问 http://localhost:8081/demo/server.html
-