微服务架构下的分布式事务解决方法技术

技术编号:15899069 阅读:40 留言:0更新日期:2017-07-28 21:42
本发明专利技术提供了一种微服务架构下的分布式事务解决方法。该方法包括:用户客户端向前端网站服务器发起注册请求,前端网站服务器将用户的注册请求发送给用户微服务服务器;用户微服务服务器处理所述用户的注册事务事件,将用户的注册事务事件发送给消息中间件,消息中间件将用户的注册事务事件转发给账户微服务服务器;账户微服务服务器处理用户的注册事务事件。本发明专利技术通过各微服务本身的事务消息重发机制和事务重新处理机制保证消息的可靠传递与最终一致性,使方案的实现不依赖于第三方的消息中间件的可靠传递机制,从而弱化与某种类型的消息中间件的耦合,本发明专利技术通过全局审计和自愈机制,能够及时发现事务消息事件的异常丢失并自愈。

【技术实现步骤摘要】
微服务架构下的分布式事务解决方法
本专利技术涉及无线通信
,尤其涉及一种微服务架构下的分布式事务解决方法。
技术介绍
传统的单体式应用不足以满足现代互联网应用的业务量和数据量,这个时候需要对应用和数据库进行拆分,就出现了一个应用需要同时访问两个或两个以上的数据库情况。此时我们使用分布式事务来保证一致性,也就是我们常说的2PC(TwoPhaseCommitmentProtocol,两阶段提交协议的缩写)。然而,2PC这种传统分布式事务不是微服务架构中一致性的最佳选择:首先,对于微服务架构来说,不仅对数据库进行了拆分,对应用也进行了拆分,数据访问变得更加复杂,这是因为数据都是微服务私有的,唯一可访问的方式就是通过API(ApplicationProgrammingInterface,应用程序编程接口),而2PC这种方式并不适用于这种软件架构。其次,不同的微服务经常使用不同的数据库。应用会产生各种不同类型的数据,关系型数据库并不一定是最佳选择。基于微服务的应用一般都使用关系型数据库和非关系型数据库结合的模式,但是这些非关系型数据大多数并不支持2PC。2PC方式不适合于微服务架构,微服务架构下最主要的方式是可靠事件模式,该模式主要依赖高可靠性的消息中间件,通过第三方消息中间件传递事务消息,从而达到微服务架构下的事务最终一致性。这种模式下有以下缺点:1:对消息中间件本身要求极高,事务所有消息在消息中间件中存储,一旦消息中间件发生故障,不仅影响业务,还可能造成无法恢复的数据丢失;2:微服务系统对消息中间件高度依赖,造成应用系统与第三方中间件的强耦合性,一旦选择某款第三方中间件,就很难替换,如需替换,则需要针对新选择的第三方消息中间件进行复杂系统改造;3:高可靠性的消息中间件往往是商用软件产品,增加系统建设成本。
技术实现思路
本专利技术的实施例提供了一种微服务架构下的分布式事务解决方法。为了实现上述目的,本专利技术采取了如下技术方案。一种微服务架构下的分布式事务解决方法,包括:用户客户端向前端网站服务器发起注册请求,所述前端网站服务器将用户的注册请求发送给用户微服务服务器;所述用户微服务服务器处理所述用户的注册事务事件,将所述用户的注册事务事件发送给消息中间件,所述消息中间件将所述用户的注册事务事件转发给账户微服务服务器;所述账户微服务服务器处理所述用户的注册事务事件。进一步地,所述的用户微服务服务器处理所述用户的注册事务事件,将所述用户的注册事务事件发送给消息中间件,包括:用户微服务服务器接收到所述前端网站服务器发送过来的用户的注册请求后,与用户微服务数据库进行数据通信,在所述用户微服务数据库中的用户信息表中增加所述用户的记录,在所述用户微服务数据库中的事务消息发送记录表中保存所述用户的注册事务消息事件;所述用户微服务服务器将注册事务事件发送给消息中间件,所述消息中间件将注册事务事件转发给所述账户微服务服务器;所述用户微服务服务器根据注册事务事件的发送结果更新所述事务消息发送记录表对应的该消息的发送结果状态,该发送结果状态包括发送成功或者发送失败;所述用户微服务服务器将所述用户的注册结果返回给所述前端网站服务器,所述前端网站服务器将所述用户的注册结果返回给所述用户客户端。进一步地,所述的用户微服务服务器处理所述用户的注册事务事件,还包括:所述用户微服务服务器通过机制检测所述用户微服务数据库中的事务消息发送记录表中的消息的发送结果状态是否为发送成功,如果发送结果状态为发送失败,则重新将所述用户的注册事务事件发送给所述消息中间件。进一步地,所述的账户微服务服务器处理所述用户的注册事务事件,包括:所述账户微服务服务器接收到所述消息中间件发送过来的所述用户的注册事务事件后,所述账户微服务服务器与所述账户微服务数据库进行数据通信,在所述账户微服务数据库中的事务消息处理记录表中保存接收到的事务消息,在所述账户微服务数据库中的账户信息表中保存用户账户信息,并根据处理结果更新所述事务消息处理记录表对应记录的处理结果状态,该处理结果状态包括处理成功或者处理失败。进一步地,所述的账户微服务服务器处理所述用户的注册事务事件,还包括:所述账户微服务服务器通过机制检测所述事务消息处理记录表中的记录的处理结果状态是否为处理成功,如果处理结果状态为处理失败,则会重新处理对应用户的注册事务事件。进一步地,所述的方法还包括:审计微服务服务器与所述用户微服务服务器、所述账户微服务服务器通过无线通信网络连接,所述审计微服务服务器按照设定时间间隔检测用户微服务服务器、账户微服务服务在事务发送、接收和处理完成情况,将检测结果存储在审计自愈服务数据库中的审计历史记录表和事务消息路由规则表中;步骤1、所述审计微服务服务器的审计自愈服务为定时任务,审计自愈周期开始;步骤2、所述审计微服务服务器检查审计历史记录表中的历史事务消息丢失记录状态为未恢复的记录,查看是否已重发成功,消费者微服务已收到该事务消息,则执行步骤3,否则执行步骤4;步骤3、对应的消费者微服务已收到该事务消息,则表明已经自愈,标记审计历史记录表中该历史事务消息丢失记录状态为已恢复;步骤4、对应的消费者微服务未收到该事务消息,则调用对应的该事件的生产者微服务,标记事务消息发送记录表对应的记录为重新发送;步骤5、遍历事务消息路由规则表,检查上次审计时间点至当前时间的事务事件是否丢失,未发现新的丢失记录则执行步骤7,否则执行步骤6;步骤6、发现丢失的事务消息,则调用对应的该事件的生产者微服务的重发表示接口,标记事务消息发送记录表MESSAGE_SEND_RECORD对应的记录为重新发送,并将该记录写入审计历史记录表AUDIT_HISTORY_RECORD供下次审计时重新检查;发现丢失的事务消息,则调用对应的该事件的生产者微服务,标记事务消息发送记录表对应的记录为重新发送;步骤7、历史记录和新的审计周期时间范围内是否有事件丢失,有丢失则执行步骤8,否则执行步骤9;步骤8、发送对应的告警事件到相应的监控平台;步骤9、记录此次审计的时间点供下个周期到来时作为起始时间点;步骤10、所述审计微服务服务器本次的审计和自愈处理结束。由上述本专利技术的实施例提供的技术方案可以看出,本专利技术实施例通过各微服务本身的事务消息重发机制和事务重新处理机制保证消息的可靠传递与最终一致性,使方案的实现不依赖于第三方的消息中间件的可靠传递机制,从而弱化与某种类型的消息中间件的耦合,消息中间件可随意替换。本专利技术实施例通过全局审计和自愈机制,能够及时发现事务消息事件的异常丢失并自愈,从而达到微服务架构下分布式事务的最终一致性。本专利技术附加的方面和优点将在下面的描述中部分给出,这些将从下面的描述中变得明显,或通过本专利技术的实践了解到。附图说明为了更清楚地说明本专利技术实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。图1为本专利技术实施例提供的一种微服务架构的网络拓扑图;图2为本专利技术实施例提供的一种微服务架构的软件架构图;图3为本专利技术实施例提供的一种微服务架构场景下的用户注册的事务流程;本文档来自技高网
...
微服务架构下的分布式事务解决方法

【技术保护点】
一种微服务架构下的分布式事务解决方法,其特征在于,包括:用户客户端向前端网站服务器发起注册请求,所述前端网站服务器将用户的注册请求发送给用户微服务服务器;所述用户微服务服务器处理所述用户的注册事务事件,将所述用户的注册事务事件发送给消息中间件,所述消息中间件将所述用户的注册事务事件转发给账户微服务服务器;所述账户微服务服务器处理所述用户的注册事务事件。

【技术特征摘要】
1.一种微服务架构下的分布式事务解决方法,其特征在于,包括:用户客户端向前端网站服务器发起注册请求,所述前端网站服务器将用户的注册请求发送给用户微服务服务器;所述用户微服务服务器处理所述用户的注册事务事件,将所述用户的注册事务事件发送给消息中间件,所述消息中间件将所述用户的注册事务事件转发给账户微服务服务器;所述账户微服务服务器处理所述用户的注册事务事件。2.根据权利要求1所述的微服务架构下的分布式事务解决方法,其特征在于,所述的用户微服务服务器处理所述用户的注册事务事件,将所述用户的注册事务事件发送给消息中间件,包括:用户微服务服务器接收到所述前端网站服务器发送过来的用户的注册请求后,与用户微服务数据库进行数据通信,在所述用户微服务数据库中的用户信息表中增加所述用户的记录,在所述用户微服务数据库中的事务消息发送记录表中保存所述用户的注册事务消息事件;所述用户微服务服务器将注册事务事件发送给消息中间件,所述消息中间件将注册事务事件转发给所述账户微服务服务器;所述用户微服务服务器根据注册事务事件的发送结果更新所述事务消息发送记录表对应的该消息的发送结果状态,该发送结果状态包括发送成功或者发送失败;所述用户微服务服务器将所述用户的注册结果返回给所述前端网站服务器,所述前端网站服务器将所述用户的注册结果返回给所述用户客户端。3.根据权利要求2所述的微服务架构下的分布式事务解决方法,其特征在于,所述的用户微服务服务器处理所述用户的注册事务事件,还包括:所述用户微服务服务器通过机制检测所述用户微服务数据库中的事务消息发送记录表中的消息的发送结果状态是否为发送成功,如果发送结果状态为发送失败,则重新将所述用户的注册事务事件发送给所述消息中间件。4.根据权利要求2或3所述的微服务架构下的分布式事务解决方法,其特征在于,所述的账户微服务服务器处理所述用户的注册事务事件,包括:所述账户微服务服务器接收到所述消息中间件发送过来的所述用户的注册事务事件后,所述账户微服务服务器与所述账户微服务数据库进行数据通信,在所述账户微服务数据库中的事务消息处理记录表中保存接收到的事务消息,在所述账户微服务数据库中的账户信息表中保存用户账户信息,并根据处理结果更新所述事务消息处理记...

【专利技术属性】
技术研发人员:周达天黄祖真胡伟
申请(专利权)人:北京交通大学
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1