首页 > 其他分享 >场景设计

场景设计

时间:2023-05-19 19:11:50浏览次数:36  
标签:场景 扣减 分桶 数据库 redis 库存 下单 设计

一、库存扣减逻辑

1)依赖缓存不依赖数据库,因为缓存能抗更高的tps。纯redis实现可能带来的问题:

a、如果redis实际扣减成功了,但是redis client接口返回失败。可能导致库存的浪费。怎么解决?可以加入库存数据库,每次更新完redis后也更新数据库。然后写一个对账程序,通过对比redis和数据库库存是否一致,很可能出现的case是redis扣减多,数据库扣减少,可以把数据库比redis多的库存加回到redis中。

b、如果redis更新成功,db更新失败了(出现的可能性较小)。可以用日志记录下,把数据库少扣减的部分进行手动扣减。

2)为了避免redis热key,会用到分桶,分桶带来的问题,某些分桶有数据,某些分桶无数据,可能在其他分桶有数据的情况下出现无库存的情况。解决:用户hash到指定的分桶,允许不同用户看到不同的库存余量,所路由到的分桶没有库存时直接展示无库存。

二、下单和扣减库存的顺序问题

1)下单的时候扣减库存,缺点:恶意买家大量下单,将库存用完,但是不付款,真正想买的人买不到。

2)付款的时候扣减库存,下单时前台页面显示最新的库存,下单时不会立即减库存,而是等到买家支付成功时才会减库存。缺点:下单页面显示的库存数可能不是最新的库存数,可能下单的时候有库存,支付的时候可能提示库存不足。

3)预扣库存,下单页面显示最新的库存,买家下单后先预扣库存一段时间(比如30分钟),等到超过保留时间后自动取消订单或者手动取消订单,将释放库存。预扣库存总数量不能超过总库存数,若达到最大限制后,买家是不能再下单的,为了防止超卖风险

通常来说预扣库存是较通用的方式

 

标签:场景,扣减,分桶,数据库,redis,库存,下单,设计
From: https://www.cnblogs.com/MarkLeeBYR/p/17416069.html

相关文章

  • 关于STM32Cube_FW_F1_V1.8.0内的example顶层程序设计逻辑 与 RTC_Calendar增补
     Examples内程序结构STM32Cube_FW_F1_V1.8.0\Projects\STM3210E_EVAL\Examples内程序结构分析如下:使用外设XXX向工程添加 stm32f10x_XXX.c修改stm32f10x_conf.h 在stm32f1xx_hal_msp.c中写 外设XXX写初始化程序在stm32f1xx_it.c中写中断服务程序在main.c中写配置程......
  • 以圆类Circle为基础设计球类Sphere
    以点类Point为基类公有派生圆类Circle,并以圆类Circle为基类公有派生球类Sphere,main(void)函数完成对其的测试。Point类结构说明:Point类的数据成员包括:①私有数据成员:X坐标x(double型),Y坐标y(double型)。Point类成员函数包括:①有参构造函数Point(double,double)和拷贝构造函......
  • 智能AI 的应用场景
    小凡智能AI是一款基于人工智能技术开发的助软件,能够帮助用户解决各种各样的问题,提高工作效率和生活质量。它的应用范围广泛,涵盖了工作、学习、健康等多个方面,为用户提供了全方位的服务支持。 在工作方面,小凡智能AI可以帮助用户自动化完成繁琐的文档处理、邮件回复和会议安排等......
  • 要想工作流程更简便,试试开源web表单设计器
    繁杂的工作流程,让您头疼不已?传统的表单制作效率低?内部数据迟迟得不到有效管理?......作为职场人的你,是否经常遇到上述问题。别着急,在如今的快节奏发展时代,传统的表单制作已经满足不了行业和市场的需求了,想要提质增效,不妨试试开源web表单设计器,说不定,它的灵活、简便、易操作优势特点......
  • 分布式和集群部署架构设计
    一、微服务部署架构设计方案1、先采用微服务架构设计,将工程拆分成多个模块(通过接口彼此调用,降低代码的耦合度)2、后采用分布式工作方式将拆分开的各个模块分别部署到多台服务器上(通过缩短单个任务的执行时间来提升效率)3、再采用集群物理方式将各个模块部署到多台服务器上(通过提......
  • 如何进行测试分析与设计-HTSM启发式测试策略模型 | 京东云技术团队
    测试,没有分析与设计就失去了灵魂;测试人员在编写用例之前,该如何进行测试分析与设计呢?上次在《测试的底层逻辑》中讲到了【输入输出测试模型】,还讲到了【2W+1H测试分析法】,但2W1H分析法是初步的分析方法,具体在测试中如何落地,还需要更细的设计。今天就给大家介绍一下由测试领域专家......
  • 基于Microsoft SEAL 同态加密场景特性
    基于MicrosoftSEAL同态加密场景特性参考MicrosoftSEALMicrosoftSEALGithub通过SEAL实现同态加密......
  • COSC239图形设计应用
    RMITClassification:TrustedFurtherProgrammingCOSC2391Assignment2:GraphicDesignApplicationAssessmentTypeIndividualassignment;nogroupwork.SubmitonlineviaCanvas→Assignments→Assignment2.Marksareawardedformeetingrequirementsasclosely......
  • ET介绍——数值组件设计
    类似魔兽世界,moba这种技能极其复杂,灵活性要求极高的技能系统,必须需要一套及其灵活的数值结构来搭配。数值结构设计好了,实现技能系统就会非常简单,否则就是一场灾难。比如魔兽世界,一个人物的数值属性非常之多,移动速度,力量,怒气,能量,集中值,魔法值,血量,最大血量,物理攻击,物理防御,法术攻击,......
  • 从零玩转设计模式之单例模式-danlimos
    title:从零玩转设计模式之单例模式date:2022-12-1212:41:03.604updated:2022-12-2315:35:29.0url:https://www.yby6.com/archives/danlimoscategories:-单例模式-设计模式tags:-Java模式-单例模式-设计模式前言单例设计模式是23种设计模式中最常用的设......