1 立项背景和目标:网上书店作为一个电子商务网站,当当网是国内目前最大的中文网上书店,存储的书目信息已经高达几十万种
· 认证服务 (User-Service): 整合 Spring Security + OAuth2.0 + JWT,实现统一身份认证。采用 Redis 存储Token,支持单点登录(SSO)及多端登录状态管理。
· 图书管理服务 (Book-Service): 核心功能包括图书的CRUD、库存扣减及全文检索。引入 Elasticsearch 实现图书的毫秒级全文检索,利用 ** Canal ** 中间件实现MySQL与ES的数据准实时同步。
· 订单服务 (Order-Service): 处理订单生成、状态流转。为解决分布式事务问题,采用 Seata 的AT模式保证下单、扣库存、创建支付单的最终一致性。
· 支付服务 (Payment-Service): 对接虚拟支付接口(或支付宝沙箱),通过消息队列(RabbitMQ) 异步处理支付回调通知,确保高并发下订单状态的准确更新,并使用死信队列处理超时未支付订单。
本系统采用Spring Cloud微服务生态体系,构建了一个高内聚、低耦合的分布式网上书店平台。为解决传统单体应用臃肿、扩展性差的问题,系统依据业务边界进行了细粒度拆分。通过 Nacos 实现服务的注册、发现与配置中心管理;采用 Spring Cloud Gateway 作为统一入口,实现请求路由、限流及跨域处理;利用 OpenFeign 配合 LoadBalancer 实现服务间的声明式调用与负载均衡
关键细节如下:
1. 分布式缓存:采用 多级缓存 策略(Caffeine本地缓存 + Redis分布式缓存),缓解热点数据(如畅销书详情)对数据库的压力,缓存命中率达90%以上。
2. 数据持久化与性能优化:
· 数据库设计遵循 分库分表 原则(使用ShardingSphere-JDBC),订单表按月份进行分表。
· 持久层采用 MyBatis-Plus,结合 Druid 连接池监控SQL性能,针对复杂统计报表查询,通过 读写分离 分流主库压力。
3. 部署与运维:
· 编写 Dockerfile 实现服务容器化,使用 Docker-Compose 或 Kubernetes 编排服务。
· 引入 SkyWalking 进行全链路追踪,快速定位跨服务调用的性能瓶颈。
· 通过 GitLab CI/CD 实现自动化流水线,代码提交后自动触发构建、测试及部署。