秒杀,这个源于淘宝的名称,现在已经为大家所熟知,本质是用户对于稀缺资源的竞购,整个过程以秒级为单位的时间内瞬时完成。而在分布式环境下,这个简单的名词背后对技术的要求却是极高的,架构师需要从整体平衡角度出发,做好设计才能从容应对。
在对稀缺资源的竞购过程中,应充分考虑从打开页面、不断刷新、下单、支付、扣库存、发货这整个过程进行优化提升,包括静态资源的CDN缓存,AJAX异步数据加载,数据缓存,IP限流,库存控制优化等等。
大致的部署结构如下:
其他关于高并发的优化文章很多,这里不再赘述,本文着重介绍WeX云金融系统的库存控制的演化历程,大致经历了三个阶段。
一、简单数据库锁
在业务量起步阶段,并发并不高,普通的数据库行级锁就可以完成库存的控制。
分为两种方式,伪代码作一下示例:
方式1:
select for update; if(stock - delta >= 0){ update set stock = stock - delta; insert order; }
方式2:
result = update set stock = stock – delta where stock – delta >= 0; if(result >= 0){ insert order; }
随着业务量的增长以及品牌的推广,优质商品很快成为稀缺资源,秒杀逐渐上演。用户经常出现购买等待超过十几秒,甚至几十秒的情况,用户体验急剧下降。确认瓶颈就在数据库行级锁上,为了让业务尽快恢复正常,决定采用临时方案,即利用Memcache的Incr原子性操作将性能快速提高。
二、Memcache自增数+数据库锁
思路是减少行级锁竞争,在前期库存足够时候通过memcache完成计数,直接完成订单记录不做库存消耗;当计数结果大于库存后,则清空缓存,再统计已发生订单总消耗量一次性更新库存。
伪代码如下:
// 计数缓存不为空情况 if(memcacheClient.get(key) != null){ result = memcacheClient.incr(key, delta); if(result >= stock){ // 1、锁定库存 select for update; // 2、统计已发生订单消耗 sum = select sum(delta) from order; // 3、一次性更新库存 update set stock = stock - sum; // 4、清空计数 memcacheClient.set(key, null); }else{ insert order; } } // 计数超过库存情况 else{ result = update set stock = stock - delta where stock - delta; if(result > 0){ insert order; } }
经过此次改造,性能大幅提升,但细心的读者会发现这样的模式是存在安全隐患的,缓存和数据库就是跨网络的独立服务,本身就无法保证强一致性,缓存服务的网络抖动或者缓存服务宕机都可能出现超卖的情况。不过这样的临时改造代价较小,而且快速解决了眼前的问题,保证业务能顺畅,为后续做进一步评估和整体改造换来了时间。
三、基于数据库的库存分块
在对高并发、强一致性场景下,解决的思路最终会围绕着减少热点竞争来做根本的改变,而方式基本上还是两种:
1、队列模式,将瞬时的高峰转变为相对低频的流式竞争;
2、分散热点模式,将原有的一个区块切割为多个区块,分块竞争。
对于队列模式,往往要求延时响应,即用户完成付款后等待申请被队列消耗结果完成确认,而相比较分散热点模式可继续保持同步响应,并且在后续叠加队列模式也不冲突,所以最终选择分散热点的方案作为升级方案。
运作模式如下:
当所有的从库存消耗完毕后进入主库存消耗,整个过程关于每个库存消耗逻辑可重用、代码简洁、性能大幅提升。在此基础上可结合自身运营的特点进行分块切割策略控制,畅销商品分块数量可相对多点,但也不是越多越好,合并库存会带来额外的开销。
最后,业务运营也可将畅销商品在时间上作分散发布。
相关推荐
农业供应链金融是针对农业产业的一种金融服务创新,旨在解决农户和中小农业企业融资难题。...随着互联网技术的应用,农业供应链金融有望通过大数据分析、区块链等先进技术进一步优化风险控制,提高服务质量和效率。
【工程机械行业工业互联网实践】 工程机械行业作为技术密集、劳动密集和资本密集型的行业,具有重要的地位,与国民经济紧密相连。近年来,我国工程机械制造行业在国家政策调控下迅速发展,国营民营企业共同推动行业...
EBS不仅继承了传统ERP的核心功能,如财务管理(FI)、物料管理(MM)、生产计划(PP)、销售与分销(SD)、成本控制(CO)等,还扩展了人力资源管理(HRM)、客户关系管理(CRM)、供应链管理(SCM)、供应商关系...
在实践方面,大数据的使用范围已经覆盖了金融、医疗、零售、交通等多个行业。在这些行业之中,大数据的分析和处理技术已经被应用于用户行为分析、市场趋势预测、风险评估、个性化推荐等多个方面,极大地提高了企业...
在流程层面,金融机构应当重点控制开源软件的增量和管理现有库存。制定明确的开源软件接受和拒绝标准,对引入的每项开源软件进行严格的安全测评和协议审查,是有效防范外部安全威胁的重要措施。同时,存量治理要求对...
资金方面,互联网金融模式的发展为创新型企业提供了更多融资渠道。技术方面,互联网促进了知识和技术的快速传播和共享。管理方面,云计算和大数据等技术使得管理活动更加高效和透明。政策和服务方面,互联网为政策的...
(1) 提高信息传递效率:通过互联网技术,企业可以快速收集、比较和分析市场信息,确保物资采购决策的及时性。 (2) 优化成本控制:信息化管理能有效监控采购成本,通过数据分析,企业可以制定更精准的采购策略,降低...
1. 市场竞争:随着大型银行、汽车金融公司及互联网金融平台的崛起,城商行面临更激烈的市场竞争。 2. 风险管控:汽车金融业务涉及信用风险、操作风险和市场风险,城商行需强化风险识别和防控机制。 3. 监管政策:...
技术层面,互联网、大数据、云计算、区块链等新技术的应用,为供应链金融提供了更高效、安全的服务平台,提高了风险控制能力。 报告深入分析了市场参与者,包括商业银行、核心企业、第三方金融服务机构等的角色和...
京东供应链金融提供了一系列创新金融产品,如应收账款融资、库存融资、预付款融资等。这些产品灵活多样,可以根据不同企业的实际需求进行定制,满足了供应链中各个环节的金融需求。 四、线上操作便捷高效 借助...
5. **优化库存管理**:物联网技术可以提供精确的库存信息,帮助金融机构了解企业的库存周转情况,从而更好地控制融资额度,降低库存融资的风险。 6. **减少信息不对称**:物联网技术的应用减少了供应链中的信息不...
2017年,中国供应链金融正处于快速发展阶段,随着互联网+、大数据、云计算等新技术的应用,传统金融服务正逐渐向智能化、网络化转变。 报告可能涵盖了以下几个关键知识点: 1. **市场背景**:介绍2017年中国宏观...
这些系统的引入旨在实现财务管理、库存管理、人力资源、供应链、质量管理等多方面的集成与优化,提高业务协同效率,实现磅房无人值守,增强价格管控和信用控制,以及通过智能监控和预警来减少内耗和风险。...
快消产业互联网通过互联网工具对传统产业链进行改造,例如在生产环节实现品牌商与零售终端的数据共享,流通环节提升供应链效率,销售环节帮助终端店铺提高坪效,以解决传统快消产业在资源配置、创新能力、成本控制等...
例如,优化工推出的"优仓融"、"优订融"和"优销融"等金融产品,它们是基于特定交易场景的创新实践,为化工企业在销售、采购、库存等方面提供了定制化的服务,满足了企业的个性化需求。 在风险控制方面,供应链金融...
同时,大数据分析还能提升商贸公司的供应链管理、库存控制以及市场营销策略。 二、爬虫技术基础 1. **HTTP协议**:网络爬虫首先需要理解HTTP(超文本传输协议),它是互联网上应用最为广泛的一种网络协议,爬虫...
12. 零库存控制:研究在物流配送下如何实现接近零库存,减少资金占用和库存风险。 13. 电子商务下的库存管理:探讨电商环境下的库存管理特点,如快速响应、多渠道配送等。 14. 零售商店库存管理改革:关注零售业...
通过与供应商、客户以及金融机构的深度合作,电商企业可以优化现金流,降低库存,提升资金周转效率。例如,通过预付账款融资、应收账款保理等方式,企业可以缓解资金压力,同时增强供应链的稳定性。 此外,随着...
【电子商务理论与实践】知识点: 1. **支付网关**:在Internet公用网络平台和银行内部金融网络专用平台之间的安全接口是支付网关,它在电子商务交易中起到关键作用,确保金融交易的安全。 2. **轻资产模式**:轻...
连接设备数量逐步攀升,工业互联网沉淀海量模型,赋能企业存在区域、行业差异,企业数字化管理的效能有所提升,“平台+金融”深度融合形态日益丰富,复合型人才培养路径逐步完善。 四、制造业数字化转型中存在的...