CN105160570A - 一种可水平扩展的并发在线交易处理方法 - Google Patents
一种可水平扩展的并发在线交易处理方法 Download PDFInfo
- Publication number
- CN105160570A CN105160570A CN201510584407.8A CN201510584407A CN105160570A CN 105160570 A CN105160570 A CN 105160570A CN 201510584407 A CN201510584407 A CN 201510584407A CN 105160570 A CN105160570 A CN 105160570A
- Authority
- CN
- China
- Prior art keywords
- order
- queue
- processing
- orders
- application
- 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
Abstract
本发明公开了一种可水平扩展的并发在线交易处理方法,其具体实现过程为:订单前台应用向订单处理应用队列轮流发送消息,订单处理应用收到提交订单的请求后,把订单信息封装为一个消息,放入订单队列;订单处理应用实时监控队列,当监控线程空闲并且队列存在订单时启动订单批次处理,即把多个订单捆绑成一个订单组,然后把订单组传入批量处理订单操作,批量处理订单操作对订单进行组合处理,预留库存,提高了订单处理的每秒事务处理量TPS。该一种可水平扩展的并发在线交易处理方法与现有技术相比,本发明可以对订单进行组合,处理库存,大大提高了订单处理能力,当订单组处理完成后订单的请求可以从内存中检测到订单处理完成,将结果返回到前台。
Description
技术领域
本发明涉及大数据技术领域,具体地说是一种实用性强、可水平扩展的并发在线交易处理方法。
背景技术
当前订单业务应用系统,传统的订单处理方法,是按照订单提交顺序,单个处理订单,这样对库存等共享资源就产生大量锁等待,导致订单并发处理能力降低,并且由于压力主要集中在数据库,应用的水平扩展收到了限制。为了解决这个问题,现提出一种可水平扩展的并发在线交易处理方法,订单前台应用向订单处理应用队列轮流发送消息,订单处理应用收到提交订单的请求后,把订单信息封装为一个消息,放入内存中的订单队列。后台可以实时监控队列,并可以执行多个线程,当线程空闲并且队列存在订单时启动订单批次处理,即把多个订单捆绑成一个订单组,然后把订单组传入在线交易处理方法,在线交易处理方法可以对订单进行组合,处理库存,大大提高了订单处理能力,当订单组处理完成后订单的请求可以从内存中检测到订单处理完成,将结果返回到前台。
发明内容
本发明的技术任务是针对以上不足之处,提供一种实用性强、可水平扩展的并发在线交易处理方法。
一种可水平扩展的并发在线交易处理方法,其具体实现过程为:
订单前台应用向订单处理应用队列轮流发送消息,订单处理应用收到提交订单的请求后,把订单信息封装为一个消息,放入订单队列;
订单处理应用实时监控队列,当监控线程空闲并且队列存在订单时启动订单批次处理,即把多个订单捆绑成一个订单组,然后把订单组传入批量处理订单操作,批量处理订单操作对订单进行组合处理,预留库存,提高了订单处理的每秒事务处理量TPS。
订单处理应用有一个或多个处理线程,线程实时监控订单处理队列,当线程空闲时将队列中的所有订单从队列中取出来进行处理。
所述订单处理应用监控订单排队提交队列的相关状态,根据交易公司、服务器查询订单排队队列,监控当前队列线程运行状态,对需要操作的队列执行重启、启动、停止操作、修改队列相关参数,这里的队列相关参数包括生成队列时间间隔、批次队列数目。
所述预留库存的具体过程为:按照商品类型对所有订单进行合计,然后对每个商品预留货源,当货源足够时,所有订单此商品一次预留成功,当货源不足时,则按照订单倒序依次将此商品砍单,直至货源满足。
所述订单处理过程中,几个公司的订单保存请求指向同一个应用,或同一公司的订单保存请求按负载指向两个或两个以上的应用,实现在线交易的水平扩展。
所有订单保存在订单数据库内,该订单数据库包括交易数据库和业务数据库,交易数据库和业务数据库之间通过异步消息队列RocketMQ进行数据交互和数据同步,订单及流水数据在交易数据库生成后,通过RocketMQ异步消息队列异步写入业务数据库。
本发明的一种可水平扩展的并发在线交易处理方法,具有以下优点:
该发明的一种可水平扩展的并发在线交易处理方法,可将每秒订单处理个数从5-10个提升到500个左右,大大提升了业务系统能力,在没有增加服务器资源的情况下,可以满足100万用户的在线订单处理业务,实用性强,适用范围广泛,易于推广。
附图说明
附图1为本发明的实现流程图。
附图2为本发明的在线交易水平扩展示意图。
附图3为本发明的订单数据库示意图。
具体实施方式
下面结合具体实施例对本发明作进一步说明。
本发明提供一种可水平扩展的并发在线交易处理方法,本发明通过模拟消息中间件的处理,大量提高了订单的处理速度,其中订单前台应用提交订单,订单后台对订单进行合并后批量处理,并实现在线交易的水平扩展。在线交易处理方法可以对订单进行组合,处理库存,大大提高了订单系统处理能力。
如附图1所示,该方法的实现过程为:
订单前台应用向订单处理应用队列轮流发送消息,订单处理应用收到提交订单的请求后,把订单信息封装为一个消息,放入订单队列;
订单处理应用实时监控队列,当监控线程空闲并且队列存在订单时启动订单批次处理,即把多个订单捆绑成一个订单组,然后把订单组传入批量处理订单操作,批量处理订单操作对订单进行组合处理,预留库存,提高了订单处理的每秒事务处理量TPS。
订单处理应用有一个或多个处理线程,线程实时监控订单处理队列,当线程空闲时将队列中的所有订单从队列中取出来进行处理。
所述订单处理应用监控订单排队提交队列的相关状态,根据交易公司、服务器查询订单排队队列,监控当前队列线程运行状态,对需要操作的队列执行重启、启动、停止操作、修改队列相关参数,这里的队列相关参数包括生成队列时间间隔、批次队列数目。
所述预留库存的具体过程为:按照商品类型对所有订单进行合计,然后对每个商品预留货源,当货源足够时,所有订单此商品一次预留成功,当货源不足时,则按照订单倒序依次将此商品砍单,直至货源满足。
所述订单处理过程中,几个公司的订单保存请求指向同一个应用,或同一公司的订单保存请求按负载指向两个或两个以上的应用,实现在线交易的水平扩展。
所有订单保存在订单数据库内,该订单数据库包括交易数据库和业务数据库,交易数据库和业务数据库之间通过异步消息队列RocketMQ进行数据交互和数据同步,订单及流水数据在交易数据库生成后,通过RocketMQ异步消息队列异步写入业务数据库。
具体实例:
1:前台异步提示。
订单前台应用将订单封装成一个消息发送至订单处理队列并同时在前台提示用户“订单正在处理”。
2:后端组织订单队列。
订单处理应用有一个或多个处理线程,线程实时监控订单处理队列,当线程空闲时将队列中的所有订单从队列中取出来进行处理。
3:队列处理。
a)将队列中的订单取出后,形成一个订单组合,将这个订单组合统一处理。首先按照商品对所有订单进行合计,然后对每个商品预留货源,如果货源足够,所有订单此商品一次预留成功,如果货源不足,则按照订单倒序依次将此商品砍单,直至货源满足。
b)由于所有订单每个商品只统一处理一次,当货源完全满足时,无论多少订单,一个商品只需要一次预留。随着队列订单的增多,队列处理所占资源并不会跟订单数量成线性关系,资源占用增长要小得多。
c)因为计算主要在程序中实现而不依赖数据库,数据库压力相对较小,从而实现应用的水平扩展。
如附图2所示,订单队列和定时调度程序模拟消息中间件处理。单个生产者到队列集群是一对多的关系。生产者向多个队列轮流发送消息。每个生产者都保持有到所有队列的连接。单个消费者到队列是一对多个关系。消费者数量要小于等于队列数量,如果消费者超过队列数量,那么多余的消费者将不能消费消息。订单处理时,可以把几个公司的订单保存请求指向同一个应用,也可以把同一公司的订单保存请求按负载指向两个或两个以上的应用,实现在线交易的水平扩展。
如附图3所示,交易数据库和业务数据库采用分离的架构,读写分离,异步事务(订单拆库)将商品、客户等基础表进行纵向切割,主要是读的压力,做读写分离;将订单等流水表横向切割,订单等数据根据一定的规则分库建设。订单交易库,基础表和流水表同时做读写分离;订单业务库,按照区域,做读写分离。
上述具体实施方式仅是本发明的具体个案,本发明的专利保护范围包括但不限于上述具体实施方式,任何符合本发明的一种可水平扩展的并发在线交易处理方法的权利要求书的且任何所属技术领域的普通技术人员对其所做的适当变化或替换,皆应落入本发明的专利保护范围。
Claims (6)
1.一种可水平扩展的并发在线交易处理方法,其特征在于,其具体实现过程为:
订单前台应用向订单处理应用队列轮流发送消息,订单处理应用收到提交订单的请求后,把订单信息封装为一个消息,放入订单队列;
订单处理应用实时监控队列,当监控线程空闲并且队列存在订单时启动订单批次处理,即把多个订单捆绑成一个订单组,然后把订单组传入批量处理订单操作,批量处理订单操作对订单进行组合处理,预留库存,提高了订单处理的每秒事务处理量TPS。
2.根据权利要求1所述的一种可水平扩展的并发在线交易处理方法,其特征在于,订单处理应用有一个或多个处理线程,线程实时监控订单处理队列,当线程空闲时将队列中的所有订单从队列中取出来进行处理。
3.根据权利要求1所述的一种可水平扩展的并发在线交易处理方法,其特征在于,所述订单处理应用监控订单排队提交队列的相关状态,根据交易公司、服务器查询订单排队队列,监控当前队列线程运行状态,对需要操作的队列执行重启、启动、停止操作、修改队列相关参数,这里的队列相关参数包括生成队列时间间隔、批次队列数目。
4.根据权利要求1所述的一种可水平扩展的并发在线交易处理方法,其特征在于,所述预留库存的具体过程为:按照商品类型对所有订单进行合计,然后对每个商品预留货源,当货源足够时,所有订单此商品一次预留成功,当货源不足时,则按照订单倒序依次将此商品砍单,直至货源满足。
5.根据权利要求1所述的一种可水平扩展的并发在线交易处理方法,其特征在于,所述订单处理过程中,几个公司的订单保存请求指向同一个应用,或同一公司的订单保存请求按负载指向两个或两个以上的应用,实现在线交易的水平扩展。
6.根据权利要求1所述的一种可水平扩展的并发在线交易处理方法,其特征在于,所有订单保存在订单数据库内,该订单数据库包括交易数据库和业务数据库,交易数据库和业务数据库之间通过异步消息队列RocketMQ进行数据交互和数据同步,订单及流水数据在交易数据库生成后,通过RocketMQ异步消息队列异步写入业务数据库。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510584407.8A CN105160570A (zh) | 2015-09-15 | 2015-09-15 | 一种可水平扩展的并发在线交易处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510584407.8A CN105160570A (zh) | 2015-09-15 | 2015-09-15 | 一种可水平扩展的并发在线交易处理方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105160570A true CN105160570A (zh) | 2015-12-16 |
Family
ID=54801419
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510584407.8A Pending CN105160570A (zh) | 2015-09-15 | 2015-09-15 | 一种可水平扩展的并发在线交易处理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105160570A (zh) |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106952136A (zh) * | 2017-03-14 | 2017-07-14 | 张亚光 | 基于大宗商品交易平台的订单生成方法及交易平台系统 |
CN107402939A (zh) * | 2016-05-20 | 2017-11-28 | 平安科技(深圳)有限公司 | 保单处理方法和装置 |
CN107679931A (zh) * | 2017-08-17 | 2018-02-09 | 平安科技(深圳)有限公司 | 订单异步处理的方法、装置、存储介质及终端 |
CN108009655A (zh) * | 2017-08-16 | 2018-05-08 | 北京嘀嘀无限科技发展有限公司 | 订单处理方法、装置、服务器和计算机可读存储介质 |
CN108038767A (zh) * | 2017-12-26 | 2018-05-15 | 广州供电局有限公司 | 基于消息队列的电商订单异步分发系统及方法 |
CN108256843A (zh) * | 2018-01-12 | 2018-07-06 | 上海瀚银信息技术有限公司 | 一种代付交易方法及代付交易系统 |
CN108416657A (zh) * | 2018-03-15 | 2018-08-17 | 中融科创信息技术河北有限公司 | 一种基于咨询服务的订单生成方法及设备 |
CN109191233A (zh) * | 2018-07-31 | 2019-01-11 | 上海哔哩哔哩科技有限公司 | 一种秒杀下单请求处理方法、装置和存储介质 |
CN109949129A (zh) * | 2019-03-12 | 2019-06-28 | 北京思特奇信息技术股份有限公司 | 一种高并发的订单处理系统及方法 |
CN110246006A (zh) * | 2019-05-26 | 2019-09-17 | 必成汇(成都)科技有限公司 | 分布式环境动态分配撮合任务量的方法 |
CN110473097A (zh) * | 2019-08-06 | 2019-11-19 | 深圳证券交易所 | 交易监控方法、终端和计算机可读存储介质 |
CN111314476A (zh) * | 2020-02-24 | 2020-06-19 | 苏宁云计算有限公司 | 企业间异步化的消息传输方法及系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101231722A (zh) * | 2007-01-22 | 2008-07-30 | 阿里巴巴公司 | 一种网络支付方法及系统 |
CN101369330A (zh) * | 2008-10-08 | 2009-02-18 | 金蝶软件(中国)有限公司 | 单据处理方法、装置和系统 |
CN101833712A (zh) * | 2010-05-27 | 2010-09-15 | 湖南科技大学 | 一种支持工作流活动实例成批处理执行的方法 |
CN101968870A (zh) * | 2010-10-20 | 2011-02-09 | 湖南大学 | 小额订单转换系统和方法 |
CN104021481A (zh) * | 2014-07-01 | 2014-09-03 | 浪潮软件股份有限公司 | 一种高效的烟草行业订单批量订单处理方法 |
-
2015
- 2015-09-15 CN CN201510584407.8A patent/CN105160570A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101231722A (zh) * | 2007-01-22 | 2008-07-30 | 阿里巴巴公司 | 一种网络支付方法及系统 |
CN101369330A (zh) * | 2008-10-08 | 2009-02-18 | 金蝶软件(中国)有限公司 | 单据处理方法、装置和系统 |
CN101833712A (zh) * | 2010-05-27 | 2010-09-15 | 湖南科技大学 | 一种支持工作流活动实例成批处理执行的方法 |
CN101968870A (zh) * | 2010-10-20 | 2011-02-09 | 湖南大学 | 小额订单转换系统和方法 |
CN104021481A (zh) * | 2014-07-01 | 2014-09-03 | 浪潮软件股份有限公司 | 一种高效的烟草行业订单批量订单处理方法 |
Non-Patent Citations (2)
Title |
---|
XIAOLIANGXIN: "RocketMQ", 《百度文库》 * |
华竹轩 等: "支持海量数据的分布式数据库架构设计与验证", 《河南科技》 * |
Cited By (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107402939A (zh) * | 2016-05-20 | 2017-11-28 | 平安科技(深圳)有限公司 | 保单处理方法和装置 |
CN106952136A (zh) * | 2017-03-14 | 2017-07-14 | 张亚光 | 基于大宗商品交易平台的订单生成方法及交易平台系统 |
CN108009655A (zh) * | 2017-08-16 | 2018-05-08 | 北京嘀嘀无限科技发展有限公司 | 订单处理方法、装置、服务器和计算机可读存储介质 |
CN107679931A (zh) * | 2017-08-17 | 2018-02-09 | 平安科技(深圳)有限公司 | 订单异步处理的方法、装置、存储介质及终端 |
CN108038767B (zh) * | 2017-12-26 | 2022-02-11 | 广州供电局有限公司 | 基于消息队列的电商订单异步分发系统及方法 |
CN108038767A (zh) * | 2017-12-26 | 2018-05-15 | 广州供电局有限公司 | 基于消息队列的电商订单异步分发系统及方法 |
CN108256843A (zh) * | 2018-01-12 | 2018-07-06 | 上海瀚银信息技术有限公司 | 一种代付交易方法及代付交易系统 |
CN108256843B (zh) * | 2018-01-12 | 2022-06-07 | 上海瀚银信息技术有限公司 | 一种代付交易方法及代付交易系统 |
CN108416657A (zh) * | 2018-03-15 | 2018-08-17 | 中融科创信息技术河北有限公司 | 一种基于咨询服务的订单生成方法及设备 |
CN108416657B (zh) * | 2018-03-15 | 2022-03-22 | 中融科创信息技术河北有限公司 | 一种基于咨询服务的订单生成方法及设备 |
CN109191233A (zh) * | 2018-07-31 | 2019-01-11 | 上海哔哩哔哩科技有限公司 | 一种秒杀下单请求处理方法、装置和存储介质 |
CN109191233B (zh) * | 2018-07-31 | 2022-09-02 | 上海幻电信息科技有限公司 | 一种秒杀下单请求处理方法、装置和存储介质 |
CN109949129A (zh) * | 2019-03-12 | 2019-06-28 | 北京思特奇信息技术股份有限公司 | 一种高并发的订单处理系统及方法 |
CN110246006A (zh) * | 2019-05-26 | 2019-09-17 | 必成汇(成都)科技有限公司 | 分布式环境动态分配撮合任务量的方法 |
CN110473097A (zh) * | 2019-08-06 | 2019-11-19 | 深圳证券交易所 | 交易监控方法、终端和计算机可读存储介质 |
CN110473097B (zh) * | 2019-08-06 | 2023-05-02 | 深圳证券交易所 | 交易监控方法、终端和计算机可读存储介质 |
CN111314476A (zh) * | 2020-02-24 | 2020-06-19 | 苏宁云计算有限公司 | 企业间异步化的消息传输方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105160570A (zh) | 一种可水平扩展的并发在线交易处理方法 | |
TWI694339B (zh) | 一種區塊鏈共識方法、設備及系統 | |
US9916183B2 (en) | Scheduling mapreduce jobs in a cluster of dynamically available servers | |
CN104834558B (zh) | 一种数据处理的方法及系统 | |
EP3073374B1 (en) | Thread creation method, service request processing method and related device | |
CN103412786B (zh) | 一种高性能服务器架构系统及数据处理方法 | |
CN110908788B (zh) | 基于Spark Streaming的数据处理方法、装置、计算机设备及存储介质 | |
US8826284B1 (en) | Scalable task scheduling | |
CN102469033B (zh) | 一种消息订阅系统以及消息发送方法 | |
US8806507B1 (en) | Dynamic provisioning of message groups | |
CN109344172A (zh) | 一种高并发数据处理方法、装置及客户端服务器 | |
US20110265098A1 (en) | Message Passing with Queues and Channels | |
CN107729137B (zh) | 服务器、区块链验签解密的方法及存储介质 | |
CN111078436B (zh) | 数据处理的方法、装置、设备及存储介质 | |
CN105320570B (zh) | 资源管理方法和系统 | |
CN110058940B (zh) | 一种多线程环境下的数据处理方法及装置 | |
CN107038182A (zh) | 分表数据的完备性检查方法及装置 | |
US9104486B2 (en) | Apparatuses, systems, and methods for distributed workload serialization | |
CN101179553A (zh) | 用于并行消息的有效保序传递的方法和装置 | |
CN109670954A (zh) | 基于区块链的交易处理方法 | |
CN110515713A (zh) | 一种任务调度方法、设备和计算机存储介质 | |
CN104461722B (zh) | 一种用于云计算系统的作业调度方法 | |
CN115174090B (zh) | 区块链共识方法、装置、计算机设备及可读存储介质 | |
CN109783242A (zh) | 海外控股估值流程控制方法、装置、计算机设备及存储介质 | |
CN116820795A (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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20151216 |
|
RJ01 | Rejection of invention patent application after publication |