菜单

系统架构

相关源文件

本文档全面概述了mall电商系统的架构,详细介绍了系统组件、它们之间的关系以及交互模式。涵盖了系统的高层设计、核心模块、应用服务、数据库架构和部署配置。有关认证机制的详细信息,请参阅认证与授权,有关数据库模式信息,请参阅数据库模式

架构概览

mall电商系统采用多层架构,关注点分离清晰。系统包括前端应用、API服务、核心库和基础设施组件,它们协同工作以提供完整的电商解决方案。

来源: README.md:116-125, document/docker/docker-compose-env.yml, document/docker/docker-compose-app.yml

模块结构

mall系统划分为不同的模块,每个模块都有特定的职责。

来源: README.md:52-62

核心模块

mall-common

提供应用程序共享的工具类和公共代码。

  • 常用操作的工具类
  • API响应标准化
  • 异常处理框架

mall-mbg

包含MyBatis Generator生成的数据库操作代码。

  • 与数据库表对应的实体类
  • 数据库操作的Mapper接口
  • 复杂查询的XML映射文件

mall-security

基于Spring Security和JWT实现安全功能。

  • JWT令牌生成和验证
  • API端点的安全配置
  • 与Spring Security集成以进行身份验证
  • 基于角色的访问控制

来源: README.md:52-62, README.md:86

应用模块

mall-admin

后端管理系统,提供管理员API。

  • 产品管理:产品、分类、品牌、属性
  • 订单管理:订单、发货、退货
  • 用户管理:管理员用户、角色、权限
  • 促销管理:秒杀、优惠券、促销活动
  • 内容管理:话题、专题、评论

mall-portal

面向客户的API,处理购物功能。

  • 会员服务:注册、登录、个人资料管理
  • 购物车操作
  • 订单处理和支付集成
  • 产品收藏和关注

使用Elasticsearch的产品搜索服务。

  • 产品索引和同步
  • 文本搜索和复杂过滤
  • 搜索结果相关性排名

mall-demo

包含框架功能的演示应用和示例。

来源: README.md:127-138

技术栈

mall系统利用了各种现代技术。

后端技术

技术目的用途
Spring BootWeb应用框架所有服务的基础
Spring Security身份验证和授权集成在mall-security中
MyBatisORM 框架数据访问层
Elasticsearch搜索引擎支持产品搜索功能
RabbitMQ消息队列异步处理
Redis内存数据存储缓存和会话管理
MongoDBNoSQL数据库文档存储
JWT基于令牌的认证用户认证
MinIO对象存储文件和图片存储
Druid数据库连接池数据库连接管理
Logstash & Kibana日志收集和分析监控和故障排除

前端技术

技术目的
Vue前端框架
Vue Router客户端路由
Vuex状态管理
元素UI 组件库
AxiosHTTP 客户端

来源: README.md:65-92, README.md:94-104

数据架构

mall系统为不同目的采用了多种数据库。

来源: README.md:76-86, document/docker/docker-compose-env.yml:3-99

数据库使用

每个数据存储都有特定的用途。

  1. MySQL:主要关系型数据库,存储所有结构化数据。

    • 分为多个模式(UMS、PMS、OMS、SMS、CMS)。
    • 处理具有ACID特性的事务性数据。
  2. Redis:内存数据存储,用于

    • 会话缓存
    • 高频数据缓存
    • 购物车临时存储
    • 速率限制实现
  3. MongoDB:文档存储,用于

    • 会员阅读历史
    • 产品评论和评分
    • 会员产品收藏
  4. Elasticsearch:搜索引擎,用于

    • 产品索引和搜索
    • 日志存储和分析
  5. MinIO:对象存储,用于

    • 产品图片
    • 营销材料
    • 附件文件

来源: README.md:76-86, document/docker/docker-compose-env.yml:3-99

服务集成

mall系统通过不同的通信模式集成各种服务。

来源: README.md:76, document/docker/docker-compose-env.yml:33-40

订单处理流程

一个关键的集成示例是订单处理流程,它涉及多个服务和异步处理。

来源: document/docker/docker-compose-env.yml:33-40

部署架构

mall系统设计用于使用Docker和Docker Compose进行容器化部署。

来源: document/docker/docker-compose-env.yml, document/docker/docker-compose-app.yml, README.md:179-195

容器配置

系统使用多个Docker容器进行部署。

容器图片目的端口映射
mall-adminmall/mall-admin:1.0-SNAPSHOT管理员API8080:8080
mall-portalmall/mall-portal:1.0-SNAPSHOT客户API8085:8085
mall-searchmall/mall-search:1.0-SNAPSHOT搜索API8081:8081
MySQLmysql:5.7关系型数据库3306:3306
Redisredis:7缓存和会话6379:6379
MongoDBmongo:4文档存储27017:27017
Elasticsearchelasticsearch:7.17.3搜索引擎9200:9200, 9300:9300
RabbitMQrabbitmq:3.9.11-management消息队列5672:5672, 15672:15672
MinIOminio/minio对象存储9090:9000, 9001:9001
Nginxnginx:1.22反向代理80:80
Logstashlogstash:7.17.3日志收集4560-4563:4560-4563
Kibanakibana:7.17.3日志可视化5601:5601

来源: document/docker/docker-compose-env.yml, document/docker/docker-compose-app.yml

部署选项

系统可以通过以下几种方式部署

  1. 开发环境:

    • 直接从IDE运行以进行开发。
    • 单独运行服务以进行测试。
  2. Docker 部署:

    • 使用Docker Compose搭建完整环境。
    • 通过docker-compose-env.yml和docker-compose-app.yml简化设置。
  3. 生产部署:

    • 使用Jenkins进行持续集成和部署。
    • 自动化构建和容器部署。

来源: README.md:179-195

日志和监控

系统包含完善的日志和监控设置。

来源: document/docker/docker-compose-env.yml:54-80

可伸缩性和性能

mall系统在设计时考虑了可伸缩性。

  1. 无状态服务:所有应用模块均设计为无状态,支持水平扩展。
  2. 缓存策略:使用Redis缓存高频访问的数据。
  3. 连接池:Druid提供高效的数据库连接管理。
  4. 异步处理:RabbitMQ处理后台任务以提高响应能力。

来源: README.md:76-78, document/docker/docker-compose-env.yml, document/docker/docker-compose-app.yml

结论

mall电商系统架构采用模块化设计,关注点分离清晰。系统利用现代技术和部署实践,构建了一个可伸缩、可维护的电商平台。容器化方法便于部署和扩展,而完善的基础设施支持了电商运营的各个方面。

该架构兼顾了开发敏捷性和生产可靠性,适合各种电商场景。