一种可水平扩展的并发在线交易处理方法

文档序号:8943650阅读:129来源:国知局
一种可水平扩展的并发在线交易处理方法
【技术领域】
[0001]本发明涉及大数据技术领域,具体地说是一种实用性强、可水平扩展的并发在线交易处理方法。
【背景技术】
[0002]当前订单业务应用系统,传统的订单处理方法,是按照订单提交顺序,单个处理订单,这样对库存等共享资源就产生大量锁等待,导致订单并发处理能力降低,并且由于压力主要集中在数据库,应用的水平扩展收到了限制。为了解决这个问题,现提出一种可水平扩展的并发在线交易处理方法,订单前台应用向订单处理应用队列轮流发送消息,订单处理应用收到提交订单的请求后,把订单信息封装为一个消息,放入内存中的订单队列。后台可以实时监控队列,并可以执行多个线程,当线程空闲并且队列存在订单时启动订单批次处理,即把多个订单捆绑成一个订单组,然后把订单组传入在线交易处理方法,在线交易处理方法可以对订单进行组合,处理库存,大大提高了订单处理能力,当订单组处理完成后订单的请求可以从内存中检测到订单处理完成,将结果返回到前台。

【发明内容】

[0003]本发明的技术任务是针对以上不足之处,提供一种实用性强、可水平扩展的并发在线交易处理方法。
[0004]—种可水平扩展的并发在线交易处理方法,其具体实现过程为:
订单前台应用向订单处理应用队列轮流发送消息,订单处理应用收到提交订单的请求后,把订单信息封装为一个消息,放入订单队列;
订单处理应用实时监控队列,当监控线程空闲并且队列存在订单时启动订单批次处理,即把多个订单捆绑成一个订单组,然后把订单组传入批量处理订单操作,批量处理订单操作对订单进行组合处理,预留库存,提高了订单处理的每秒事务处理量TPS。
[0005]订单处理应用有一个或多个处理线程,线程实时监控订单处理队列,当线程空闲时将队列中的所有订单从队列中取出来进行处理。
[0006]所述订单处理应用监控订单排队提交队列的相关状态,根据交易公司、服务器查询订单排队队列,监控当前队列线程运行状态,对需要操作的队列执行重启、启动、停止操作、修改队列相关参数,这里的队列相关参数包括生成队列时间间隔、批次队列数目。
[0007]所述预留库存的具体过程为:按照商品类型对所有订单进行合计,然后对每个商品预留货源,当货源足够时,所有订单此商品一次预留成功,当货源不足时,则按照订单倒序依次将此商品砍单,直至货源满足。
[0008]所述订单处理过程中,几个公司的订单保存请求指向同一个应用,或同一公司的订单保存请求按负载指向两个或两个以上的应用,实现在线交易的水平扩展。
[0009]所有订单保存在订单数据库内,该订单数据库包括交易数据库和业务数据库,交易数据库和业务数据库之间通过异步消息队列RocketMQ进行数据交互和数据同步,订单及流水数据在交易数据库生成后,通过RocketMQ异步消息队列异步写入业务数据库。
[0010]本发明的一种可水平扩展的并发在线交易处理方法,具有以下优点:
该发明的一种可水平扩展的并发在线交易处理方法,可将每秒订单处理个数从5-10个提升到500个左右,大大提升了业务系统能力,在没有增加服务器资源的情况下,可以满足100万用户的在线订单处理业务,实用性强,适用范围广泛,易于推广。
【附图说明】
[0011]附图1为本发明的实现流程图。
[0012]附图2为本发明的在线交易水平扩展示意图。
[0013]附图3为本发明的订单数据库示意图。
【具体实施方式】
[0014]下面结合具体实施例对本发明作进一步说明。
[0015]本发明提供一种可水平扩展的并发在线交易处理方法,本发明通过模拟消息中间件的处理,大量提高了订单的处理速度,其中订单前台应用提交订单,订单后台对订单进行合并后批量处理,并实现在线交易的水平扩展。在线交易处理方法可以对订单进行组合,处理库存,大大提高了订单系统处理能力。
[0016]如附图1所示,该方法的实现过程为:
订单前台应用向订单处理应用队列轮流发送消息,订单处理应用收到提交订单的请求后,把订单信息封装为一个消息,放入订单队列;
订单处理应用实时监控队列,当监控线程空闲并且队列存在订单时启动订单批次处理,即把多个订单捆绑成一个订单组,然后把订单组传入批量处理订单操作,批量处理订单操作对订单进行组合处理,预留库存,提高了订单处理的每秒事务处理量TPS。
[0017]订单处理应用有一个或多个处理线程,线程实时监控订单处理队列,当线程空闲时将队列中的所有订单从队列中取出来进行处理。
[0018]所述订单处理应用监控订单排队提交队列的相关状态,根据交易公司、服务器查询订单排队队列,监控当前队列线程运行状态,对需要操作的队列执行重启、启动、停止操作、修改队列相关参数,这里的队列相关参数包括生成队列时间间隔、批次队列数目。
[0019]所述预留库存的具体过程为:按照商品类型对所有订单进行合计,然后对每个商品预留货源,当货源足够时,所有订单此商品一次预留成功,当货源不足时,则按照订单倒序依次将此商品砍单,直至货源满足。
[0020]所述订单处理过程中,几个公司的订单保存请求指向同一个应用,或同一公司的订单保存请求按负载指向两个或两个以上的应用,实现在线交易的水平扩展。
[0021]所有订单保存在订单数据库内,该订单数据库包括交易数据库和业务数据库,交易数据库和业务数据库之间通过异步消息队列RocketMQ进行数据交互和数据同步,订单及流水数据在交易数据库生成后,通过RocketMQ异步消息队列异步写入业务数据库。
[0022]具体实例:
1:如台异步提不。
[0023]订单前台应用将订单封装成一个消息发送至订单处理队列并同时在前台提示用户“订单正在处理”。
[0024]2:后端组织订单队列。
[0025]订单处理应用有一个或多个处理线程,线程实时监控订单处理队列,当线程空闲时将队列中的所有订单从队列中取出来进行处理。
[0026]3:队列处理。
[0027]a)将队列中的订单取出后,形成一个订单组合,将这个订单组合统一处理。首先按照商品对所有订单进行合计,然后对每个商品预留货源,如果货源足够,所有订单此商品一次预留成功,如果货源不足,则按照订单倒序依次将此商品砍单,直至货源满足。
[0028]b)由于所有订单每个商品只统一处理一次,当货源完全满足时,无论多少订单,一个商品只需要一次预留。随着队列订单的增多,队列处理所占资源并不会跟订单数量成线性关系,资源占用增长要小得多。
[0029]c)因为计算主要在程序中实现而不依赖数据库,数据库压力相对较小,从而实现应用的水平扩展。
[0030]如附图2所示,订单队列和定时调度程序模拟消息中间件处理。单个生产者到队列集群是一对多的关系。生产者向多个队列轮流发送消息。每个生产者都保持有到所有队列的连接。单个消费者到队列是一对多个关系。消费者数量要小于等于队列数量,如果消费者超过队列数量,那么多余的消费者将不能消费消息。订单处理时,可以把几个公司的订单保存请求指向同一个应用,也可以把同一公司的订单保存请求按负载指向两个或两个以上的应用,实现在线交易的水平扩展。
[0031]如附图3所示,交易数据库和业务数据库采用分离的架构,读写分离,异步事务(订单拆库)将商品、客户等基础表进行纵向切割,主要是读的压力,做读写分离;将订单等流水表横向切割,订单等数据根据一定的规则分库建设。订单交易库,基础表和流水表同时做读写分离;订单业务库,按照区域,做读写分离。
[0032]上述【具体实施方式】仅是本发明的具体个案,本发明的专利保护范围包括但不限于上述【具体实施方式】,任何符合本发明的一种可水平扩展的并发在线交易处理方法的权利要求书的且任何所属技术领域的普通技术人员对其所做的适当变化或替换,皆应落入本发明的专利保护范围。
【主权项】
1.一种可水平扩展的并发在线交易处理方法,其特征在于,其具体实现过程为: 订单前台应用向订单处理应用队列轮流发送消息,订单处理应用收到提交订单的请求后,把订单信息封装为一个消息,放入订单队列; 订单处理应用实时监控队列,当监控线程空闲并且队列存在订单时启动订单批次处理,即把多个订单捆绑成一个订单组,然后把订单组传入批量处理订单操作,批量处理订单操作对订单进行组合处理,预留库存,提高了订单处理的每秒事务处理量TPS。2.根据权利要求1所述的一种可水平扩展的并发在线交易处理方法,其特征在于,订单处理应用有一个或多个处理线程,线程实时监控订单处理队列,当线程空闲时将队列中的所有订单从队列中取出来进行处理。3.根据权利要求1所述的一种可水平扩展的并发在线交易处理方法,其特征在于,所述订单处理应用监控订单排队提交队列的相关状态,根据交易公司、服务器查询订单排队队列,监控当前队列线程运行状态,对需要操作的队列执行重启、启动、停止操作、修改队列相关参数,这里的队列相关参数包括生成队列时间间隔、批次队列数目。4.根据权利要求1所述的一种可水平扩展的并发在线交易处理方法,其特征在于,所述预留库存的具体过程为:按照商品类型对所有订单进行合计,然后对每个商品预留货源,当货源足够时,所有订单此商品一次预留成功,当货源不足时,则按照订单倒序依次将此商品砍单,直至货源满足。5.根据权利要求1所述的一种可水平扩展的并发在线交易处理方法,其特征在于,所述订单处理过程中,几个公司的订单保存请求指向同一个应用,或同一公司的订单保存请求按负载指向两个或两个以上的应用,实现在线交易的水平扩展。6.根据权利要求1所述的一种可水平扩展的并发在线交易处理方法,其特征在于,所有订单保存在订单数据库内,该订单数据库包括交易数据库和业务数据库,交易数据库和业务数据库之间通过异步消息队列RocketMQ进行数据交互和数据同步,订单及流水数据在交易数据库生成后,通过RocketMQ异步消息队列异步写入业务数据库。
【专利摘要】本发明公开了一种可水平扩展的并发在线交易处理方法,其具体实现过程为:订单前台应用向订单处理应用队列轮流发送消息,订单处理应用收到提交订单的请求后,把订单信息封装为一个消息,放入订单队列;订单处理应用实时监控队列,当监控线程空闲并且队列存在订单时启动订单批次处理,即把多个订单捆绑成一个订单组,然后把订单组传入批量处理订单操作,批量处理订单操作对订单进行组合处理,预留库存,提高了订单处理的每秒事务处理量TPS。该一种可水平扩展的并发在线交易处理方法与现有技术相比,本发明可以对订单进行组合,处理库存,大大提高了订单处理能力,当订单组处理完成后订单的请求可以从内存中检测到订单处理完成,将结果返回到前台。
【IPC分类】G06Q30/06
【公开号】CN105160570
【申请号】CN201510584407
【发明人】李健, 林清雨, 彭铸
【申请人】浪潮软件股份有限公司
【公开日】2015年12月16日
【申请日】2015年9月15日
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1