社区团购系统定制方案:从“大单体”到“业务中台”的架构演进之路
一、定制不是“堆功能”,而是“切业务”
上周和一位区域团购平台的CTO聊了很久。他们的平台覆盖了200个社区,日订单峰值接近5万单,但原有的单体系统撑不住了——每天晚高峰抢菜时段,数据库CPU直接飙到90%,最要命的是团长提现和对账总差几毛钱。

“我们用的是某大厂的标准化SaaS,但业务稍微复杂一点就卡死。” 他的这句话,道出了很多企业转向定制开发的真实原因。标准化系统只解决“有没有”,而定制方案要解决的是“撑不撑得住”和“算不算得清”。
相比于SaaS模板,定制化系统的核心优势在于数据主权和扩展能力:你拥有100%的源代码和数据库控制权,可以按业务发展无限扩展,还能对接ERP、WMS等内部系统。但前提是——架构得对。
二、微服务怎么拆?我们用“团”这个业务实体说话
很多技术负责人上来就问:“用Spring Cloud还是Dubbo?”其实技术栈不是首要问题,怎么拆服务才是决定后续三年维护成本的关键。
我们复盘过一个失败案例。早期团队按标准电商拆:用户、商品、订单、支付、库存五个服务。上线两周就发现问题——社区团购的核心不是“商品”,而是“团”。
同一个苹果,A小区今天开团价是4.9元,B小区可能是5.5元;库存也是按团维度的,A团剩10份,B团已经抢光。如果让商品服务管价格、库存服务管数量,一次下单要跨三四个服务来回确认,性能损耗极大。
最终沉淀下来的服务划分方案是这样的:
➭ group-service(团服务):这是业务中台的核心,管理“开团”“参团”“成团”状态,以及提货点信息。所有其他服务都重度依赖它。
➭ product-service(商品服务):注意,商品价格和库存是按“团”维度管理的,不再用全局库存。
➭ inventory-service(库存服务):独立出来处理预扣、支付后扣减、次日未提货返还等复杂逻辑,用Redis+Lua保证原子性。
➭ order-service、payment-service、delivery-service 各自独立。
教训是什么? 别为了微服务而微服务。“团”这个强业务概念,必须有一个核心服务来承载和协调。拆分边界不是技术,而是业务能力与变更频率。
三、分布式事务:放弃强一致性,拥抱最终一致性
社区团购最头疼的技术难点是什么?下单链路跨服务。
用户下单,涉及group-service(校验团状态)、inventory-service(扣库存)、order-service(生成订单)。怎么保证要么一起成功、要么一起失败?
我们试过Seata的AT模式,但性能损耗明显,维护也复杂。最终采用的是“本地消息表+消息队列”的最终一致性方案:
下单入口在order-service的一个本地事务中,同时生成订单并向本地消息表插入一条“扣库存”消息
定时任务扫描消息表,通过RocketMQ发送给inventory-service
inventory-service消费消息执行预扣库存,如果失败则回发“扣库存失败”消息
order-service消费失败消息,将订单状态改为“无效”
兜底策略:每小时跑一次对账Job,对比订单状态和库存流水,不一致的自动补偿或告警
这套方案在5万单/天的压力下跑得很稳。核心思想是:核心链路只做必要的事,非核心的异步处理,最终能对上账就行。
四、高并发应对:别让数据库成为短板
社区团购的业务特性是高频次、短周期、强爆发。一场“9.9元秒杀榴莲”,瞬间涌入的流量能直接把数据库打挂。
我们的应对策略分层落地:
1、流量入口层:Spring Cloud Gateway做统一限流和熔断,单IP每秒超过5次请求直接拦截。
2、缓存层:商品详情、团信息全部上Redis。注意,团状态这种高频变化的数据,我们用Redis Hash + 本地缓存(Caffeine)两级缓存,本地缓存设2秒过期,极大减轻Redis压力。
3、数据库层:读写分离是标配,主库写、从库读。库存扣减这种高并发写操作,先在Redis里预减,异步同步到MySQL。
4、消息队列削峰:秒杀时用户点击“立即购买”,请求先发到RocketMQ,后端服务异步消费。前端快速响应“请求已接收”,避免请求堆积。
这套组合拳下来,数据库的读请求90%以上被缓存拦截,写压力通过MQ削峰,系统稳了很多。
五、关于定制方案的几点反思
如果用现在的眼光回头看,inventory-service和group-service的耦合还是有点紧,部分逻辑可以下沉为领域能力。但整体架构经受住了考验。
给正在选型的企业几点建议:
第一,别一上来就追求大而全的微服务。50个团长以内的区域平台,SpringBoot单体+Redis缓存完全够用,等业务起来再拆分也不迟。
第二,关注非功能性需求。很多需求文档只写功能,不写并发量、响应时间、数据一致性级别。这些才是定制方案的核心价值所在。
第三,验技术更验经验。找定制开发服务商,不仅要看他做过什么,还要问他怎么处理库存超卖、怎么保证对账平、晚高峰扛过多少QPS。
社区团购的系统定制,本质上是在业务复杂度和技术成本之间找平衡点。没有最好的架构,只有最合适的。如果你的业务正在从“微信群接龙”走向“数字化运营”,希望这些经验对你有用。