[{"data":1,"prerenderedAt":158},["ShallowReactive",2],{"content:project:shangpin-zhenxuan":3},{"id":4,"title":5,"body":6,"cover":137,"date":138,"demoUrl":139,"description":140,"draft":141,"extension":142,"meta":143,"navigation":144,"path":145,"repoUrl":146,"seo":147,"status":148,"stem":149,"tags":150,"updated":156,"__hash__":157},"projects\u002Fprojects\u002Fshangpin-zhenxuan.md","尚品甄选：一套微服务电商的全家桶实践",{"type":7,"value":8,"toc":127},"minimark",[9,13,22,25,28,68,71,74,107,111,118,121,124],[10,11,12],"h2",{"id":12},"这个项目想练什么",[14,15,16,17,21],"p",{},"单体电商的写法我已经熟了，所以这项目的目标很明确：把",[18,19,20],"strong",{},"微服务这一整套基础设施真正跑起来","——\n服务注册与配置、网关、熔断限流、分布式事务、消息队列、全文检索、对象存储，\n而不是只在 README 里写一行「基于 Spring Cloud」。",[14,23,24],{},"业务上对标主流电商模型，覆盖用户端、商家端、平台管理端三端。",[10,26,27],{"id":27},"分层结构",[29,30,31,38,44,50,56,62],"ol",{},[32,33,34,37],"li",{},[18,35,36],{},"网关层","：Spring Cloud Gateway 做统一入口、路由转发、鉴权、限流；",[32,39,40,43],{},[18,41,42],{},"注册与配置中心","：Nacos 负责服务注册、发现与动态配置；",[32,45,46,49],{},[18,47,48],{},"认证授权","：JWT + Spring Security 做多端统一单点登录与权限校验；",[32,51,52,55],{},[18,53,54],{},"业务微服务","：用户、商品、订单、购物车、营销、库存、支付各自独立；",[32,57,58,61],{},[18,59,60],{},"中间件层","：Redis 缓存、RabbitMQ 异步解耦、Elasticsearch 检索、MinIO 文件；",[32,63,64,67],{},[18,65,66],{},"数据层","：MySQL 主从、Redis 集群、ES 集群。",[14,69,70],{},"技术版本：JDK 17、Spring Boot 3.2.5、Spring Cloud 2022.0.4 \u002F Alibaba、MyBatis-Plus 3.5.3.1、\nMySQL 8.0、Redis 7.2、Elasticsearch 8.x，配 Sentinel、Seata、Nacos、RabbitMQ、MinIO。\n前端 Vue3 + Vite + Element Plus \u002F Vant + Pinia，图表用 ECharts。",[10,72,73],{"id":73},"业务模块里值得说的几件事",[75,76,77,83,89,95,101],"ul",{},[32,78,79,82],{},[18,80,81],{},"商品","：分类、品牌、规格与 SKU 管理，上下架与审核流，详情走 Elasticsearch 全文检索 + 条件筛选 + 热门推荐；\n商品文本和库存要实时展示，所以库里存一份、ES 存一份，同步策略是这里最麻烦的地方。",[32,84,85,88],{},[18,86,87],{},"订单与购物车","：完整生命周期（下单、支付、发货、物流、收货、评价），\n外加取消与退款售后；购物车支持批量结算与实时价格计算。",[32,90,91,94],{},[18,92,93],{},"库存防超卖","：并发扣减用分布式方案保证不超卖，这是整个项目里我花时间最多的一块——\n难点不在「扣减」，在于扣减失败、超时、重复请求这三种情况下状态怎么收敛。",[32,96,97,100],{},[18,98,99],{},"营销","：满减、折扣、优惠券发放与核销、秒杀与限时活动、积分兑换、活动预热。\n秒杀走队列削峰，活动规则做成可配置而不是写死在代码里。",[32,102,103,106],{},[18,104,105],{},"后台","：权限角色与菜单、店铺入驻与资质审核、订单\u002F用户\u002F销量统计、数据大屏、系统日志与异常监控。",[10,108,110],{"id":109},"学到什么代价是什么","学到什么、代价是什么",[14,112,113,114,117],{},"学到的是",[18,115,116],{},"边界","：服务怎么切、切完之后跨服务的事务怎么办、一个下单请求要穿几个服务、\n链路一长排查问题靠什么。Sentinel 和 Seata 这类组件本身不难接，难的是搞清楚\n「这个场景到底需不需要它」。",[14,119,120],{},"代价也很实在：本地要起 Nacos、MySQL、Redis、ES、RabbitMQ、MinIO 一堆中间件才能跑通一条链路，\n开发体验比单体差很多。如果只是几千日活的业务，我现在的判断是别上微服务——\n这套架构的价值在于练习和作为可二次开发的模板，不在于它比单体「更先进」。",[10,122,123],{"id":123},"怎么跑起来",[14,125,126],{},"需要 JDK 17+、Maven 3.8+、MySQL 8.0+、Redis 7.0+、Nacos 2.2+、Node.js 16+。\n先起中间件与 Nacos，导入数据库脚本，按服务逐个启动，再起前端。",{"title":128,"searchDepth":129,"depth":129,"links":130},"",3,[131,133,134,135,136],{"id":12,"depth":132,"text":12},2,{"id":27,"depth":132,"text":27},{"id":73,"depth":132,"text":73},{"id":109,"depth":132,"text":110},{"id":123,"depth":132,"text":123},"\u002Fimages\u002Fcovers\u002Fshangpin-zhenxuan.jpg","2025-12-24",null,"Spring Cloud Alibaba 微服务架构的前后端分离 B2C 电商，覆盖用户端、商家端与平台管理端；商品、订单、营销、库存、权限全套能力，含 ES 检索、秒杀、分布式库存扣减和数据大屏。",false,"md",{},true,"\u002Fprojects\u002Fshangpin-zhenxuan","https:\u002F\u002Fgithub.com\u002FHFJ0624\u002FSPZX",{"title":5,"description":140},"maintenance","projects\u002Fshangpin-zhenxuan",[151,152,153,154,155],"微服务","Spring Cloud","MySQL","Redis","Elasticsearch","2026-05-25","OkU4HImN4PKgmSr-WU0nmU5lrLjNWtL9Z8XSKVtE3UQ",1792063306707]