重构nacos + gateway + jdk17 +修复 支付幂等和订单流程#3
Open
Yeseverk wants to merge 1 commit into
Open
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
🚀 Siam-Cloud 架构重构与演进全景图
重构寄语:本项目最初是一个具有探索性质的“微服务练习项目”,包含大量过渡性代码和架构冗余。本次重构旨在将其打造成符合大厂生产级标准、具备高并发防御能力和真实分布式一致性的现代化微服务平台。
一、 核心底座跨代升级 (Infrastructure Upgrade)
改造维度
原版现状 (Before)
重构成果 (After)
核心价值
基础环境
Spring Boot 2.x + JDK 8
Spring Boot 3.2.5 + JDK 17
拥抱云原生,享受 G1 GC 和 AOT 编译的性能红利。
底层规范
依赖遗留的 javax.* 包
全面迁移至 jakarta.* 命名空间
解决底层生态断层,修复了 50+ 处核心类的编译错误。
API 文档
停更的 Springfox (Swagger 2)
替换为 SpringDoc OpenAPI 3
适配 Spring Boot 3,恢复了全链路 API 的自动化调试能力。
二、 网关与服务治理 (Gateway & Service Governance)
改造维度
原版现状 (Before)
重构成果 (After)
核心价值
网关选型
阻塞式 Zuul 1.x (已被官方抛弃)
Spring Cloud Gateway (WebFlux)
异步非阻塞模型,吞吐量翻倍;利用 StripPrefix=1 解决前缀路由乱码。
跨域与鉴权
各个服务自行处理,标准不一
网关统一 CORS + AuthGlobalFilter
安全校验下沉,Token 解析后通过 X-Auth-Token 隐式透传,微服务彻底无状态化。
注册配置中心
闭源的 Eureka
Nacos 2.x
实现注册中心与配置中心的大一统,支持动态上下线。
三、 高并发防御与锁治理 (Concurrency & Locks) 🛡️
这是本次重构含金量最高的业务改造,彻底铲除了原系统的资金与库存隐患:
• 原版漏洞:采用极度危险的 check-then-act(先查库存后 UPDATE)模式,高并发下必发生超卖。
• 精准修复:在 GoodsMapper 引入数据库原生行锁与 CAS 结合的单条 SQL (UPDATE ... SET stock = stock - N WHERE stock >= N),从底层彻底堵死超卖可能。
• 下单入口防抖:在 OrderController 加入基于 setIfAbsent 的 Redis 5 秒锁,拦截用户快速双击导致的重复创单。
• 支付回调幂等:针对微信/支付宝的高并发重复回调,采用“只加锁、不主动删锁(自然过期)”的防御纵深策略,保证账务流水绝对幂等。
四、 分布式事务与架构排雷 (Distributed Transactions) ⚡
大刀阔斧地清除了原作者“为了炫技而堆砌、写了却不启用”的伪代码,让分布式事务真正落地:
• 清理:删除了无用的 Seata_OrderServiceImpl.bak 等废弃类。
• 落地:在真实的 OrderServiceImpl.insert 上启用 @GlobalTransactional,将“创建订单-扣库存-删购物车-扣优惠券”纳入同一个全局事务,保证核心链路同生共死。
• 清理:删除了空壳类 RocketMQ_OrderServiceImpl,抹除了主干中几十行同步调用通知的僵尸代码。
• 落地:支付成功后,引入 TransactionProducer.sendMessageInTransaction。主线程只管改订单状态,发短信、通知骑手、送积分全部交由 MQ 异步解耦,核心 API 耗时从秒级骤降至毫秒级。
五、 逆向交易链路与资金闭环 (Reverse Trading & Refund Flow) 🔄
补齐了原系统中最容易被忽视的“退款逆向链路”,防止商家资产流失:
• 原版漏洞:退款只改订单状态,商品库存永久流失(空壳代码)。
• 精准修复:打通 Feign 链路,在 GoodsMapper 引入原子的 CAS 增加库存 SQL (stock = stock + N),保证退款必退货。
• 确保退款流程 100% 触发微信/支付宝真实的底层 Refund API,并同步返还用户的优惠券与积分,做到资金流与信息流的绝对一致。