CN106919441A - 一种电子商务平台高并发事件的处理方法及系统 - Google Patents
一种电子商务平台高并发事件的处理方法及系统 Download PDFInfo
- Publication number
- CN106919441A CN106919441A CN201710068605.8A CN201710068605A CN106919441A CN 106919441 A CN106919441 A CN 106919441A CN 201710068605 A CN201710068605 A CN 201710068605A CN 106919441 A CN106919441 A CN 106919441A
- Authority
- CN
- China
- Prior art keywords
- domain object
- event
- burst
- commerce platform
- high concurrent
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/466—Transaction processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5018—Thread allocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/548—Queue
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明公开了一种电子商务平台高并发事件的处理方法及系统,其中方法包括:对用户请求进行分片路由,分片后的请求以任务的形式放入队列中;通过单线程一次从队列中取出一个任务执行;将领域对象存储在本地内存中,由领域对象处理任务执行的业务逻辑;当发生事件时,更新领域对象。与现有技术相比,本发明的有益效果包括:单线程一次执行一个任务,可以避免并发问题,但处理能力会不如多线程并发处理高,让领域对象常驻本地内存中,业务逻辑处理交给领域对象,由领域对象维护最新状态,能有效的减少IO操作,提升处理性能,提供高性能、高并发、高可用的服务支持,彻底解决限时售卖电商平台秒杀场景的资源争夺问题。
Description
技术领域
本发明涉及计算机技术领域,尤其是涉及一种电子商务平台高并发事件的处理方法及系统。
背景技术
限时特卖是时下最为常见的一种电子商务模式,即是以互联网为媒介的B2C电子零售交易活动,以限时特卖的形式,定期定时推出大批量商品参与限时抢购。这一模式的特征决定了售卖过程中会存在大量的秒杀场景,如何解决秒杀场景中资源争夺和防超卖是网站架构需要考虑的首要问题。
现有限时售卖平台在高并发下采用的商品防超卖技术方案主要有:(1)基于缓存,即商品库存保存在缓存中(如Redis,Memcache),利用缓存的“单线程”模型和轻量级锁等特性来控制高并发下的资源争夺。(2)基于乐观锁,即认为数据一般情况下不会造成冲突,所以在数据进行提交更新的时候,才会正式对数据的冲突与否进行检测,如果发现冲突了,则让返回用户错误的信息,让用户决定如何去做。具体做法有两种:使用数据版本(Version)记录机制实现和使用时间戳实现。两种实现方式原理一样。(3)基于数据库队列,即在数据库内部增加队列机制,这种方式需要修改数据库底层的实现,技术实力要求高,一般很少这么去做。
现有技术方案缺陷:一是引入缓存可以解决高并发下的性能问题,但超卖的根结在于减库存操作是一个事务操作,需要先select,然后insert,最后update-1。最后这个-1操作是不能出现负数的,但是当多用户在有库存的情况下并发操作,出现负数这是无法避免的,所以最后还要用锁来保证事务,这也就牺牲了并发访问性。二是利用乐观锁,虽然能解决超卖问题,但也会因为乐观锁的原因带来少卖的问题。
分片路由:一种路由算法,先根据用户的特性对请求分片,然后为各片选择一条路由路径。
发明内容
本发明的目的在于克服上述技术不足,提出一种电子商务平台高并发事件的处理方法及系统,解决现有技术中高并发的秒杀场景中资源争夺的技术问题。
为达到上述技术目的,本发明的技术方案提供一种电子商务平台高并发事件的处理方法,其中,包括:
S1、对用户请求进行分片路由,分片后的请求以任务的形式放入队列中;
S2、通过单线程一次从队列中取出一个任务执行;
S3、将领域对象存储在本地内存中,由领域对象处理任务执行的业务逻辑;
S4、当发生事件时,更新领域对象。
本发明的技术方案还提供一种电子商务平台高并发事件的处理系统,其中,包括:
分片路由模块:对用户请求进行分片路由,分片后的请求以任务的形式放入队列中;
单线程执行模块:通过单线程一次从队列中取出一个任务执行;
领域对象存储与处理模块:将领域对象存储在本地内存中,由领域对象处理任务执行的业务逻辑;
领域对象更新模块:当发生事件时,更新领域对象。
与现有技术相比,本发明的有益效果包括:单线程一次执行一个任务,可以避免并发问题,但处理能力会不如多线程并发处理高,让领域对象常驻本地内存中,业务逻辑处理交给领域对象,由领域对象维护最新状态,能有效的减少IO操作,提升处理性能,提供高性能、高并发、高可用的服务支持,彻底解决限时售卖电商平台秒杀场景的资源争夺问题。
附图说明
图1是本发明提供的一种电子商务平台高并发事件的处理方法流程图;
图2是本发明提供的一种电子商务平台高并发事件的处理系统结构框图。
附图中:1、电子商务平台高并发事件的处理系统,11、分片路由模块,12、单线程执行模块,13、领域对象存储与处理模块,14、领域对象更新模块。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明提供了一种电子商务平台高并发事件的处理方法,其中,包括:
S1、对用户请求进行分片路由,分片后的请求以任务的形式放入队列中;
S2、通过单线程一次从队列中取出一个任务执行;
S3、将领域对象存储在本地内存中,由领域对象处理任务执行的业务逻辑;
S4、当发生事件时,更新领域对象。
本发明所述的电子商务平台高并发事件的处理方法,步骤S1中:
分片后的请求会被路由到具体的应用实例上,应用实例自身维护着一个本地队列。
本发明所述的电子商务平台高并发事件的处理方法,步骤S2中:
通过单线程一次从队列中的取出一个任务执行,避免了并发问题。应用实例内部队列是一个有序队列,以单线程一次只取一个的方式保证任务有序的被执行,从而避免了资源争夺带来的并发问题。
本发明所述的电子商务平台高并发事件的处理方法,步骤S3中:
单线程一次执行一个任务,可以避免并发问题,但处理能力会不如多线程并发处理高;
提升处理能力的关键是减少IO操作,为了完成一次业务处理(比如扣除库存),可能需要多次与数据库进行交互,数据库的连接和释放都是IO开销,即便是事先将数据加载到在像Redis,Memcache等分布式缓存中,也会带来网络IO的开销,假设业务逻辑再复杂点,IO开销将会更大;
业务逻辑处理可以交给领域对象(domain object),由领域对象维护着最新状态(比如库存数),同时让领域对象常驻本地内存中,能有效的减少IO操作;
由于领域对象是存储在本地内存中,可借助于事件溯源机制来保障它的可用性,当用户请求到达时,领域对象所在的机器可能处于不可用(出现故障或网络断开)的状态,一旦机器不可用,领域对象将会被从内存中清除,这时,为了保证用户请求能得到正常的响应,路由子程序会重新计算路由路径,将请求路由到新的机器上。新机器上是没有领域对象的相关信息的,需要通过事件溯源机制,将先前保存的事件重新回放一遍,在新机器上恢复领域对象的状态,再接着由恢复后的领域对象来完成业务处理。从而,保证了系统的可用性。事件回放相比从数据库中读取数据效率要高,整个回放过程非常短,用户几乎感觉不到。
本发明所述的电子商务平台高并发事件的处理方法,步骤S4中:
当发生事件时,先将事件存储,再通知领域对象做出状态变更。
例如库存增减这样的操作,在系统内被视为一个事件,会先将事件存储起来,再通知领域对象做出状态变更(比如扣除库存、库存的校验在领域对象内完成,保证了原子性)。
本发明还提供电子商务平台高并发事件的处理系统1,其中,包括:
分片路由模块11:对用户请求进行分片路由,分片后的请求以任务的形式放入队列中;
单线程执行模块12:通过单线程一次从队列中取出一个任务执行;
领域对象存储与处理模块13:将领域对象存储在本地内存中,由领域对象处理任务执行的业务逻辑;
领域对象更新模块14:当发生事件时,更新领域对象。
本发明所述的电子商务平台高并发事件的处理系统1,分片路由模块11中:
分片后的请求会被路由到具体的应用实例上,应用实例自身维护着一个本地队列。
本发明所述的电子商务平台高并发事件的处理系统1,领域对象存储与处理模块13中:
当领域对象存储在的终端处于不可用状态时,借助于事件溯源机制来保障领域对象的可用性。
本发明所述的电子商务平台高并发事件的处理系统1,领域对象更新模块14中:
当发生事件时,先将事件存储,再通知领域对象做出状态变更。
与现有技术相比,本发明的有益效果包括:单线程一次执行一个任务,可以避免并发问题,但处理能力会不如多线程并发处理高,让领域对象常驻本地内存中,业务逻辑处理交给领域对象,由领域对象维护最新状态,能有效的减少IO操作,提升处理性能,提供高性能、高并发、高可用的服务支持,彻底解决限时售卖电商平台秒杀场景的资源争夺问题。
以上所述本发明的具体实施方式,并不构成对本发明保护范围的限定。任何根据本发明的技术构思所做出的各种其他相应的改变与变形,均应包含在本发明权利要求的保护范围内。
Claims (8)
1.一种电子商务平台高并发事件的处理方法,其特征在于,包括:
S1、对用户请求进行分片路由,分片后的请求以任务的形式放入队列中;
S2、通过单线程一次从队列中取出一个任务执行;
S3、将领域对象存储在本地内存中,由领域对象处理任务执行的业务逻辑;
S4、当发生事件时,更新领域对象。
2.如权利要求1所述的电子商务平台高并发事件的处理方法,其特征在于,步骤S1中:
分片后的请求会被路由到具体的应用实例上,应用实例自身维护着一个本地队列。
3.如权利要求1所述的电子商务平台高并发事件的处理方法,其特征在于,步骤S3中:
当领域对象存储在的终端处于不可用状态时,借助于事件溯源机制来保障领域对象的可用性。
4.如权利要求1所述的电子商务平台高并发事件的处理方法,其特征在于,步骤S4中:
当发生事件时,先将事件存储,再通知领域对象做出状态变更。
5.一种电子商务平台高并发事件的处理系统,其特征在于,包括:
分片路由模块:对用户请求进行分片路由,分片后的请求以任务的形式放入队列中;
单线程执行模块:通过单线程一次从队列中取出一个任务执行;
领域对象存储与处理模块:将领域对象存储在本地内存中,由领域对象处理任务执行的业务逻辑;
领域对象更新模块:当发生事件时,更新领域对象。
6.如权利要求5所述的电子商务平台高并发事件的处理系统,其特征在于,分片路由模块中:
分片后的请求会被路由到具体的应用实例上,应用实例自身维护着一个本地队列。
7.如权利要求5所述的电子商务平台高并发事件的处理系统,其特征在于,领域对象存储与处理模块中:
当领域对象存储在的终端处于不可用状态时,借助于事件溯源机制来保障领域对象的可用性。
8.如权利要求5所述的电子商务平台高并发事件的处理系统,其特征在于,领域对象更新模块中:
当发生事件时,先将事件存储,再通知领域对象做出状态变更。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710068605.8A CN106919441A (zh) | 2017-02-08 | 2017-02-08 | 一种电子商务平台高并发事件的处理方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710068605.8A CN106919441A (zh) | 2017-02-08 | 2017-02-08 | 一种电子商务平台高并发事件的处理方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106919441A true CN106919441A (zh) | 2017-07-04 |
Family
ID=59454081
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710068605.8A Pending CN106919441A (zh) | 2017-02-08 | 2017-02-08 | 一种电子商务平台高并发事件的处理方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106919441A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109542632A (zh) * | 2018-11-30 | 2019-03-29 | 郑州云海信息技术有限公司 | 一种处理访问请求的方法及装置 |
CN109949144A (zh) * | 2019-03-22 | 2019-06-28 | 深圳前海微众银行股份有限公司 | 入账处理方法、装置、设备及计算机可读存储介质 |
CN111507729A (zh) * | 2020-04-29 | 2020-08-07 | 广东所能网络有限公司 | 一种基于移动互联网的电子商务风险控制系统及方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103348328A (zh) * | 2010-10-04 | 2013-10-09 | 阿沃森特亨茨维尔公司 | 用于实时地监视并管理数据中心资源的系统和方法 |
CN103825835A (zh) * | 2013-11-29 | 2014-05-28 | 中邮科通信技术股份有限公司 | 一种互联网高并发秒杀系统 |
CN104636957A (zh) * | 2015-02-04 | 2015-05-20 | 上海瀚之友信息技术服务有限公司 | 一种处理高并发数据请求的系统和方法 |
CN105426326A (zh) * | 2015-11-05 | 2016-03-23 | 上海斐讯数据通信技术有限公司 | 一种实现高并发的队列存储方法及系统 |
CN106204232A (zh) * | 2016-07-18 | 2016-12-07 | 苏州华车网络科技有限公司 | 一种处理高并发交互数据请求的系统和方法 |
-
2017
- 2017-02-08 CN CN201710068605.8A patent/CN106919441A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103348328A (zh) * | 2010-10-04 | 2013-10-09 | 阿沃森特亨茨维尔公司 | 用于实时地监视并管理数据中心资源的系统和方法 |
CN103825835A (zh) * | 2013-11-29 | 2014-05-28 | 中邮科通信技术股份有限公司 | 一种互联网高并发秒杀系统 |
CN104636957A (zh) * | 2015-02-04 | 2015-05-20 | 上海瀚之友信息技术服务有限公司 | 一种处理高并发数据请求的系统和方法 |
CN105426326A (zh) * | 2015-11-05 | 2016-03-23 | 上海斐讯数据通信技术有限公司 | 一种实现高并发的队列存储方法及系统 |
CN106204232A (zh) * | 2016-07-18 | 2016-12-07 | 苏州华车网络科技有限公司 | 一种处理高并发交互数据请求的系统和方法 |
Non-Patent Citations (1)
Title |
---|
ALEX HOMER: "《Cloud Design Patterns》", 31 December 2014, MICROSOFT PATTERNS & PRACTICES * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109542632A (zh) * | 2018-11-30 | 2019-03-29 | 郑州云海信息技术有限公司 | 一种处理访问请求的方法及装置 |
CN109949144A (zh) * | 2019-03-22 | 2019-06-28 | 深圳前海微众银行股份有限公司 | 入账处理方法、装置、设备及计算机可读存储介质 |
CN111507729A (zh) * | 2020-04-29 | 2020-08-07 | 广东所能网络有限公司 | 一种基于移动互联网的电子商务风险控制系统及方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103390041B (zh) | 一种基于中间件提供数据服务的方法和系统 | |
CN103886079B (zh) | 一种数据处理方法和系统 | |
JP5006348B2 (ja) | 応答出力キャッシュに対するマルチキャッシュ協調 | |
CN111752957B (zh) | 一种基于缓存化的销售锁定方法及系统 | |
CN104219235B (zh) | 一种分布式交易请求方法及装置 | |
CN105096065A (zh) | 一种库存扣减方法和装置 | |
CN105468690A (zh) | 一种库存数据处理方法和装置 | |
CN106919441A (zh) | 一种电子商务平台高并发事件的处理方法及系统 | |
Jin et al. | A high performance concurrency protocol for smart contracts of permissioned blockchain | |
US9171252B2 (en) | Synchronization for context-aware complex event processing | |
CN106844014A (zh) | 分布式事务防悬挂的实现方法和装置 | |
CN104065636A (zh) | 数据处理方法和系统 | |
CN103647811B (zh) | 一种实现应用访问后台服务的方法和装置 | |
CN109634974A (zh) | 一种数据处理方法、系统及相关组件 | |
CN106462386B (zh) | 排序分布式输入数据的排序方法和处理系统 | |
Padhye et al. | Scalable transaction management with snapshot isolation for NoSQL data storage systems | |
CN110413428A (zh) | 对账数据的处理方法、电子设备及存储介质 | |
CN104252386B (zh) | 数据更新的加锁方法和设备 | |
WO2023197864A1 (zh) | 一种调用拓扑图生成方法及装置 | |
WO2016101759A1 (zh) | 一种数据路由方法、数据管理装置和分布式存储系统 | |
US8108867B2 (en) | Preserving hardware thread cache affinity via procrastination | |
CN112035229A (zh) | 一种计算图处理方法、装置及存储介质 | |
CN104008100B (zh) | 集群环境并发处理方法 | |
CN110297822A (zh) | 面向区块链的密钥管理方法、装置、设备及存储介质 | |
US8996773B2 (en) | Computer apparatus and method for distributing interrupt tasks thereof |
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 |
Application publication date: 20170704 |
|
RJ01 | Rejection of invention patent application after publication |