CN113360570A - 一种高并发系统库存模块实现方法 - Google Patents
一种高并发系统库存模块实现方法 Download PDFInfo
- Publication number
- CN113360570A CN113360570A CN202110618247.XA CN202110618247A CN113360570A CN 113360570 A CN113360570 A CN 113360570A CN 202110618247 A CN202110618247 A CN 202110618247A CN 113360570 A CN113360570 A CN 113360570A
- Authority
- CN
- China
- Prior art keywords
- inventory
- processor
- order
- local
- remote
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
- G06F16/273—Asynchronous replication or reconciliation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q10/00—Administration; Management
- G06Q10/08—Logistics, e.g. warehousing, loading or distribution; Inventory or stock management
- G06Q10/087—Inventory or stock management, e.g. order filling, procurement or balancing against orders
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q30/00—Commerce
- G06Q30/06—Buying, selling or leasing transactions
- G06Q30/0601—Electronic shopping [e-shopping]
- G06Q30/0633—Lists, e.g. purchase orders, compilation or processing
- G06Q30/0635—Processing of requisition or of purchase orders
Landscapes
- Engineering & Computer Science (AREA)
- Business, Economics & Management (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Economics (AREA)
- Accounting & Taxation (AREA)
- Finance (AREA)
- Physics & Mathematics (AREA)
- Marketing (AREA)
- General Business, Economics & Management (AREA)
- Databases & Information Systems (AREA)
- Strategic Management (AREA)
- Development Economics (AREA)
- Tourism & Hospitality (AREA)
- Human Resources & Organizations (AREA)
- Entrepreneurship & Innovation (AREA)
- Operations Research (AREA)
- Computing Systems (AREA)
- Quality & Reliability (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明提供了一种高并发系统库存模块实现方法,包括如下步骤:S1、客户端发送请求至负载均衡器,并将请求均匀分配至每个app上;S2、app获取请求后,判断是否有本地库存;若本地库存充足,则扣减本地库存,进行步骤S3;如果本地库存不足,则直接返回客户端提示无库存;S3、调用远端redis,判断远端redis是否有总库存;若远端总库存充足,则扣减远端总库存,进行步骤S4;若远端总库存不足,则直接返回客户端提示无库存S4、app发送消息给即时消息队列kafka;S5、订单模块接收到即时消息队列kafka的消息,并创建订单;S6、完成订单流程,通知客户端下单成功;本发明保证订单不超卖、不少卖,避免了对数据库频繁的I/O操作,保证订单支付有效和系统承受极高的并发。
Description
技术领域
本发明属于网络通信技术领域,尤其是涉及一种高并发系统库存模块实现方法。
背景技术
下单减库存,如图3所示,当用户并发请求到达服务端时,首先创建订单,然后扣除库存,等待用户支付,这种情况下能保证订单不会超卖,因为创建订单之后就会减库存,这是一个原子操作,但是如果用户存在恶意下单的情况,只下单不支付这样库存就会变少,导致订单“少卖”现象;支付减库存,如图4所示,如果等待用户支付了订单在减库存,这样不会少卖,但在极限并发情况下,用户可能会创建很多订单,当库存减为零的时候很多用户发现抢到的订单支付不了了,导致订单出现“超卖”现象,也不能避免并发操作数据库磁盘I/O。
发明内容
有鉴于此,本发明旨在提出一种高并发系统库存模块实现方法,以解决用户下单时商品出现少卖、超卖的问题。
为达到上述目的,本发明的技术方案是这样实现的:
第一方面,一种高并发系统库存模块实现方法,包括如下步骤:
S1、客户端发送请求至负载均衡器,并将请求均匀分配至每个app上;
S2、app获取请求后,判断是否有本地库存;如果本地库存充足,则扣减本地库存,并进行下一步;如果本地库存不足,则直接返回客户端提示无库存;
S3、调用远端redis,判断远端redis是否有总库存,如果远端总库存充足,则扣减远端总库存,并进行下一步;如果远端总库存不足,则直接返回客户端提示无库存;
S4、app发送消息给即时消息队列kafka;
S5、订单模块接收到即时消息队列kafka的消息,并创建订单;
S6、完成订单流程,通知客户端下单成功。
进一步的,步骤S1中,每个app分配的本地库存总量数量相等。
进一步的,步骤S2中,本地库存总量包括固定库存和buffer存库,当部分app出现异常宕机时,启用buffer库存进行弥补
第二方面,本发明提供一种电子设备,包括处理器,以及与处理器通信连接,且用于存储所述处理器可执行指令的存储器,所述处理器执行所述指令时实现上述第一方面所述的一种高并发系统库存模块实现方法的步骤。
第三方面,本发明提供一种服务器,包括至少一个处理器,以及与所述处理器通信连接的存储器,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述处理器执行,以使所述至少一个处理器执行上述第一方面所述的一种高并发系统库存模块实现方法的步骤。
第四方面,本发明提供一种计算机可读取存储介质,存储有计算机程序,所述计算机程序被处理器执行时实现上述第一方面所述的一种高并发系统库存模块实现方法的步骤。
相对于现有技术,本发明所述的一种高并发系统库存模块实现方法具有以下有益效果:
(1)本发明所述的一种高并发系统库存模块实现方法根据客户端请求分别对app本地减库存和redis远程统一减库存,异步生成订单,提高用户响应时间;
(2)本发明所述的一种高并发系统库存模块实现方法保证订单不超卖、不少卖,避免了对数据库频繁的I/O操作,每个订单都必须支付才有效,保证系统承受极高的并发。
附图说明
构成本发明的一部分的附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1为本发明实施例所述的一种高并发系统库存模块实现方法流程图;
图2为本发明实施例应用一种高并发系统库存模块实现方法流程图;
图3为本发明实施例所述的现有模式下单减库存示意图;
图4为本发明实施例所述的现有模式支付减库存示意图。
具体实施方式
需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。
下面将参考附图并结合实施例来详细说明本发明。
实施例一:
如图1所示,一种高并发系统库存模块实现方法,包括如下步骤:
S1、客户端发送请求至负载均衡器,并将请求均匀分配至每个app上;
S2、app获取请求后,判断是否有本地库存;如果本地库存充足,则扣减本地库存,并进行下一步;如果本地库存不足,则直接返回客户端提示无库存;
S3、调用远端redis,判断远端redis是否有总库存,如果远端总库存充足,则扣减远端总库存,并进行下一步;如果远端总库存不足,则直接返回客户端提示无库存;
S4、app发送消息给即时消息队列kafka;
S5、订单模块接收到即时消息队列kafka的消息,并创建订单;
S6、完成订单流程,通知客户端下单成功。
步骤S1中,每个app分配的本地库存总量数量相等。
步骤S2中,本地库存总量包括固定库存和buffer存库,当部分app出现异常宕机时,启用buffer库存进行弥补。
一种电子设备,包括处理器,以及与处理器通信连接,且用于存储所述处理器可执行指令的存储器,所述处理器执行所述指令时实现上述实施例一种任一项所述的一种高并发系统库存模块实现方法的步骤。
一种服务器,包括至少一个处理器,以及与所述处理器通信连接的存储器,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述处理器执行,以使所述至少一个处理器执行上述实施例一任一项所述的一种高并发系统库存模块实现方法的步骤。
一种计算机可读取存储介质,存储有计算机程序,所述计算机程序被处理器执行时实现上述实施例一任一项所述的一种高并发系统库存模块实现方法的步骤。
如图2所示,用户下单时,先扣除了库存,保证不超卖,然后异步生成用户订单,这样响应给用户的速度就会快很多,订单的生成是异步的,一般都会放到kafka中处理,订单量比较少的情况下,生成订单非常快,用户几乎不用排队,订单都有有效期,比如说用户五分钟内不支付,订单就失效了,订单一旦失效,就会加入新的库存,这样保证商品不少卖,将一定的库存量分配到各个app,直接在内存中减库存,然后按照之前的逻辑异步创建订单,这样就避免了对数据库频繁的I/O操作,只在内存中做运算,极大的提高了并发的能力。
不妨假设100万的用户请求量去抢库存只有1万的商品,我们将这100万的请求平均均衡到100个app上,这样单个app所承受的并发量就小了很多,然后我们给每个app本地库存设置为100,100个app上的总库存还是1万,这样保证了库存订单不超卖;
我们需要对总库存做统一的管理,不仅要在app本地减库存,还要远程统一减库存,此时采用Redis存储统一库存,如果不做统一的库存管理,当有部分app异常宕机的时候,会导致宕机的这些app中的库存卖不掉,导致少卖,有了远程统一减库存的操作,我们就可以根据app负载情况,为每个app分配一些多余的“Buffer库存”用来防止有app宕机的情况;
首先在app本地减库存,此时每个app分得的库存是(固定库存100+buffer库存50=150),然后再去请求Redis远程减库存,只有app本地减库存和远程减库存都成功了,才返回给用户成功的提示,这样也能有效的保证订单不会超卖。
当有app宕机时,因为每个app上有预留的Buffer库存,所以宕机的app上的余票依然能够在其他app上得到弥补,保证了不少卖。
当本地库存不足时,系统直接返回用户“已售罄”的信息提示,就不会再走统一扣库存的逻辑,这在一定程度上也避免了巨大的网络请求量把Redis压跨。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及方法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
在本申请所提供的几个实施例中,应该理解到,所揭露的方法和系统,可以通过其它的方式实现。例如,以上所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。上述单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本发明实施例方案的目的。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围,其均应涵盖在本发明的权利要求和说明书的范围当中。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (6)
1.一种高并发系统库存模块实现方法,其特征在于,包括如下步骤:
S1、客户端发送请求至负载均衡器,并将请求均匀分配至每个app上;
S2、app获取请求后,判断是否有本地库存;如果本地库存充足,则扣减本地库存,并进行下一步;如果本地库存不足,则直接返回客户端提示无库存;
S3、调用远端redis,判断远端redis是否有总库存,如果远端总库存充足,则扣减远端总库存,并进行下一步;如果远端总库存不足,则直接返回客户端提示无库存;
S4、app发送消息给即时消息队列kafka;
S5、订单模块接收到即时消息队列kafka的消息,并创建订单;
S6、完成订单流程,通知客户端下单成功。
2.根据权利要求1所述的一种高并发系统库存模块实现方法,其特征在于:步骤S1中,每个app分配的本地库存总量数量相等。
3.根据权利要求1所述的一种高并发系统库存模块实现方法,其特征在于:步骤S2中,本地库存总量包括固定库存和buffer存库,当部分app出现异常宕机时,启用buffer库存进行弥补。
4.一种电子设备,包括处理器,以及与处理器通信连接,且用于存储所述处理器可执行指令的存储器,其特征在于:所述处理器执行所述指令时实现权利要求1-3任一项所述的一种高并发系统库存模块实现方法的步骤。
5.一种服务器,包括至少一个处理器,以及与所述处理器通信连接的存储器,所述存储器存储有可被所述至少一个处理器执行的指令,其特征在于:所述指令被所述处理器执行,以使所述至少一个处理器执行如权利要求1-3任一项所述的一种高并发系统库存模块实现方法的步骤。
6.一种计算机可读取存储介质,存储有计算机程序,其特征在于:所述计算机程序被处理器执行时实现权利要求1-3任一项所述的一种高并发系统库存模块实现方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110618247.XA CN113360570A (zh) | 2021-05-31 | 2021-05-31 | 一种高并发系统库存模块实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110618247.XA CN113360570A (zh) | 2021-05-31 | 2021-05-31 | 一种高并发系统库存模块实现方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113360570A true CN113360570A (zh) | 2021-09-07 |
Family
ID=77531765
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110618247.XA Pending CN113360570A (zh) | 2021-05-31 | 2021-05-31 | 一种高并发系统库存模块实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113360570A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115776522A (zh) * | 2022-11-23 | 2023-03-10 | 紫光云技术有限公司 | 一种处理商品预订的高并发系统及方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108133399A (zh) * | 2016-11-30 | 2018-06-08 | 北京京东尚科信息技术有限公司 | 高并发快响应的秒杀库存精准扣减的方法、装置及系统 |
US20190066167A1 (en) * | 2011-02-04 | 2019-02-28 | Adstruc, Inc. | System to dynamically manage and optimize the utilization of outdoor advertising units |
CN111401752A (zh) * | 2020-03-18 | 2020-07-10 | 北京泓慧国际能源技术发展有限公司 | 一种飞轮储能调频共享处理方法、装置、系统及电子设备 |
CN112102044A (zh) * | 2020-11-10 | 2020-12-18 | 成都四方伟业软件股份有限公司 | 一种消息队列处理高并发秒杀商品的方法、系统及装置 |
-
2021
- 2021-05-31 CN CN202110618247.XA patent/CN113360570A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20190066167A1 (en) * | 2011-02-04 | 2019-02-28 | Adstruc, Inc. | System to dynamically manage and optimize the utilization of outdoor advertising units |
CN108133399A (zh) * | 2016-11-30 | 2018-06-08 | 北京京东尚科信息技术有限公司 | 高并发快响应的秒杀库存精准扣减的方法、装置及系统 |
CN111401752A (zh) * | 2020-03-18 | 2020-07-10 | 北京泓慧国际能源技术发展有限公司 | 一种飞轮储能调频共享处理方法、装置、系统及电子设备 |
CN112102044A (zh) * | 2020-11-10 | 2020-12-18 | 成都四方伟业软件股份有限公司 | 一种消息队列处理高并发秒杀商品的方法、系统及装置 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115776522A (zh) * | 2022-11-23 | 2023-03-10 | 紫光云技术有限公司 | 一种处理商品预订的高并发系统及方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8903925B2 (en) | Scheduled messages in a scalable messaging system | |
US5590334A (en) | Object oriented message passing system and method | |
EP2416246B1 (en) | Extensibility of business process and application logic | |
US9049164B2 (en) | Dynamic message retrieval by subdividing a message queue into sub-queues | |
US8862613B2 (en) | Extensibility of business process and application logic | |
WO2011150601A1 (zh) | 交易处理系统 | |
CN111026758B (zh) | 电子券发放方法和装置 | |
CN115544044A (zh) | 一种数据一致性保持方法、装置、设备和存储介质 | |
CN113360570A (zh) | 一种高并发系统库存模块实现方法 | |
CN115421922A (zh) | 一种分布式系统的限流方法、装置、设备、介质及产品 | |
CN111352753A (zh) | 账务处理方法及装置 | |
CN108629653A (zh) | 一种低延时库存扣减服务系统及方法 | |
CN111400283B (zh) | 一种数据处理方法、系统、电子设备及存储介质 | |
CN101017450B (zh) | 管理资源请求的设备、系统和方法 | |
CN112634011A (zh) | 一种多账户联动的存款方法、装置、电子设备和存储介质 | |
CN116051106B (zh) | 一种异常订单处理方法和装置 | |
CN111259032A (zh) | 一种业务处理方法和装置 | |
CN114429340A (zh) | 电子支付的处理方法、装置、电子设备及存储介质 | |
CN108234481B (zh) | 一种控制多机分布式访问外部系统的方法及分布式系统 | |
US9092258B2 (en) | Task concurrency limiter | |
CN111796854A (zh) | 一种模块热升级的方法、装置、电子设备和可读存储介质 | |
CN113971552B (zh) | 一种批量数据处理方法、装置、设备以及存储介质 | |
CN113935691A (zh) | 一种库存扣减方法、装置、电子设备及计算机可读介质 | |
CN112613912B (zh) | 高并发场景下的优惠券领取系统设计 | |
CN114169997A (zh) | 一种扣款方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20210907 |