CN112839110B - 一种分布式系统中基于网络超时的问题处理的实现方法 - Google Patents
一种分布式系统中基于网络超时的问题处理的实现方法 Download PDFInfo
- Publication number
- CN112839110B CN112839110B CN202110245526.6A CN202110245526A CN112839110B CN 112839110 B CN112839110 B CN 112839110B CN 202110245526 A CN202110245526 A CN 202110245526A CN 112839110 B CN112839110 B CN 112839110B
- Authority
- CN
- China
- Prior art keywords
- service
- overtime
- interface
- processing
- user
- 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.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1095—Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/14—Session management
- H04L67/146—Markers for unambiguous identification of a particular session, e.g. session cookie or URL-encoding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/60—Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
Abstract
本发明提供了一种分布式系统中网络通信容错的实现方法,包括:同步调用超时解决方法,用于解决多个服务器同步调用超时的问题;异步调用超时解决方法,用于解决多个服务器择一调用时异步调用超时的问题;消息队列异步处理超时解决方法,用于解决多个服务器之间相互调用超时的问题。本发明所述的实现方法,可以保证在分布式系统中,服务端不会违背服务规定契约,不会返回客户端不认识的结果;发生网络通信超时或者网络异常断开时,用户的请求操作和数据不会发生丢失,即使系统宕机,恢复后仍可查询到之前未完成的操作,继续后续的处理,提高系统的容错性和健壮性。
Description
技术领域
本发明属于网络通信技术领域,尤其是涉及一种分布式系统中基于网络超时的问题处理的实现方法。
背景技术
当服务系统之间通过某种网络通信协议互相通信和交互,完成特定的功能时,在网络稳定且正常的情况下,各个服务可以正常运作。当出现网络出现错误时,需要对失败的请求做特定的处理,针对业务不同,需要对失败的请求作出不同的处理。
由于网络通信的不稳定,在设计系统的时候,必须考虑到对网络通信的容错,特别是对调用超时问题的处理,往往对超时问题处理的不够全面,针对此情况,需要一个全面的超时处理方案。
发明内容
有鉴于此,本发明旨在提出一种分布式系统中基于网络超时的问题处理的实现方法,以解决由于网络通信的不稳定,在设计系统的时候,考虑到对网络通信的容错,对调用超时问题的处理,往往对超时问题处理的不够全面的问题。
为达到上述目的,本发明的技术方案是这样实现的:
一种分布式系统中基于网络超时的问题处理的实现方法,包括:
同步调用超时解决方法,用于解决多个服务器同步调用超时的问题;
异步调用超时解决方法,用于解决多个服务器择一调用时异步调用超时的问题;
消息队列异步处理超时解决方法,用于解决多个服务器之间相互调用超时的问题。
进一步的,同步调用超时解决方法包括:两状态的接口调用超时解决方法和三状态的同步接口调用超时解决方法,用于解决同步模式中使用方调用服务超时、服务内部相互调用超时的问题。
进一步的,两状态的接口调用超时解决方法具体过程如下:
当同步调用模式发生在使用方调用服务超时时,服务使用方通过查询接口,进行查询原因并进行相应处理;
两状态的接口中同步调用模式发生在使用方调用超时时查询以及处理过程如下:服务使用方通过查询操作处理结果的接口,得知超时的操作的处理结果,如果成功,则进行后续操作,如果失败,则进行重试;如果查询操作处理结果的接口返回的是未知状态,服务使用方需要使用同一个请求ID进行重试;
当同步调用模式发生在多个服务内部调用超时时,其中一个服务返回失败,同时调用下一服务的冲正接口进行处理;
两状态的接口中同步调用模式方式在服务内部调用超时时处理过程如下:服务2的冲正接口判断之前是否接收到请求,如果接收到并做了处理,则应该做反向的回滚操作,如果服务2之前没有收到处理请求,则忽略冲正请求。
进一步的,三状态的同步接口调用超时解决方法具体过程如下:
当同步调用模式发生在使用方调用服务超时时,使用方通过多个服务中的初始服务中的查询接口进行处理;
三状态的接口中同步调用模式发生在使用方调用服务超时时同步处理过程如下:初始服务接口向使用方返回网络超时的状态,网络超时状态使使用方将超时认为在处理中,初始服务的查询接口查询以及处理,处理后初始服务的接口续补齐上一个请求的处理状态,根据状态进行后续的操作;
当同步调用模式发生在多个服务内部调用超时时,多个服务中初始服务返回给使用方一个处理中的状态,变相地把同步接口变为异步接口,进行超时处理;
三状态的接口中同步调用模式发生在多个服务内部调用服务超时时超时处理过程如下:返回给服务使用方处理中的状态后,多个服务中的初始服务尽最大努力补偿执行出错的部分,初始服务通过后方服务的查询接口得到最新的请求处理状态,如果后方服务没有明确回复,则可以尝试重新发送请求。
进一步的,异步调用超时解决方法具体过程如下:异步调用接口超时解决方法、异步调用内部超时解决方法、异步调用回调超时解决方法,用于解决异步调用模式中异步调用超时的问题。
进一步的,异步调用接口超时解决方法具体过程如下:异步调用接口超时发生在使用方调用初始服务的受理接口是,初始服务接口向使用方返回网络超时的状态,网络超时状态使使用方将超时认为在处理中,初始服务的查询接口查询以及处理,处理后初始服务的接口续补齐上一个请求的处理状态,根据状态进行后续的操作。
进一步的,异步调用内部超时解决方法包括以下过程:当内部服务调用发生超时时,使用方收到的结果是受理中,初始服务需尽快将用户请求操作处理成功,通过下一服务的查询接口获得最新状态,根据状态补偿后续的操作,处理完成后,将处理结果通过异步回调通知接口,将处理结果通知给服务使用方。
进一步的,异步调用回调超时解决方法具体过程如下:初始服务通过回调通知使用方,如果遇到超时,则初始服务重新继续补偿,设计一个通知时间按一定时间间隔递增的策略,直到通知成功为止。
进一步的,消息队列异步处理超时解决方法具体过程如下:生产者超时解决方法、消费者消费消息超时解决方法,用于解决多个服务器之间消息队列异步处理模式中异步处理超时。
进一步的,生产者超时解决方法具体过程如下:初始服务投递消息发生超时,初始服务在发送消息前将消息持久化到数据库中,状态哦标记为待发送,如果发送失败,则开启定时任务定时从数据库捞取未发送的消息进行重新发送,直到发送成功为止;
消费者消费消息超时解决方法包括以下过程:消费者消费消息超时需要根据消息丢失的容忍度来做不同的处理,如果允许消息丢失,则根据消息队列的配置,如果消费者从服务器取走消息后,消息队列立即移除此消息,无论超时后是否处理成功;如果不允许消息丢失,则消费者取走消息后,当消费端处理完成后,需要手动将处理结果提交到消息队列,消息队列再将此条消息移除,否则无论超时是否处理成功,消息都不会丢失。
相对于现有技术,本发明所述的一种分布式系统中基于网络超时的问题处理的实现方法具有以下有益效果:
本发明所述的实现方法,可以保证在分布式系统中,服务端不会违背服务规定契约,不会返回客户端不认识的结果;发生网络通信超时或者网络异常断开时,用户的请求操作和数据不会发生丢失,即使系统宕机,恢复后仍可查询到之前未完成的操作,继续后续的处理,提高系统的容错性和健壮性。
附图说明
构成本发明的一部分的附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1为本发明实施例所述的分布式系统基于网络超时问题的处理方式示意图;
图2为本发明实施例所述的同步调用模式示意图;
图3为本发明实施例所述的接口异步调用模式示意图;
图4为本发明实施例所述的消息队列异步处理模式示意图;
图5为本发明实施例所述的两状态同步接口发生在使用方调用超时示意图;
图6为本发明实施例所述的两状态同步接口生在内部服务调用超时示意图;
图7为本发明实施例所述的三状态同步接口调用超时发生在使用方示意图;
图8为本发明实施例所述的三状态同步接口调用超时发生在内部服务示意图;
图9为本发明实施例所述的异步调用接口超时处理示意图;
图10为本发明实施例所述的异步调用内部超时处理示意图;
图11为本发明实施例所述的异步调用回调超时处理示意图;
图12为本发明实施例所述的消息队列异步处理模式生产者超时示意图;
图13为本发明实施例所述的消息队列异步处理模式消费者超时示意图。
具体实施方式
需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。
在本发明的描述中,需要理解的是,术语“中心”、“纵向”、“横向”、“上”、“下”、“前”、“后”、“左”、“右”、“竖直”、“水平”、“顶”、“底”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”等的特征可以明示或者隐含地包括一个或者更多个该特征。在本发明的描述中,除非另有说明,“多个”的含义是两个或两个以上。
在本发明的描述中,需要说明的是,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以通过具体情况理解上述术语在本发明中的具体含义。
下面将参考附图并结合实施例来详细说明本发明。
如图1至图13所示,一种分布式系统中基于网络超时的问题处理的实现方法,包括:
同步调用超时解决方法,用于解决多个服务器同步调用超时的问题;
异步调用超时解决方法,用于解决多个服务器择一调用时异步调用超时的问题;
消息队列异步处理超时解决方法,用于解决多个服务器之间相互调用超时的问题。
同步调用超时解决方法包括两状态的接口调用超时解决方法和三状态的同步接口调用超时解决方法,用于解决同步模式中使用方调用服务超时、服务内部相互调用超时的问题。
两状态的接口调用超时解决方法具体过程如下;
当同步调用模式发生在使用方调用服务超时时,服务使用方通过查询接口,进行查询原因并进行相应处理;
两状态的接口中同步调用模式发生在使用方调用超时时查询以及处理过程如下:服务使用方通过查询操作处理结果的接口,得知超时的操作的处理结果,如果成功,则进行后续操作,如果失败,则进行重试;如果查询操作处理结果的接口返回的是未知状态,服务使用方需要使用同一个请求ID进行重试;
当同步调用模式发生在多个服务内部调用超时时,其中一个服务返回失败,同时调用下一服务的冲正接口进行处理;
两状态的接口中同步调用模式方式在服务内部调用超时时处理过程如下:服务2的冲正接口判断之前是否接收到请求,如果接收到并做了处理,则应该做反向的回滚操作,如果服务2之前没有收到处理请求,则忽略冲正请求。
三状态的同步接口调用超时解决方法具体过程如下:
当同步调用模式发生在使用方调用服务超时时,使用方通过多个服务中的初始服务中的查询接口进行处理;
三状态的接口中同步调用模式发生在使用方调用服务超时时同步处理过程如下:初始服务接口向使用方返回网络超时的状态,网络超时状态使使用方将超时认为在处理中,初始服务的查询接口查询以及处理,处理后初始服务的接口续补齐上一个请求的处理状态,根据状态进行后续的操作;
当同步调用模式发生在多个服务内部调用超时时,多个服务中初始服务返回给使用方一个处理中的状态,变相地把同步接口变为异步接口,进行超时处理;
三状态的接口中同步调用模式发生在多个服务内部调用服务超时时超时处理过程如下:返回给服务使用方处理中的状态后,多个服务中的初始服务尽最大努力补偿执行出错的部分,初始服务通过后方服务的查询接口得到最新的请求处理状态,如果后方服务没有明确回复,则可以尝试重新发送请求。
异步调用超时解决方法具体过程如下:异步调用接口超时解决方法、异步调用内部超时解决方法、异步调用回调超时解决方法,用于解决异步调用模式中异步调用超时的问题。
异步调用接口超时解决方法具体过程如下:异步调用接口超时发生在使用方调用初始服务的受理接口是,初始服务接口向使用方返回网络超时的状态,网络超时状态使使用方将超时认为在处理中,初始服务的查询接口查询以及处理,处理后初始服务的接口续补齐上一个请求的处理状态,根据状态进行后续的操作。
异步调用内部超时解决方法具体过程如下:当内部服务调用发生超时时,使用方收到的结果是受理中,初始服务需尽快将用户请求操作处理成功,通过下一服务的查询接口获得最新状态,根据状态补偿后续的操作,处理完成后,将处理结果通过异步回调通知接口,将处理结果通知给服务使用方。
异步调用回调超时解决方法具体过程如下:初始服务通过回调通知使用方,如果遇到超时,则初始服务重新继续补偿,设计一个通知时间按一定时间间隔递增的策略,直到通知成功为止。
消息队列异步处理超时解决方法具体过程如下:生产者超时解决方法、消费者消费消息超时解决方法,用于解决多个服务器之间消息队列异步处理模式中异步处理超时。
生产者超时解决方法包括以下过程:初始服务投递消息发生超时,初始服务在发送消息前将消息持久化到数据库中,状态哦标记为待发送,如果发送失败,则开启定时任务定时从数据库捞取未发送的消息进行重新发送,直到发送成功为止;
消费者消费消息超时解决方法包括以下过程:消费者消费消息超时需要根据消息丢失的容忍度来做不同的处理,如果允许消息丢失,则根据消息队列的配置,如果消费者从服务器取走消息后,消息队列立即移除此消息,无论超时后是否处理成功;如果不允许消息丢失,则消费者取走消息后,当消费端处理完成后,需要手动将处理结果提交到消息队列,消息队列再将此条消息移除,否则无论超时是否处理成功,消息都不会丢失。
1、交互模式介绍:
同步调用模式介绍:
如图2所示,在同步调用模式中,服务1调用服务2,服务1的线程阻塞等待服务2返回处理结果,如果服务2一致不返回处理结果,则服务1一直等待到超时为止。
同步调用模式适用于大规模、高并发的短小操作,而不使用于后端负载较高的场景。
接口异步调用模式介绍:
如图3所示,在接口异步调用模式中,服务1请求服务2受理某项任务,服务2受理后即刻返回给服务1受理结果,如果受理成功,则服务1继续做其他任务,而服务2异步的处理这项任务,直到服务2处理完这项任务后,才反向的通知服务1任务已经完成,服务1再做后续处理。
接口异步调用模式适用于非核心链路上负载较高的处理环节,这个环节经常耗时较长,且对时效性要求不高。
消息队列异步处理模式介绍如下:
如图4所示,消息队列异步处理模式利用消息队列作为通信机制,在这种交互模式中,通常服务1只需将某种事件传递给服务2,而不需要等待服务2返回结果。在这样的场景下,服务1与服务2可以充分解耦,并且在大规模、高并发的微服务系统中,消息队列对流量具有消峰的功能。
消息队列异步处理模式与接口异步调用模式类似,多应用于非核心链路上负载较高的处理环节中,并且服务的上游不关心下游的处理结果,下游也不需要向上游返回处理结果。
1.不同模式的超时解决方案
1)同步调用模式下的解决方案
在同步调用模式下,对外的接口会提供服务契约,契约定义了服务的处理结果会通过返回值
返回给使用方,对返回的状态定义分为以下两种。
两状态的同步接口,返回成功和失败;
三状态的同步接口,返回成功、失败和处理中。
a)两状态的同步接口
这种情况服务的契约中规定了两种互斥的状态,服务的处理结果必须是成功或者失败,这种情况可能发生两种同步调用超时。
如图5所示,第一种同步调用超时发生在使用方调用此同步接口的过程中;
针对这个问题,服务使用方可以通过查询操作处理结果的接口,得知超时的操作的处理结果,如果成功,则进行后续操作,如果失败,则可以进行重试;如果查询操作处理结果的接口返回的是未知状态,服务使用方需要使用同一个请求ID进行重试,服务1也必须实现请求处理的幂等性。
如图6所示,第二种同步调用超时发生在内部服务1调用内部服务2的过程中;
当发生内部服务超时的情况时,由于服务1对外返回的状态只包含成功或者失败,此时服务1必须使用快速失败的策略。针对这个超时错误,服务1快速返回失败,同时调用内部服务2的冲正接口,服务2的冲正接口可以判断之前是否接收到请求,如果接收到并做了处理,则应该做反向的回滚操作,如果服务2之前没有收到处理请求,则忽略冲正请求。
b)三状态的同步接口
这种情况的服务契约中规定了三种处理结果,包含成功、失败和处理中。对于超时等系统错误时,可以认为是处理中状态的一个特例,超时被认为是内部暂时的问题,随后可以被修复。因此,可能在一定的时间内告知使用方在处理中,随后修复问题并补偿执行,达到最大化请求处理成功的目标,不至于让使用方重试,提升用户体验。
这种情况下也可能发生两种同步调用超时。
如图7所示,第一种同步调用超时发生在使用方调用此同步接口的过程中;
这种情况与两状态同步接口超时场景类似,使用方调用服务1的接口,由于网络原因获得超时的结果,这时使用方应该将超时看作处理中的一个特例,使用服务1的查询操作处理结果接口,后续补齐上一个请求的处理状态。
如图8所示,第二种同步调用超时发生在内部服务1调用服务2的过程中;
这种情况不同于两状态同步接口,由于服务1可以返回给服务使用方一个处理中的状态,变相地把同步接口变成异步接口,达到最终一致的结果。这种场景更倾向于给用户更好的体验,尽最大努力成功处理用户发来的请求,因此,返回给服务使用方处理中的状态后,服务1尽最大努力补偿执行出错的部分,服务1通过服务2的查询接口得到最新的请求处理状态,如果服务2没有明确回复,则可以尝试重新发送请求,这里服务2也需要实现操作的幂等性。
2)异步调用模式下的解决方案
在异步调用模式下,对外的接口也会提供服务契约,契约定义了服务的受理结果会通过返回值返回给使用方,返回的状态通常为两个,受理和未受理;此模式下还需要有异步返回处理结果的通知,状态包括处理成功和处理失败;此模式下的超时分为三种情况。
a)异步调用接口超时
如图9所述,异步调用接口超时发生在使用方调用服务1的受理接口时,同两状态同步调用接口超时及三状态同步调用接口超时的场景一样,需要服务使用方用过查询来补齐状态,并根据状态来判断后续的操作。
b)异步调用内部超时
如图10所示,当内部服务调用发生超时时,由于我们返回给使用方的结果是受理中,所以服务1应该尽最大的努力将用户请求操作处理成功,通过服务2的查询操作处理结果的接口获得最新状态,根据状态补偿后续的操作。处理完成后,需要将处理结果通过异步回调通知接口,将处理结果通知给服务使用方。
c)异步调用回调超时
如图11所示,由于服务1通过回调通知使用方,所以服务1需要保证通知一定可达,如果遇到超时,则服务1负责重新继续补偿,需要设计一个通知时间按一定时间间隔递增的策略,避免短时间内做无用通知,直到通知成功为止,通知是否成功以服务使用方的返回状态为准。
3)消息队列异步处理模式的解决方案
消息队列异步处理模式多用于松耦合的项目,使用消息队列解耦后,处理流程被分为两个阶段,生产者投递和消费者处理,在不同的阶段会产生不同的超时问题。
a)生产者超时
如图12所示,当服务1投递消息发生超时,服务1需要保证消息可靠发送,服务1可以在发送消息前将消息持久化到数据库中,状态标记为待发送,如果发送失败,则开启定时任务定时从数据库捞取未发送的消息进行重新发送,直到发送成功为止。
b)消费者超时
如图13所示,消费者消费消息超时需要根据消息丢失的容忍度来做不同的处理,如果允许消息丢失,则根据消息队列的配置,如果消费者从服务器取走消息后,消息队列立即移除此消息,无论超时后是否处理成功。如果不允许消息丢失,则消费者取走消息后,当消费端处理完成后,需要手动将处理结果提交到消息队列,消息队列再将此条消息移除,否则无论超时是否处理成功,消息都不会丢失。消费端都需要实现幂等性,避免对同一条消息重复处理。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (1)
1.一种分布式系统中基于网络超时的问题处理的实现方法,其特征在于,包括:
同步调用超时解决方法,用于解决多个服务器同步调用超时的问题;
异步调用超时解决方法,用于解决多个服务器择一调用时异步调用超时的问题;
消息队列异步处理超时解决方法,用于解决多个服务器之间相互调用超时的问题;
同步调用超时解决方法包括两状态的接口调用超时解决方法和三状态的同步接口调用超时解决方法,用于解决同步模式中使用方调用服务超时、服务内部相互调用超时的问题;
两状态的接口调用超时解决方法具体过程如下:
当同步调用模式发生在使用方调用服务超时时,服务使用方通过查询接口,进行查询原因并进行相应处理;
两状态的接口中同步调用模式发生在使用方调用超时时查询以及处理过程如下:服务使用方通过查询操作处理结果的接口,得知超时的操作的处理结果,如果成功,则进行后续操作,如果失败,则进行重试;如果查询操作处理结果的接口返回的是未知状态,服务使用方需要使用同一个请求ID进行重试;
当同步调用模式发生在多个服务内部调用超时时,其中一个服务返回失败,同时调用下一服务的冲正接口进行处理;
两状态的接口中同步调用模式方式在服务内部调用超时时处理过程如下:服务2的冲正接口判断之前是否接收到请求,如果接收到并做了处理,则应该做反向的回滚操作,如果服务2之前没有收到处理请求,则忽略冲正请求;
三状态的同步接口调用超时解决方法具体过程如下:
当同步调用模式发生在使用方调用服务超时时,使用方通过多个服务中的初始服务中的查询接口进行处理;
三状态的接口中同步调用模式发生在使用方调用服务超时时同步处理过程如下:初始服务接口向使用方返回网络超时的状态,网络超时状态使使用方将超时认为在处理中,初始服务的查询接口查询以及处理,处理后初始服务的接口续补齐上一个请求的处理状态,根据状态进行后续的操作;
当同步调用模式发生在多个服务内部调用超时时,多个服务中初始服务返回给使用方一个处理中的状态,变相地把同步接口变为异步接口,进行超时处理;
三状态的接口中同步调用模式发生在多个服务内部调用服务超时时处理过程如下:返回给服务使用方处理中的状态后,多个服务中的初始服务补偿执行出错的部分,初始服务通过后方服务的查询接口得到最新的请求处理状态,如果后方服务没有明确回复,则可以尝试重新发送请求;
异步调用超时解决方法具体过程如下:异步调用接口超时解决方法、异步调用内部超时解决方法、异步调用回调超时解决方法,用于解决异步调用模式中异步调用超时的问题;
异步调用接口超时解决方法具体过程如下:异步调用接口超时发生在使用方调用初始服务的受理接口是,初始服务接口向使用方返回网络超时的状态,网络超时状态使使用方将超时认为在处理中,初始服务的查询接口查询以及处理,处理后初始服务的接口续补齐上一个请求的处理状态,根据状态进行后续的操作;
异步调用内部超时解决方法具体过程如下:当内部服务调用发生超时时,使用方收到的结果是受理中,初始服务需尽快将用户请求操作处理成功,通过下一服务的查询接口获得最新状态,根据状态补偿后续的操作,处理完成后,将处理结果通过异步回调通知接口,将处理结果通知给服务使用方;
异步调用回调超时解决方法具体过程如下:初始服务通过回调通知使用方,如果遇到超时,则初始服务重新继续补偿,设计一个通知时间按一定时间间隔递增的策略,直到通知成功为止;
消息队列异步处理超时解决方法具体过程如下:生产者超时解决方法、消费者消费消息超时解决方法,用于解决多个服务器之间消息队列异步处理模式中异步处理超时;
生产者超时解决方法具体过程如下:初始服务投递消息发生超时,初始服务在发送消息前将消息持久化到数据库中,状态标记为待发送,如果发送失败,则开启定时任务定时从数据库捞取未发送的消息进行重新发送,直到发送成功为止;
消费者消费消息超时解决方法具体过程如下:消费者消费消息超时需要根据消息丢失的容忍度来做不同的处理,如果允许消息丢失,则根据消息队列的配置,如果消费者从服务器取走消息后,消息队列立即移除此消息,无论超时后是否处理成功;如果不允许消息丢失,则消费者取走消息后,当消费端处理完成后,需要手动将处理结果提交到消息队列,消息队列再将此条消息移除,否则无论超时是否处理成功,消息都不会丢失。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110245526.6A CN112839110B (zh) | 2021-03-05 | 2021-03-05 | 一种分布式系统中基于网络超时的问题处理的实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110245526.6A CN112839110B (zh) | 2021-03-05 | 2021-03-05 | 一种分布式系统中基于网络超时的问题处理的实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112839110A CN112839110A (zh) | 2021-05-25 |
CN112839110B true CN112839110B (zh) | 2023-03-10 |
Family
ID=75934629
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110245526.6A Active CN112839110B (zh) | 2021-03-05 | 2021-03-05 | 一种分布式系统中基于网络超时的问题处理的实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112839110B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104601696A (zh) * | 2015-01-13 | 2015-05-06 | 北京京东尚科信息技术有限公司 | 服务处理方法、服务调用框架、装置和架构 |
CN105630611A (zh) * | 2014-10-27 | 2016-06-01 | 青岛金讯网络工程有限公司 | 处理服务请求的方法和装置 |
CN106648936A (zh) * | 2016-12-29 | 2017-05-10 | Tcl集团股份有限公司 | 基于微服务的协作处理方法、系统及服务器 |
CN108306941A (zh) * | 2018-01-05 | 2018-07-20 | 上海你我贷互联网金融信息服务有限公司 | 一种分布式消息系统 |
CN110288255A (zh) * | 2019-06-28 | 2019-09-27 | 深圳前海微众银行股份有限公司 | 一种分布式事务的流程保障方法及装置 |
CN111600738A (zh) * | 2020-03-30 | 2020-08-28 | 福建天泉教育科技有限公司 | 优化超时处理的方法、存储介质 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040205048A1 (en) * | 2003-03-28 | 2004-10-14 | Pizzo Michael J. | Systems and methods for requesting and receiving database change notifications |
CN102394772B (zh) * | 2011-10-31 | 2014-01-01 | 北京直真科技股份有限公司 | 一种电信实时系统长链接接口交互超时处理装置和方法 |
CN102739799B (zh) * | 2012-07-04 | 2015-07-22 | 合一网络技术(北京)有限公司 | 一种分布式应用中的分布式通讯方法 |
CN106713226B (zh) * | 2015-11-12 | 2019-07-12 | 卓望数码技术(深圳)有限公司 | 一种用于分布式系统的远程过程调用处理方法和系统 |
CN112214350A (zh) * | 2020-09-02 | 2021-01-12 | 中国船舶重工集团公司第七0九研究所 | 一种分布式多模冗余容错系统软件表决方法 |
-
2021
- 2021-03-05 CN CN202110245526.6A patent/CN112839110B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105630611A (zh) * | 2014-10-27 | 2016-06-01 | 青岛金讯网络工程有限公司 | 处理服务请求的方法和装置 |
CN104601696A (zh) * | 2015-01-13 | 2015-05-06 | 北京京东尚科信息技术有限公司 | 服务处理方法、服务调用框架、装置和架构 |
CN106648936A (zh) * | 2016-12-29 | 2017-05-10 | Tcl集团股份有限公司 | 基于微服务的协作处理方法、系统及服务器 |
CN108306941A (zh) * | 2018-01-05 | 2018-07-20 | 上海你我贷互联网金融信息服务有限公司 | 一种分布式消息系统 |
CN110288255A (zh) * | 2019-06-28 | 2019-09-27 | 深圳前海微众银行股份有限公司 | 一种分布式事务的流程保障方法及装置 |
CN111600738A (zh) * | 2020-03-30 | 2020-08-28 | 福建天泉教育科技有限公司 | 优化超时处理的方法、存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112839110A (zh) | 2021-05-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20110173495A1 (en) | Method and System for Reliable Intersystem Message Notification | |
EP2009830A1 (en) | Method and apparatus for message retransmission, method and apparatus for inter-system message notification | |
CN110224922B (zh) | 一种基于RabbitMQ的异步消息重试方法、系统及系统构建方法 | |
CN108279986B (zh) | 一种分布式事务处理方法及装置 | |
US20130117382A1 (en) | Push messaging platform with high scalability and high availability | |
EP0964563A2 (en) | Redundant call processing | |
CN107277083B (zh) | 一种数据交互的处理方法、装置及系统 | |
CN106936896B (zh) | Kafka集群的数据传送方法和装置 | |
CN109451032A (zh) | 一种消息传递系统 | |
CN105635083A (zh) | 基于服务器和客户端架构的业务处理方法及业务处理系统 | |
US6141679A (en) | High performance distributed transaction processing methods and apparatus | |
CN113986501A (zh) | 实时数据库api无中断调用方法、系统、存储介质及服务器 | |
CN112839110B (zh) | 一种分布式系统中基于网络超时的问题处理的实现方法 | |
CN116319732A (zh) | 一种基于RabbitMQ的消息队列集中配置管理系统及方法 | |
CN110661652B (zh) | 一种互联网设备连接及数据转发处理方法 | |
CN112835983A (zh) | 一种保证分布式系统最终一致性模式的实现方法 | |
CN111124717A (zh) | 消息投递方法、系统及计算机存储介质 | |
CN114253748A (zh) | 一种消息处理系统和消息处理方法 | |
CN112751743B (zh) | 消息发送异常的处理方法、消息发送装置和电子设备 | |
CN110809020B (zh) | 一种基于冗余网络异步通信的高可靠数据传输方法 | |
CN114625489A (zh) | 访问请求响应方法、装置以及分布式系统 | |
CN100456771C (zh) | 通信设备及其中模块间交互方法 | |
CN110287046A (zh) | 基于队列的业务服务消息发送方法及系统 | |
CN113486033A (zh) | 控制事务一致性的方法、装置、设备和计算机可读介质 | |
CN109617697B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |