美文网首页
聊聊库存分片技术

聊聊库存分片技术

作者: 三斤牛肉 | 来源:发表于2021-04-14 14:43 被阅读0次

之前我们讲了通过数据库事务来保证扣库存的一致性,但这势必会造成TPS降低,那么我们有办法提高整体的TPS吗?库存分片就是一个不错的解决方案。
什么是库存分片?简单来说就是把原来一行库存记录拆分成多行。
首先我们看下TPS低的原因在哪,怎么造成的。假设我们现在有一个热点商品,当有大量订单请求扣一个库存的时候,为了保证一致性,第一个进入的session会开启一个事务->更新库存->提交事务。这个时候其他session会被阻塞,一直要等到第一个session提交。所有的并发请求到这里都会串行,总的TPS≈1秒/每个session处理时间。
库存分片怎么做呢,首先假设库存表有一行记录了商品id,库存数量(100)。

商品ID 库存
123456 100

我们可以新建一张分片表,记录商品id,分片编号,并将总库存数均匀分布到分片表中:

商品ID 分片编号 分片库存
123456 1 30
123456 2 30
123456 3 40

假设现在分成3份,请求扣库存的时候直接扣分片表的库存,根据分片编号通过负载均衡策略均匀的去扣分片库存。那么总的TPS = 原TPS*3。当然这只是一个大概量,因为逻辑上更复杂了。
看起来很简单吧,当然这只是理论层面的,真正实现起来还有很多要考虑的东西,比如如何均匀的分片库存,假如上表中的一样库存数不能被分片整除,势必会有一个分片数量多于其他分片,那么如何均匀的去扣每个分片的库存,策略是什么?其他分片扣完后最大的分片还有剩余该怎么办?是否需要动态分配库存分片能力?还有对于库存深度不一的商品是否都适用于库存分片?比如正常频率售卖的商品其实完全没有必要做库存分片,还有库存较浅的商品或者秒杀品也没有必要做库存分片,做了反而可能会给系统造成压力,甚至搞成雪崩。等等这些都需要在详细设计的时候考虑进去。

相关文章

  • 聊聊库存分片技术

    之前我们讲了通过数据库事务来保证扣库存的一致性,但这势必会造成TPS降低,那么我们有办法提高整体的TPS吗?库存分...

  • 库存热点分片扣库存技术实现

    一、背景 库存模块是一个更新数据库密集型的模块,无时无刻不在有库存更新操作,虽然目前线上库存使用了独立Oracle...

  • 『学概念找员外』分片技术(四)

    【本文由“币嗨Bihi内容合伙人计划赞助”】 往期回顾:分片技术(一)分片技术(二)分片技术(三) 这个应该是分片...

  • 分片技术

    限制目前区块链技术大规模落地应用的一个很重要因素就是性能,这也是为什么很多传统互联网从业者不太看好区块链技术的一个...

  • 学习使我快乐番外篇十二:分片

    今天本小白继续学习小虎总的墨客介绍系列文章之墨客分片介绍。这篇文章介绍了墨客的分片技术,并于以太坊的分片技术进行了...

  • “分片杀手”MultiVAC发布技术黄皮书,全维度分片有望实现区

    近期,公链项目MultiVAC发布了分片技术方案中文版《MultiVAC全分片黄书书:计算、存储、传输全维度分片实...

  • 传统现浇楼梯施工至少需要一天,用中建这种施工技术,只需1小时

    一、预制钢筋混凝土楼梯施工技术概述 本快速建造技术包含分片、分段两种形式的预制楼梯施工技术。 分片式预制楼梯施工技...

  • 来聊聊分片Sharding

    要解决的问题:比特币以及以太坊网络每秒处理的交易数量有限,需要通过扩容实现增加交易吞吐量。 实现方式:什么是扩容呢...

  • MongoDB-数据分片

    数据分片 插入负载技术->分片架构图 片键的概念和用处 什么时候会用到分片? 机器磁盘空间不足 单个mongoDB...

  • 科普:分片技术

    科普:分片技术 1. 为什么需要 Sharding 现在感觉整个世界最热的词就是区块链了,各大公司各个行业急吼吼的...

网友评论

      本文标题:聊聊库存分片技术

      本文链接:https://www.haomeiwen.com/subject/qwnklltx.html