CN112991022A - 分布式订单系统数据利用mq实现最终一致性的方法及系统 - Google Patents

分布式订单系统数据利用mq实现最终一致性的方法及系统 Download PDF

Info

Publication number
CN112991022A
CN112991022A CN202110427426.5A CN202110427426A CN112991022A CN 112991022 A CN112991022 A CN 112991022A CN 202110427426 A CN202110427426 A CN 202110427426A CN 112991022 A CN112991022 A CN 112991022A
Authority
CN
China
Prior art keywords
order
user
message
commodity
module
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
Application number
CN202110427426.5A
Other languages
English (en)
Inventor
刘德建
叶伟
陈宏展
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujian Tianqing Online Interactive Technology Co Ltd
Original Assignee
Fujian Tianqing Online Interactive Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Fujian Tianqing Online Interactive Technology Co Ltd filed Critical Fujian Tianqing Online Interactive Technology Co Ltd
Priority to CN202110427426.5A priority Critical patent/CN112991022A/zh
Publication of CN112991022A publication Critical patent/CN112991022A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION 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/00Commerce
    • G06Q30/06Buying, selling or leasing transactions
    • G06Q30/0601Electronic shopping [e-shopping]
    • G06Q30/0633Lists, e.g. purchase orders, compilation or processing
    • G06Q30/0635Processing of requisition or of purchase orders
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Finance (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Accounting & Taxation (AREA)
  • General Engineering & Computer Science (AREA)
  • Development Economics (AREA)
  • Economics (AREA)
  • Marketing (AREA)
  • Strategic Management (AREA)
  • General Business, Economics & Management (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本发明提供了分布式订单系统数据利用MQ实现最终一致性的方法,所述方法包括以下步骤:步骤S1、用户下单访问api网关,回复下单成功信息给用户,并生成订单号发送给MQ;步骤S2、库存服务收到MQ的消息后,扣减库存,成功后,生成库存扣减成功的消息给MQ;步骤S3、订单服务收到MQ的消息后,创建订单,生成订单生成成功的消息至MQ中;步骤S4、积分服务收到MQ的消息后,更新用户积分数据,完成订单流程;本发明能够利用MQ发布订阅的功能来进行分步骤的通知,以此来实现订单的流程最终完成,达成最终一致性。

Description

分布式订单系统数据利用MQ实现最终一致性的方法及系统
技术领域
本发明涉及订单支付技术领域,特别是分布式订单系统数据利用MQ实现最终一致性的方法及系统。
背景技术
在订单系统中,用户从选购商品到成功付款,系统需要跨多个服务去更新数据库数据,包含订单服务、商品库存服务、用户积分服务。由于服务之间是独立部署的,无法利用mysql的事务来保证流程的原子性。如果是秒杀系统我们要严格保证商品库存以防超卖,使用分布式事务中间件来实现系统的强一致性,会降低系统的吞吐量。但大部分购买场景都是商品数据量充足的普通商品,所以我们只要保证每个服务及时出现操作数据库失败,只要能最终完成订单流程即可,满足最终一致性,又不降低系统的吞吐量。
发明内容
为克服上述问题,本发明的目的是提供一种能够利用MQ发布订阅的功能来进行分步骤的通知,以此来实现订单的流程最终完成,达成最终一致性的分布式订单系统数据利用MQ实现最终一致性的方法。
本发明采用以下方案实现:分布式订单系统数据利用MQ实现最终一致性的方法,所述方法包括以下步骤:
步骤S1、用户下单访问api网关,回复下单成功信息给用户,并生成订单号发送给MQ;
步骤S2、库存服务收到MQ的消息后,扣减库存,成功后,生成库存扣减成功的消息给MQ;
步骤S3、订单服务收到MQ的消息后,创建订单,生成订单生成成功的消息至MQ中;
步骤S4、积分服务收到MQ的消息后,更新用户积分数据,完成订单流程。
进一步的,所述步骤S1进一步具体为:用户下单访问api网关,网关作为系统的入口,负责检测服务是否均可用,是,则生成订单号,否,则提示用户系统繁忙,请稍后再试。
进一步的,所述步骤S2进一步具体为:库存服务收到MQ的消息后,获得订单号、用户的商品ID和购买数量信息,读取商品,扣减库存,检测库存服务更新是否成功,是,则应答MQ消息已消费完成,并发送订单号和商品ID至MQ,否,则不应答,等待重试。
进一步的,所述步骤S3进一步具体为:订单服务收到MQ的消息后,获得订单号和用户的商品ID,根据订单号生成订单数据,判断数据库新增是否成功,是,则应答MQ消息已消费完成,并发送订单号和商品ID至MQ中,否,则不应答,等待重试。
进一步的,所述步骤S4进一步具体为:积分服务收到MQ的消息后,获得订单号和用户的商品ID,读取商品获得商品的积分数据,更新用户积分,判断数据库中积分更新是否成功,是,则应答MQ消息已消费完成,订单流程结束,否,则不应答,等待重试。
进一步的,所述步骤S4后还包括当步骤S2-步骤S4中的失败重试出现次数大于5次时,则视为订单异常,将订单号和用户的商品ID存入异常库,进行排查。
本发明还提供了分布式订单系统数据利用MQ实现最终一致性的系统,包括访问模块、库存模块、订单模块和积分模块;
所述访问模块,即用户下单访问api网关,回复下单成功信息给用户,并生成订单号发送给MQ;
所述库存模块,即库存服务收到MQ的消息后,扣减库存,成功后,生成库存扣减成功的消息给MQ;
所述订单模块,即订单服务收到MQ的消息后,创建订单,生成订单生成成功的消息至MQ中;
所述积分模块,即积分服务收到MQ的消息后,更新用户积分数据,完成订单流程。
进一步的,所述访问模块进一步具体为:用户下单访问api网关,网关作为系统的入口,负责检测服务是否均可用,是,则生成订单号,否,则提示用户系统繁忙,请稍后再试。
进一步的,所述库存模块进一步具体为:库存服务收到MQ的消息后,获得订单号、用户的商品ID和购买数量信息,读取商品,扣减库存,检测库存服务更新是否成功,是,则应答MQ消息已消费完成,并发送订单号和商品ID至MQ,否,则不应答,等待重试。
进一步的,所述订单模块进一步具体为:订单服务收到MQ的消息后,获得订单号和用户的商品ID,根据订单号生成订单数据,判断数据库新增是否成功,是,则应答MQ消息已消费完成,并发送订单号和商品ID至MQ中,否,则不应答,等待重试。
进一步的,所述积分模块进一步具体为:积分服务收到MQ的消息后,获得订单号和用户的商品ID,读取商品获得商品的积分数据,更新用户积分,判断数据库中积分更新是否成功,是,则应答MQ消息已消费完成,订单流程结束,否,则不应答,等待重试。
进一步的,还包括异常模块,所述异常模块,即当库存模块、订单模块和积分模块中的失败重试出现次数大于5次时,则视为订单异常,将订单号和用户的商品ID存入异常库,进行排查。
本发明的有益效果在于:本发明利用MQ发布订阅的功能来进行分步骤的通知,以此来实现订单的流程最终完成,达成最终一致性,有效的对系统进行解耦,在不降低系统吞吐量的情况下,满足订单系统数据的最终一致性。
附图说明
图1是本发明的方法流程示意图。
图2是本发明的系统原理框图。
具体实施方式
下面结合附图对本发明做进一步说明。
请参阅图1所示,本发明的分布式订单系统数据利用MQ实现最终一致性的方法,所述方法包括以下步骤:
步骤S1、用户下单访问api网关,回复下单成功信息给用户,并生成订单号发送给MQ;
步骤S2、库存服务收到MQ的消息后,扣减库存,成功后,生成库存扣减成功的消息给MQ;
步骤S3、订单服务收到MQ的消息后,创建订单,生成订单生成成功的消息至MQ中;
步骤S4、积分服务收到MQ的消息后,更新用户积分数据,完成订单流程。
下面结合一具体实施例对本发明作进一步说明:
步骤1:访问api网关
用户下单访问api网关,网关作为系统的入口,负责检测服务是否均可用,如存在不可用情况返回用户系统繁忙,请稍后再试。如果系统正常,则生成一个订单号,发送订单号、商品ID、购买数量至队列名为mq_stock的MQ。
步骤2:库存服务收到mq_stock的消息
库存服务收到mq_stock的消息后,获得订单号、商品ID、购买数量3个信息,读取商品,扣减库存,如果更新失败则不应答,等待重试。如果更新库存数据库成功,则应答mq_stock消息已消费完成,并且发送订单号、商品ID至队列名为mq_order的MQ。
步骤3:订单服务收到mq_order的消息
订单服务收到mq_order的消息后,获得订单号和商品ID,根据订单号生成订单数据,如果数据库新增失败则不应答,等待重试。如果新增数据库成功,则应答mq_order消息已消费完成,并且发送订单号、商品ID至队列名为mq_point的MQ。
步骤4:积分服务收到mq_point的消息
积分服务收到mq_point的消息后,获得订单号和商品ID,读取商品获得商品积分数据,开始更新用户积分,如果数据库更新失败则不应答,等待重试。如果数据更新成功,则应答mq_point消息已消费完成。订单流程结束。积分服务收到MQ的消息后,更新用户积分数据成功,完成订单流程。每个步骤收到MQ消息后,将数据处理完成,利用MQ触发下一步操作,如果数据处理失败,这条消息将会保留在MQ中,直到下次重试。如果多次重试仍然失败,则记录订单号到异常库中,等待人工干预。
步骤5:失败兜底服务
步骤2-4的失败重试如果分别出现大于5次的情况,则视为异常,存入订单号和商品ID至异常库,人工干预排查。
本发明中的MQ(Message Queue)是消息队列,是一种中间件服务,目前常见的有rabbitmq、rocketmq、kafka等。
总之,本发明能够提供一种发布与订阅机制,以实现通知功能,使原本同一个流程的业务可以解耦成异步,最终一致性有别于强一致性,不需要在过程中增加锁操作来保证原子性,利用MQ发布订阅的功能来进行分步骤的通知,以此来实现订单的流程最终完成,达成最终一致性。
本发明还提供了分布式订单系统数据利用MQ实现最终一致性的系统,包括访问模块、库存模块、订单模块和积分模块;
所述访问模块,即用户下单访问api网关,回复下单成功信息给用户,并生成订单号发送给MQ;
所述库存模块,即库存服务收到MQ的消息后,扣减库存,成功后,生成库存扣减成功的消息给MQ;
所述订单模块,即订单服务收到MQ的消息后,创建订单,生成订单生成成功的消息至MQ中;
所述积分模块,即积分服务收到MQ的消息后,更新用户积分数据,完成订单流程。
进一步的,所述访问模块进一步具体为:用户下单访问api网关,网关作为系统的入口,负责检测服务是否均可用,是,则生成订单号,否,则提示用户系统繁忙,请稍后再试。
进一步的,所述库存模块进一步具体为:库存服务收到MQ的消息后,获得订单号、用户的商品ID和购买数量信息,读取商品,扣减库存,检测库存服务更新是否成功,是,则应答MQ消息已消费完成,并发送订单号和商品ID至MQ,否,则不应答,等待重试。
进一步的,所述订单模块进一步具体为:订单服务收到MQ的消息后,获得订单号和用户的商品ID,根据订单号生成订单数据,判断数据库新增是否成功,是,则应答MQ消息已消费完成,并发送订单号和商品ID至MQ中,否,则不应答,等待重试。
进一步的,所述积分模块进一步具体为:积分服务收到MQ的消息后,获得订单号和用户的商品ID,读取商品获得商品的积分数据,更新用户积分,判断数据库中积分更新是否成功,是,则应答MQ消息已消费完成,订单流程结束,否,则不应答,等待重试。
进一步的,还包括异常模块,所述异常模块,即当库存模块、订单模块和积分模块中的失败重试出现次数大于5次时,则视为订单异常,将订单号和用户的商品ID存入异常库,进行排查。
以上所述仅为本发明的较佳实施例,凡依本发明申请专利范围所做的均等变化与修饰,皆应属本发明的涵盖范围。

Claims (12)

1.分布式订单系统数据利用MQ实现最终一致性的方法,其特征在于,所述方法包括以下步骤:
步骤S1、用户下单访问api网关,回复下单成功信息给用户,并生成订单号发送给MQ;
步骤S2、库存服务收到MQ的消息后,扣减库存,成功后,生成库存扣减成功的消息给MQ;
步骤S3、订单服务收到MQ的消息后,创建订单,生成订单生成成功的消息至MQ中;
步骤S4、积分服务收到MQ的消息后,更新用户积分数据,完成订单流程。
2.根据权利要求1所述的分布式订单系统数据利用MQ实现最终一致性的方法,其特征在于:所述步骤S1进一步具体为:用户下单访问api网关,网关作为系统的入口,负责检测服务是否均可用,是,则生成订单号,否,则提示用户系统繁忙,请稍后再试。
3.根据权利要求1所述的分布式订单系统数据利用MQ实现最终一致性的方法,其特征在于:所述步骤S2进一步具体为:库存服务收到MQ的消息后,获得订单号、用户的商品ID和购买数量信息,读取商品,扣减库存,检测库存服务更新是否成功,是,则应答MQ消息已消费完成,并发送订单号和商品ID至MQ,否,则不应答,等待重试。
4.根据权利要求1所述的分布式订单系统数据利用MQ实现最终一致性的方法,其特征在于:所述步骤S3进一步具体为:订单服务收到MQ的消息后,获得订单号和用户的商品ID,根据订单号生成订单数据,判断数据库新增是否成功,是,则应答MQ消息已消费完成,并发送订单号和商品ID至MQ中,否,则不应答,等待重试。
5.根据权利要求1所述的分布式订单系统数据利用MQ实现最终一致性的方法,其特征在于:所述步骤S4进一步具体为:积分服务收到MQ的消息后,获得订单号和用户的商品ID,读取商品获得商品的积分数据,更新用户积分,判断数据库中积分更新是否成功,是,则应答MQ消息已消费完成,订单流程结束,否,则不应答,等待重试。
6.根据权利要求1所述的分布式订单系统数据利用MQ实现最终一致性的方法,其特征在于:所述步骤S4后还包括当步骤S2-步骤S4中的失败重试出现次数大于5次时,则视为订单异常,将订单号和用户的商品ID存入异常库,进行排查。
7.分布式订单系统数据利用MQ实现最终一致性的系统,其特征在于:包括访问模块、库存模块、订单模块和积分模块;
所述访问模块,即用户下单访问api网关,回复下单成功信息给用户,并生成订单号发送给MQ;
所述库存模块,即库存服务收到MQ的消息后,扣减库存,成功后,生成库存扣减成功的消息给MQ;
所述订单模块,即订单服务收到MQ的消息后,创建订单,生成订单生成成功的消息至MQ中;
所述积分模块,即积分服务收到MQ的消息后,更新用户积分数据,完成订单流程。
8.根据权利要求7所述的分布式订单系统数据利用MQ实现最终一致性的系统,其特征在于:所述访问模块进一步具体为:用户下单访问api网关,网关作为系统的入口,负责检测服务是否均可用,是,则生成订单号,否,则提示用户系统繁忙,请稍后再试。
9.根据权利要求7所述的分布式订单系统数据利用MQ实现最终一致性的系统,其特征在于:所述库存模块进一步具体为:库存服务收到MQ的消息后,获得订单号、用户的商品ID和购买数量信息,读取商品,扣减库存,检测库存服务更新是否成功,是,则应答MQ消息已消费完成,并发送订单号和商品ID至MQ,否,则不应答,等待重试。
10.根据权利要求7所述的分布式订单系统数据利用MQ实现最终一致性的系统,其特征在于:所述订单模块进一步具体为:订单服务收到MQ的消息后,获得订单号和用户的商品ID,根据订单号生成订单数据,判断数据库新增是否成功,是,则应答MQ消息已消费完成,并发送订单号和商品ID至MQ中,否,则不应答,等待重试。
11.根据权利要求7所述的分布式订单系统数据利用MQ实现最终一致性的系统,其特征在于:所述积分模块进一步具体为:积分服务收到MQ的消息后,获得订单号和用户的商品ID,读取商品获得商品的积分数据,更新用户积分,判断数据库中积分更新是否成功,是,则应答MQ消息已消费完成,订单流程结束,否,则不应答,等待重试。
12.根据权利要求7所述的分布式订单系统数据利用MQ实现最终一致性的系统,其特征在于:还包括异常模块,所述异常模块,即当库存模块、订单模块和积分模块中的失败重试出现次数大于5次时,则视为订单异常,将订单号和用户的商品ID存入异常库,进行排查。
CN202110427426.5A 2021-04-21 2021-04-21 分布式订单系统数据利用mq实现最终一致性的方法及系统 Pending CN112991022A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110427426.5A CN112991022A (zh) 2021-04-21 2021-04-21 分布式订单系统数据利用mq实现最终一致性的方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110427426.5A CN112991022A (zh) 2021-04-21 2021-04-21 分布式订单系统数据利用mq实现最终一致性的方法及系统

Publications (1)

Publication Number Publication Date
CN112991022A true CN112991022A (zh) 2021-06-18

Family

ID=76341405

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110427426.5A Pending CN112991022A (zh) 2021-04-21 2021-04-21 分布式订单系统数据利用mq实现最终一致性的方法及系统

Country Status (1)

Country Link
CN (1) CN112991022A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113392119A (zh) * 2021-06-30 2021-09-14 上海万物新生环保科技集团有限公司 一种数据一致性处理方法及设备

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20190089809A1 (en) * 2017-09-15 2019-03-21 Oracle International Corporation Dynamic message queues for a microservice based cloud service
CN110750338A (zh) * 2019-08-30 2020-02-04 深圳壹账通智能科技有限公司 订单数据的处理方法及装置、存储介质、计算机设备
CN111177158A (zh) * 2018-11-12 2020-05-19 商派软件有限公司 一种订单与库存匹配一致的方法
CN112671827A (zh) * 2020-11-25 2021-04-16 紫光云技术有限公司 一种分布式事务最终一致性方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20190089809A1 (en) * 2017-09-15 2019-03-21 Oracle International Corporation Dynamic message queues for a microservice based cloud service
CN111177158A (zh) * 2018-11-12 2020-05-19 商派软件有限公司 一种订单与库存匹配一致的方法
CN110750338A (zh) * 2019-08-30 2020-02-04 深圳壹账通智能科技有限公司 订单数据的处理方法及装置、存储介质、计算机设备
CN112671827A (zh) * 2020-11-25 2021-04-16 紫光云技术有限公司 一种分布式事务最终一致性方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
徐进等: "基于消息通信的分布式系统最终一致性平台", 《计算机应用》 *
阿里巴巴中间件: "如何通过事务消息保障抢购业务的分布式一致性?", 《HTTPS://WWW.INFOQ.CN/ARTICLE/BJ9LZYVL02TWIXVTR1E8》 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113392119A (zh) * 2021-06-30 2021-09-14 上海万物新生环保科技集团有限公司 一种数据一致性处理方法及设备

Similar Documents

Publication Publication Date Title
CN111752957B (zh) 一种基于缓存化的销售锁定方法及系统
US8473316B1 (en) System and method for order processing state management
US7647251B2 (en) Process integration error and conflict handling
JP4201291B2 (ja) 電子値札による商品価格同期装置及び商品価格同期方法
US20170255990A1 (en) Optimistic product order reservation system and method
CN109885382A (zh) 跨系统分布式事务处理方法和分布式事务处理的系统
CN112579620A (zh) 一种基于消息队列的分布式系统数据最终一致性方法
CN112486719A (zh) 一种用于rpc接口调用失败处理的方法及设备
CN112991022A (zh) 分布式订单系统数据利用mq实现最终一致性的方法及系统
CN111353841B (zh) 单据数据处理方法、装置及系统
CN112990823A (zh) 一种实现库存管理的方法、系统及存储介质
CN113706140A (zh) 一种基于云pos的智能支付和退款方法以及电子设备
CN106651527A (zh) 多进程的订单信息处理方法
US8489436B1 (en) System and method for an order handling data model with item-level granularity
CN112990871A (zh) 一种单据处理方法及相关设备
US7146385B1 (en) System and method for application-transparent synchronization with a persistent data store
CN106845966B (zh) 货款信息处理方法及装置
CN111581227A (zh) 事件推送方法、装置、计算机设备及存储介质
US20050144089A1 (en) Shipment and delivery management system
WO2014186699A1 (en) Transferring transactions between local and central point of service servers
CN112416952B (zh) 管理及同步库存数据的方法、设备、可读存储介质
KR101708697B1 (ko) 국가 간 신용카드 결제 대행 중개 서비스 장치 및 방법
CN112990811B (zh) 一种基于区块链的仓单处理方法及仓单处理系统
CN109447758B (zh) 应用内购买的方法和相关装置
CN113344680A (zh) 一种订单处理方法、相关装置、设备及存储介质

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
WD01 Invention patent application deemed withdrawn after publication
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20210618