开源项目或框架

2024

单体项目

分布式项目

mall单体项目架构

mall
├── mall-common -- 工具类及通用代码
├── mall-mbg -- MyBatisGenerator生成的数据库操作代码
├── mall-security -- SpringSecurity封装公用模块
├── mall-admin -- 后台商城管理系统接口
├── mall-search -- 基于Elasticsearch的商品搜索系统
├── mall-portal -- 前台商城系统接口
└── mall-demo -- 框架搭建时的测试代码

系统架构

HTTP访问
反向代理,负载均衡
mall-security
mall-admin
mall-security
mall-portal
mall-search不登录也可以搜索商品
前端
网关服务Nginx
后端服务
拦截器进行登录校验
后台商城管理系统接口
前台商城系统接口
基于Elasticsearch的商品搜索系统

mall实用技术收集整理

  1. mall-common – 工具类及通用代码

    1. RequestUtil 获取请求真实IP地址 添加登录记录
    2. GlobalExceptionHandler 全局异常处理类
    3. ApiException 自定义API异常
    4. WebLog controler统一的日志封装
    5. SwaggerProperties Swagger自定义配置
    6. BaseSwaggerConfig Swagger基础配置
    7. BaseRedisConfig Redis基础配置
    8. CommonPage 通用分页数据封装类
    9. CommonResult 通用返回结果封装类
    10. ResultCode API返回码封装类
  2. mall-mbg – MyBatisGenerator生成的数据库操作代码

  3. mall-security – SpringSecurity封装公用模块

    1. SpringUtil 通过name 或者class 获取Bean
    2. CommonSecurityConfig SpringSecurity通用配置
    3. SecurityConfig SpringSecurity相关配置,仅用于配置SecurityFilterChain
    4. RedisCacheAspect Redis缓存切面,防止Redis宕机影响正常业务逻辑
  4. mall-admin – 后台商城管理系统接口

    1. MallSecurityConfig mall-security模块相关配置
    2. GlobalCorsConfig 全局跨域配置
  5. mall-search – 基于Elasticsearch的商品搜索系统

    1. 因为这个是单体项目,没有getaway网关路由转发,所有只能通过nginx进行域名转发
  6. mall-portal – 前台商城系统接口

    1. 多个后端依赖同一个security ,通过配置进行不同的用户登录拦截。
    2. component 像发送和接受异步消息,定时器都写到这个包里面
  7. mall-demo – 框架搭建时的测试代码

    1. 使用各种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
MyBatisORM框架http://www.mybatis.org/mybatis-3/zh/index.html
MyBatisGenerator数据层代码生成http://www.mybatis.org/generator/index.html
PageHelperMyBatis物理分页插件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/
MongoDbNoSql数据库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
JWTJWT登录支持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/

系统架构

  • 更加复杂的微服务部署
HTTP访问
服务熔断和限流,负载均衡
Feign远程调用
服务同步
分布式部署
存储介质
异步通信
电脑端或手机端
网关服务集群
多个mall-gateway组成
A1服务集群
A2服务集群
注册中心
配置中心
服务监控中心-查看每一个服务的运行状态
对象存储
分布式事务管理
容器
容器可视化管理
自动化部署
分布式锁
日志收集
mysql
redis
mongdb
es
RabbitMq

业务架构

图片地址

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-common – 工具类及通用代码模块

    • WebLogAspect 拦截器统一记录接口的入参和出参
    • RedisServiceImpl redis操作实现
  • mall-mbg -- MyBatisGenerator生成的数据库操作代码模块

    • generatorConfig.xml 这个可以生成全部数据库表,也可以生成指定库表的代码,同时包含具体的sql语句
  • 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

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值