终极 Java 中间件实战课:电商系统架构实战教程
- 电商系统架构实战教程
- 1. 系统架构设计
- 1.1 系统模块划分
- 1.2 技术选型
- 2. 环境搭建
- 2.1 开发环境准备
- 2.2 基础设施部署
- 3. 用户服务开发
- 3.1 创建Maven项目
- 3.2 创建用户服务模块
- 3.3 配置文件
- 3.4 实体类与数据库设计
- 3.5 DAO层实现
- 3.6 Service层实现
- 3.7 Controller层实现
- 3.8 主应用类
- 4. 商品服务开发
- 5. 订单服务开发
- 6. 网关服务开发
- 7. 服务调用与集成
- 8. 分布式事务处理
- 9. 服务监控与熔断
- 10. 日志收集与分析平台
- 11. 系统部署与性能优化
- 12. 高级主题实现
- 总结
电商系统架构实战教程
1. 系统架构设计
1.1 系统模块划分
电商系统通常包含以下核心模块:
- 用户服务:用户注册、登录、信息管理
- 商品服务:商品管理、库存管理
- 订单服务:订单创建、支付、物流
- 营销服务:优惠券、促销活动
- 支付服务:对接第三方支付
- 网关服务:统一入口、权限校验
- 后台管理:运营管理界面
1.2 技术选型
- 开发语言:
Java 11+
- 框架:
Spring Boot 2.7+、Spring Cloud
- 注册中心:
Nacos
- 配置中心:
Nacos
- 网关:
Spring Cloud Gateway
- 服务调用:
OpenFeign
- 负载均衡:
Ribbon
- 熔断限流:
Sentinel
- 消息队列:
RocketMQ
- 缓存:
Redis
- 数据库:
MySQL
- 搜索引擎:
Elasticsearch
- 分布式事务:
Seata
2. 环境搭建
2.1 开发环境准备
- 安装
JDK 11+
- 安装
Maven 3.6+
- 安装
IntelliJ IDEA
- 安装
Docker
和Docker Compose
2.2 基础设施部署
使用Docker Compose
部署基础中间件:
version: '3'
services:# Nacos服务注册与配置中心nacos:image: nacos/nacos-server:2.0.3container_name: nacosenvironment:MODE: standaloneports:- "8848:8848"- "9848:9848"- "9849:9849"volumes:- ./nacos/logs:/home/nacos/logs- ./nacos/init.d:/home/nacos/init.d# Redis缓存redis:image: redis:6.2.6container_name: redisports:- "6379:6379"volumes:- ./redis/data:/datacommand: redis-server --appendonly yes# MySQL数据库mysql:image: mysql:8.0.26container_name: mysqlenvironment:MYSQL_ROOT_PASSWORD: rootMYSQL_DATABASE: ecom_dbports:- "3306:3306"volumes:- ./mysql/data:/var/lib/mysql- ./mysql/init:/docker-entrypoint-initdb.d# RocketMQ消息队列rocketmq:image: rocketmqinc/rocketmq:4.9.2container_name: rocketmqports:- "9876:9876"- "10909:10909"- "10911:10911"command: sh mqnamesrv && sh mqbroker -n localhost:9876# Elasticsearch搜索引擎elasticsearch:image: elasticsearch:7.17.3container_name: elasticsearchenvironment:- discovery.type=single-node- ES_JAVA_OPTS=-Xms512m -Xmx512mports:- "9200:9200"- "9300:9300"volumes:- ./elasticsearch/data:/usr/share/elasticsearch/data# Kibana可视化工具kibana:image: kibana:7.17.3container_name: kibanaports:- "5601:5601"depends_on:- elasticsearch
3. 用户服务开发
3.1 创建Maven项目
首先创建一个基础的Maven项目作为父工程:
<!-- pom.xml -->
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.ecommerce</groupId><artifactId>ecommerce-parent</artifactId><version>1.0.0</version><packaging>pom</packaging><modules><module>user-service</module><module>product-service</module><module>order-service</module><module>gateway-service</module></modules><properties><java.version>11</java.version><spring-boot.version>2.7.10</spring-boot.version><spring-cloud.version>2021.0.5</spring-cloud.version></properties><dependencyManagement><dependencies><!-- Spring Boot依赖 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>${spring-boot.version}</version><type>pom</type><scope>import</scope></dependency><!-- Spring Cloud依赖 --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring-cloud.version}</version><type>pom</type><scope>import</scope></dependency><!-- MyBatis依赖 --><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.3.1</version></dependency><!-- Nacos依赖 --><dependency><groupId>com.alibaba.nacos</groupId><artifactId>nacos-client</artifactId><version>2.0.3</version></dependency></dependencies></dependencyManagement>
</project>
3.2 创建用户服务模块
<!-- user-service/pom.xml -->
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>com.ecommerce</groupId><artifactId>ecommerce-parent</artifactId><version>1.0.0</version></parent><artifactId>user-service</artifactId><dependencies><!-- Spring Boot Starter Web --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- Spring Boot Starter Data JPA --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jpa</artifactId></dependency><!-- MySQL驱动 --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><scope>runtime</scope></dependency><!-- Nacos Discovery --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency><!-- Sentinel --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-sentinel</artifactId></dependency><!-- Lombok --><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><!-- Redis --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency></dependencies>
</project>
3.3 配置文件
# user-service/src/main/resources/application.yml
spring:application:name: user-service # 服务名称cloud:nacos: