最近,“大数据杀熟”又炸上了热搜。群里很多非技术圈的朋友都在骂骂咧咧:“同一件商品,我用苹果手机看,硬生生比我老婆用安卓机贵了 5 块钱,开了会员反而比非会员贵,这帮写代码的良心不会痛吗?”
巧的是,前两天有个粉丝去大厂面电商岗,刚好被面试官按在地上摩擦了一道题:“电商首页的‘千人千价’系统,让你来做架构设计,怎么抗住双十一亿级并发,还要防范黑产薅羊毛?”
他脱口而出:“根据用户标签写一堆 if-else,然后直接用 SQL 改不同用户的商品底价……”
毫无悬念,一面直接挂。
结合大厂常见的真实线上事故和行业内通用的电商底层架构演进,今天咱们就来扒一扒:所谓的“千人千价”系统,到底是怎么设计出来的?不仅让你看懂“杀熟”的底层逻辑,下次面试遇到这道题,直接甩出架构师级答案,碾压全场。
一、 致命认知陷阱:你敢动底价,明天就被开除
很多刚入行的 CRUD 工程师,面对动态定价,第一反应就是直接改商品数据库里的基础价格。
我明确告诉你:在真实大厂里敢这么干,第二天财务、法务、商家运营三堂会审,顺便帮你办理离职。
为什么?商品 SKU 的基础底价,是整个电商系统的“生命线”。它往上关联着商家结算、税务系统、财务对账,往下绑定着进销存成本核算。如果底价能根据用户随意变动,整个财务体系会直接变成一笔根本对不齐的烂账,购物车、下单页还会出现价格疯狂跳动的灾难级 Bug。
架构师真相: 动态定价的本质,绝对不是改底价,而是计算“个性化营销优惠”。核心公式只有一个,必须刻在脑子里:
最终展示价 = 商品基础底价 - 个性化营销优惠(定向补贴 / 暗券)
你在页面上看到的不同价格,根本不是商品底价变了,而是系统在底层,偷偷给你塞了一张别人看不见的“定向优惠券”。所谓的大数据杀熟,无非就是系统判定你的消费意愿后,给你发的优惠券额度比别人少了而已。
二、 架构解耦:用户画像 + 规则引擎,告别 if-else 地狱
既然是算优惠,运营的规则能变态到什么程度?
- 价格敏感型、爱薅羊毛的用户,主推 9.9 包邮的低价 SKU。
- 同品类商品对比超过 3 次的犹豫用户,限时发 3 分钟专属券。
如果把这些逻辑全部硬编码写死在 Java 代码里,只要运营明天想换个玩法,你就得苦哈哈地改代码、提测、发版。不出一个月,运维和测试先把你拉黑。
大厂的标准解法:规则引擎解耦
当用户打开 App 的瞬间,系统会先从大数据平台拉取这个用户的全量标签(价格敏感型、沉睡用户、机型、消费能力等),然后直接丢进规则引擎(国内大厂常用 Drools、阿里 QLExpress)。
规则引擎就像一个灵活的“决策大脑”,运营人员可以在后台可视化界面直接配置、修改规则,完全不需要开发介入改代码。这就彻底实现了底层架构和变态业务逻辑的解耦,再也不用被运营牵着鼻子发版。
三、 高并发深水区:离线 + 实时双链路,扛住亿级洪峰
逻辑通了?真正的地狱,在高并发场景。 双十一几千万用户同时刷首页,如果每次请求都去查数据库、跑规则引擎,服务器一秒钟就会被打穿宕机。
这里必须引入离线批处理 + 实时流计算的 Lambda 双链路架构,配合多级缓存抗住洪峰:

- 静态标签靠“离线跑批”预热: 90% 的基础千人千价,根本不是你打开 App 的瞬间算出来的。每天凌晨业务低谷期,大数据集群就会用 Spark/Hive,把全量用户的历史消费分层、基础优惠券额度全部算好,直接全量推送到 Redis 集群预热。用户打开 App,直接从 Redis 里拿预计算好的优惠,毫秒级响应。
- 动态上下文靠“实时流计算”绝杀: 真正的转化神器在这里:系统会通过 Flink 实时捕获你的点击流行为。比如发现你在两个竞品商品之间反复横跳、犹豫不下单,Flink 会立刻触发规则引擎,给你下发一张限时 3 分钟的“破冰专属券”,当场促成交易。
- 终极抗击穿:本地缓存挡洪峰: 对于茅台、iPhone 这类超级爆款,千万级 QPS 会瞬间打满机房网卡。这时候必须在应用服务器里加一层 Caffeine 本地缓存,把爆款商品的基础定价、通用优惠直接挡在进程内存里,把瞬间洪峰死死拦在本地,彻底保护后端的 Redis 和数据库。
四、 终极考验:价格一致性 + 黑产防御,少一步都要亏到破产
很多小电商平台,天天被用户投诉:列表页看着是低价,点进详情页、提交订单的时候,价格突然涨了!
这就是典型的架构缺陷:列表页和下单页是两个微服务,价格计算接口有时间差,导致“所见非所得”。
大厂为了解决这个问题,引入了价格令牌(Price Token)机制:列表页算好最终价格后,会生成一个加密 Token 下发给客户端,用户下单时必须带上这个 Token,后端校验通过才能成交。
但是!面试时你只答到这里,大概率还是会挂。 因为你忽略了电商系统最可怕的敌人:黑灰产。
如果 Token 只包含了价格和有效期,黑客只要抓包截获了一个 9.9 元袜子的低价 Token,然后把它挂载到买 iPhone 的订单请求上,你的系统是不是就得 9.9 元卖 iPhone?一夜之间直接亏到破产。永远不要相信客户端传来的任何数据!
大厂硬核防御方案: 生成的 Token 绝不是简单明文,而是用 HMAC-SHA256 高强度加密算法,把 UserID + SkuID + 最终展示价 + 营销活动ID + 时间戳 五维绑定,生成不可篡改的强签名 Token。
用户点击下单时,后端要做两层校验:
- 先验签,确认 Token 没有被篡改、没有过期,且绑定的用户、商品完全匹配。
- 同步调用风控系统,校验该用户有没有异常刷单、设备农场抓包等高危行为。
只有层层校验全通过,这笔“千人千价”的订单才算真正落库。
面试满分模板:4 句话直接背诵,30 秒拿满印象分
以后再遇到这道面试题,稳住心态,直接甩出这 4 套连招:
- 明确边界商品基础底价绝对不动,千人千价的本质,是实时计算个性化营销优惠,用“底价 - 优惠”算出最终展示价。
- 解耦设计基于用户画像标签体系,引入规则引擎实现业务策略与代码架构解耦。
- 高并发保障采用 Spark 离线预计算 + Flink 实时流计算的双链路架构,配合 Redis + Caffeine 的多级缓存体系抗洪峰。
- 一致性与安全引入五维绑定的 HMAC 强签名价格令牌机制,保证“所见即所得”,结合风控防黑产。
代码本身没有温度,但在复杂的架构流转中,往往照见的是商业的贪婪与克制。我们改变不了平台的规则,但可以通过弄懂底层逻辑,让自己不再是被随意收割的数字。
觉得这篇内容够硬核,能帮你避坑、面试加分,记得点个赞 + 在看。
关注公众号「Fox 爱分享」,专注拆解大厂硬核架构与高频面试题,咱们下期见!