商品库存信息的处理方法及系统与流程

文档序号:12063823阅读:568来源:国知局
商品库存信息的处理方法及系统与流程

本发明实施例涉及网络应用技术领域,尤其涉及一种商品库存信息的处理方法及系统。



背景技术:

随着互联网金融的不断发展,越来越多的金融电商平台融入人们的生活。在金融电商平台中,商品无疑是相当关键的一个组件,而商品库存信息则是管理商品最为重要的方面,因此对商品库存信息进行处理的低延迟性和高可用性显得尤为重要。

目前的金融电商系统中,商品库存信息和商品订单信息等所有信息均存放在金融电商系统对应的服务器的数据库中,在对商品库存信息的处理过程中,特别是高并发情况下,通常利用数据库行级锁对商品库存信息,以将某一待处理商品库存信息进行加锁处理,在多个线程对该待处理商品库存信息进行操作情况下,只有其中一个线程对该待处理商品库存信息进行操作完成之后,其它线程才有权限对该待处理商品库存信息继续操作,从而保证商品库存信息和订单信息一致性、商品库存信息的准确性、订单状态的准确性等。

但是在高并发的情况下,由于商品库存信息和商品订单信息等所有信息均存放在金融电商系统对应的服务器的数据库中,根据该服务的数据库的结构,利用数据库行级锁,对商品库存信息进行处理时,占用该服务器的数据库资源,易出现数据严重阻塞现象,使商品库存信息并发处理的能力大幅降低,导致对商品库存信息处理的延迟性较高、可用性降低。



技术实现要素:

本发明提供一种商品库存信息的处理方法及系统,实现了商品库存信息与商品库存信息以外其他信息分别由不同的服务器存储,在对商品库存信息进行处理时,减少了数据传输阻塞现象,提高了商品库存信息并发处理能力,在高并发情况下,能够降低商品库存信息处理的延迟性、提高商品库存信息处理的可用性。

本发明提供一种商品库存信息的处理方法,所述商品库存信息存储在缓存服务器中,所述商品库存信息以外的信息存储在主服务器中;

所述主服务器根据待处理商品库存信息的标识,确定所述缓存服务器内所述标识对应的待处理商品库存信息的存储地址;

所述主服务器根据所述缓存服务器的数据库结构,对所述待处理商品库存信息的存储地址进行加锁处理,得到处理结果;

所述主服务器根据所述处理结果,对所述待处理商品库存信息进行处理。

本发明还提供一种商品库存信息的处理系统,包括缓存服务器和主服务器;

所述商品库存信息存储在缓存服务器中,所述商品库存信息以外的信息存储在所述主服务器中,所述主服务器包括:

确定模块,用于根据待处理商品库存信息的标识,确定所述缓存服务器内所述标识对应的待处理商品库存信息的存储地址;加锁模块,用于根据所述缓存服务器的数据库结构,对所述标识对应的待处理商品库存信息的存储地址进行加锁处理,得到处理结果;

处理模块,用于根据所述处理结果,对所述待处理商品库存信息进行处理。

本发明的商品库存信息的处理方法及系统,预先将商品库存信息存储在缓存服务器中,商品库存信息以外的信息存储在主服务器中,通过主服务器根据待处理商品库存信息的标识,确定缓存服务器内该标识对应的待处理商品库存信息的存储地址之后,由主服务器根据缓存服务器的数据库结构,对该标识对应的待处理商品库存信息的存储地址进行加锁处理,得到处理结果;并根据得到的处理结果,对待处理商品库存信息进行处理,实现了商品库存信息与商品库存信息以外其他信息分别由不同的服务器完成存储,减少了数据传输阻塞现象,提高了商品库存信息并发处理能力。采用本实施例的技术方案,在高并发情况下,能够降低商品库存信息处理的延迟性、提高商品库存信息处理的可用性。

附图说明

此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:

图1为本发明的商品库存信息的处理方法实施例一的流程图;

图2为本发明的商品库存信息的处理方法实施例二的流程图;

图3为图2所示实施例中Redis集群结构的示意图;

图4为本发明的商品库存信息的处理方法实施例三的流程图;

图5为本发明的商品库存信息的处理系统的实施例一的结构示意图;

图6为本发明的商品库存信息的处理系统的实施例二的结构示意图。

具体实施方式

为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

以下结合附图,详细说明本申请各实施例提供的技术方案。

实施例一

图1为本发明的商品库存信息的处理方法实施例一的流程图,如图1所示,本实施例的商品库存信息的处理方法,具体可以包括如下步骤:

100、主服务器根据待处理商品库存信息的标识,确定缓存服务器内该标识对应的待处理商品库存信息的存储地址。

通常情况下,商品库存信息和商品订单信息等所有信息均存放在金融电商系统对应的同一个服务器的数据库中,例如,当生成商品订单信息之后,会根据该服务器的数据库的结构,利用数据库行级锁对商品库存信息进行处理,以保证商品库存信息和订单信息一致性、商品库存信息的准确性、订单状态的准确性等。在高并发情况下,商品的可售数量通常是有限的,由于数据传输阻塞等原因,利用数据库行级锁对商品库存信息进行处理时,对商品库存信息扣减延迟较高,会造成商品可售数量小于订单数量等情况,降低了其可用性。

因此,本实施例的商品库存信息的处理方法中,可以将商品库存信息和除了商品库存信息以外的其它信息分开存储,其中商品库存信息存储在缓存服务器中,除了商品库存信息以外的其它信息仍存放在金融电商系统对应的服务器中,本实施例将金融电商系统对应的服务器定义为主服务器。

在对商品库存信息进行处理时,为了减少数据传输阻塞,及时有效的获取到商品库存信息,本发明实施例中主服务的数据库结构与缓存服务器的数据库结构不同。例如,为了降低单个对象的重要度,提高系统的性能,本发明实施例中,缓存服务器的数据库结构可以采用分布式的数据结构,将商品库存信息存储在缓存服务器时,可以保障当一个节点出现故障后,其它节点仍然可以被利用,从而保障缓存服务器内的商品库存信息及时有效的被获取。

这样主服务器对商品进行查询、下单、生成订单等操作生成订单后,主服务器根据缓存服务器的数据库结构,在商品库存信息中对订单中的商品数量进行扣减的操作、或者查看商品库存信息中某商品的可售数量,增添该商品的可售数量或者修改该商品库存信息等操作。

在一个具体实现过程中,缓存服务器中会存在多种商品库存信息,因此为了确定某一商品的库存信息,本实施例可以将不同商品进行多个编号,并根据其中的多个编号形成各商品库存信息的标识。具体地,各商品库存信息的标识至少包括商品的编号(prod_id)、商品的库量单位编号(prod_sku_id)以及商品的逻辑仓编号(logst_id)。其中,商品的编号是为了便于识别输入储存和处理,用来表示商品一定信息的一个或一组有规律排列的符号;商品的库量单位编号,即库存进出计量的基本单元,可以是以件,盒,托盘等为单位,现在已经被引申为产品统一编号的简称,每种产品均对应有唯一的sku号,商品的逻辑仓编号(logst_id)通常为商品对应的存放信息,例如,存放仓库的地理信息等,如在北京和天津各有一个仓库存放某一商品,商家可以根据用户的订单信息和商品的逻辑仓编号,选择离用户地址最近的仓库调取商品,以最快的进行配送。

通常情况下,用户通过客户端对待处理商品进行下单或者需要查询、修改待处理商品的库存信息等时,主服务器会生成该产品对应的待处理商品库存信息的标识,对待处理商品库存信息进行处理时,主服务器会根据待处理商品库存信息的标识,确定缓存服务器内该标识对应的待处理商品库存信息的存储地址。

101、主服务器对该标识对应的待处理商品库存信息的存储地址进行加锁处理,得到处理结果。

102、主服务器根据得到的处理结果,对待处理商品库存信息进行处理。

为了保证商品库存信息和订单信息一致性、商品库存信息的准确性、订单状态的准确性等,在对待处理商品库存信息进行处理过程中,需避免多个线程同时对待处理商品库存信息进行处理,因此,在生成待处理商品库存信息的标识后,需确定待处理商品库存信息的存储地址,并对待处理商品库存信息的存储地址进行加锁处理,并得到处理结果之后,根据该处理结果对待处理商品库存信息进行处理。

本发明实施例中,根据缓存服务器的数据库结构可以实现对待处理商品库存信息的存储地址进行分布式加锁处理,以降低单个对象的重要性,提升整个系统的性能。

例如,在多线程对待处理商品进行下单操作时,会根据相关原则,获取其中一个线程发送过来待处理商品库存信息的标识,并确定缓存服务器内该标识对应的待处理商品库存信息的存储地址,根据缓存服务器中的数据库结构对该存储地址进行分布式加锁处理,若得到的处理结果为主服务器确定对存储地址加锁成功,该线程则能够根据该标识,对待处理商品库存信息进行修改处理,如扣减订单中商品对应的数量。在此过程中,若再获取到其它线程发送过来待处理商品库存信息的标识后,得到的处理结果为缓存服务器确定对所述存储地址加锁失败,其它线程无法对待处理商品库存信息进行处理,维持待处理商品库存信息不变。

本实施例的商品库存信息的处理方法中,缓存服务器需要支持高并发情况下的读写速度,并且可以根据缓存服务器内的数据库结构,实现高并发情况下对待处理商品库存信息的分布式加锁,以保证在对待处理商品库存信息的处理的及时性、准确性、便捷性等。

通常情况下,Redis集群的读操作可达10万笔/秒,写操作可达2万笔/秒,因此本实施例以Redis集群作为缓存服务器的数据库结构为例,对本发明的技术方案进行描述。但本方案并不限制其它支持高并发情况下的读写速度的缓存服务器。

本实施例中,可以将Redis看作为一个开源的使用ANSIC语言编写、支持网络、可基于内存亦可持久化的日执行、键-值(Key-Value)数据库,并提供多种语言的应用程序接口(Application Program Interface,API)。

本实施例的商品库存信息的处理方法依托于Redis集群作为缓存服务器的数据库结构,利用Redis集群中的键-值类型的数据结构,对Redis集群模拟加锁机制,实现对待处理商品库存信息的存储地址进行分布式加锁处理,并为了方便记录与操作商品库存信息,可以在键-值类型的数据结构的基础上,融入但不限制于哈希表(HashMap)类型的数据结构,从而方便快捷的对待处理商品库存信息进行处理。例如,在主服务对待处理商品库存信息的存储地址进行加锁成功后,即可对待处理商品库存信息中的商品数量进行增加或删减、对待处理商品库存信息进行修改、查询等处理。

本实施例的商品库存信息的处理方法,预先将商品库存信息存储在缓存服务器中,商品库存信息以外的信息存储在主服务器中,通过主服务器根据待处理商品库存信息的标识,确定缓存服务器内该标识对应的待处理商品库存信息的存储地址之后,由主服务器根据缓存服务器的数据库结构,对该标识对应的待处理商品库存信息的存储地址进行加锁处理,得到处理结果;并根据得到的处理结果,对待处理商品库存信息进行处理,实现了商品库存信息与商品库存信息以外其他信息分别由不同的服务器存储,减少了数据传输阻塞现象,提高了商品库存信息并发处理能力。采用本实施例的技术方案,在高并发情况下,能够降低商品库存信息处理的延迟性、提高商品库存信息处理的可用性。

实施例二

图2为本发明的商品库存信息的处理方法实施例二的流程图,本实施例的商品库存信息的处理方法在图1所示实施例的基础上,进一步更加详细地对本发明的技术方案进行描述。

如图2所示,本实施例的商品库存信息的处理方法,具体可以包括如下步骤:

200、主服务器检测商品库存信息的存储位置;若检测到商品库存信息存储在缓存服务器中,执行步骤201;否则,若检测到商品库存信息存储在主服务器中,执行步骤209。

通常情况下,商品库存信息包括商品实际库存信息、商品可售库存信息或者商品冻结库存信息等,缓存服务器可能存在出现故障的状况,为了提高对商品库存信息处理的容灾能力,本实施例的商品库存信息的处理方法中,还将商品库存信息存储在主服务器中,当缓存服务器未出现故障的状况下,可以检测到商品库存信息存储在缓存服务器中,此时可以直接从缓存服务器获取到商品库存信息,并执行步骤201;当缓存服务器出现故障的状况下,会检测到商品库存信息存储在主服务器中,此时可以从主服务器中获取到商品库存信息,并执行步骤209。

201、主服务器根据待处理商品库存信息的标识,确定缓存服务器内该标识对应的待处理商品库存信息的存储地址。

本实施例的实现原理与图1所示实施例中步骤100的实现原理相同,详细请参考上述相关记载,在此不再赘述。

202、主服务器检测该标识对应的待处理商品库存信息的存储地址是否能够插入缓存服务器的数据库结构中;若检测到存储地址能够插入缓存服务器的数据库结构中,执行步骤203,否则,若检测到存储地址不能够插入缓存服务器的数据库结构中,执行步骤206。

本实施例以缓存服务器的数据库结构为Redis集群为例对本发明的技术方案进行描述。Redis集群的可用性是本实施例对商品库存信息的处理的前提,图3为图2所示实施例中Redis集群结构的示意图,如图3所示,Redis集群可以包括4个主节点(Master),每个主节点配有两个从节点(Slave),Redis集群若正常工作,需要保证所有的主节点同时存活,因此,当某个主节点发生异常后,从节点可以转换为主节点,从而保证Redis集群正常工作。本实施例对其它实现Redis集群正常工作的结构不做具体限制。

在主服务器生成待处理商品库存信息的标识后,可以根据该标识确定缓存服务器内待处理商品库存信息的存储地址,本实施例中将待处理商品库存信息的存储地址定义为stcok:[prod_id]:[prod_sku_id]:[logst_id]。

本实施例的商品库存信息的处理方法,可以利用Redis集群中的键-值类型的数据结构以及Redis集群相关命令语句实现对待处理商品库存信息的存储地址进行加锁处理。具体地,定义lock:stcok:[prod_id]:[prod_sku_id]:[logst_id]作为对待处理商品库存信息的存储地址进行加锁处理的任务名,并将该任务名作为键存储至Redis集群中。

表1为Redis集群中的数据结构,如表1所示,Redis-key即为Redis集群中的键,Redis-value即为Redis集群中的值,Map-field和Map-value形成一个HashMap结构的数据库,并与Redis-value对应作为Redis-key对应的值。其中,Map-field为HashMap中的键,Map-value为HashMap中的值,本实施例中PROD_STORAGE为商品的可售库存信息,PROD_FREEZE_STORAGE为商品冻结库存信息,OVERBOOK_COUNT为商品的超售数量。本实施例中,Map-value对应的信息还可以根据实际情况增加相应内容,本实施例并不限制与表1所示的数据结构。

表1

本实施例基于图3所示的Redis集群结构、表1所示的数据结构以及待处理商品的标识可以将Redis集群与主服务器的数据库结构实现关联,通过对Redis-key进行分布式加锁处理,实现对待处理商品库存信息的存储地址进行加锁处理,具体地,当待处理商品库存信息的存储地址进行加锁处理时,会通过任务名的方式向Redis集群发送请求时,通过setnx()命令检测该任务名是否能插入Redis集群中,若能插入setnx()会返回逻辑值“1”,否则会返回逻辑值“0”。当setnx()返回的是逻辑值“1”,则说明待处理商品库存信息的存储地址能够插入Redis集群中,执行步骤203,否则当setnx()会返回逻辑值“0”,说明待处理商品库存信息的存储地址不能够插入Redis集群中,执行步骤206。

203、主服务器确定对存储地址加锁成功。

当某一线程对待处理商品库存信息的存储地址加锁成功之后,需要通过终止命令(expire)对加锁后的存储地址设置一个过期时间,并在该过期时间内,根据待处理商品库存信息的标识,对待处理商品库存信息进行修改处理,例如,本实施例中,待处理商品库存信息的标识对应的存储地址即为Redis-key,待处理商品库存信息即为Redis-value,可以获取Redis-key对应的Redis-value,以根据待处理商品库存信息的商品的编号、商品的库量单位编号以及商品的逻辑仓编号,对Redis-value内HashMap的数据进行修改处理,保证HashMap的数据的准确性。

当加锁后的存储地址的加锁时间达到设定的过期时间后,即使当前线程对待处理商品库存信息的操作没有执行完成,Redis集群将加锁后的存储地址删除掉,以避免当前线程长期占用商品库存信息对应的锁

204、主服务器检测是否捕捉到在对待处理商品库存信息进行处理过程中的异常操作;若未捕捉到异常操作,执行步骤205;否则,若捕捉到异常操作,结束该流程。

当确定对存储地址加锁成功后,该线程可以对待处理商品库存信息进行处理中,可能出现如修改待处理商品库存信息失败、增加待处理商品的库存数量失败、扣减待处理商品的库存数量失败等操作,因此,主服务器会通过异常捕获(try_catch)指令,对在处理待处理商品库存信息过程中进行异常操作捕捉。若未捕捉到异常操作,执行步骤205;否则若捕捉到异常操作,结束该流程。

205、主服务器对加锁后的存储地址进行解锁处理。

若未捕捉到异常操作,最终利用删除(del)命令删除加锁后的存储地址,以使其它线程再对待处理商品库存信息请求处理时,能够请求成功,并实现处理。

206、主服务器确定对存储地址加锁失败。

确定对存储地址加锁失败后,则说明该线程对待处理商品库存信息没有处理权限,无法对待处理商品库存信息进行处理,维持所述待处理商品库存信息不变即可。

207、主服务器检测加锁后的存储地址是否为死锁状态;若检测到加锁后的存储地址为死锁状态,执行步骤208;若检测到加锁后的存储地址不为死锁状态,执行步骤201。

若确定对存储地址加锁失败,可能由于死锁造成的或者该存储地址已被其它线程加锁造成的等。若是死锁造成对存储地址加锁失败,会使该对存储地址一直被加锁,其它线程则将一直无法对待处理商品库存信息进行处理,因此需要确定造成对待处理商品库存信息的存储地址加锁失败的原因。

具体地,可以根据获取存储地址对应的值判断存储地址是否为死锁状态,例如,为了避免造成死锁,加锁后的存储地址都会设置一个过期时间,因此,可以通过获取该过期时间,并将获取结果转换为存储地址对应的值。若检测到存储地址对应的值与第一指定值匹配,确定存储地址为死锁状态。例如,本实施例预先设置一个第一指定值,第一指定值表示存储地址为死锁状态。若存储地址被加锁,但没有设置过期时间,则无法获取到该存储地址的过期时间,返回的数值与第一指定值相同,说明加锁失败的原因为死锁造成的,需要执行步骤208。本实施例预先设置一个第一指定值可以为但不限制于-1。

否则,若未获取到存储地址对应的值、若检测到存储地址对应的值与第二指定值匹配或者若检测到存储地址对应的值与第三指定值匹配,确定加锁后的存储地址不为死锁状态,根据实际情况做具体处理。

例如,若Redis集群存在异常状况,此时可能由于机房停电或者网络出现故障等原因造成的Redis集群宕机导致的,此时不能获取到存储地址对应的值,需要相关人员去检查机房或者网路是否正常,当正常后执行步骤201。

本实施例预先设置一个第二指定值,第二指定值表示任务名对应的存储地址与访问的存储地址不相同。若Redis集群中该存储地址未被加锁,此时也无对应的过期时间,由于一些异常情况,导致任务名对应的存储地址与访问地址不同,此时是不能对任务名对应的存储地址进行加锁处理的,返回的数值与第二指定值相同,锁失败的原因为任务名对应的存储地址与访问的存储地址不相同,无需处理,执行步骤201。其中第二指定值可以为-2。

本实施例预先设置一个第三指定值,第三指定值表示该存储地址被加锁,且设置了过期时间。若返回的数值与第三指定值相匹配,加锁失败的原因为被其它线程占用,无需处理,执行步骤201。其中第三指定值为0,返回的数值只要为大于0的正整数即表示返回的数值与第三指定值相匹配。

208、主服务器对加锁后的存储地址进行死锁处理。

利用del命令将该加锁后的存储地址删除。

209、根据主服务器的数据库结构,完成对商品库存信息的处理。

本实施例中由于缓存服务器可能出现故障的状况,为了保证仍能够对取待处理商品库存信息进行处理,增强对待处理商品库存信息处理的容灾能力,在缓存服务器出现故障的情况下,可以利用调用主服务器中的商品库存信息,由主服务根据待处理商品库存信息的标识,利用数据库行级锁对待处理商品库存信息进行处理,详细的原理,请参考现有相关技术,在此不再赘述。

本实施例的商品库存信息的处理方法,预先将商品库存信息存储在缓存服务器中,实现了商品库存信息与商品库存信息以外其他信息分别由不同的服务器存储,减少了数据传输阻塞现象,提高了商品库存信息并发处理能力。采用本实施例的技术方案,在高并发情况下,能够降低商品库存信息处理的延迟性、提高商品库存信息处理的可用性;释放了利用主服务器对商品库存信息处理时占用的资源,提高了主服务器的性能,保证了主服务器中其它应用的可用性。

本实施例的商品库存信息的处理方法,还将商品库存信息存储在主服务器中,实现了商品库存信息的动态切换,采用本实施例的技术方案,能够根据实际需求,利用主服务器或者利用缓存服务器对商品库存信息进行处理,提高了对商品库存信息处理的容灾能力。

进一步地,上述实施例中,步骤202“主服务器检测该标识对应的待处理商品库存信息的存储地址是否能够插入缓存服务器的数据库结构中”以一个待处理商品库存信息的存储地址为例对本发明的技术方案进行描述的,实际应用过程中,会存在对多个待处理商品库存信息的存储地址进行加锁处理的情况。

例如,同一订单中包含多个商品,不同商品对应的待处理商品库存信息不同,此时需要对各待处理商品库存信息进行多级加锁处理。具体地,需要按照设定的排序规则对各待处理商品库存信息进行排序,例如,先排prod_id,再排prod_sku_id,最后排[logst_id],形成一个对各待处理商品库存信息加锁处理的集合,并对集合中的对各待处理商品库存信息按照步骤202的方法依次加锁处理,若检测到所有待处理商品库存信息的存储地址均能够插入缓存服务器的数据库结构中,确定多级加锁成功,否则,若检测到任意一个待处理商品库存信息的存储地址不能够插入缓存服务器的数据库结构中,确定多级加锁失败。

需要说明的是,当确定多级加锁失败后,并不需要进行死锁处理,而是直接进行多级解锁处理,该过程按照多级加锁的逆向处理即可。例如,在对各加锁后的待处理商品库存信息的存储地址进行解锁前,先判断是否加锁成功,若判断出加锁成功,利用del命令进行解锁,若判断出加锁失败,无须进行解锁处理,进行下一个待处理商品库存信息的判断,直至多级解锁完成。

本实施例的商品库存信息的处理方法,通过多级加锁的方式,提高了商品库存信息的处理效率。

实施例三

图4为本发明的商品库存信息的处理方法实施例三的流程图,本实施例的商品库存信息的处理方法在图2所示实施例的基础上,进一步更加详细地对本发明的技术方案进行描述。

本实施例以待处理商品库存信息的标识为主服务器生成的为例对本发明的技术方案进行描述。

如图4所示,本实施例的商品库存信息的处理方法,具体可以包括如下步骤:

400、主服务器检测商品库存信息的存储位置;若检测到商品库存信息存储在缓存服务器中,执行步骤401;否则,若检测到商品库存信息存储在主服务器中,执行步骤410。

401、主服务器检测生成待处理商品库存信息的标识的过程中是否存在异常事件;若检测到生成待处理商品库存信息的标识的过程中存在异常事件,执行步骤402;否则,若检测到生成待处理商品库存信息的标识的过程中不存在异常事件,执行步骤403。

主服务器生成待处理商品库存信息的标识之前需要在主服务器中执行多步操作,该过程中可能出现某一操作失败造成等异常事件,因此,主服务器需要检测生成待处理商品库存信息的标识的过程中是否存在异常事件;若检测到生成待处理商品库存信息的标识的过程中存在异常事件,对异常事件进行处理,执行步骤402;若检测到生成待处理商品库存信息的标识的过程中不存在异常事件,执行步骤403。

402、主服务器对异常事件进行处理。

在一个具体实现过程中,对异常事件进行处理即将Redis集群中的待处理商品库存信息进行数据恢复至获取待处理商品库存信息的标识之前的数据,以保证待处理商品库存信息的准确性,主服务器可以再次进行下单操作等,并生成待处理商品库存信息的标识,且该过程中未出现异常事件,主服务器跟该标识,在Redis集群完成相关操作。

403、主服务器检测该标识对应的待处理商品库存信息的存储地址是否能够插入缓存服务器的数据库结构中;若检测到存储地址能够插入缓存服务器的数据库结构中,执行步骤404,否则,若检测到存储地址不能够插入缓存服务器的数据库结构中,执行步骤407。

404、主服务器确定对存储地址加锁成功。

405、主服务器检测是否捕捉到在对待处理商品库存信息进行处理过程中的异常操作;若未捕捉到异常操作,执行步骤406;否则,若捕捉到异常操作,结束该流程。

406、主服务器对加锁后的存储地址进行解锁处理。

407、主服务器确定对存储地址加锁失败。

408、主服务器检测该存储地址是否为死锁状态;若检测到该存储地址为死锁状态,执行步骤409;若检测到该存储地址不为死锁状态,执行步骤401。

409、主服务器对该存储地址进行死锁处理。

410、根据主服务器的数据库结构,完成对商品库存信息的处理。

在一个具体实现过程中,本实施例可以将在Redis集群中对商品库存信息的处理的操作定义为事务前操作,将在主服务器中包括对商品库存信息的处理的操作在内的所有操作定义为事务操作。将当事务操作过程中存在异常事件,对异常事件处理的操作定义为补偿操作。

本实施例的商品库存信息的处理方法,通过对事务前操作进行异常信息检测,当存在异常信息时,结束本次操作流程,保证了商品库存信息和订单信息一致性、商品库存信息的准确性、订单状态的准确性等。

本实施例的商品库存信息的处理方法,还通过对事务操作进行异常事件检测,当存在异常事件时,对异常事件进行处理,以实现对整个处理流程进行补偿处理,进一步保证了商品库存信息和订单信息一致性、商品库存信息的准确性、订单状态的准确性等。

实施例四

图5为本发明的商品库存信息的处理系统的实施例一的结构示意图,如图5所示,本实施例的商品库存信息的处理系统可以包括缓存服务器10和主服务器20。

其中,商品库存信息存储在缓存服务器10中,商品库存信息以外的信息存储在主服务器20中。

主服务器20可以包括确定模块201、加锁模块202和处理模块203。

确定模块201,用于根据待处理商品库存信息的标识,确定缓存服务器10内标识对应的待处理商品库存信息的存储地址;

加锁模块202,用于根据缓存服务器10的数据库结构,对待处理商品库存信息的存储地址进行加锁处理,得到处理结果;

处理模块203,用于根据加锁模块202得到的处理结果,对待处理商品库存信息进行处理。

本实施例的商品库存信息的处理系统,通过采用上述各模块实现对处待处理商品库存信息进行处理的实现机制与上述图1所示实施例的实现机制相同,详细可以参考上述图1所示实施例的记载,在此不再赘述。

本实施例的商品库存信息的处理系统,预先将商品库存信息存储在缓存服务器10中,商品库存信息以外的信息存储在所述主服务器20中,通过确定模块201根据待处理商品库存信息的标识,确定缓存服务器10内标识对应的待处理商品库存信息的存储地址之后,利用加锁模块202对该标识对应的待处理商品库存信息的存储地址进行加锁处理,得到处理结果;并由处理模块203根据得到的处理结果,对待处理商品库存信息进行处理,实现了商品库存信息与商品库存信息以外其他信息分别由不同的服务器存储,减少了数据传输阻塞现象,提高了商品库存信息并发处理能力。采用本实施例的技术方案,在高并发情况下,能够降低商品库存信息处理的延迟性、提高商品库存信息处理的可用性。

实施例五

图6为本发明的商品库存信息的处理系统的实施例二的结构示意图,如图6所示,本实施例的商品库存信息的处理系统可在图5所示实施例的基础上,主服务器20进一步还可以包括解锁模块204、第一检测模块205和死锁处理模块206。

在一个具体实现过程中,加锁模块202,具体用于:

检测待处理商品库存信息的存储地址是否能够插入缓存服务器10的数据库结构中;

若检测到该存储地址能够插入缓存服务器10的数据库结构中,确定对存储地址加锁成功;

若检测到该存储地址不能够插入缓存服务器10的数据库结构中,确定对存储地址加锁失败。

处理模块203,具体用于:

若处理结果为确定对缓存服务器10中的存储地址加锁成功,根据待处理商品库存信息的标识,对缓存服务器10中的待处理商品库存信息进行修改处理;

若处理结果为确定对缓存服务器10中的存储地址加锁失败,维持待处理商品库存信息。

解锁模块204,用于加锁模块202确定对存储地址加锁成功后,对加锁后的存储地址进行解锁处理。

第一检测模块205,用于加锁模块202确定对存储地址加锁失败后,检测缓存服务器10中的存储地址是否为死锁状态。

具体地,第一检测模块205,用于:

获取缓存服务器10中的存储地址对应的值,

若获取到缓存服务器10中的存储地址对应的值与第一指定值匹配,确定加锁后的存储地址为死锁状态。

若未获取到缓存服务器10中的存储地址对应的值、若获取到缓存服务器10中的存储地址对应的值与第二指定值匹配或者若获取到缓存服务器10中的存储地址对应的值与第三指定值匹配,确定缓存服务器10中的存储地址不为死锁状态。

死锁处理模块206,用于若第一检测模块205检测到加锁后的存储地址为死锁状态,对加锁后的存储地址进行死锁处理。

如图6所示,本实施例的商品库存信息的处理系统,主服务器20还可以包括第二检测模块207和异常处理模块208。

第二检测模块207,用于检测生成待处理商品库存信息的标识的过程中是否存在异常事件;

异常处理模块208,用于若检测到生成待处理商品库存信息的标识的过程中存在异常事件,对异常事件进行处理。

例如,对缓存服务器10中的待处理商品库存信息恢复至初始数据。

在一个具体实现过程中,本实施例的商品库存信息的处理系统,还可以包括存储模块209和第三检测模块201。

存储模块209,用于存储所述商品库存信息;

第三检测模块210,用于检测商品库存信息的存储位置;

第三检测模块210,还用于若检测到商品库存信息存储在缓存服务器10中,触发确定模块根据待处理商品库存信息的标识,确定缓存服务器内所述标识对应的待处理商品库存信息的存储地址;若检测到商品库存信息存储在存储模块209中,根据主服务器20的数据库结构,完成对商品库存信息的处理。

本实施例的商品库存信息的处理系统,通过采用上述各模块及装置实现对商品库存信息的处理的实现机制与上述图2和图4所示实施例的实现机制相同,详细可以参考上述图2和图4所示实施例的记载,在此不再赘述。

本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。

内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。

计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。

还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。

本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1