问下一般电商网站中,下单和减库存是怎么设计的

2020-09-03 14:01:13 +08:00
 rqxiao

1.下单 2.减钱 3.减库存

这几个步骤如果出现瓶颈,一般用什么应对方案

9798 次点击
所在节点    程序员
90 条回复
hbolive
2020-09-03 17:18:27 +08:00
一般是支付扣库存,而支付是有时限的。至于特殊情况,秒杀之类的,要特殊分析。。
Vegetable
2020-09-03 17:18:53 +08:00
如果不考虑过于复杂的情况,下单了就是要减库存的,不然就会出现超卖的情况。你总不能在付款成功之后说没货在退款,这种体验太差了。

拿淘宝来说,商品必须在一定时间时间内支付,否则订单就会取消。长的可以是 24 小时,短的也有 15 分钟的,根据商品的热度不同,这个时间的设置也不同。

恶意刷库存实际上这不能算一个技术问题,起码从流程上去做没必要,更何况是冒着超卖的风险。交给商家去应对这个风险就好了,你限购不就完了
lcy630409
2020-09-03 17:19:07 +08:00
@A388 这个就是超卖问题了,Redis 出场吧~~
hbolive
2020-09-03 17:20:13 +08:00
@A388 就算这种情况出现,老板也不会打码农板子的,只会去跟搞运营的说,这东西这么火,丫怎么才搞来一个?扣工资。。
hpeng
2020-09-03 17:22:42 +08:00
先锁库存,扣钱才真实扣库存
ylsc633
2020-09-03 17:22:56 +08:00
昨天抢国庆 1 号的票 有这么个情况

我看到其他票没了,去一个显示 有 的车次里!
1. 可以点进去
2. 可以选座位
3. 重新打开标签页,打开 12306,查询车次,已经没票了
4. 开始支付
5. 显示没票了.....
ksice
2020-09-03 17:23:12 +08:00
@lcy630409 这个正解,超时设置
kop1989
2020-09-03 17:23:52 +08:00
@A388 #14 恶意霸占商品是很容易区分的。可以通过运营手段来阻止。比如预防性质的限购,预约,缩短支付时限。比如事后惩罚性质的封号等等。
takemeaway
2020-09-03 17:24:33 +08:00
@kop1989 你可真逗,跟你不同意见就是喷你了。 那你来封我好了
PopRain
2020-09-03 17:25:17 +08:00
@hbolive 以前小米手机新机发售,按你这个逻辑,可以源源不断的卖出了,不用”耍猴“
A388
2020-09-03 17:28:32 +08:00
@lcy630409 我是觉得这 2 种情况,总有一个会出现
hbolive
2020-09-03 17:29:36 +08:00
@PopRain 小米新机是抢购方式,跟传统售卖是不一样的,小米抢购,是一号限制一台,不允许下单多台,这时候下单就可以锁库存。
A388
2020-09-03 17:29:39 +08:00
@kop1989 但是技术手段,确实没办法很好的解决。
kop1989
2020-09-03 17:31:56 +08:00
@A388 #33 也是不可能解决的(只要是第三方支付,而不是只用余额)。
promise2mm
2020-09-03 17:33:33 +08:00
主要还是看运营策略:
1. 如果允许少量超卖,支付扣库存即可 - 前提是有备货
2. 如果不允许超卖,下单即锁库存
3. 秒杀方案另论

曾经有做了配置,运营可以根据实际情况在商品级别配置 1 或 2
kop1989
2020-09-03 17:33:39 +08:00
@takemeaway #29 我看了你的记录,没有任何建设性意见,都是对别人的反驳,这难道不是灌水+喷子嘛😂,要不您提出一个又不超发,又不会被恶意站库存的商城方案来。
Achiii
2020-09-03 17:34:27 +08:00
我们是发货才扣,会超卖
securityCoding
2020-09-03 17:36:12 +08:00
我的经验:
1.下单
预占库存,uid 限流(uid 下单次数+数量),商品信息可以提前预热(不走 redis,内存 cache),校验流程尽量提前进行拦截,实际上走到下单流程流量已经不大了
2.减钱
集群版 redis 锁,订单超时控制,收到回调一定不要漏了支付服务商订单校验
3.减库存
集群版 redis 锁,支付成功扣减库存 , 失败返还库存 ,这里可以抽象出一个高性能的独立库存服务
stzz
2020-09-03 17:40:26 +08:00
@kop1989 #10 兄弟,库存分可售库存和实际库存,下单扣可售库存不就行了。。。
一般电商系统都是这么设计的吧。。
securityCoding
2020-09-03 17:40:30 +08:00
@kop1989 我这边的经验是抽象出了一个独立的库存服务出来 , 库存扣减带上超时 ack 参数 , 至于一个用户占很多库存的问题一般是通过运营策略来做(uid 细粒度限流策略)

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/703857

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX