CN105468690B - 一种库存数据处理方法和装置 - Google Patents
一种库存数据处理方法和装置 Download PDFInfo
- Publication number
- CN105468690B CN105468690B CN201510789613.2A CN201510789613A CN105468690B CN 105468690 B CN105468690 B CN 105468690B CN 201510789613 A CN201510789613 A CN 201510789613A CN 105468690 B CN105468690 B CN 105468690B
- Authority
- CN
- China
- Prior art keywords
- application server
- inventory
- article
- type
- memory
- 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.)
- Active
Links
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/10—File systems; File servers
- G06F16/18—File system types
- G06F16/1847—File system types specifically adapted to static storage, e.g. adapted to flash memory or SSD
-
- 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/23—Updating
- G06F16/2308—Concurrency control
- G06F16/2336—Pessimistic concurrency control approaches, e.g. locking or multiple versions without time stamps
- G06F16/2343—Locking methods, e.g. distributed locking or locking implementation details
-
- 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/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24552—Database cache management
-
- 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
-
- 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]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Business, Economics & Management (AREA)
- Accounting & Taxation (AREA)
- Finance (AREA)
- Economics (AREA)
- General Business, Economics & Management (AREA)
- Strategic Management (AREA)
- Marketing (AREA)
- Development Economics (AREA)
- Computational Linguistics (AREA)
- Computing Systems (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明提供了一种库存数据处理方法和装置,该方法可包括:根据各应用服务器的服务能力将物品库存信息分布式地存储在所述各应用服务器的内存,其中,所述物品库存信息包括:物品类型和该物品类型对应物品的库存;根据对库存的访问请求读取所述内存中的物品库存信息,并对所述物品的库存进行扣减操作;在所述内存的扣减操作成功之后,根据所述访问请求对存储所述物品的库存信息的数据库进行数据库扣减操作。根据本发明的方法和装置,在对库存数据频繁访问的情况下,基本避免了由于数据库锁等待导致的访问阻塞,大大提高了访问的响应速度。
Description
技术领域
本发明涉及数据处理领域,更为具体而言,涉及一种库存数据处理方法和装置。
背景技术
在电子商务的相关数据处理中,秒杀、抢购等活动带来的高并发对系统造成的压力较大,而压力的瓶颈之一就是数据库连接数。由于要保证商品库存的一致性,避免产生“多卖”或者“少卖”的情况,系统需要对数据库的商品库存信息加行锁。在抢购的高并发情况下,对热销商品条目行锁的争用回家具,大量的锁等待会导致访问请求处理缓慢甚至系统瘫痪。
目前大多数电商网站的抢购系统通常采用的是水平切分数据库表的方式来解决高并发下的库存锁问题。但是,这样的方式对数据库的依赖程度较高,在抢购商品的种类和商品库存数量都较大的情况下,平均到每个数据库表的访问还是会很多,无法从根本上解决锁等待的问题。
发明内容
为解决上述技术问题,本发明提供了一种库存数据处理方法和装置。
根据本发明实施方式的第一方面,提供了一种库存数据处理方法,该方法可包括:根据各应用服务器的服务能力将物品库存信息分布式地存储在所述各应用服务器的内存,其中,所述物品库存信息包括:物品类型和该物品类型对应物品的库存;根据对库存的访问请求读取所述内存中的物品库存信息,并对所述物品的库存进行扣减操作;在所述内存的扣减操作成功之后,根据所述访问请求对存储所述物品的库存信息的数据库进行数据库扣减操作。
在本发明的一些实施方式中,所述各应用服务器的服务能力是通过下述的一个或多个参数进行确定:CPU核数和内存数。
在本发明的一些实施方式中,所述根据各应用服务器的服务能力将物品库存信息分布式地存储在所述各应用服务器的内存包括:根据所述各应用服务器的服务能力、所述各应用服务器的内存的最大连接数和所述物品类型涉及的物品类型总数确定所述各应用服务器的库存量区间,然后基于确定出的所述各应用服务器的库存量区间并结合每一个物品类型对应物品的库存确定各应用服务器的库存量。
在本发明的一些实施方式中,所述根据各应用服务器的服务能力将物品库存信息分布式地存储在所述各应用服务器的内存还包括:在确定出各应用服务器的库存量之后,在各应用服务器中,将物品类型作为键值,该物品类型对应物品的库存作为属性值,存储在本应用服务器的内存。
在本发明的一些实施方式中,所述对所述物品的库存进行扣减操作包括:在所述物品的库存大于零的情况下,根据所述访问请求对所述物品的库存进行扣减,并将所述访问请求转发至所述数据库以便进行所述数据库扣减操作。
在本发明的一些实施方式中,所述方法还包括:在根据对物品的库存的访问请求读取所述内存中的所述物品库存信息之后,在所述物品的库存为零的情况下,向所述访问请求返回失败消息。
在本发明的一些实施方式中,所述方法还包括:在所述各应用服务器中的一台或多台服务器宕机时,根据正常工作的剩余各应用服务器的服务能力、所述剩余各应用服务器的内存的最大连接数和所述物品类型涉及的物品类型总数确定所述剩余各应用服务器的库存量区间,基于确定出的所述剩余各应用服务器的库存量区间并结合每一个物品类型对应物品的库存确定所述剩余各应用服务器的库存量。
根据本发明实施方式的第二方面,提供了一种库存数据处理装置,该装置可包括:模型计算模块,用于根据各应用服务器的服务能力将物品库存信息分布式地存储在所述各应用服务器的内存,其中,所述物品库存信息包括:物品类型和该物品类型对应物品的库存;缓存处理模块,用于根据对库存的访问请求读取所述内存中的物品库存信,并对所述物品的库存进行扣减操作;数据库处理模块,用于在缓存处理模块在所述内存的扣减操作成功之后,根所述访问请求对存储所述物品的库存信息的数据库进行数据库扣减操作。
在本发明的一些实施方式中,所述服务能力是通过下述的一个或多个参数进行确定:CPU核数和内存数。
在本发明的一些实施方式中,所述缓存处理模块根据各应用服务器的服务能力将物品库存信息分布式地存储在所述各应用服务器的内存包括:根据所述各应用服务器的服务能力、所述各应用服务器的内存的最大连接数和所述物品类型涉及的物品类型总数确定所述各应用服务器的库存量区间,然后基于确定出的所述各应用服务器的库存区间并结合每一个物品类型对应物品的库存确定各应用服务器的库存量。
在本发明的一些实施方式中,所述缓存处理模块根据各应用服务器的服务能力将物品库存信息分布式地存储在所述各应用服务器的内存还包括:在确定出各应用服务器的库存量之后,在各应用服务器中,将物品类型作为键值,该物品类型对应物品的库存作为属性值,存储在本应用服务器的内存。
在本发明的一些实施方式中,所述缓存处理模块对所述物品的库存进行扣减操作包括:在所述物品的库存大于零的情况下,根据所述访问请求对所述物品的库存进行扣减,并将所述访问请求转发至所述数据库以便进行所述数据库扣减操作。
在本发明的一些实施方式中,所述缓存处理模块,还用于在根据对物品的库存的访问请求读取所述内存中的所述物品库存信息之后,在所述物品的库存为零的情况下,向所述访问请求返回失败消息。
在本发明的一些实施方式中,所述装置还包括:调度模块,用于在所述各应用服务器中的一台或多台服务器宕机时,调用所述缓存处理模块根据正常工作的剩余各应用服务器的服务能力、所述剩余各应用服务器的内存的最大连接数和所述物品类型涉及的物品类型总数确定所述剩余各应用服务器的库存量区间,基于确定出的所述剩余各应用服务器的库存量区间并结合每一个物品类型对应物品的库存确定所述剩余各应用服务器的库存量。
本发明实施方式提供的库存数据处理方法和装置,通过基于应用服务器的服务能力将商品库存信息分布式地缓存在内存,并在内存中基于访问请求对商品库存进行扣减,成功扣减的访问请求才能够继续访问数据库进行数据库扣减操作,利用应用服务器的内存数据读取效率高的特点,大大提高了访问请求的响应速度;而且将尽可能多的访问流量阻挡在了应用服务器一侧,将过程锁迁移至应用服务器的内存缓存,基本上摒弃了对数据库的依赖,大大减少了数据库锁等待导致的响应延迟。
附图说明
图1是根据本发明一种实施方式的库存数据处理方法的流程示意图;
图2是根据本发明一种实施方式的库存数据处理装置的结构示意图。
具体实施方式
以下结合附图和具体实施方式对本发明的各个方面进行详细阐述。其中,众所周知的模块、单元及其相互之间的连接、链接、通信或操作没有示出或未作详细说明。并且,所描述的特征、架构或功能可在一个或一个以上实施方式中以任何方式组合。本领域技术人员应当理解,下述的各种实施方式只用于举例说明,而非用于限制本发明的保护范围。还可以容易理解,本文所述和附图所示的各实施方式中的模块或单元或处理方式可以按各种不同配置进行组合和设计。
参见图1,图1是根据本发明一种实施方式的库存数据处理方法的流程示意图,该方法具体可包括:
S101,根据各应用服务器的服务能力将物品库存信息分布式地存储在所述各应用服务器的内存,其中,所述物品库存信息包括:物品类型和该物品类型对应物品的库存;
S102,根据对库存的访问请求读取所述内存中的物品库存信息,并对所述物品的库存进行扣减操作;
S103,在所述内存的扣减操作成功之后,根据所述访问请求对存储所述物品的库存信息的数据库进行数据库扣减操作。
本发明的库存数据处理方法可适用于各种物品的库存数据处理,对进行秒杀、抢购活动等需要对物品的库存数据进行高并发访问并且对库存数据的一致性要求较高的情况尤为适用。
在步骤S101中,根据各应用服务器的服务能力将物品库存信息分布式地存储在所述各应用服务器的内存,其中,所述物品库存信息包括:物品类型和该物品类型对应物品的库存,物品类型可涉及大于或等于1个类型,每一个物品类型具有对应的一个库存或库存值。在一些具体的实施方式中,物品可以是电子商城上售卖的商品或者供用户抢购或者秒杀的商品等。各应用服务器可以是处理来自电子商城客户端的购买、浏览等访问请求的应用服务器。应用服务器的个数可以包括一个或多个,各应用服务器可通过本服务器的CPU核数和/或内存数等配置资源确定本服务器向外(例如,客户端等)提供服务的服务能力。在具体的实施过程中,本步骤S101可以在商品抢购、秒杀等活动之前进行,作为这些活动的预处理步骤。
在本发明的一些实施方式中,根据各应用服务器的服务能力将物品库存信息(例如,物品类型和该物品对应的库存等)分布式地存储在各应用服务器的内存可以包括:根据各服务器的服务能力、所述各应用服务器的内存的最大连接数和所述物品类型涉及的物品类型总数确定各应用服务器的库存量区间,然后基于确定的各应用服务器的库存量区间并结合每一个物品类型对应物品的库存确定各应用服务器的库存量。下面以一个具体的例子说明物品库存信息的分布式存储的模型。设定抢购商品的共有M件,也就是说,商品类型的总数为M,每一个商品类型对应商品的库存为N,应用服务器的数量为K,分别为ap1,ap2,ap3,……apk,对应的服务能力分别为a1,a2,a3,……ak,设定应用服务器apn的内存能支持的最大连接数为C,则应用服务器apn可以分配的一个商品类型的商品的库存量区间为[1,C*an/((a1+a2+a3+……+ak)*M)],其中,*表示相乘,/表示相除。根据应用服务器apn的服务能力和每一个商品类型对应商品的库存N确定的应用服务器apn可分配的库存量为:N*an/(a1+a2+a3+……+ak),若该值大于上面基于应用服务器apn的服务能力an、内存的最大连接数C和商品类型总数M确定出的库存量的上限C*an/((a1+a2+a3+……+ak)*M),则应用服务器apn的库存量的取值为:C*an/((a1+a2+a3+……+ak)*M);若该值小于1,则应用服务器apn的库存量的取值为1;若该值在上述确定的库存量区间之中,则应用服务器的库存量为:N*an/(a1+a2+a3+……+ak)。本发明将商品的库存信息分布根据各应用服务器的服务能力分别进行存储,建立了库存模型,可有效降低单台缓存服务器的压力,并保证了库存值的全局唯一性。
本发明的根据各应用服务器的服务能力将物品库存信息分布式地存储在各应用服务器的内存还包括:在确定出各应用服务器的库存量之后,在各应用服务器中,将物品类型作为键值Key,该物品类型对应物品的库存作为属性值value,存储在本应用服务器的内存。
在本发明的一些实施方式中,在库存信息的缓存处理中,在对物品类型的KEY存储中,还可以采用余数分散方法在各缓存服务器进行分散处理,例如,对物品类型的总数KEY值用缓存服务器的数量n取模求余,将物品的库存值分散存放在不同的缓存服务器,以便降低缓存服务器压力和提高查找效率。
本发明将商品的库存信息根据各应用服务器的服务能力分布式地进行存储在内存,建立了库存模型,并可通过余数分散算法,有效降低单台缓存服务器的库存数据读取压力,提高对商品库存访问请求的响应速度,并保证了库存值的全局唯一性,方便通过商品类型的Key值查找对应的库存。
在步骤S102中,根据对库存的访问请求读取所述内存中的物品库存信息,并对所述物品的库存进行扣减操作。例如,可以根据来自用户的客户端对商品的库存的访问请求(例如,对商品的购买访问请求,其中包括购买的数量)读取本服务器内存中缓存的库存量,通过在缓存的应用服务器上设置内存锁,快速的锁定商品的库存值,若该商品的库存值大于零,则基于访问请求中的购买数量对该商品的库存值进行扣减,在该种情况下对所述存储的库存值扣减为成功。若该商品的库存值等于零,则向该访问请求返回失败消息,即,商品的库存为零,无法购买该商品。在具体的实施过程中,本步骤可以是抢购或秒杀过程中,对于用户的抢购或秒杀访问请求的响应。本发明的库存数据处理方法通过在应用服务器的内存上直接对商品库存进行扣减,在库存为零时直接向访问请求返回失败消息,从而将对商品库存的访问请求在应用服务器上进行了限流,同时将商品库存的过程锁迁移到应用服务器的内存缓存中,大大减少了对数据库的依赖,有效缓解了现有技术中数据库锁等待造成的访问阻塞。
然后,执行步骤S103,在所述内存的扣减操作成功之后,根据所述访问请求对存储所述物品的库存信息的数据库进行数据库扣减操作。也就是说,本发明的库存数据处理方法是仅将在应用服务器的内存成功扣减的访问请求才能继续访问数据库,并进行实际的数据库扣减操作,避免了现有技术中对数据库的过分依赖,极大减少了数据库锁的争用,显著提高了库存数据的访问请求的响应速度。以上面的商品类型的总数M且每一商品类别的库存为N为例,最后成功访问数据库的连接数降至最多N*M。
本发明的库存数据处理方法通过基于应用服务器的服务能力将商品库存信息分布式地缓存在内存,并在内存中基于访问请求对商品库存进行扣减,成功扣减的访问请求才能够继续访问数据库进行数据库扣减操作,利用应用服务器的内存读取效率高的特点,大大提高了访问请求的响应速度;而且将尽可能多的访问流量阻挡在了应用服务器一侧,将过程锁迁移至应用服务器的缓存,基本上摒弃了对数据库的依赖,大大减少了数据库锁等待导致的响应延迟。
本发明的库存数据处理方法还可包括:在所述各应用服务器中的一台或多台服务器宕机时,根据正常工作的剩余各应用服务器的服务能力、所述剩余各应用服务器的内存的最大连接数和所述物品类型涉及的物品类型总数确定所述剩余各应用服务器的库存量区间,基于确定出的所述剩余各应用服务器的库存量区间并结合每一个物品类型对应物品的库存确定所述剩余各应用服务器的库存。也就是说,在一台或多台应用服务器宕机时,根据能够正常工作(未宕机)的各应用服务器的服务能力以及物品类型信息和库存信息等与上面类似的方法重新进行分布式缓存。
上面结合具体实施方式描述了本发明的库存数据处理方法的流程,下面将结合具体实施方式描述应用上述方法的库存数据处理装置。
参见图2,图2是根据本发明一种实施方式的库存数据处理装置的结构示意图,该装置200具体可包括:
模型计算模块201,用于根据各应用服务器的服务能力将物品库存信息分布式地存储在所述各应用服务器的内存,其中,所述物品库存信息包括:物品类型和该物品类型对应物品的库存;
缓存处理模块202,用于根据对库存的访问请求读取所述内存中的物品库存信息,并对所述物品的库存进行扣减操作;
数据库处理模块203,用于在缓存处理模块在所述内存的扣减操作成功之后,根据所述访问请求对存储所述物品的库存信息的数据库进行数据库扣减操作。
本发明的库存数据处理装置200可适用于各种物品的库存数据处理,对进行秒杀、抢购活动等高并发访问商品库存的情况尤为适用。装置200可包括模型计算模块201、缓存处理模块202和数据库处理模块203,这三个模块可以设置能够数据通信的不同服务器上,并且彼此之间可以调用,或者供服务器上的其他功能模块调用。
模型计算模块201可设置在应用服务器上,也可以设置应用服务器之外的单独的服务器上。模型计算模块201根据各应用服务器的服务能力将物品库存信息分布式地存储在所述各应用服务器的内存,其中,所述物品库存信息包括:物品类型和该物品类型对应物品的库存,物品类型可涉及大于或等于1个类型,每一个物品类型具有对应的一个库存或库存值。在一些具体的实施方式中,物品可以是电子商场上售卖的商品式中,物品可以是电子商城上售卖的商品。各应用服务器可以是处理来自电子商城客户端的购买、浏览等访问请求的应用服务器。应用服务器的个数可以包括一个或多个,各应用服务器可通过本服务器的CPU核数和/或内存数等配置资源确定本服务器向外(例如,客户端等)提供服务的服务能力。
在一些实施方式中,模型计算模块201根据各应用服务器的服务能力将物品库存信息(例如,物品类型和该物品对应的库存等)分布式地存储在各应用服务器的内存可以包括:根据各服务器的服务能力、所述各应用服务器的内存的最大连接数和所述物品类型涉及的物品类型总数确定各应用服务器的库存量区间,然后基于确定的各应用服务器的库存量区间并结合各应用服务器的服务能力和每一个物品类型对应物品的库存确定各应用服务器的库存量。例如,设定抢购商品的共有M件,也就是说,商品类型的总数为M,每一个商品类型对应商品的库存为N,应用服务器的数量为K,分别为ap1,ap2,ap3,……apk,对应的服务能力分别为a1,a2,a3,……ak,设定应用服务器apn的内存能支持的最大连接数为C,则应用服务器apn可以分配的一个商品类型的商品的库存量区间为[1,C*an/((a1+a2+a3+……+ak)*M)],其中,*表示相乘,/表示相除。根据应用服务器apn的服务能力和每一个商品类型对应商品的库存N确定的应用服务器apn可分配的库存量为:N*an/(a1+a2+a3+……+ak),若该值大于上面基于应用服务器apn的服务能力an、内存的最大连接数C和商品类型总数M确定出的库存量的上限C*an/((a1+a2+a3+……+ak)*M),则应用服务器apn的库存量的取值为:C*an/((a1+a2+a3+……+ak)*M);若该值小于1,则应用服务器apn的库存量的取值为1;若该值在上述确定的库存量区间之中,则应用服务器的库存量为:N*an/(a1+a2+a3+……+ak)。本发明将商品的库存信息分布根据各应用服务器的服务能力分别进行存储,建立了库存模型,可有效降低单台缓存服务器的压力,并保证了库存值的全局唯一性。
模型计算模块201根据各应用服务器的服务能力将物品库存信息分布式地存储在各应用服务器的内存还包括:在确定出各应用服务器的库存量之后,在各应用服务器中,将物品类型作为键值Key,该物品类型对应物品的库存作为属性值value,存储在本应用服务器的内存。
在本发明的一些实施方式中,模型计算模块201在库存信息的缓存处理中,在对物品类型的KEY存储中,还可以采用余数分散方法在各缓存服务器进行分散处理,例如,对物品类型的总数KEY值用缓存服务器的数量n取模求余,将物品的库存值分散存放在不同的缓存服务器,以便降低缓存服务器压力和提高查找效率。
本发明将商品的库存信息根据各应用服务器的服务能力分布式地进行存储在内存,建立了库存模型,通过余数分散算法,可有效降低单台缓存服务器的库存数据读取压力,提高了对商品库存访问请求的响应速度,并保证了库存值的全局唯一性,方便通过商品类型的Key值查找对应的库存。
缓存处理模块202可设置各应用服务器上,也可以设置在与应用服务器通信的其他设备上。缓存处理模块202根据对库存的访问请求读取所述内存中的物品库存信息,并对所述物品的库存进行扣减操作。例如,可以根据来自用户的客户端对商品的库存的访问请求(例如,对商品的购买访问请求,其中包括购买的数量)读取本服务器内存中缓存的库存量,通过在缓存的应用服务器上设置内存锁,快速的锁定商品的库存值,若该商品的库存值大于零,则基于访问请求中的购买数量对该商品的库存值进行扣减,在该种情况下对所述存储的库存值扣减为成功。若该商品的库存值等于零,则向该访问请求返回失败消息,即,商品的库存为零,无法购买该商品。本发明的库存数据处理方法通过将对商品库存的访问请求在应用服务器上进行限流,同时将商品库存的过程锁迁移到应用服务器的内存缓存中,大大减少了对数据库的依赖,有效缓解了现有技术中数据库锁等待造成的访问阻塞。
数据库处理模块203可以在所述内存的扣减操作成功之后,根据所述访问请求对存储所述物品的库存信息的数据库进行数据库扣减操作。也就是说,本发明的数据库处理模块203不是基于访问请求直接进行数据库的数据读写操作,而是在应用服务器的内存成功扣减的访问请求才能继续访问数据库,并进行实际的数据库扣减操作,避免了现有技术中对数据库的过分依赖,极大减少了数据库锁的争用,显著提高了库存数据的访问请求的响应速度。以上面的商品类型的总数M且每一商品类别的库存为N为例,最后成功访问数据库的连接数降至最多N*M。
本发明通过模型计算模块基于应用服务器的服务能力将商品库存信息分布式地缓存在内存,并通过缓存处理模块在内存中基于访问请求对商品库存进行扣减,数据库处理模块在内存成功扣减的情况下才允许访问请求实际读取数据库进行数据库扣减操作,利用应用服务器的内存读取效率高的特点,大大提高了访问请求的响应速度;而且将尽可能多的访问流量阻挡在了应用服务器一侧,将过程锁迁移至应用服务器的缓存,基本上摒弃了对数据库的依赖,大大减少了数据库锁等待导致的响应延迟。
本发明的库存数据处理装置还可包括调度模块,该调度模块可调用模型计算模块201,以便在应用服务器宕机时根据剩余的正常工作的应用服务器的服务能力将物品的库存信息进行重新分布。具体而言,调度模块在所述各应用服务器中的一台或多台服务器宕机时,根据正常工作的剩余各应用服务器的服务能力、所述剩余各应用服务器的内存的最大连接数和所述物品类型涉及的物品类型总数确定所述剩余各应用服务器的库存量区间,基于确定出的所述剩余各应用服务器的库存量区间并结合每一个物品类型对应物品的库存确定所述剩余各应用服务器的库存量。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件结合硬件平台的方式来实现。基于这样的理解,本发明的技术方案对背景技术做出贡献的全部或者部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,智能手机或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。
本发明说明书中使用的术语和措辞仅仅为了举例说明,并不意味构成限定。本领域技术人员应当理解,在不脱离所公开的实施方式的基本原理的前提下,对上述实施方式中的各细节可进行各种变化。因此,本发明的范围只由权利要求确定,在权利要求中,除非另有说明,所有的术语应按最宽泛合理的意思进行理解。
Claims (12)
1.一种库存数据处理方法,其特征在于,所述方法包括:
根据各应用服务器的服务能力将物品库存信息分布式地存储在所述各应用服务器的内存,其中,所述物品库存信息包括:物品类型和该物品类型对应物品的库存;
根据对库存的访问请求读取所述内存中的物品库存信息,并对所述物品的库存进行扣减操作;
在所述内存的扣减操作成功之后,根据所述访问请求对存储所述物品的库存信息的数据库进行数据库扣减操作;
其中,所述根据各应用服务器的服务能力将物品库存信息分布式地存储在所述各应用服务器的内存包括:
根据所述各应用服务器的服务能力、所述各应用服务器的内存的最大连接数和所述物品类型涉及的物品类型总数确定所述各应用服务器的库存量区间,然后基于确定出的所述各应用服务器的库存量区间并结合每一个物品类型对应物品的库存确定各应用服务器的库存量。
2.根据权利要求1所述的方法,其特征在于,所述服务能力是通过下述的一个或多个参数进行确定:CPU核数和内存数。
3.根据权利要求1所述的方法,其特征在于,所述根据各应用服务器的服务能力将物品库存信息分布式地存储在所述各应用服务器的内存还包括:
在确定出各应用服务器的库存量之后,在各应用服务器中,将物品类型作为键值,该物品类型对应物品的库存作为属性值,存储在本应用服务器的内存。
4.根据权利要求1所述的方法,其特征在于,所述对所述物品的库存进行扣减操作包括:
在所述物品的库存大于零的情况下,根据所述访问请求对所述物品的库存进行扣减,并将所述访问请求转发至所述数据库以便进行所述数据库扣减操作。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
在根据对物品的库存的访问请求读取所述内存中的所述物品库存信息之后,在所述物品的库存为零的情况下,向所述访问请求返回失败消息。
6.根据权利要求1至5中任一项所述的方法,其特征在于,所述方法还包括:
在所述各应用服务器中的一台或多台服务器宕机时,根据正常工作的剩余各应用服务器的服务能力、所述剩余各应用服务器的内存的最大连接数和所述物品类型涉及的物品类型总数确定所述剩余各应用服务器的库存量区间,基于确定出的所述剩余各应用服务器的库存量区间并结合每一个物品类型对应物品的库存确定所述剩余各应用服务器的库存量。
7.一种库存数据处理装置,其特征在于,所述装置包括:
模型计算模块,用于根据各应用服务器的服务能力将物品库存信息分布式地存储在所述各应用服务器的内存,其中,所述物品库存信息包括:物品类型和该物品类型对应物品的库存;
缓存处理模块,用于根据对库存的访问请求读取所述内存中的物品库存信息,并对所述物品的库存进行扣减操作;
数据库处理模块,用于在缓存处理模块在所述内存的扣减操作成功之后,根据所述访问请求对存储所述物品的库存信息的数据库进行数据库扣减操作;
其中,所述模型计算模块根据各应用服务器的服务能力将物品库存信息分布式地存储在所述各应用服务器的内存包括:
根据所述各应用服务器的服务能力、所述各应用服务器的内存的最大连接数和所述物品类型涉及的物品类型总数确定所述各应用服务器的库存量区间,然后基于确定出的所述各应用服务器的库存区间并结合每一个物品类型对应物品的库存确定各应用服务器的库存量。
8.根据权利要求7所述的装置,其特征在于,所述服务能力是通过下述的一个或多个参数进行确定:CPU核数和内存数。
9.根据权利要求7所述的装置,其特征在于,所述模型计算模块根据各应用服务器的服务能力将物品库存信息分布式地存储在所述各应用服务器的内存还包括:
在确定出各应用服务器的库存量之后,在各应用服务器中,将物品类型作为键值,该物品类型对应物品的库存作为属性值,存储在本应用服务器的内存。
10.根据权利要求7所述的装置,其特征在于,所述缓存处理模块对所述物品的库存进行扣减操作包括:
在所述物品的库存大于零的情况下,根据所述访问请求对所述物品的库存进行扣减,并将所述访问请求转发至所述数据库以便进行所述数据库扣减操作。
11.根据权利要求10所述的装置,其特征在于,所述缓存处理模块,还用于在根据对物品的库存的访问请求读取所述内存中的所述物品库存信息之后,在所述物品的库存为零的情况下,向所述访问请求返回失败消息。
12.根据权利要求7至11任一项所述的装置,其特征在于,所述装置还包括:
调度模块,用于在所述各应用服务器中的一台或多台服务器宕机时,调用所述缓存处理模块根据正常工作的剩余各应用服务器的服务能力、所述剩余各应用服务器的内存的最大连接数和所述物品类型涉及的物品类型总数确定所述剩余各应用服务器的库存量区间,基于确定出的所述剩余各应用服务器的库存量区间并结合每一个物品类型对应物品的库存确定所述剩余各应用服务器的库存。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510789613.2A CN105468690B (zh) | 2015-11-17 | 2015-11-17 | 一种库存数据处理方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510789613.2A CN105468690B (zh) | 2015-11-17 | 2015-11-17 | 一种库存数据处理方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105468690A CN105468690A (zh) | 2016-04-06 |
CN105468690B true CN105468690B (zh) | 2018-11-30 |
Family
ID=55606391
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510789613.2A Active CN105468690B (zh) | 2015-11-17 | 2015-11-17 | 一种库存数据处理方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105468690B (zh) |
Families Citing this family (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106874319A (zh) * | 2016-06-17 | 2017-06-20 | 阿里巴巴集团控股有限公司 | 点击量的分布式统计方法及装置 |
CN106156309A (zh) * | 2016-07-01 | 2016-11-23 | 五八同城信息技术有限公司 | 数据读取方法及装置 |
CN106170016A (zh) * | 2016-07-28 | 2016-11-30 | 深圳市创梦天地科技有限公司 | 一种处理高并发数据请求的方法和系统 |
CN107871221B (zh) * | 2016-09-28 | 2022-07-05 | 北京京东尚科信息技术有限公司 | 用于获取可销售库存数量的方法和装置 |
CN106708975B (zh) * | 2016-12-06 | 2019-10-15 | 上海艾融软件股份有限公司 | 商品库存信息的处理方法及系统 |
CN107463593A (zh) * | 2016-12-13 | 2017-12-12 | 阿里巴巴集团控股有限公司 | 库存扣减方法及其设备 |
CN106934572A (zh) * | 2017-01-20 | 2017-07-07 | 宁波云鸟软件科技有限公司 | 商品库存的分销方法 |
CN108960691B (zh) * | 2017-05-18 | 2022-02-01 | 北京京东振世信息技术有限公司 | 用于服务器系统的确定物品库存的方法和装置 |
CN107833087A (zh) * | 2017-10-13 | 2018-03-23 | 中国银行股份有限公司 | 一种秒杀性产品的在线发售方法及设备 |
CN108629653A (zh) * | 2018-03-29 | 2018-10-09 | 客如云科技(成都)有限责任公司 | 一种低延时库存扣减服务系统及方法 |
CN110796401A (zh) * | 2018-08-03 | 2020-02-14 | 京东数字科技控股有限公司 | 库存扣减方法、系统和服务器 |
CN111177233A (zh) * | 2018-11-09 | 2020-05-19 | 商派软件有限公司 | 一种cas库存控制方法 |
CN109614388B (zh) * | 2018-11-14 | 2023-07-14 | 创新先进技术有限公司 | 一种预算扣减方法和装置 |
CN109544072A (zh) * | 2018-11-21 | 2019-03-29 | 北京京东尚科信息技术有限公司 | 热点库存本地化扣减方法、系统、设备以及介质 |
CN111752957B (zh) * | 2019-03-28 | 2022-11-11 | 苏宁易购集团股份有限公司 | 一种基于缓存化的销售锁定方法及系统 |
CN110148034A (zh) * | 2019-04-24 | 2019-08-20 | 珠海市珠澳跨境工业区好易通科技有限公司 | 一种网购系统架构优装置及方法 |
CN110310060B (zh) * | 2019-05-27 | 2023-10-24 | 创新先进技术有限公司 | 基于分片的库存管理方法以及装置 |
CN110347692B (zh) * | 2019-06-03 | 2023-05-26 | 创新先进技术有限公司 | 基于缓存的库存管理方法以及装置 |
CN110333951B (zh) * | 2019-07-09 | 2023-08-01 | 北京首汽智行科技有限公司 | 一种商品抢购请求分配方法 |
CN112749174B (zh) * | 2019-10-30 | 2024-05-10 | 中国移动通信集团安徽有限公司 | 高并发处理方法、装置、处理设备及计算机存储介质 |
CN111048186A (zh) * | 2019-11-07 | 2020-04-21 | 福建亿能达信息技术股份有限公司 | 一种基于缓存和锁的库存预扣方法及系统 |
CN114386904A (zh) * | 2022-01-05 | 2022-04-22 | 北京京东振世信息技术有限公司 | 一种库存预占方法、装置、服务器及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102346891A (zh) * | 2010-07-30 | 2012-02-08 | 阿里巴巴集团控股有限公司 | 一种网络交易方法及服务器 |
CN103268321A (zh) * | 2013-04-19 | 2013-08-28 | 中国建设银行股份有限公司 | 高并发交易数据处理方法和装置 |
CN103426072A (zh) * | 2013-07-16 | 2013-12-04 | 无限极(中国)有限公司 | 一种高并发竞争库存的订单处理系统及其处理方法 |
CN105096065A (zh) * | 2014-04-16 | 2015-11-25 | 阿里巴巴集团控股有限公司 | 一种库存扣减方法和装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070255611A1 (en) * | 2006-04-26 | 2007-11-01 | Csaba Mezo | Order distributor |
-
2015
- 2015-11-17 CN CN201510789613.2A patent/CN105468690B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102346891A (zh) * | 2010-07-30 | 2012-02-08 | 阿里巴巴集团控股有限公司 | 一种网络交易方法及服务器 |
CN103268321A (zh) * | 2013-04-19 | 2013-08-28 | 中国建设银行股份有限公司 | 高并发交易数据处理方法和装置 |
CN103426072A (zh) * | 2013-07-16 | 2013-12-04 | 无限极(中国)有限公司 | 一种高并发竞争库存的订单处理系统及其处理方法 |
CN105096065A (zh) * | 2014-04-16 | 2015-11-25 | 阿里巴巴集团控股有限公司 | 一种库存扣减方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN105468690A (zh) | 2016-04-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105468690B (zh) | 一种库存数据处理方法和装置 | |
US9152669B2 (en) | System and method for distributed SQL join processing in shared-nothing relational database clusters using stationary tables | |
CN105338026B (zh) | 数据资源的获取方法、装置和系统 | |
CN110110006A (zh) | 数据管理方法及相关产品 | |
CN106170016A (zh) | 一种处理高并发数据请求的方法和系统 | |
CN105450705B (zh) | 业务数据处理方法及设备 | |
CN104980478B (zh) | 内容分发网络中缓存共享方法、设备及系统 | |
CN107015869A (zh) | 交易入账控制方法及系统 | |
CN108881368A (zh) | 高并发业务请求处理方法、装置、计算机设备和存储介质 | |
CN106325998A (zh) | 一种基于云计算的应用部署的方法和装置 | |
CN104395890B (zh) | 使用异构处理器为应用程序提供低潜伏时间的系统和方法 | |
CN105373746B (zh) | 一种分布式数据处理方法和装置 | |
CN110020043B (zh) | 页面爬取方法、装置、存储介质及处理器 | |
EP2761541A1 (en) | High throughput global order promising system | |
CN106202209B (zh) | 面向商品筛选应用的分布式结构化数据存储及查询方法 | |
CN107179940A (zh) | 一种任务执行的方法及装置 | |
Dudin et al. | Queueing System with Heterogeneous Customers as a Model of a Call Center with a Call‐Back for Lost Customers | |
CN110119396A (zh) | 数据管理方法及相关产品 | |
CN109191162A (zh) | 信息处理方法、系统、装置及存储介质 | |
CN106021597A (zh) | 用于账务交易的数据表更新的方法及系统 | |
CN107295052A (zh) | 一种业务处理方法及装置 | |
CN107424001A (zh) | 产品销售额度的控制方法及系统 | |
CN106888238A (zh) | 一种数据同步方法及装置 | |
CN109033248A (zh) | 存储数据记录的方法与装置、查询数据记录的方法和装置 | |
CN107392518A (zh) | 一种超市管理系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |