CN108153598A - 基于微服务架构的数据一致性方法以及装置 - Google Patents

基于微服务架构的数据一致性方法以及装置 Download PDF

Info

Publication number
CN108153598A
CN108153598A CN201711421347.3A CN201711421347A CN108153598A CN 108153598 A CN108153598 A CN 108153598A CN 201711421347 A CN201711421347 A CN 201711421347A CN 108153598 A CN108153598 A CN 108153598A
Authority
CN
China
Prior art keywords
message
upstream
application
confirmed
downstream
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.)
Granted
Application number
CN201711421347.3A
Other languages
English (en)
Other versions
CN108153598B (zh
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.)
Neusoft Corp
Original Assignee
Neusoft Corp
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 Neusoft Corp filed Critical Neusoft Corp
Priority to CN201711421347.3A priority Critical patent/CN108153598B/zh
Publication of CN108153598A publication Critical patent/CN108153598A/zh
Application granted granted Critical
Publication of CN108153598B publication Critical patent/CN108153598B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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/546Message passing systems or structures, e.g. queues
    • 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/466Transaction processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/548Queue

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明提出一种基于微服务架构的数据一致性方法以及装置,其中方法包括:通过接收上游应用在执行上游业务前发送的待确认消息,保存待确认消息,并向上游应用返回待确认消息对应的响应消息;若在第一时间范围内接收到确认消息,则确定上游业务执行完毕,将待确认消息传递至活动日志,以便下游业务监听并执行;确认消息为上游应用根据响应消息执行上游业务后的确认消息;若在第一时间范围内未接收到确认消息,则查询上游应用的上游业务是否已执行,并根据查询结果确定删除待确认消息还是将待确认消息传递至活动日志,从而保证上游应用与活动管理器之间数据的一致性,进而确保上游应用与下游应用之间数据的一致性。

Description

基于微服务架构的数据一致性方法以及装置
技术领域
本发明涉及微服务技术领域,尤其涉及一种基于微服务架构的数据一致性方法以及装置。
背景技术
目前,在基于微服务架构的业务平台,例如电商平台上,当用户下单并支付后,电商平台需要修改订单的状态并且增加用户积分。由于电商平台采用的是微服务架构,分离出了支付服务、订单服务和积分服务,每个服务都有独立数据库做数据存储。当用户支付成功后,若订单服务未修改订单状态或者积分服务未修改积分,则导致支付服务、订单服务和积分服务之间数据的不一致。
发明内容
本发明旨在至少在一定程度上解决相关技术中的技术问题之一。
为此,本发明的第一个目的在于提出一种基于微服务架构的数据一致性方法,用于解决现有技术中难以保证各服务之间数据一致性的问题。
本发明的第二个目的在于提出一种基于微服务架构的数据一致性装置。
本发明的第三个目的在于提出另一种基于微服务架构的数据一致性装置。
本发明的第四个目的在于提出一种非临时性计算机可读存储介质。
本发明的第五个目的在于提出一种计算机程序产品。
为达上述目的,本发明第一方面实施例提出了一种基于微服务架构的数据一致性方法,包括:
接收上游应用在执行上游业务前发送的待确认消息,保存所述待确认消息,并向所述上游应用返回所述待确认消息对应的响应消息;
判断是否在第一时间范围内接收到所述上游应用发送的确认消息,所述确认消息为所述上游应用根据所述响应消息执行上游业务后的确认消息;
在第一时间范围内未接收到所述确认消息时,向上游应用发送查询请求;
在接收到上游应用的上游业务已执行的消息时,将待确认消息的待确认状态修改为发送状态,并将修改为发送状态的消息传递至活动日志,以使下游应用监听所述活动日志中的消息,根据所述消息确定是否执行下游业务;
在接收到上游应用的上游业务未执行的消息时,删除所述待确认消息。
进一步的,所述的方法还包括:
在第一时间范围内接收到所述确认消息时,根据所述确认消息,将所述待确认消息的待确认状态修改为发送状态,并将修改为发送状态的消息传递至活动日志,以使下游应用监听所述活动日志中的消息,根据所述消息确定是否执行下游业务。
进一步的,所述的方法还包括:
接收下游应用的消息获取请求,所述消息获取请求为下游应用对所述活动日志进行监听,确定所述活动日志中包括待获取消息时发送的请求;
根据所述消息获取请求,将所述待获取消息发送至下游应用;
判断是否在第二时间范围内接收到下游应用的执行成功消息,所述执行成功消息为下游应用根据所述待获取消息执行下游业务成功后的消息;
在第二时间范围内未接收到所述执行成功消息时,将所述待获取消息重新投递至活动日志中,以供下游应用监听。
进一步的,所述的方法还包括:
在第二时间范围内接收到所述执行成功消息时,将所述待获取消息的发送状态修改为已完成状态,并删除所述活动日志中的所述待获取消息。
进一步的,所述的方法还包括:
在所述待获取消息的投递次数大于预设重发次数时,将所述待获取消息的发送状态修改为死亡状态,以供用户处理。
进一步的,所述将所述待确认消息的待确认状态修改为发送状态,并将修改为发送状态的消息传递至活动日志之前,还包括:
接收上游应用发送的所有下游应用的确认操作接口信息和取消操作接口信息;所述确认操作接口信息和所述取消操作接口信息,为所述上游应用执行上游业务完成后发送的;所述上游应用在接收到所有下游应用的预操作成功消息,且接收到所述活动管理器返回的所述响应信息时,执行上游业务;
根据所述确认操作接口信息,调用所有下游应用的确认操作接口;
确定所有下游应用的确认操作接口是否调用成功;
对应的,所述将所述待确认消息的待确认状态修改为发送状态,并将修改为发送状态的消息传递至活动日志,包括:
在所有下游应用的确认操作接口调用成功时,将所述待确认消息的待确认状态修改为发送状态,并将修改为发送状态的消息传递至活动日志。
进一步的,所述将所述待确认消息的待确认状态修改为发送状态,并将修改为发送状态的消息传递至活动日志之前,还包括:
在存在部分或所有下游应用的确认操作接口未调用成功时,通知所述上游应用删除执行上游业务后的数据,并调用所有下游应用的取消操作接口取消预操作。
进一步的,所述的方法还包括:
接收通知应用的通知消息获取请求,所述通知消息获取请求为通知应用对活动日志进行监听,确定所述活动日志中包括待通知消息时发送的请求;
根据所述通知消息获取请求,将所述待通知消息发送至通知应用,以使所述通知应用按照所述待通知消息中的通知规则和通知地址,将所述待通知消息发送给对应的下游应用。
进一步的,所述活动日志中的每个消息包括:消息的标识;所述标识为通用唯一识别码;
所述将修改为发送状态的消息传递至活动日志后,向所述上游应用返回携带所述标识的传递成功响应消息,以使所述上游应用在接收到所述传递成功响应消息后,传递下一条消息。
进一步的,所述的方法还包括:
判断是否接收到所述上游应用的携带所述标识的查询消息;所述查询消息为所述上游应用在第三时间范围内未接收到传递成功响应消息时发送的查询消息;
在接收到所述上游应用的查询消息时,根据所述查询消息中携带的标识,查询所述活动日志,判断所述活动日志中是否存在与所述标识对应的消息;
若所述活动日志中存在与所述标识对应的消息,则指示所述上游应用传递下一条消息;
若所述活动日志中不存在与所述标识对应的消息,则指示所述上游应用重新发送与所述标识对应的消息。
本发明实施例的基于微服务架构的数据一致性方法,通过接收上游应用在执行上游业务前发送的待确认消息,保存待确认消息,并向上游应用返回待确认消息对应的响应消息;判断是否在第一时间范围内接收到上游应用发送的确认消息,确认消息为上游应用根据响应消息执行上游业务后的确认消息;若在第一时间范围内接收到确认消息,则确定上游业务执行完毕,则将待确认消息传递至活动日志,以便下游业务监听并执行;若在第一时间范围内未接收到确认消息,则查询上游应用的上游业务是否已执行,并根据查询结果确定删除待确认消息还是将待确认消息传递至活动日志,从而保证上游应用与活动管理器之间数据的一致性,进而确保上游应用与下游应用之间数据的一致性。
为达上述目的,本发明第二方面实施例提出了一种基于微服务架构的数据一致性装置,包括:
接收模块,用于接收上游应用在执行上游业务前发送的待确认消息,保存所述待确认消息,并向所述上游应用返回所述待确认消息对应的响应消息;
判断模块,用于判断是否在第一时间范围内接收到所述上游应用发送的确认消息,所述确认消息为所述上游应用根据所述响应消息执行上游业务后的确认消息;
发送模块,用于在第一时间范围内未接收到所述确认消息时,向上游应用发送查询请求;
所述发送模块,还用于在接收到上游应用的上游业务已执行的消息时,将待确认消息的待确认状态修改为发送状态,并将修改为发送状态的消息传递至活动日志,以使下游应用监听所述活动日志中的消息,根据所述消息确定是否执行下游业务;
删除模块,用于在接收到上游应用的上游业务未执行的消息时,删除所述待确认消息。
进一步的,所述发送模块还用于,
在第一时间范围内接收到所述确认消息时,根据所述确认消息,将所述待确认消息的待确认状态修改为发送状态,并将修改为发送状态的消息传递至活动日志,以使下游应用监听所述活动日志中的消息,根据所述消息确定是否执行下游业务。
进一步的,所述接收模块,还用于接收下游应用的消息获取请求,所述消息获取请求为下游应用对所述活动日志进行监听,确定所述活动日志中包括待获取消息时发送的请求;
所述发送模块,还用于接收下游应用的消息获取请求,所述消息获取请求为下游应用对所述活动日志进行监听,确定所述活动日志中包括待获取消息时发送的请求;
所述判断模块,还用于判断是否在第二时间范围内接收到下游应用的执行成功消息,所述执行成功消息为下游应用根据所述待获取消息执行下游业务成功后的消息;
所述发送模块,还用于在第二时间范围内未接收到所述执行成功消息时,将所述待获取消息重新投递至活动日志中,以供下游应用监听。
进一步的,所述删除模块,还用于在第二时间范围内接收到所述执行成功消息时,将所述待获取消息的发送状态修改为已完成状态,并删除所述活动日志中的所述待获取消息。
进一步的,所述的装置还包括:修改模块,用于在所述待获取消息的投递次数大于预设重发次数时,将所述待获取消息的发送状态修改为死亡状态,以供用户处理。
进一步的,所述的装置还包括:调用模块和确定模块;
所述发送模块将所述待确认消息的待确认状态修改为发送状态,并将修改为发送状态的消息传递至活动日志之前,所述接收模块还用于,接收上游应用发送的所有下游应用的确认操作接口信息和取消操作接口信息;所述确认操作接口信息和所述取消操作接口信息,为所述上游应用执行上游业务完成后发送的;所述上游应用在接收到所有下游应用的预操作成功消息,且接收到所述活动管理器返回的所述响应信息时,执行上游业务;
所述调用模块,用于根据所述确认操作接口信息,调用所有下游应用的确认操作接口;
所述确定模块,用于确定所有下游应用的确认操作接口是否调用成功;
对应的,所述发送模块具体用于,在所有下游应用的确认操作接口调用成功时,将所述待确认消息的待确认状态修改为发送状态,并将修改为发送状态的消息传递至活动日志。
进一步的,所述的装置还包括:通知模块,用于在所述发送模块将所述待确认消息的待确认状态修改为发送状态,并将修改为发送状态的消息传递至活动日志之前,在存在部分或所有下游应用的确认操作接口未调用成功时,通知所述上游应用删除执行上游业务后的数据,并调用所有下游应用的取消操作接口取消预操作。
进一步的,所述接收模块,还用于接收通知应用的通知消息获取请求,所述通知消息获取请求为通知应用对活动日志进行监听,确定所述活动日志中包括待通知消息时发送的请求;
所述发送模块,还用于根据所述通知消息获取请求,将所述待通知消息发送至通知应用,以使所述通知应用按照所述待通知消息中的通知规则和通知地址,将所述待通知消息发送给对应的下游应用。
进一步的,所述活动日志中的每个消息包括:消息的标识;所述标识为通用唯一识别码;
所述发送模块,还用于在将修改为发送状态的消息传递至活动日志后,向所述上游应用返回携带所述标识的传递成功响应消息,以使所述上游应用在接收到所述传递成功响应消息后,传递下一条消息。
进一步的,所述的装置还包括:指示模块;
所述判断模块,还用于判断是否接收到所述上游应用的携带所述标识的查询消息;所述查询消息为所述上游应用在第三时间范围内未接收到传递成功响应消息时发送的查询消息;
所述判断模块,还用于在接收到所述上游应用的查询消息时,根据所述查询消息中携带的标识,查询所述活动日志,判断所述活动日志中是否存在与所述标识对应的消息;
所述指示模块,用于在所述活动日志中存在与所述标识对应的消息时,指示所述上游应用传递下一条消息;
所述指示模块,还用于在所述活动日志中不存在与所述标识对应的消息时,指示所述上游应用重新发送与所述标识对应的消息。
本发明实施例的基于微服务架构的数据一致性装置,通过接收上游应用在执行上游业务前发送的待确认消息,保存待确认消息,并向上游应用返回待确认消息对应的响应消息;判断是否在第一时间范围内接收到上游应用发送的确认消息,确认消息为上游应用根据响应消息执行上游业务后的确认消息;若在第一时间范围内接收到确认消息,则确定上游业务执行完毕,则将待确认消息传递至活动日志,以便下游业务监听并执行;若在第一时间范围内未接收到确认消息,则查询上游应用的上游业务是否已执行,并根据查询结果确定删除待确认消息还是将待确认消息传递至活动日志,从而保证上游应用与活动管理器之间数据的一致性,进而确保上游应用与下游应用之间数据的一致性。
为达上述目的,本发明第三方面实施例提出了另一种基于微服务架构的数据一致性装置,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如上所述的基于微服务架构的数据一致性方法。
为了实现上述目的,本发明第四方面实施例提出了一种非临时性计算机可读存储介质,当所述存储介质中的指令被处理器执行时,实现如上所述的方法。
为达上述目的,本发明第五方面实施例提出了一种计算机程序产品,当所述计算机程序产品中的指令处理器执行时,执行一种基于微服务架构的数据一致性方法,所述方法包括:
接收上游应用在执行上游业务前发送的待确认消息,保存所述待确认消息,并向所述上游应用返回所述待确认消息对应的响应消息;
判断是否在第一时间范围内接收到所述上游应用发送的确认消息,所述确认消息为所述上游应用根据所述响应消息执行上游业务后的确认消息;
在第一时间范围内未接收到所述确认消息时,向上游应用发送查询请求;
在接收到上游应用的上游业务已执行的消息时,将待确认消息的待确认状态修改为发送状态,并将修改为发送状态的消息传递至活动日志,以使下游应用监听所述活动日志中的消息,根据所述消息确定是否执行下游业务;
在接收到上游应用的上游业务未执行的消息时,删除所述待确认消息。
本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
本发明上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
图1为本发明实施例提供的一种基于微服务架构的数据一致性方法的流程示意图;
图2为图1中活动管理器与上游应用的交互示意图;
图3为本发明实施例提供的另一种基于微服务架构的数据一致性方法的流程示意图;
图4为图2中活动管理器与下游应用的交互示意图;
图5为本发明实施例提供的另一种基于微服务架构的数据一致性方法的流程示意图;
图6为图5中活动管理器、上游应用与下游应用的交互示意图;
图7为本发明实施例提供的另一种基于微服务架构的数据一致性方法的流程示意图;
图8为图7中上游应用、通知应用、活动管理器与通知应用对应的下游应用的交互过程;
图9为本发明实施例提供的另一种基于微服务架构的数据一致性方法的流程示意图;
图10为活动日志中消息结构的示意图;
图11为本发明实施例提供的一种基于微服务架构的数据一致性装置的结构示意图;
图12为本发明实施例提供的另一种基于微服务架构的数据一致性装置的结构示意图;
图13为本发明实施例提供的另一种基于微服务架构的数据一致性装置的结构示意图;
图14为本发明实施例提供的计算机设备的结构示意图。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本发明,而不能理解为对本发明的限制。
本发明中,活动管理器与各应用之间的交互支持解决分布式事务问题(Distributed Transaction Process,X/Open DTP)的二阶段提交协议(Two-Phase-传递成功响应消息,2PC),该协议中有3个角色:应用程序(Application,AP)、事务管理器(Transaction Manager,TM)以及资源管理器(Resource Manager,RM)。本实施例中的活动管理器例如可以充当事务管理器的角色,上游应用和下游应用可以充当资源管理器的角色,业务平台可以充当应用程序的角色。或者,上游应用和下游应用可以充当应用程序的角色,上游应用和下游应用对应的子应用可以充当资源管理器的角色。
其中,RM为关系型数据库或支持XA接口(XA规范是X/Open组织定义的分布式事务规范)的组件。TM负责各个RM的提交和回滚。
当AP调用了TM的提交方法时,事务的提交分为两个阶段实行。第一阶段:TM通知所有参与事务的各个RM,给每个RM发送prepare消息;RM接收到prepare消息后进入准备阶段后,要么直接返回失败,要么创建并执行本地事务,写本地事务日志(确认操作redo日志和取消操作undo日志),但是不提交(此处只保留最后一步耗时最少的提交操作给第二阶段执行)。
第二阶段:TM收到RM准备阶段的失败消息或者获取RM返回消息超时,则直接给RM发送回滚(rollback)消息,否则发送提交(传递成功响应消息)消息;RM根据TM的指令执行提交或者回滚,执行完成后释放所有事务处理过程中使用的锁(最后阶段释放锁)。
下面参考附图描述本发明实施例的基于微服务架构的数据一致性方法以及装置。
图1为本发明实施例提供的一种基于微服务架构的数据一致性方法的流程示意图。如图1所示,该基于微服务架构的数据一致性方法包括以下步骤:
S101、接收上游应用在执行上游业务前发送的待确认消息,保存待确认消息,并向上游应用返回待确认消息对应的响应消息。
本发明提供的基于微服务架构的数据一致性方法的执行主体为基于微服务架构的数据一致性装置,基于微服务架构的数据一致性装置具体可以为活动管理器,活动管理器可以为设置在基于微服务架构的业务平台上,能够与业务平台上的各服务或者应用进行交互的设备。
本实施例中,在业务平台上的应用包括:支付应用、订单应用和积分应用的情况下,上游应用例如可以为支付应用或者订单应用。在上游应用为支付应用的情况下,对应的下游应用可以为订单应用和积分应用。在上游应用为订单应用的情况下,对应的下游应用可以为积分应用。活动管理器可以与各个应用连接,用于实现各个应用之间的交互以及数据一致性,例如上游应用和下游应用之间的交互以及数据一致性。其中,待确认消息为上游应用待发送给下游应用的消息,例如,支付应用待发送给订单应用的修改订单消息,或者支付应用待发送给积分应用的修改积分消息。响应消息用于表示活动管理器接收到所述待确认消息。
S102、判断是否在第一时间范围内接收到上游应用发送的确认消息,确认消息为上游应用根据响应消息执行上游业务后的确认消息。
其中,上游应用在接收到活动管理器发送的响应消息后,确定活动管理器已接收到待确认消息,则执行上游业务,并在上游业务执行完毕后,向活动管理器发送确认消息。需要说明的是,待确认消息为上游应用在执行上游业务前,将包含上游业务对应的后续业务的信息添加在待确认消息中提前发送给活动管理器,在上游业务执行完成后,通知活动管理器将待确认消息传递至活动日志,以便下游应用监听并执行,从而避免先执行上游业务后发送对应后续业务信息的方案所存在的以下问题:后续业务信息发送不成功时,导致的上游业务与下游业务数据的不一致的问题。
S103、在第一时间范围内未接收到确认消息时,向上游应用发送查询请求。
本实施例中,在第一时间范围内未接收到确认消息时,表示上游应用可能未执行完成上游业务,或者上游业务执行完成后确认消息发送失败,活动管理器可以通过向上游应用发送查询请求确定上游业务的执行情况。
另外,在第一时间范围内接收到确认消息时,活动管理器可以根据确认消息,确定上游业务已执行完成,将待确认消息的待确认状态修改为发送状态,并将修改为发送状态的消息传递至活动日志,以使下游应用监听活动日志中的消息,根据消息确定是否执行下游业务。
S104、在接收到上游应用的上游业务已执行的消息时,将待确认消息的待确认状态修改为发送状态,并将修改为发送状态的消息传递至活动日志,以使下游应用监听活动日志中的消息,根据消息确定是否执行下游业务。
其中,活动日志可以为多个kafka消息队列,活动日志在接收到活动管理器传递的消息时,将消息添加到消息队列中。下游应用可以根据消息队列的地址等,监听获取消息队列中的消息,对消息进行分析,判断消息是否为需要自己执行的下游业务,若是,则根据消息执行相应的下游业务。
S105、在接收到上游应用的上游业务未执行的消息时,删除待确认消息。
本实施例中,在接收到上游应用的上游业务未执行的消息时,为了确保上游应用与活动管理器之间的数据一致性,以及确保上游应用与下游应用之间的数据一致性,活动管理器可以删除待确认消息,避免传递待确认消息至活动日志,避免下游应用监听并执行该消息,从而确保上游应用、活动管理器和下游应用之间的数据一致性。
本实施例中,活动管理器与上游应用的交互过程具体可以如图2所示,图2为活动管理器与上游应用的交互示意图,包括:1、上游应用在执行上游业务前,向活动管理器发送待确认消息;2、活动管理器在接收到待确认消息后,保存待确认消息,并向上游应用返回响应消息;3、上游应用在接收到响应消息后,执行上游业务;4、上游应用在上游业务执行完成后,向活动管理器发送确认消息,指示活动管理器发送消息;5、活动管理器在接收到确认消息后,将待确认消息的待确认状态修改为发送状态,并将消息传递至活动日志中。
本发明实施例的基于微服务架构的数据一致性方法,通过接收上游应用在执行上游业务前发送的待确认消息,保存待确认消息,并向上游应用返回待确认消息对应的响应消息;判断是否在第一时间范围内接收到上游应用发送的确认消息,确认消息为上游应用根据响应消息执行上游业务后的确认消息;若在第一时间范围内接收到确认消息,则确定上游业务执行完毕,则将待确认消息传递至活动日志,以便下游业务监听并执行;若在第一时间范围内未接收到确认消息,则查询上游应用的上游业务是否已执行,并根据查询结果确定删除待确认消息还是将待确认消息传递至活动日志,从而保证上游应用与活动管理器之间数据的一致性,进而确保上游应用与下游应用之间数据的一致性。
图3为本发明实施例提供的另一种基于微服务架构的数据一致性方法的流程示意图。如图3所示,在图1所示实施例的基础上,该基于微服务架构的数据一致性方法还可以包括以下步骤:
S106、接收下游应用的消息获取请求,消息获取请求为下游应用对活动日志进行监听,确定活动日志中包括待获取消息时发送的请求。
本实施例中,下游应用实时监听活动日志,判断活动日志中是否包括与下游业务相关的待获取消息。其中,下游应用例如可以为订单应用或者积分应用。在下游应用为订单应用的情况下,与下游业务相关的待获取消息例如可以为修改订单消息;在下游应用为积分应用的情况下,与下游业务相关的待获取消息例如可以为修改积分消息。
本实施例中,在活动日志中包括与下游业务相关的待获取消息时,下游应用可以向活动管理器发送消息获取请求,消息获取请求中包括下游应用的标识以及待获取消息的参数信息,待获取消息的参数信息例如待获取消息的标识、编号等信息,以便活动管理器向下游应用发送待获取消息。
S107、根据消息获取请求,将待获取消息发送至下游应用。
S108、判断是否在第二时间范围内接收到下游应用的执行成功消息,执行成功消息为下游应用根据所述待获取消息执行下游业务成功后的消息。
其中,下游应用在下游业务执行完成后,向活动管理器返回执行成功消息;若下游应用未执行下游业务,或者下游业务未执行成功,则不向活动管理器返回消息。
S109、在第二时间范围内未接收到执行成功消息时,将待获取消息重新投递至活动日志中,以供下游应用监听。
本实施例中,在第二时间范围内未接收到执行成功消息时,表示下游应用可能未执行完成下游业务,或者下游业务执行完成后执行成功消息发送失败,活动管理器可以将待获取消息重新投递至活动日志中,以供下游应用监听,在监听到待获取消息时,根据待获取消息重新执行下游业务。
另外,在第二时间范围内接收到执行成功消息时,将待获取消息的发送状态修改为已完成状态,并删除活动日志中的待获取消息。
另外,在待获取消息的投递次数大于预设重发次数时,将待获取消息的发送状态修改为死亡状态,以供用户处理。
进一步的,在下游应用执行下游业务之前,下游应用还可以向活动管理器发送待确认消息;在接收到活动管理器返回的响应消息时,执行下游业务;然后活动管理器将待确认消息的待确认状态修改为发送状态,发送到活动日志。
本实施例中,活动管理器与下游应用的交互过程具体可以如图4所示,图4为活动管理器与下游应用的交互示意图,包括:1、下游应用监听活动日志,确定活动日志中是否包括待获取消息,在活动日志中包括待获取消息时,向活动管理器发送消息获取请求获取待获取消息;2、下游应用在获取到待获取消息后,执行下游业务;3、在下游业务执行成功后,下游应用向活动日志返回确认收到待获取消息的消息,使得活动日志删除存储的所述待获取消息;4、下游应用向活动管理器返回执行成功消息,使得活动管理器将待获取消息的发送状态修改为已完成状态。另外,下游应用也可以仅向活动管理器返回执行成功消息,使得活动管理器将待获取消息的发送状态修改为已完成状态,并删除活动日志中的待获取消息。
本发明实施例的基于微服务架构的数据一致性方法,通过接收下游应用的消息获取请求,消息获取请求为下游应用对活动日志进行监听,确定活动日志中包括待获取消息时发送的请求;根据消息获取请求,将待获取消息发送至下游应用;判断是否在第二时间范围内接收到下游应用的执行成功消息,执行成功消息为下游应用根据待获取消息执行下游业务成功后的消息;在第二时间范围内未接收到执行成功消息时,将待获取消息重新投递至活动日志中,以供下游应用监听,从而保证下游应用与活动管理器之间数据的一致性,进而保证上游应用与下游应用之间数据的一致性,保证各应用之间数据的一致性。
图5为本发明实施例提供的另一种基于微服务架构的数据一致性方法的流程示意图。如图5所示,在图1或图3所示实施例的基础上,基于微服务架构的数据一致性装置将待确认消息的待确认状态修改为发送状态,并将修改为发送状态的消息传递至活动日志之前,该基于微服务架构的数据一致性方法还可以包括以下步骤:
S110、接收上游应用发送的所有下游应用的确认操作接口信息和取消操作接口信息;确认操作接口信息和取消操作接口信息,为上游应用执行上游业务完成时发送的;上游应用在接收到所有下游应用的预操作成功消息,且接收到活动管理器返回的响应信息时,执行上游业务。
其中,上游应用可以通过与下游应用的交互,获取所有下游应用的预操作接口信息、确认操作接口信息和取消操作接口信息。本实施例中,活动管理器将待确认消息的待确认状态修改为发送状态并传递至活动日志之前,需要确保上游业务执行成功,且上游应用对应的所有下游应用执行相应的预操作成功,例如执行修改订单预操作成功或者执行修改积分预操作成功,且所有下游应用的确认操作接口调用成功,也就是说,活动管理器确保下游应用可以监听待获取消息并执行相应下游业务的情况下,再将待确认消息的待确认状态修改为发送状态并传递至活动日志,避免上游应用执行上游业务成功,但下游应用难以执行相应下游业务,上游应用与下游应用之间数据不一致的问题。
本实施例中,预操作指的是,执行相应操作,但对执行结果不进行处理的过程。上游应用调用下游应用的预操作接口后,下游应用根据上游应用的调用操作执行预操作。
S111、根据确认操作接口信息,调用所有下游应用的确认操作接口。
本实施例中,确认操作指的是,对预操作的执行结果进行处理的过程,例如,根据执行结果向上游应用返回执行成功响应消息等。上游应用调用下游应用的确认操作接口后,可以接收到下游应用发送的执行成功响应消息。
S112、确定所有下游应用的确认操作接口是否调用成功。
本实施例中,活动管理器在接收到下游应用发送的执行成功响应消息时,确定下游应用的确认操作接口调用成功。
对应的,基于微服务架构的数据一致性装置将待确认消息的待确认状态修改为发送状态,并将修改为发送状态的消息传递至活动日志的过程具体可以为,在所有下游应用的确认操作接口调用成功时,将待确认消息的待确认状态修改为发送状态,并将修改为发送状态的消息传递至活动日志。
另外,在存在部分或所有下游应用的确认操作接口未调用成功时,通知上游应用删除执行上游业务后的数据,并调用所有下游应用的取消操作接口取消预操作。
本实施例中,活动管理器、上游应用与下游应用的交互过程具体可以如图6所示,图6为活动管理器、上游应用与下游应用的交互示意图,包括:1、上游应用在执行上游业务前,先调用所有下游应用的预操作接口;下游应用根据上游应用的预操作接口调用,执行相应的预操作,在预操作执行完成后,向上游应用返回响应信息;若预操作未执行完成,则不向上游应用返回响应信息;上游应用继续向活动管理器发送待确认消息;2、上游应用在接收到所有下游应用的响应信息,以及活动管理器返回的待确认消息的响应消息后,执行上游业务;并在上游业务执行完成后,将所有下游应用的确认操作接口信息和取消操作接口信息发送给活动管理器;活动管理器调用所有下游应用的确认操作接口;在存在部分或所有下游应用的确认操作接口未调用成功时,通知上游应用删除执行上游业务后的数据,并调用所有下游应用的取消操作接口取消预操作;3、若存在部分下游应用的取消操作接口未调用成功,则下游应用可以在预操作超时时删除预操作数据。
本发明实施例的基于微服务架构的数据一致性方法,通过接收上游应用在执行上游业务前发送的待确认消息,保存待确认消息,并向上游应用返回待确认消息对应的响应消息;判断是否在第一时间范围内接收到上游应用发送的确认消息,确认消息为上游应用根据响应消息执行上游业务后的确认消息;若在第一时间范围内接收到确认消息,则在将待确认消息的待确认状态修改为发送状态,将修改为发送状态的消息传递至活动日志之前,确保上游业务执行成功,且上游应用对应的所有下游应用执行相应的预操作成功,且所有下游应用的确认操作接口调用成功,也就是说,活动管理器确保下游应用可以监听待获取消息并执行相应下游业务的情况下,再将待确认消息的待确认状态修改为发送状态并传递至活动日志,避免上游应用执行上游业务成功,但下游应用难以执行相应下游业务,上游应用与下游应用之间数据不一致的问题;若在第一时间范围内未接收到确认消息,则查询上游应用的上游业务是否已执行,并根据查询结果确定删除待确认消息还是将待确认消息传递至活动日志,从而保证上游应用与活动管理器之间数据的一致性,进而确保上游应用与下游应用之间数据的一致性。
图7为本发明实施例提供的另一种基于微服务架构的数据一致性方法的流程示意图。如图7所示,在图1或图3所示实施例的基础上,该基于微服务架构的数据一致性方法还可以包括以下步骤:
S113、接收通知应用的通知消息获取请求,通知消息获取请求为通知应用对活动日志进行监听,确定活动日志中包括待通知消息时发送的请求。
S114、根据通知消息获取请求,将待通知消息发送至通知应用,以使通知应用按照待通知消息中的通知规则和通知地址,将待通知消息发送给对应的下游应用。
本实施例中,通知应用对应的下游应用例如可以为,短信应用、邮件应用等。上游应用、通知应用、活动管理器与通知应用对应的下游应用的交互过程具体可以如图8所示,包括:1、上游应用向活动管理器发送包括通知规则和通知地址的通知消息,活动管理器将包括通知规则和通知地址的通知消息传递至活动日志中;2、通知应用监听活动日志,在活动日志中包括待通知消息时向活动管理器发送通知消息获取请求,获取待通知消息,解析待通知消息的通知规则并放入延时队列等待触发通知;3、在满足通知规则触发通知时,通知应用调用下游应用的通知地址,将待通知消息发送给下游应用;如果调用成功,则将该待通知消息标记为通知成功;如果调用失败,则在满足通知规则(例如5分钟发一次,共发送10次)的情况下重新放入延时队列等待下次触发。
其中,根据不同的业务可以定制不同的通知规则,比如通知支付结果等相对严谨的业务,可以将通知频率设置高一些,通知时间长一些,比如隔5分钟通知一次,持续时间1小时。如果不重要的业务,比如通知用户积分增加,则可以将通知频率设置低一些,时间短一些,比如10分钟通知一次,持续30分钟。
本实施例中,在不影响主要应用,例如支付应用、订单应用、积分应用等应用的业务的情况下,尽可能地确保通知数据的一致性。
图9为本发明实施例提供的另一种基于微服务架构的数据一致性方法的流程示意图。如图9所示,在图1至图8任一实施例的基础上,活动日志中包括多个消息队列,为了保证活动日志中的每个消息有且仅有一次被处理,该活动日志中每个消息中包括:消息的标识;所述标识为通用唯一识别码。对应的,该基于微服务架构的数据一致性方法还可以包括以下步骤:
S115、将修改为发送状态的消息传递至活动日志后,向上游应用返回携带标识的传递成功响应消息,以使上游应用在接收到传递成功响应消息后,传递下一条消息。
其中,活动日志中每个消息的标识,为根据包括消息的消息队列的二级索引以及所述消息的内容,经过哈希计算得到的标识。
S116、判断是否接收到上游应用的携带标识的查询消息;查询消息为上游应用在第三时间范围内未接收到传递成功响应消息时发送的查询消息。
S117、在接收到上游应用的查询消息时,根据查询消息中携带的标识,查询活动日志,判断活动日志中是否存在与标识对应的消息。
S118、若活动日志中存在与标识对应的消息,则指示上游应用传递下一条消息。
其中,若活动日志中存在与标识对应的消息,则表示活动日志接收到与标识对应的消息,则上游应用不用传递与标识对应的该消息。
S119、若活动日志中不存在与标识对应的消息,则指示上游应用重新发送与标识对应的消息。
其中,若活动日志中不存在与标识对应的消息,则表示活动日志未接收到与标识对应的消息,则上游应用需要重新发送与标识对应的该消息。
本实施例中,活动日志中消息结构可以如图10所示,消息中包括:通用唯一识别码(Universally Unique Identifier,UUID)。活动管理器与上游应用的交互过程具体可以包括:1、设置活动管理器向上游应用提交传递成功响应消息的超时时间DT。DT初始化值为60秒,可以自定义。2、上游应用对消息生成UUID,并将UUID记录到消息结构中。然后将消息发送给活动管理器。3、活动管理器获取到消息后将消息存储到leader节点及所有的副本节点,然后向上游应用提交传递成功响应消息。4、如果传递成功响应消息顺利到达上游应用,则上游应用继续传递下一条消息到活动管理器;如果传递成功响应消息在DT时间内没有到达上游应用则转到步骤5。5、上游应用在DT时间内未接收到传递成功响应消息,则再次发送当前消息的UUID到活动管理器,然后活动管理器根据收到的UUID查找当前存储的消息,判断当前存储的消息中是否存在对应的UUID等于收到的UUID的消息,如果存在,则通知上游应用放弃发送当前消息,继续发送下一条消息,否则转到步骤6。6、如果活动管理器没有在当前存储的消息中查找到对应的UUID等于收到的UUID的消息,则通知上游应用重新发送当前消息到活动管理器。
另外,活动管理器与下游应用的交互过程具体可以包括:1、对下游应用增加消息处理完成标识MF,用于记录消息的处理完成状态,MF=0表示消息没处理完成,MF=1表示消息处理完成。2、在下游应用中增加记录日志功能,对消息的UUID、offset、MF进行记录。3、下游应用首先从活动管理器获取到消息,然后将消息的UUID、offset、以及MF=0的值记录到日志数据库中。4、开始对消息进行处理操作,如果处理完成则更新MF值为1,并转到步骤5,如果消息处理过程中下游应用崩溃,则转到步骤6。5、向活动管理器发送处理完成指令,如果处理完成指令发送成功则转到步骤7,否则如果当消息处理完成,但在发送处理完成指令操作前下游应用崩溃了,则转到步骤8。6、重启下游应用时,下游应用重新从活动管理器获取之前的消息,并转到步骤4。7、活动管理器接收到处理完成指令并根据指令中的offset继续提供下一条消息给下游应用,并通知下游应用删除日志数据库中此条消息的记录。8、恢复下游应用后,先到下游应用的日志数据库中查找MF=1的消息,即消息处理状态为完成的消息,将重新向活动管理器发送处理完成指令,转到步骤5。
本实施例中,活动管理器与上游应用、下游应用的上述交互过程,保证上游应用的消息有且仅有一次被发送到活动管理器,活动管理器中的消息有且仅有一次被发送到下游应用,从而保证每条消息都有且仅有一次被处理,进一步实现各应用、活动管理器之间数据的一致性。
本实施例中,上游应用在第三时间范围内未接收到消息对应的传递成功响应消息时,发送查询消息给活动管理器,活动管理器根据查询消息中携带的标识,查询活动日志,判断活动日志中是否存在与标识对应的消息,并根据判断结果返回指示消息,使得上游应用根据活动管理器的指示确定是否需要重新传递该消息,还是传递下一条消息,避免消息的重复传送,避免活动管理器中消息的重复存储,保证活动日志中的每个消息有且仅有一次被处理,进一步实现各应用、活动管理器之间数据的一致性。
图11为本发明实施例提供的一种基于微服务架构的数据一致性装置的结构示意图。如图10所示,包括:接收模块11、判断模块12、发送模块13和删除模块14;
接收模块11,用于接收上游应用在执行上游业务前发送的待确认消息,保存所述待确认消息,并向所述上游应用返回所述待确认消息对应的响应消息;
判断模块12,用于判断是否在第一时间范围内接收到所述上游应用发送的确认消息,所述确认消息为所述上游应用根据所述响应消息执行上游业务后的确认消息;
发送模块13,用于在第一时间范围内未接收到所述确认消息时,向上游应用发送查询请求;
所述发送模块13,还用于在接收到上游应用的上游业务已执行的消息时,将待确认消息的待确认状态修改为发送状态,并将修改为发送状态的消息传递至活动日志,以使下游应用监听所述活动日志中的消息,根据所述消息确定是否执行下游业务;
删除模块14,用于在接收到上游应用的上游业务未执行的消息时,删除所述待确认消息。
本发明提供的基于微服务架构的数据一致性装置具体可以为活动管理器,活动管理器可以为设置在基于微服务架构的业务平台上,能够与业务平台上的各服务或者应用进行交互的活动管理器。本实施例中,在业务平台上的应用包括:支付应用、订单应用和积分应用的情况下,上游应用例如可以为支付应用或者订单应用。在上游应用为支付应用的情况下,对应的下游应用可以为订单应用和积分应用。在上游应用为订单应用的情况下,对应的下游应用可以为积分应用。活动管理器可以与各个应用连接,用于实现各个应用之间的交互以及数据一致性,例如上游应用和下游应用之间的交互以及数据一致性。其中,待确认消息为上游应用待发送给下游应用的消息,例如,支付应用待发送给订单应用的修改订单消息,或者支付应用待发送给积分应用的修改积分消息。响应消息用于表示活动管理器接收到所述待确认消息。
其中,上游应用在接收到活动管理器发送的响应消息后,确定活动管理器已接收到待确认消息,则执行上游业务,并在上游业务执行完毕后,向活动管理器发送确认消息。需要说明的是,待确认消息为上游应用在执行上游业务前,将包含上游业务对应的后续业务的信息添加在待确认消息中提前发送给活动管理器,在上游业务执行完成后,通知活动管理器将待确认消息传递至活动日志,以便下游应用监听并执行,从而避免先执行上游业务后发送对应后续业务信息的方案所存在的以下问题:后续业务信息发送不成功时,导致的上游业务与下游业务数据的不一致的问题。
本实施例中,在第一时间范围内未接收到确认消息时,表示上游应用可能未执行完成上游业务,或者上游业务执行完成后确认消息发送失败,活动管理器可以通过向上游应用发送查询请求确定上游业务的执行情况。
另外,所述发送模块还用于,在第一时间范围内接收到所述确认消息时,根据所述确认消息,确定上游业务已执行完成,将所述待确认消息的待确认状态修改为发送状态,并将修改为发送状态的消息传递至活动日志,以使下游应用监听所述活动日志中的消息,根据所述消息确定是否执行下游业务。
其中,活动日志可以为多个kafka消息队列,活动日志在接收到活动管理器传递的消息时,将消息添加到消息队列中。下游应用可以根据消息队列的地址等,监听获取消息队列中的消息,对消息进行分析,判断消息是否为需要自己执行的下游业务,若是,则根据消息执行相应的下游业务。
本实施例中,在接收到上游应用的上游业务未执行的消息时,为了确保上游应用与活动管理器之间的数据一致性,以及确保上游应用与下游应用之间的数据一致性,活动管理器可以删除待确认消息,避免传递待确认消息至活动日志,避免下游应用监听并执行该消息,从而确保上游应用、活动管理器和下游应用之间的数据一致性。
本发明实施例的基于微服务架构的数据一致性方法,通过接收上游应用在执行上游业务前发送的待确认消息,保存待确认消息,并向上游应用返回待确认消息对应的响应消息;判断是否在第一时间范围内接收到上游应用发送的确认消息,确认消息为上游应用根据响应消息执行上游业务后的确认消息;若在第一时间范围内接收到确认消息,则确定上游业务执行完毕,则将待确认消息传递至活动日志,以便下游业务监听并执行;若在第一时间范围内未接收到确认消息,则查询上游应用的上游业务是否已执行,并根据查询结果确定删除待确认消息还是将待确认消息传递至活动日志,从而保证上游应用与活动管理器之间数据的一致性,进而确保上游应用与下游应用之间数据的一致性。
进一步的,在图11所示实施例的基础上,所述接收模块11,还用于接收下游应用的消息获取请求,所述消息获取请求为下游应用对所述活动日志进行监听,确定所述活动日志中包括待获取消息时发送的请求;
所述发送模块13,还用于接收下游应用的消息获取请求,所述消息获取请求为下游应用对所述活动日志进行监听,确定所述活动日志中包括待获取消息时发送的请求;
所述判断模块12,还用于判断是否在第二时间范围内接收到下游应用的执行成功消息,所述执行成功消息为下游应用根据所述待获取消息执行下游业务成功后的消息;
所述发送模块13,还用于在第二时间范围内未接收到所述执行成功消息时,将所述待获取消息重新投递至活动日志中,以供下游应用监听。
本实施例中,下游应用实时监听活动日志,判断活动日志中是否包括与下游业务相关的待获取消息。其中,下游应用例如可以为订单应用或者积分应用。在下游应用为订单应用的情况下,与下游业务相关的待获取消息例如可以为修改订单消息;在下游应用为积分应用的情况下,与下游业务相关的待获取消息例如可以为修改积分消息。
本实施例中,在活动日志中包括与下游业务相关的待获取消息时,下游应用可以向活动管理器发送消息获取请求,消息获取请求中包括下游应用的标识以及待获取消息的参数信息,待获取消息的参数信息例如待获取消息的标识、编号等信息,以便活动管理器向下游应用发送待获取消息。
本实施例中,在第二时间范围内未接收到执行成功消息时,表示下游应用可能未执行完成下游业务,或者下游业务执行完成后执行成功消息发送失败,活动管理器可以将待获取消息重新投递至活动日志中,以供下游应用监听,在监听到待获取消息时,根据待获取消息重新执行下游业务。
另外,所述删除模块14,还用于在第二时间范围内接收到所述执行成功消息时,将所述待获取消息的发送状态修改为已完成状态,并删除所述活动日志中的所述待获取消息。
进一步的,所述的装置还包括:修改模块,用于在所述待获取消息的投递次数大于预设重发次数时,将所述待获取消息的发送状态修改为死亡状态,以供用户处理。
进一步的,在下游应用执行下游业务之前,下游应用还可以向活动管理器发送待确认消息;在接收到活动管理器返回的响应消息时,执行下游业务;然后活动管理器将待确认消息的待确认状态修改为发送状态,发送到活动日志。
本发明实施例的基于微服务架构的数据一致性方法,通过接收下游应用的消息获取请求,消息获取请求为下游应用对活动日志进行监听,确定活动日志中包括待获取消息时发送的请求;根据消息获取请求,将待获取消息发送至下游应用;判断是否在第二时间范围内接收到下游应用的执行成功消息,执行成功消息为下游应用根据待获取消息执行下游业务成功后的消息;在第二时间范围内未接收到执行成功消息时,将待获取消息重新投递至活动日志中,以供下游应用监听,从而保证下游应用与活动管理器之间数据的一致性,进而保证上游应用与下游应用之间数据的一致性,保证各应用之间数据的一致性。
进一步的,结合参考图12,在图11所示实施例的基础上,所述的装置还包括:调用模块15和确定模块16;
所述发送模块13将所述待确认消息的待确认状态修改为发送状态,并将修改为发送状态的消息传递至活动日志之前,所述接收模块11还用于,接收上游应用发送的所有下游应用的确认操作接口信息和取消操作接口信息;确认操作接口信息和取消操作接口信息,为上游应用执行上游业务完成时发送的;上游应用在接收到所有下游应用的预操作成功消息,且接收到活动管理器返回的响应信息时,执行上游业务。
所述调用模块15,用于根据所述确认操作接口信息,调用所有下游应用的确认操作接口;
所述确定模块16,用于确定所有下游应用的确认操作接口是否调用成功。
本实施例中,活动管理器在接收到下游应用发送的执行成功响应消息时,确定下游应用的确认操作接口调用成功。
对应的,所述发送模块13具体用于,在所有下游应用的确认操作接口调用成功时,将待确认消息的待确认状态修改为发送状态,并将修改为发送状态的消息传递至活动日志。
其中,上游应用可以通过与下游应用的交互,获取所有下游应用的预操作接口信息、确认操作接口信息和取消操作接口信息。本实施例中,活动管理器将待确认消息的待确认状态修改为发送状态并传递至活动日志之前,需要确保上游业务执行成功,且上游应用对应的所有下游应用执行相应的预操作成功,例如执行修改订单预操作成功或者执行修改积分预操作成功,且所有下游应用的确认操作接口调用成功,也就是说,活动管理器确保下游应用可以监听待获取消息并执行相应下游业务的情况下,再将待确认消息的待确认状态修改为发送状态并传递至活动日志,避免上游应用执行上游业务成功,但下游应用难以执行相应下游业务,上游应用与下游应用之间数据不一致的问题。
本实施例中,预操作指的是,执行相应操作,但对执行结果不进行处理的过程。上游应用调用下游应用的预操作接口后,下游应用根据上游应用的调用操作执行预操作。
本实施例中,确认操作指的是,对预操作的执行结果进行处理的过程,例如,根据执行结果向上游应用返回执行成功响应消息等。上游应用调用下游应用的确认操作接口后,可以接收到下游应用发送的执行成功响应消息。
进一步的,所述的装置还包括:通知模块,用于在所述发送模块将所述待确认消息的待确认状态修改为发送状态,并将修改为发送状态的消息传递至活动日志之前,在存在部分或所有下游应用的确认操作接口未调用成功时,通知所述上游应用删除执行上游业务后的数据,并调用所有下游应用的取消操作接口取消预操作。
本实施例中,活动管理器、上游应用与下游应用的交互过程具体可以如图6所示,图6为活动管理器、上游应用与下游应用的交互示意图,包括:1、上游应用在执行上游业务前,先调用所有下游应用的预操作接口;下游应用根据上游应用的预操作接口调用,执行相应的预操作,在预操作执行完成后,向上游应用返回响应信息;若预操作未执行完成,则不向上游应用返回响应信息;上游应用继续向活动管理器发送待确认消息;2、上游应用在接收到所有下游应用的响应信息,以及活动管理器返回的待确认消息的响应消息后,执行上游业务;并在上游业务执行完成后,将所有下游应用的确认操作接口信息和取消操作接口信息发送给活动管理器;活动管理器调用所有下游应用的确认操作接口;在存在部分或所有下游应用的确认操作接口未调用成功时,通知上游应用删除执行上游业务后的数据,并调用所有下游应用的取消操作接口取消预操作;3、若存在部分下游应用的取消操作接口未调用成功,则下游应用可以在预操作超时时删除预操作数据。
本发明实施例的基于微服务架构的数据一致性装置,通过接收上游应用在执行上游业务前发送的待确认消息,保存待确认消息,并向上游应用返回待确认消息对应的响应消息;判断是否在第一时间范围内接收到上游应用发送的确认消息,确认消息为上游应用根据响应消息执行上游业务后的确认消息;若在第一时间范围内接收到确认消息,则在将待确认消息的待确认状态修改为发送状态,将修改为发送状态的消息传递至活动日志之前,确保上游业务执行成功,且上游应用对应的所有下游应用执行相应的预操作成功,且所有下游应用的确认操作接口调用成功,也就是说,活动管理器确保下游应用可以监听待获取消息并执行相应下游业务的情况下,再将待确认消息的待确认状态修改为发送状态并传递至活动日志,避免上游应用执行上游业务成功,但下游应用难以执行相应下游业务,上游应用与下游应用之间数据不一致的问题;若在第一时间范围内未接收到确认消息,则查询上游应用的上游业务是否已执行,并根据查询结果确定删除待确认消息还是将待确认消息传递至活动日志,从而保证上游应用与活动管理器之间数据的一致性,进而确保上游应用与下游应用之间数据的一致性。
进一步的,在上述实施例的基础上,
所述接收模块,还用于接收通知应用的通知消息获取请求,所述通知消息获取请求为通知应用对活动日志进行监听,确定所述活动日志中包括待通知消息时发送的请求;
所述发送模块,还用于根据所述通知消息获取请求,将所述待通知消息发送至通知应用,以使所述通知应用按照所述待通知消息中的通知规则和通知地址,将所述待通知消息发送给对应的下游应用。
本实施例中,通知应用对应的下游应用例如可以为,短信应用、邮件应用等。上游应用、通知应用、活动管理器与通知应用对应的下游应用的交互过程具体可以如图8所示,包括:1、上游应用向活动管理器发送包括通知规则和通知地址的通知消息,活动管理器将包括通知规则和通知地址的通知消息传递至活动日志中;2、通知应用监听活动日志,在活动日志中包括待通知消息时向活动管理器发送通知消息获取请求,获取待通知消息,解析待通知消息的通知规则并放入延时队列等待触发通知;3、在满足通知规则触发通知时,通知应用调用下游应用的通知地址,将待通知消息发送给下游应用;如果调用成功,则将该待通知消息标记为通知成功;如果调用失败,则在满足通知规则(例如5分钟发一次,共发送10次)的情况下重新放入延时队列等待下次触发。
其中,根据不同的业务可以定制不同的通知规则,比如通知支付结果等相对严谨的业务,可以将通知频率设置高一些,通知时间长一些,比如隔5分钟通知一次,持续时间1小时。如果不重要的业务,比如通知用户积分增加,则可以将通知频率设置低一些,时间短一些,比如10分钟通知一次,持续30分钟。
本实施例中,在不影响主要应用,例如支付应用、订单应用、积分应用等应用的业务的情况下,尽可能地确保通知数据的一致性。
进一步的,结合参考图13,在图11所示实施例的基础上,所述活动日志中包括多个消息队列;所述每个消息队列设置有二级索引;所述活动日志中每个消息的标识,为根据包括所述消息的消息队列的二级索引以及所述消息的内容,经过哈希计算得到的标识。
对应的,所述的装置还包括:指示模块17;所述活动日志中的每个消息包括:消息的标识;所述标识为通用唯一识别码;
所述发送模块13,还用于在将修改为发送状态的消息传递至活动日志后,向所述上游应用返回携带所述标识的传递成功响应消息,以使所述上游应用在接收到所述传递成功响应消息后,传递下一条消息;
所述判断模块12,还用于判断是否接收到所述上游应用的携带所述标识的查询消息;所述查询消息为所述上游应用在第三时间范围内未接收到传递成功响应消息时发送的查询消息;
所述判断模块12,还用于在接收到所述上游应用的查询消息时,根据所述查询消息中携带的标识,查询所述活动日志,判断所述活动日志中是否存在与所述标识对应的消息;
所述指示模块17,用于在所述活动日志中存在与所述标识对应的消息时,指示所述上游应用传递下一条消息;
所述指示模块17,还用于在所述活动日志中不存在与所述标识对应的消息时,指示所述上游应用重新发送与所述标识对应的消息。
其中,活动日志中每个消息的标识,为根据包括消息的消息队列的二级索引以及所述消息的内容,经过哈希计算得到的标识。若活动日志中存在与标识对应的消息,则表示活动日志接收到与标识对应的消息,则上游应用不用传递与标识对应的该消息。若活动日志中不存在与标识对应的消息,则表示活动日志未接收到与标识对应的消息,则上游应用需要重新发送与标识对应的该消息。
本实施例中,活动日志中消息结构可以如图10所示,消息中包括:通用唯一识别码(Universally Unique Identifier,UUID)。活动管理器与上游应用的交互过程具体可以包括:1、设置活动管理器向上游应用提交传递成功响应消息的超时时间DT。DT初始化值为60秒,可以自定义。2、上游应用对消息生成UUID,并将UUID记录到消息结构中。然后将消息发送给活动管理器。3、活动管理器获取到消息后将消息存储到leader节点及所有的副本节点,然后向上游应用提交传递成功响应消息。4、如果传递成功响应消息顺利到达上游应用,则上游应用继续传递下一条消息到活动管理器;如果传递成功响应消息在DT时间内没有到达上游应用则转到步骤5。5、上游应用在DT时间内未接收到传递成功响应消息,则再次发送当前消息的UUID到活动管理器,然后活动管理器根据收到的UUID查找当前存储的消息,判断当前存储的消息中是否存在对应的UUID等于收到的UUID的消息,如果存在,则通知上游应用放弃发送当前消息,继续发送下一条消息,否则转到步骤6。6、如果活动管理器没有在当前存储的消息中查找到对应的UUID等于收到的UUID的消息,则通知上游应用重新发送当前消息到活动管理器。
另外,活动管理器与下游应用的交互过程具体可以包括:1、对下游应用增加消息处理完成标识MF,用于记录消息的处理完成状态,MF=0表示消息没处理完成,MF=1表示消息处理完成。2、在下游应用中增加记录日志功能,对消息的UUID、offset、MF进行记录。3、下游应用首先从活动管理器获取到消息,然后将消息的UUID、offset、以及MF=0的值记录到日志数据库中。4、开始对消息进行处理操作,如果处理完成则更新MF值为1,并转到步骤5,如果消息处理过程中下游应用崩溃,则转到步骤6。5、向活动管理器发送处理完成指令,如果处理完成指令发送成功则转到步骤7,否则如果当消息处理完成,但在发送处理完成指令操作前下游应用崩溃了,则转到步骤8。6、重启下游应用时,下游应用重新从活动管理器获取之前的消息,并转到步骤4。7、活动管理器接收到处理完成指令并根据指令中的offset继续提供下一条消息给下游应用,并通知下游应用删除日志数据库中此条消息的记录。8、恢复下游应用后,先到下游应用的日志数据库中查找MF=1的消息,即消息处理状态为完成的消息,将重新向活动管理器发送处理完成指令,转到步骤5。
本实施例中,活动管理器与上游应用、下游应用的上述交互过程,保证上游应用的消息有且仅有一次被发送到活动管理器,活动管理器中的消息有且仅有一次被发送到下游应用,从而保证每条消息都有且仅有一次被处理,进一步实现各应用、活动管理器之间数据的一致性。
本实施例中,上游应用在第三时间范围内未接收到消息对应的传递成功响应消息时,发送查询消息给活动管理器,活动管理器根据查询消息中携带的标识,查询活动日志,判断活动日志中是否存在与标识对应的消息,并根据判断结果返回指示消息,使得上游应用根据活动管理器的指示确定是否需要重新传递该消息,还是传递下一条消息,避免消息的重复传送,避免活动管理器中消息的重复存储,保证活动日志中的每个消息有且仅有一次被处理,进一步实现各应用、活动管理器之间数据的一致性。
为了实现上述实施例,本发明还提出另一种基于微服务架构的数据一致性装置,包括:
存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序。
处理器执行所述程序时实现上述实施例中提供的基于微服务架构的数据一致性方法。
为了实现上述实施例,本发明还提供一种非临时性计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如上所述的基于微服务架构的数据一致性方法。
为了实现上述实施例,本发明还提供一种计算机程序产品,当所述计算机程序产品中的指令处理器执行时,执行一种基于微服务架构的数据一致性方法,所述方法包括:
接收上游应用在执行上游业务前发送的待确认消息,保存所述待确认消息,并向所述上游应用返回所述待确认消息对应的响应消息;
判断是否在第一时间范围内接收到所述上游应用发送的确认消息,所述确认消息为所述上游应用根据所述响应消息执行上游业务后的确认消息;
在第一时间范围内未接收到所述确认消息时,向上游应用发送查询请求;
在接收到上游应用的上游业务已执行的消息时,将待确认消息的待确认状态修改为发送状态,并将修改为发送状态的消息传递至活动日志,以使下游应用监听所述活动日志中的消息,根据所述消息确定是否执行下游业务;
在接收到上游应用的上游业务未执行的消息时,删除所述待确认消息。
图14示出了适于用来实现本申请实施方式的示例性计算机设备的框图。图14显示的计算机设备72仅仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
如图14所示,计算机设备72以通用计算设备的形式表现。计算机设备72的组件可以包括但不限于:一个或者多个处理器或者处理单元76,系统存储器28,连接不同系统组件(包括系统存储器28和处理单元76)的总线18。
总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(Industry StandardArchitecture;以下简称:ISA)总线,微通道体系结构(Micro Channel Architecture;以下简称:MAC)总线,增强型ISA总线、视频电子标准协会(Video Electronics StandardsAssociation;以下简称:VESA)局域总线以及外围组件互连(Peripheral ComponentInterconnection;以下简称:PCI)总线。
计算机设备72典型地包括多种计算机系统可读介质。这些介质可以是任何能够被计算机设备72访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
存储器28可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(Random Access Memory;以下简称:RAM)30和/或高速缓存存储器62。计算机设备72可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统64可以用于读写不可移动的、非易失性磁介质(图14未显示,通常称为“硬盘驱动器”)。尽管图14中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如:光盘只读存储器(Compact Disc Read OnlyMemory;以下简称:CD-ROM)、数字多功能只读光盘(Digital Video Disc Read OnlyMemory;以下简称:DVD-ROM)或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。存储器28可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本申请各实施例的功能。
具有一组(至少一个)程序模块42的程序/实用工具40,可以存储在例如存储器28中,这样的程序模块42包括但不限于操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42通常执行本申请所描述的实施例中的功能和/或方法。
计算机设备72也可以与一个或多个外部设备74(例如键盘、指向设备、显示器54等)通信,还可与一个或者多个使得用户能与该计算机系统/服务器72交互的设备通信,和/或与使得该计算机系统/服务器72能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口52进行。并且,计算机设备72还可以通过网络适配器20与一个或者多个网络(例如局域网(Local AreaNetwork;以下简称:LAN),广域网(Wide Area Network;以下简称:WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器20通过总线18与计算机设备72的其它模块通信。应当明白,尽管图中未示出,可以结合计算机设备72使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
处理单元76通过运行存储在系统存储器28中的程序,从而执行各种功能应用以及数据处理,例如实现前述实施例中提及的方法。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本发明的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现定制逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本发明的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本发明的实施例所属技术领域的技术人员所理解。
在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,"计算机可读介质"可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(ROM),可擦除可编辑只读存储器(EPROM或闪速存储器),光纤装置,以及便携式光盘只读存储器(CDROM)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。
应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。如,如果用硬件来实现和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
此外,在本发明各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。
上述提到的存储介质可以是只读存储器,磁盘或光盘等。尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。

Claims (14)

1.一种基于微服务架构的数据一致性方法,其特征在于,包括:
接收上游应用在执行上游业务前发送的待确认消息,保存所述待确认消息,并向所述上游应用返回所述待确认消息对应的响应消息;
判断是否在第一时间范围内接收到所述上游应用发送的确认消息,所述确认消息为所述上游应用根据所述响应消息执行上游业务后的确认消息;
在第一时间范围内未接收到所述确认消息时,向上游应用发送查询请求;
在接收到上游应用的上游业务已执行的消息时,将待确认消息的待确认状态修改为发送状态,并将修改为发送状态的消息传递至活动日志,以使下游应用监听所述活动日志中的消息,根据所述消息确定是否执行下游业务;
在接收到上游应用的上游业务未执行的消息时,删除所述待确认消息。
2.根据权利要求1所述的方法,其特征在于,还包括:
在第一时间范围内接收到所述确认消息时,根据所述确认消息,将所述待确认消息的待确认状态修改为发送状态,并将修改为发送状态的消息传递至活动日志,以使下游应用监听所述活动日志中的消息,根据所述消息确定是否执行下游业务。
3.根据权利要求1所述的方法,其特征在于,还包括:
接收下游应用的消息获取请求,所述消息获取请求为下游应用对所述活动日志进行监听,确定所述活动日志中包括待获取消息时发送的请求;
根据所述消息获取请求,将所述待获取消息发送至下游应用;
判断是否在第二时间范围内接收到下游应用的执行成功消息,所述执行成功消息为下游应用根据所述待获取消息执行下游业务成功后的消息;
在第二时间范围内未接收到所述执行成功消息时,将所述待获取消息重新投递至活动日志中,以供下游应用监听。
4.根据权利要求3所述的方法,其特征在于,还包括:
在第二时间范围内接收到所述执行成功消息时,将所述待获取消息的发送状态修改为已完成状态,并删除所述活动日志中的所述待获取消息。
5.根据权利要求3所述的方法,其特征在于,还包括:
在所述待获取消息的投递次数大于预设重发次数时,将所述待获取消息的发送状态修改为死亡状态,以供用户处理。
6.根据权利要求1或2所述的方法,其特征在于,所述将所述待确认消息的待确认状态修改为发送状态,并将修改为发送状态的消息传递至活动日志之前,还包括:
接收上游应用发送的所有下游应用的确认操作接口信息和取消操作接口信息;所述确认操作接口信息和所述取消操作接口信息,为所述上游应用执行上游业务完成后发送的;所述上游应用在接收到所有下游应用的预操作成功消息,且接收到所述活动管理器返回的所述响应信息时,执行上游业务;
根据所述确认操作接口信息,调用所有下游应用的确认操作接口;
确定所有下游应用的确认操作接口是否调用成功;
对应的,所述将所述待确认消息的待确认状态修改为发送状态,并将修改为发送状态的消息传递至活动日志,包括:
在所有下游应用的确认操作接口调用成功时,将所述待确认消息的待确认状态修改为发送状态,并将修改为发送状态的消息传递至活动日志。
7.根据权利要求6所述的方法,其特征在于,所述将所述待确认消息的待确认状态修改为发送状态,并将修改为发送状态的消息传递至活动日志之前,还包括:
在存在部分或所有下游应用的确认操作接口未调用成功时,通知所述上游应用删除执行上游业务后的数据,并调用所有下游应用的取消操作接口取消预操作。
8.根据权利要求1所述的方法,其特征在于,还包括:
接收通知应用的通知消息获取请求,所述通知消息获取请求为通知应用对活动日志进行监听,确定所述活动日志中包括待通知消息时发送的请求;
根据所述通知消息获取请求,将所述待通知消息发送至通知应用,以使所述通知应用按照所述待通知消息中的通知规则和通知地址,将所述待通知消息发送给对应的下游应用。
9.根据权利要求1所述的方法,其特征在于,所述活动日志中的每个消息包括:消息的标识;所述标识为通用唯一识别码;
所述将修改为发送状态的消息传递至活动日志后,向所述上游应用返回携带所述标识的传递成功响应消息,以使所述上游应用在接收到所述传递成功响应消息后,传递下一条消息。
10.根据权利要求9所述的方法,其特征在于,还包括:
判断是否接收到所述上游应用的携带所述标识的查询消息;所述查询消息为所述上游应用在第三时间范围内未接收到传递成功响应消息时发送的查询消息;
在接收到所述上游应用的查询消息时,根据所述查询消息中携带的标识,查询所述活动日志,判断所述活动日志中是否存在与所述标识对应的消息;
若所述活动日志中存在与所述标识对应的消息,则指示所述上游应用传递下一条消息;
若所述活动日志中不存在与所述标识对应的消息,则指示所述上游应用重新发送与所述标识对应的消息。
11.一种基于微服务架构的数据一致性装置,其特征在于,包括:
接收模块,用于接收上游应用在执行上游业务前发送的待确认消息,保存所述待确认消息,并向所述上游应用返回所述待确认消息对应的响应消息;
判断模块,用于判断是否在第一时间范围内接收到所述上游应用发送的确认消息,所述确认消息为所述上游应用根据所述响应消息执行上游业务后的确认消息;
发送模块,用于在第一时间范围内未接收到所述确认消息时,向上游应用发送查询请求;
所述发送模块,还用于在接收到上游应用的上游业务已执行的消息时,将待确认消息的待确认状态修改为发送状态,并将修改为发送状态的消息传递至活动日志,以使下游应用监听所述活动日志中的消息,根据所述消息确定是否执行下游业务;
删除模块,用于在接收到上游应用的上游业务未执行的消息时,删除所述待确认消息。
12.一种基于微服务架构的数据一致性装置,其特征在于,包括:
存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1-10中任一所述的基于微服务架构的数据一致性方法。
13.一种非临时性计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-10中任一所述的基于微服务架构的数据一致性方法。
14.一种计算机程序产品,当所述计算机程序产品中的指令处理器执行时,执行一种基于微服务架构的数据一致性方法,所述方法包括:
接收上游应用在执行上游业务前发送的待确认消息,保存所述待确认消息,并向所述上游应用返回所述待确认消息对应的响应消息;
判断是否在第一时间范围内接收到所述上游应用发送的确认消息,所述确认消息为所述上游应用根据所述响应消息执行上游业务后的确认消息;
在第一时间范围内未接收到所述确认消息时,向上游应用发送查询请求;
在接收到上游应用的上游业务已执行的消息时,将待确认消息的待确认状态修改为发送状态,并将修改为发送状态的消息传递至活动日志,以使下游应用监听所述活动日志中的消息,根据所述消息确定是否执行下游业务;
在接收到上游应用的上游业务未执行的消息时,删除所述待确认消息。
CN201711421347.3A 2017-12-25 2017-12-25 基于微服务架构的数据一致性方法以及装置 Active CN108153598B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201711421347.3A CN108153598B (zh) 2017-12-25 2017-12-25 基于微服务架构的数据一致性方法以及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201711421347.3A CN108153598B (zh) 2017-12-25 2017-12-25 基于微服务架构的数据一致性方法以及装置

Publications (2)

Publication Number Publication Date
CN108153598A true CN108153598A (zh) 2018-06-12
CN108153598B CN108153598B (zh) 2021-06-25

Family

ID=62465863

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201711421347.3A Active CN108153598B (zh) 2017-12-25 2017-12-25 基于微服务架构的数据一致性方法以及装置

Country Status (1)

Country Link
CN (1) CN108153598B (zh)

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109710625A (zh) * 2018-12-20 2019-05-03 中科曙光国际信息产业有限公司 基于可靠消息的分布式一致性的实现方法
CN109948994A (zh) * 2018-12-14 2019-06-28 深圳壹账通智能科技有限公司 一种即时通信方法、装置、计算机系统及可读存储介质
CN110049113A (zh) * 2019-04-02 2019-07-23 中国联合网络通信集团有限公司 业务消息处理方法及装置
CN110222042A (zh) * 2019-05-30 2019-09-10 口碑(上海)信息技术有限公司 用于确定已核对业务数据的方法、装置、设备及系统架构
CN110995803A (zh) * 2019-11-22 2020-04-10 用友网络科技股份有限公司 上、下游业务处理方法及系统、计算机可读存储介质
WO2020082942A1 (zh) * 2018-10-24 2020-04-30 苏宁云计算有限公司 响应超时处理方法、服务器及客户端响应超时处理系统
CN111124717A (zh) * 2019-12-27 2020-05-08 紫光云(南京)数字技术有限公司 消息投递方法、系统及计算机存储介质
CN111786875A (zh) * 2020-06-10 2020-10-16 武汉遂意语联网络科技有限公司 基于分布式架构的数据处理方法及装置
CN112579479A (zh) * 2020-12-07 2021-03-30 海光信息技术股份有限公司 在维护缓存一致性时维护事务次序的处理器及其方法
CN113783666A (zh) * 2020-11-27 2021-12-10 北京京东振世信息技术有限公司 一种处理业务的方法和装置
CN114327955A (zh) * 2021-12-31 2022-04-12 四川新网银行股份有限公司 一种中心化应用系统的集群消息传递方法及系统

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020178177A1 (en) * 2001-05-28 2002-11-28 Park Nam Shik Parallel logging method for transaction processing system
US20060095438A1 (en) * 2004-10-29 2006-05-04 Fachan Neal T Non-blocking commit protocol systems and methods
US20130246368A1 (en) * 2012-03-16 2013-09-19 Oracle International Corporation Systems and methods for supporting inline delegation of middle-tier transaction logs to database
CN105824842A (zh) * 2015-01-07 2016-08-03 阿里巴巴集团控股有限公司 分布式事务处理方法及其系统
CN106155775A (zh) * 2015-04-28 2016-11-23 阿里巴巴集团控股有限公司 消息处理方法、设备及系统
CN106503132A (zh) * 2016-10-19 2017-03-15 广州快塑电子商务有限公司 一种分布式事务管理方法及系统
CN106777026A (zh) * 2016-12-08 2017-05-31 用友网络科技股份有限公司 支持微服务架构事务最终一致性的方法、装置及系统
CN106874130A (zh) * 2017-02-06 2017-06-20 西多多信息科技(北京)有限公司 一种微服务架构中分布式事务的处理方法
CN107332906A (zh) * 2017-06-30 2017-11-07 郑州云海信息技术有限公司 分布式系统事务管理方法及装置

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020178177A1 (en) * 2001-05-28 2002-11-28 Park Nam Shik Parallel logging method for transaction processing system
US20060095438A1 (en) * 2004-10-29 2006-05-04 Fachan Neal T Non-blocking commit protocol systems and methods
US20130246368A1 (en) * 2012-03-16 2013-09-19 Oracle International Corporation Systems and methods for supporting inline delegation of middle-tier transaction logs to database
CN105824842A (zh) * 2015-01-07 2016-08-03 阿里巴巴集团控股有限公司 分布式事务处理方法及其系统
CN106155775A (zh) * 2015-04-28 2016-11-23 阿里巴巴集团控股有限公司 消息处理方法、设备及系统
CN106503132A (zh) * 2016-10-19 2017-03-15 广州快塑电子商务有限公司 一种分布式事务管理方法及系统
CN106777026A (zh) * 2016-12-08 2017-05-31 用友网络科技股份有限公司 支持微服务架构事务最终一致性的方法、装置及系统
CN106874130A (zh) * 2017-02-06 2017-06-20 西多多信息科技(北京)有限公司 一种微服务架构中分布式事务的处理方法
CN107332906A (zh) * 2017-06-30 2017-11-07 郑州云海信息技术有限公司 分布式系统事务管理方法及装置

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
BO SANG等: "Precise,Scalable,and Online Request Tracing for Multitier Services of Black Boxes", 《IEEE TRANSACTIONS ON PARALLEL AND DISTRIBUTED SYSTEMS》 *
徐泽中: "数据集中模式下应用监控通用指标探析与实现", 《中国金融电脑》 *

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020082942A1 (zh) * 2018-10-24 2020-04-30 苏宁云计算有限公司 响应超时处理方法、服务器及客户端响应超时处理系统
CN109948994A (zh) * 2018-12-14 2019-06-28 深圳壹账通智能科技有限公司 一种即时通信方法、装置、计算机系统及可读存储介质
CN109710625A (zh) * 2018-12-20 2019-05-03 中科曙光国际信息产业有限公司 基于可靠消息的分布式一致性的实现方法
CN110049113A (zh) * 2019-04-02 2019-07-23 中国联合网络通信集团有限公司 业务消息处理方法及装置
CN110222042B (zh) * 2019-05-30 2020-06-16 口碑(上海)信息技术有限公司 用于确定已核对业务数据的方法、装置、设备及系统架构
CN110222042A (zh) * 2019-05-30 2019-09-10 口碑(上海)信息技术有限公司 用于确定已核对业务数据的方法、装置、设备及系统架构
CN110995803A (zh) * 2019-11-22 2020-04-10 用友网络科技股份有限公司 上、下游业务处理方法及系统、计算机可读存储介质
CN111124717A (zh) * 2019-12-27 2020-05-08 紫光云(南京)数字技术有限公司 消息投递方法、系统及计算机存储介质
CN111786875A (zh) * 2020-06-10 2020-10-16 武汉遂意语联网络科技有限公司 基于分布式架构的数据处理方法及装置
CN113783666A (zh) * 2020-11-27 2021-12-10 北京京东振世信息技术有限公司 一种处理业务的方法和装置
CN112579479A (zh) * 2020-12-07 2021-03-30 海光信息技术股份有限公司 在维护缓存一致性时维护事务次序的处理器及其方法
CN112579479B (zh) * 2020-12-07 2022-07-08 成都海光微电子技术有限公司 在维护缓存一致性时维护事务次序的处理器及其方法
CN114327955A (zh) * 2021-12-31 2022-04-12 四川新网银行股份有限公司 一种中心化应用系统的集群消息传递方法及系统
CN114327955B (zh) * 2021-12-31 2024-04-16 四川新网银行股份有限公司 一种中心化应用系统的集群消息传递方法及系统

Also Published As

Publication number Publication date
CN108153598B (zh) 2021-06-25

Similar Documents

Publication Publication Date Title
CN108153598A (zh) 基于微服务架构的数据一致性方法以及装置
US7886295B2 (en) Connection manager, method, system and program product for centrally managing computer applications
CN107657518A (zh) 一种基于事件的流程处理方法及相关装置和服务器
CN109582738A (zh) 一种处理高并发秒杀活动的方法
US20090013047A1 (en) Method and apparatus for managing messages related to workflows
CN110515748B (zh) 一种消息处理的方法及相关装置
CN109300217A (zh) 排队叫号方法、计算机存储介质、排队叫号服务器及系统
US20050229114A1 (en) User interface for receiving information via a transmission medium
CN108768837A (zh) 消息处理方法及相关装置
US11928344B1 (en) System and method for managing buffers in a computer system
CN110287146A (zh) 应用下载的方法、设备和计算机存储介质
CN110751458A (zh) 一种业务审批方法、装置和系统
US8761374B2 (en) Category based organization and monitoring of customer service help sessions
CN102893296B (zh) 在合作式环境中选择性地控制信息流
US9961120B2 (en) System and method for managing concurrent communications in a contact center
CN110378494B (zh) 远程面签方法、装置、存储介质及计算机设备
JP2009157786A (ja) メッセージ送信制御方法、メッセージ送信制御装置、及びメッセージ送信制御プログラム
JP2896394B2 (ja) ファイルサーバ装置
CN112260933B (zh) 通信的方法、装置、电子设备及介质
CN114613479A (zh) 一种问诊任务分配的方法和装置
JPH10190720A (ja) 業務支援装置
CN110378789A (zh) 争议交易的解决方法、系统及计算机可读存储介质
JP2001350660A (ja) プログラム実行管理装置及びプログラムを記録したコンピュータ読み取り可能な記録媒体
CN114003611A (zh) 多系统间数据一致性处理方法以及相关装置
JP2002163222A (ja) 仮想キャラクターを管理するサーバ、クライアントコンピュータおよびサーバークライアント間の仮想キャラクターデータの同期処理方法。

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
GR01 Patent grant
GR01 Patent grant