CN113014673A - 一种服务调用优化方法和装置 - Google Patents
一种服务调用优化方法和装置 Download PDFInfo
- Publication number
- CN113014673A CN113014673A CN202110378446.8A CN202110378446A CN113014673A CN 113014673 A CN113014673 A CN 113014673A CN 202110378446 A CN202110378446 A CN 202110378446A CN 113014673 A CN113014673 A CN 113014673A
- Authority
- CN
- China
- Prior art keywords
- service
- node address
- node
- calling
- target
- 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
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/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
-
- 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/56—Provisioning of proxy services
- H04L67/566—Grouping or aggregating service requests, e.g. for unified processing
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种服务调用优化方法和装置,应用于服务调用端,服务调用端与服务代理端通信连接,两端均预存有服务提供列表,服务提供列表包括多个节点地址和对应的节点质量信息,方法包括:响应于输入的服务调用请求,根据节点质量信息从多个节点地址中选择目标节点地址;发送所述服务调用请求到所述目标节点地址,确定所述目标节点地址返回目标服务的服务调用结果;定时上报所述服务调用结果到所述服务代理端;根据所述服务代理端响应所述服务调用结果返回的节点质量报告,更新所述目标节点地址对应的目标节点质量信息,从而提高服务调用过程的容错率,更为有效地进行动态路由选择。
Description
技术领域
本发明涉及服务调用技术领域,尤其涉及一种服务调用优化方法和装置。
背景技术
一般而言,一个网络服务包括以下的三个要素:地址、协议格式和协议类型。调用方根据地址访问到网络接口,在同一个服务监听端口上面,可能同时提供多种接口服务于调用方,这时候需要协议类型来区分不同的网络接口,以调用方和服务提供方协商确定的协议格式进行服务调用。
传统的通过服务代理进行服务调用的过程可以分为两步:服务注册和服务发现。服务提供方的服务实例启动后,通过服务代理向注册中心发送注册数据,并定期发送心跳信息;注册中心收到注册信息后,记录服务实例的地址;相同名字的其他服务实例启动后,同样如此;在服务调用方查找服务时,根据服务名字通过注册中心查询获取服务地址列表;根据注册中心返回的服务地址列表,选择其中一个节点完成服务调用;服务实例关闭前,通过服务代理向注册中心发送注销信息。
但在上述服务调用过程中,服务代理仅是作为服务提供方和注册中心交互的桥梁,并不具备负载均衡能力;同时当注册中心出错时,所有服务实例都将陷入不可用的状况,且某些服务提供方不可用或存在错误时,服务调用方无法自动识别出错服务并将工作负载切换到其他地方的能力,缺乏服务调用的容错能力。
发明内容
本发明提供了一种服务调用优化方法和装置,解决了现有技术中服务代理不具备负载均衡和服务调用容错能力的技术问题。
本发明提供的一种服务调用优化方法,应用于服务调用端,所述服务调用端与服务代理端通信连接,所述服务调用端与所述服务代理端均预存有服务提供列表,所述服务提供列表包括多个节点地址和对应的节点质量信息,所述方法包括:
响应于输入的服务调用请求,根据所述节点质量信息从多个所述节点地址中选择目标节点地址;
发送所述服务调用请求到所述目标节点地址,确定所述目标节点地址返回目标服务的服务调用结果;
定时上报所述服务调用结果到所述服务代理端;
根据所述服务代理端响应所述服务调用结果返回的节点质量报告,更新所述目标节点地址对应的目标节点质量信息。
可选地,所述节点质量信息包括系统失败率、平均耗时和调用成功率;所述响应于输入的服务调用请求,根据所述节点质量信息从多个所述节点地址中选择目标节点地址的步骤,包括:
响应于输入的服务调用请求,按照预设读取规则读取每个所述节点地址对应的所述系统失败率、所述平均耗时和所述调用成功率;
将所述系统失败率小于预设失败阈值,且所述平均耗时小于或等于预设耗时阈值,且所述调用成功率大于预设成功阈值的所述节点地址确定为健康节点地址;
将所述系统失败率处于第一预设范围,或者,所述平均耗时处于第二预设范围,或者,所述调用成功率处于第三预设范围的所述节点地址确定为待定节点地址;
从所述健康节点地址和所述待定节点地址中选择目标节点地址。
可选地,所述从所述健康节点地址和所述待定节点地址中选择目标节点地址的步骤,包括:
检测当前节点地址为所述健康节点地址或所述待定节点地址;
若所述当前节点地址为所述健康节点地址,则将所述当前节点地址作为目标节点地址;
若所述当前节点地址为所述待定节点地址,则根据预设随机数与所述当前节点地址对应的所述调用成功率的比对结果,确定目标节点地址。
可选地,所述若所述当前节点地址为所述待定节点地址,则根据预设随机数与所述当前节点地址对应的所述调用成功率的比对结果,确定目标节点地址的步骤,包括:
若所述当前节点地址为待定节点地址,则获取所述当前节点地址对应的所述调用成功率;
从所述当前节点地址对应的所述调用成功率和预设最小成功率中选择最小值作为第一比对成功率;
从所述当前节点地址对应的所述调用成功率和预设最大成功率中选择最大值作为第二比对成功率;
判断预设随机数是否小于所述第一比对成功率或第二比对成功率;
若所述随机数小于所述第一比对成功率或第二比对成功率,则将所述当前节点地址作为目标节点地址;
若所述随机数大于或等于所述第一比对成功率和第二比对成功率,则将所述当前节点地址的下一所述节点地址作为目标节点地址。
可选地,还包括:
将所述系统失败率大于或等于预设失败阈值,或者,所述平均耗时大于预设耗时阈值,或者,所述调用成功率小于或等于预设成功阈值的所述节点地址确定为不可用节点地址;
周期性发送预设的服务请求包到所述不可用节点地址;
根据从所述不可用节点地址返回的请求服务,确定所述不可用节点地址对应的所述系统失败率、所述平均耗时和所述调用成功率的变化情况,判断所述不可用节点地址对应的节点是否恢复。
可选地,所述服务调用结果包括服务调用次数和服务调用耗时,所述发送所述服务调用请求到所述目标节点地址,确定所述目标节点地址返回目标服务的服务调用结果的步骤,包括:
发送所述服务调用请求到所述目标节点地址对应的目标节点,获取发送时间戳;
当接收到所述目标节点返回的目标服务时,确定返回时间戳;
计算所述返回时间戳和所述发送时间戳的差值,确定服务调用耗时,并累加服务调用次数。
可选地,所述根据所述服务代理端响应所述服务调用结果返回的节点质量报告,更新所述目标节点地址对应的目标节点质量信息的步骤,包括:
接收所述服务代理端响应所述服务调用结果构建统计窗口,并采用滑动窗口计算方法返回的节点质量报告;
根据所述节点质量报告更新所述目标节点地址对应的目标节点质量信息。
可选地,所述节点质量报告包括节点平均质量数据和对应的质量方差,所述根据所述节点质量报告更新所述目标节点地址对应的目标节点质量信息的步骤,包括:
从所述节点平均质量数据中获取到平均系统失败率和目标平均耗时,从所述质量方差中获取系统失败率方差和耗时方差;
若所述服务调用耗时小于所述目标平均耗时,则根据所述耗时方差和所述目标平均耗时的差值,确定耗时调整幅度;
根据所述系统失败率方差和所述平均系统失败率的差值,确定系统失败率调整幅度;
按照所述耗时调整幅度,对所述目标节点地址对应的目标节点质量信息内的所述平均耗时进行降低。
可选地,所述方法还包括:
若所述服务调用耗时大于预设的超时阈值,则按照所述耗时调整幅度增加所述目标节点质量信息内的所述平均耗时,按照所述系统失败率调整幅度对所述目标节点质量信息内的所述系统失败率进行增加。
本发明还提供了一种服务调用优化装置,应用于服务调用端,所述服务调用端与服务代理端通信连接,所述服务调用端与所述服务代理端均预存有服务提供列表,所述服务提供列表包括多个节点地址和对应的节点质量信息,所述装置包括:
目标节点地址选择模块,用于响应于输入的服务调用请求,根据所述节点质量信息从多个所述节点地址中选择目标节点地址;
服务调用结果确定模块,用于发送所述服务调用请求到所述目标节点地址,确定所述目标节点地址返回目标服务的服务调用结果;
信息定时上报模块,用于定时上报所述服务调用结果到所述服务代理端;
服务提供列表更新模块,用于根据所述服务代理端响应所述服务调用结果返回的节点质量报告,更新所述目标节点地址对应的目标节点质量信息。
从以上技术方案可以看出,本发明具有以下优点:
本发明通过服务调用端响应于输入的服务调用请求,根据预存的服务提供列表中的节点质量信息,从表内的多个节点地址中选择目标节点地址并发送服务调用请求到该目标节点地址,当目标节点地址对应的服务节点返回目标服务时,记录服务调用结果并进行定时上报到服务代理端,最后根据服务代理端返回的节点质量报告,对目标节点地址对应的目标节点质量信息进行更新,从而实现在服务注册中心不可用的情况下,通过服务代理端和服务调用端实现服务调用容错和负载均衡的功能,进而提高了服务调用过程的容错率,更为有效地进行动态路由调整。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其它的附图。
图1为本发明实施例一提供的一种服务调用优化方法的步骤流程图;
图2为本发明实施例二提供的一种服务调用优化方法的步骤流程图;
图3为本发明实施例二中的滑动窗口计算方法的计算过程示意图;
图4为本发明实施例三提供的一种服务调用优化方法的步骤流程图;
图5为本发明实施例四提供的一种服务调用优化装置的结构框图。
具体实施方式
本发明实施例提供了一种服务调用优化方法和装置,用于解决现有技术中服务代理不具备负载均衡和服务调用容错能力的技术问题。
服务注册中心是一个由若干个节点组成的集群,通常是奇数个节点,如3,5,7个节点组成。节点间使用Raft分布式一致性算法保证注册中心本身的高可用。集群中任何一个节点都可以提供读服务。只要集群中超过1/2的节点通过交互同意,就可以选举出节点来提供写服务。因此,只要超过1/2的节点可用,则集群就可以同时提供读写服务,即可以保证注册中心可用性和可靠性。
其中,服务注册中心可以同时与多个服务提供端和服务调用端的服务代理端通信连接,当服务提供端中的服务节点启动时,将自身的服务信息注册到服务注册中心,以生成服务提供列表,服务注册中心将服务提供列表同步下发到服务调用端和服务代理端,以提供服务调用优化基础。
为使得本发明的发明目的、特征、优点能够更加的明显和易懂,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,下面所描述的实施例仅仅是本发明一部分实施例,而非全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
请参阅图1,图1为本发明实施例一提供的一种服务调用优化方法的步骤流程图。
本发明提供的一种服务调用优化方法,应用于服务调用端,服务调用端与服务代理端通信连接,服务调用端与服务代理端均预存有服务提供列表,服务提供列表包括多个节点地址和对应的节点质量信息,包括以下步骤:
步骤101,响应于输入的服务调用请求,根据节点质量信息从多个节点地址中选择目标节点地址;
服务调用端指的是存储有与服务注册中心一致的服务提供列表的客户端,能够接收输入的服务调用请求转发到目标节点地址,获取目标节点地址对应的节点返回的服务。
在本发明实施例中,当服务调用端接收到输入的服务调用请求时,基于服务调用请求所确定的需求服务,遍历预存在其中的服务提供列表,同时结合每个节点地址对应的节点质量信息,从多个节点地址中选择符合服务调用请求的目标节点地址。
步骤102,发送服务调用请求到目标节点地址,确定目标节点地址返回目标服务的服务调用结果;
在确定目标节点地址后,通过服务调用方向目标节点地址发起服务调用,将服务调用请求发送到目标节点地址,待目标节点地址的对应服务节点返回目标服务后,记录此次从目标节点地址进行服务调用所用的耗时作为服务调用耗时,并持续累计该服务的调用次数作为服务调用次数,以此得到服务调用结果。
步骤103,定时上报服务调用结果到服务代理端;
在本实施例中,服务调用端可以定时上报服务调用结果到服务代理端,以得到在一定时段内目标节点质量信息的变更情况。
其中,定时的间隔可由技术人员自行设置,例如30秒、1分钟或2分钟等,本发明实施例对此不作限制。
步骤104,根据服务代理端响应服务调用结果返回的节点质量报告,更新目标节点地址对应的目标节点质量信息。
当服务代理端接收到服务调用端定时上传的服务调用结果后,可以对服务调用结果进行汇总形成统计窗口,以滑动窗口计算的方式生成针对目标节点地址的节点质量报告并返回到服务调用端。服务调用端根据接收到的节点质量报告,对目标节点地址对应的目标节点质量信息进行更新,便于后续的再次路由选择。
在本发明实施例中,通过服务调用端响应于输入的服务调用请求,根据预存的服务提供列表中的节点质量信息,从表内的多个节点地址中选择目标节点地址并发送服务调用请求到该目标节点地址,当目标节点地址对应的服务节点返回目标服务时,记录服务调用结果并进行定时上报到服务代理端,最后根据服务代理端返回的节点质量报告,对目标节点地址对应的目标节点质量信息进行更新,从而实现在服务注册中心不可用的情况下,通过服务代理端和服务调用端实现服务调用容错和负载均衡的功能,进而提高了服务调用过程的容错率,更为有效地进行动态路由调整。
请参阅图2,图2为本发明实施例二提供的一种服务调用优化方法的步骤流程图。
本发明提供的一种服务调用优化方法,应用于服务调用端,服务调用端与服务代理端通信连接,服务调用端与服务代理端均预存有服务提供列表,服务提供列表包括多个节点地址和对应的节点质量信息,节点质量信息包括系统失败率、平均耗时和调用成功率,方法包括以下步骤:
步骤201,响应于输入的服务调用请求,按照预设读取规则读取每个节点地址对应的系统失败率、平均耗时和调用成功率;
在本发明实施例中,当服务调用端接收到输入的服务调用请求时,按照预设读取规则读取每个节点地址分别对应的系统失败率、平均耗时和调用成功率。
其中,预设读取规则可以为轮询读取或随机选择读取,轮询是指从服务提供列表中按顺序依次选择一个节点地址;随机是指从服务提供列表中随机选择一个节点地址。
步骤202,将系统失败率小于预设失败阈值,且平均耗时小于或等于预设耗时阈值,且调用成功率大于预设成功阈值的节点地址确定为健康节点地址;
在本发明实施例中,为保障节点地址的节点状态的检测准确性,可以通过系统失败率与预设失败阈值的比较结果、平均耗时和预设耗时阈值的比较结果以及调用成功率和预设成功阈值的比较结果进行综合考量。
若是系统失败率小于预设失败阈值,且平均耗时小于或等于预设耗时阈值,且调用成功率大于预设成功阈值,则表明该节点地址对应的节点处于响应速度较快,服务调用失败率较低且服务调用成功率较高的节点,可优先考虑采用该节点进行服务调用,此时将该节点地址确定为健康节点地址。
其中,预设失败阈值可以设置为10%、20%等,预设耗时阈值可以设置为3秒、2秒等,预设成功阈值可以设置为90%、95%等,或者由技术人员自行设定,本发明实施例对此不作限制。
值得一提的是,除了上述参数外,节点质量信息还可以包括业务逻辑失败率等参数。
步骤203,将系统失败率处于第一预设范围,或者,平均耗时处于第二预设范围,或者,调用成功率处于第三预设范围的节点地址确定为待定节点地址;
在本发明的一个示例中,若是系统失败率处于第一预设范围,或者,平均耗时处于第二预设范围,或者,调用成功率处于第三预设范围,则表明该节点地址对应的节点虽然有瑕疵,但在负载较重的情况下,仍然可以进行服务调用,此时可以将该节点地址确定为待定节点地址。
步骤204,从健康节点地址和待定节点地址中选择目标节点地址;
在得到健康节点地址和待定节点地址后,可以按照节点的健康程度从两种节点地址中选择目标节点地址。
进一步地,步骤204可以包括以下子步骤S11-S14:
S11、检测当前节点地址为健康节点地址或待定节点地址;
S12、若当前节点地址为健康节点地址,则将当前节点地址作为目标节点地址;
在本发明可选实施例中,服务调用端检测当前所选择的当前节点地址是健康节点地址还是待定节点地址;若是当前节点地址为健康节点地址,则可以将当前节点地址直接确定为目标节点地址,以准备进行后续服务调用。
S13、若当前节点地址为待定节点地址,则根据预设随机数与当前节点地址对应的调用成功率的比对结果,确定目标节点地址。
在本发明实施例中,若是当前节点地址为待定节点地址,则采用预设随机数与当前节点地址的调用成功率进行比对,根据比对结果确定目标节点地址。
其中,预设随机数可以在一定范围中进行生成,例如在调用成功率[0,99%]之间任选一个作为预设随机数,本发明实施例对随机数的选取不作限制。
在本发明的一个示例中,步骤S13可以包括以下子步骤S131-S136:
S131、若当前节点地址为待定节点地址,则获取当前节点地址对应的调用成功率;
S132、从当前节点地址对应的调用成功率和预设最小成功率中选择最小值作为第一比对成功率;
S133、从当前节点地址对应的调用成功率和预设最大成功率中选择最大值作为第二比对成功率;
在本发明实施例中,若当前节点地址为待定节点地址,则可以进一步获取当前节点地址对应的调用成功率,通过比较调用成功率和预设最小成功率,从中选择最小值作为第一比对成功率。从当前节点地址对应的调用成功率和预设最大成功率中选择最大值作为第二比对成功率。
例如预设最小成功率为80%,预设最大成功率为99%,若是调用成功率大于或等于80%,则可以选择80%作为第一比对成功率,若是调用成功率小于80%,则可以选择调用成功率作为第一比对成功率;若是调用成功率大于99%,则选择调用成功率作为第二比对成功率,若是调用成功率小于或等于99%,则选择99%作为第二比对成功率。
S134、判断预设随机数是否小于第一比对成功率或第二比对成功率;
S135、若随机数小于第一比对成功率或第二比对成功率,则将当前节点地址作为目标节点地址。
S136、若随机数大于或等于第一比对成功率和第二比对成功率,则将当前节点地址的下一节点地址作为目标节点地址。
在得到第一比对成功率和第二比对成功率后,可以选择预设随机数与第一比对成功率和第二比对成功率分别进行比对;若是随机数小于第一比对成功率或第二比对成功率,则说明当前节点地址对应的节点能够满足用户需求,可以将当前节点地址作为目标节点地址。若随机数大于或等于第一比对成功率和第二比对成功率,则说明当前节点地址对应的节点并不能满足用户需求,此时可以将服务调用进行分流,以当前节点地址的下一节点地址作为目标节点地址。
可选地,在本发明的另一个示例中,步骤204还可以包括以下子步骤S15-S17:
S15、将系统失败率大于或等于预设失败阈值,或者,平均耗时大于预设耗时阈值,或者,调用成功率小于或等于预设成功阈值的节点地址确定为不可用节点地址;
S16、周期性发送预设的服务请求包到不可用节点地址;
S17、根据从不可用节点地址返回的请求服务,确定不可用节点地址对应的系统失败率、平均耗时和调用成功率的变化情况,判断不可用节点地址对应的节点是否恢复。
在本发明实施例中,若是系统失败率大于或等于预设失败阈值,或者,平均耗时大于预设耗时阈值,或者,调用成功率小于或等于预设成功阈值,此时说明该节点地址对应的节点暂时不可用,此时可以确定该节点地址为不可用节点地址。此时可以周期性发送预设的服务请求包到不可用节点地址,根据从不可用节点地址返回的请求服务,以检测不可用节点地址的系统失败率、平均耗时和调用成功率是否出现变化;若是调用成功率上升,系统失败率下降,平均耗时降低则表明不可用节点地址对应的节点进入到恢复周期,直至调用成功率上升到大于99%,判定不可用节点完成恢复,此时可以将不可用节点地址更新为待定节点地址,以进行后续服务调用。
在具体实现中,可以通过每T秒放行前J个服务请求包的方式(T和J可以根据业务进行调整),按T秒周期性地探测不可用节点是否恢复,根据调用成功率上升,系统失败率下降,平均耗时降低,来判断不可用节点已进入恢复周期。在节点恢复周期内,通过逐步增加服务请求包的数量,直到不可用节点的调用成功率大于99%,即判断为不可用节点完成恢复。
步骤205,发送服务调用请求到目标节点地址,确定目标节点地址返回目标服务的服务调用结果;
可选地,服务调用结果包括服务调用次数和服务调用耗时,步骤205可以包括以下子步骤S21-S23:
S21、发送服务调用请求到目标节点地址对应的目标节点,获取发送时间戳;
S22、当接收到目标节点返回的目标服务时,确定返回时间戳;
S23、计算返回时间戳和发送时间戳的差值,确定服务调用耗时,并累加服务调用次数。
在本发明实施例中,当服务调用端发起服务调用时,发送服务调用请求到目标节点地址对应的目标节点,同时获取当前时刻的发送时间戳;当接收到目标节点返回的目标服务时,此时可以得到返回时间戳;通过计算返回时间戳和发送时间戳的差值,以确定服务调用耗时,并对服务调用次数进行累加。
其中,累加的方式可以选择加一累加,即每次完成服务调用,服务调用次数加一。
步骤206,定时上报服务调用结果到服务代理端;
在本实施例中,当服务调用端在收集到一段时间内的服务调用结果后,服务调用端可以定时上报服务调用结果到服务代理端,以得到在一定时段内目标节点质量信息的变更情况。
其中,定时的间隔可由技术人员自行设置,例如30秒、1分钟或2分钟等,本发明实施例对此不作限制。
步骤207,根据服务代理端响应服务调用结果返回的节点质量报告,更新目标节点地址对应的目标节点质量信息。
在本发明的一个示例中,节点质量报告包括节点平均质量数据和对应的质量方差,,步骤207可以包括以下子步骤S31-S32:
S31、接收服务代理端响应服务调用结果构建统计窗口,并采用滑动窗口计算方法返回的节点质量报告;
S32、根据节点质量报告更新目标节点地址对应的目标节点质量信息。
在具体实现中,当服务代理端接收到服务调用结果后,可以对其中的服务调用次数和服务调用耗时等参数进行汇总,以形成一个由目标节点地址组成的统计窗口,经滑动窗口计算方法形成节点质量报告返回到服务调用端。服务调用端根据节点质量报告对目标节点地址对应的目标节点质量信息进行更新。
其中,滑动窗口计算方法指的是当前每次窗口滑动时,对窗口两端的元素进行计算,以生成节点质量报告。
请参照图3,图3示出了本发明实施例二中的滑动窗口计算方法的计算过程示意图。
滑动窗口算法是通过在遍历完整序列的同时,按照特定长度对其中的序列进行操作,获得经过平滑后的数据结果的过程。
滑动窗口的每个序列节点是1秒内某个服务实例或者服务实例接口的请求数据。这些数据由服务调用端上报给服务代理端汇总。如total表示总请求数,timeout表示请求超时数,sysfail表示系统失败数和logicfail表示逻辑失败数。
服务代理端根据如下公式分别计算多个反映数据质量的比率:
成功率=100-(timeout+sysfail/total)*100;
超时率=(timeout/total)*100;
系统失败率=(sysfail/total)*100;
逻辑错误率=(logicfail/total)*100;
滑动窗口计算方法示例如下:
示例窗口大小为6,每一序列的每一行分别代表一种字段类型。当滑动窗口滑动经过序列时,计算窗口序列total字段和得到total_res,计算timeout字段和得到timeout_res,计算sysfail字段和得到sysfail_res,计算logicfail字段和得到logicfail_res。
服务代理根据res系列字段值和窗口大小,计算出窗口各字段的均值质量数据,如平均系统失败率和目标平均耗时。再依据均值质量数据和各结点质量数据,计算得到窗口的各质量数据的方差,包括但不限于系统失败率方差和耗时方差。服务实例的均值质量数据及其方差共同组成了某一个时刻该服务实例的节点质量报告。
进一步地,步骤S32可以包括以下子步骤S41-S44:
S41、从节点平均质量数据中获取到平均系统失败率和目标平均耗时,从质量方差中获取系统失败率方差和耗时方差;
S42、若服务调用耗时小于目标平均耗时,则根据耗时方差和目标平均耗时的差值,确定耗时调整幅度;
S43、根据系统失败率方差和平均系统失败率的差值,确定系统失败率调整幅度;
S44、按照耗时调整幅度,对目标节点地址对应的目标节点质量信息内的平均耗时进行降低;
S45、若服务调用耗时大于预设的超时阈值,则按照耗时调整幅度增加目标节点质量信息内的平均耗时,按照系统失败率调整幅度对目标节点质量信息内的系统失败率进行增加。
在本发明实施例中,从节点平均质量数据中获取到平均系统失败率和目标平均耗时,从质量方差中获取系统失败率方差和耗时方差,在得到了目标节点地址实际调用服务的服务调用耗时和服务调用次数后,若是服务调用耗时小于目标平均耗时,则说明此时服务调用属于正常返回且返回时间较短,此时可以根据耗时方差和目标平均耗时的差值,以确定耗时调整幅度;按照耗时调整幅度降低目标节点质量信息内的平均耗时,以对目标节点地址内的目标节点质量信息进行更新。若是服务调用耗时大于预设的超时阈值,则说明该次服务调用属于超时返回,此时可以按照耗时调整幅度增加目标节点质量信息内的平均耗时。
同时,当服务调用超时返回时,还可以根据系统失败率方差和平均系统失败率的差值,确定系统失败率调整幅度,按照按照系统失败率调整幅度对目标节点质量信息内的系统失败率进行增加。
值得一提的是,预定时段可以为30秒、20秒、40秒等,本发明实施例对此不作限制。
在本发明实施例中,通过服务调用端响应于输入的服务调用请求,根据预存的服务提供列表中的节点质量信息,从表内的多个节点地址中选择目标节点地址并发送服务调用请求到该目标节点地址,当目标节点地址对应的服务节点返回目标服务时,记录服务调用结果并进行定时上报到服务代理端,最后根据服务代理端返回的节点质量报告,对目标节点地址对应的目标节点质量信息进行更新,从而实现在服务注册中心不可用的情况下,通过服务代理端和服务调用端实现服务调用容错和负载均衡的功能,进而提高了服务调用过程的容错率,更为有效地进行动态路由调整。
请参阅图4,图4为本发明实施例三提供的一种服务调用优化方法的步骤流程图。
服务调用端通过第一服务代理端向服务注册中心订阅服务提供表,服务提供端当有服务节点启用时,通过第二服务代理端向服务注册中心进行服务注册;服务注册中心响应服务调用端的订阅请求,推送服务提供表到服务调用端和第一服务代理端;服务调用端采用服务提供表进行负载均衡和路由选择,并累计服务调用时间和调用次数;完成负载均衡和路由选择后确定存在服务提供端的目标节点;向目标节点发起服务调用请求,待服务提供端返回目标服务时,累计服务调用次数和服务调用耗时,并计算耗时方差;将统计结果定时上报到第一服务代理端,经第一服务代理端累计节点调用成功次数和失败次数,以及节点总调用次数;实时计算调用成功率与耗时方差,构建节点质量报告并返回到服务调用端,通过服务调用端进行服务提供表的更新,以更新其中的节点质量信息。
请参阅图5,图5为本发明实施例四提供的一种服务调用优化装置的结构框图。
本发明提供的一种服务调用优化装置,应用于服务调用端,服务调用端与服务代理端通信连接,服务调用端与服务代理端均预存有服务提供列表,服务提供列表包括多个节点地址和对应的节点质量信息,装置包括:
目标节点地址选择模块401,用于响应于输入的服务调用请求,根据节点质量信息从多个节点地址中选择目标节点地址;
服务调用结果确定模块402,用于发送服务调用请求到目标节点地址,确定目标节点地址返回目标服务的服务调用结果;
信息定时上报模块403,用于定时上报服务调用结果到服务代理端;
服务提供列表更新模块404,用于根据服务代理端响应服务调用结果返回的节点质量报告,更新目标节点地址对应的目标节点质量信息。
可选地,节点质量信息包括系统失败率、平均耗时和调用成功率;目标节点地址选择模块401,包括:
参数读取子模块,用于响应于输入的服务调用请求,按照预设读取规则读取每个节点地址对应的系统失败率、平均耗时和调用成功率;
健康节点地址确定子模块,用于将系统失败率小于预设失败阈值,且平均耗时小于或等于预设耗时阈值,且调用成功率大于预设成功阈值的节点地址确定为健康节点地址;
待定节点地址确定子模块,用于将系统失败率处于第一预设范围,或者,平均耗时处于第二预设范围,或者,调用成功率处于第三预设范围的节点地址确定为待定节点地址;
目标节点地址选取子模块,用于从健康节点地址和待定节点地址中选择目标节点地址。
可选地,目标节点地址选取子模块,包括:
节点类型检测单元,用于检测当前节点地址为健康节点地址或待定节点地址;
第一目标节点地址确定单元,用于若当前节点地址为健康节点地址,则将当前节点地址作为目标节点地址;
第二目标节点地址确定单元,用于若当前节点地址为待定节点地址,则根据预设随机数与当前节点地址对应的调用成功率的比对结果,确定目标节点地址。
可选地,第二目标节点地址确定单元,包括:
调用成功率获取子单元,用于若当前节点地址为待定节点地址,则获取当前节点地址对应的调用成功率;
第一比对成功率确定子单元,用于从当前节点地址对应的调用成功率和预设最小成功率中选择最小值作为第一比对成功率;
第二比对成功率确定子单元,用于从当前节点地址对应的调用成功率和预设最大成功率中选择最大值作为第二比对成功率;
成功率比对子单元,用于判断预设随机数是否小于第一比对成功率或第二比对成功率;
第一目标节点地址确定子单元,用于若随机数小于第一比对成功率或第二比对成功率,则将当前节点地址作为目标节点地址。
第二目标节点地址确定子单元,用于若随机数大于或等于第一比对成功率和第二比对成功率,则将当前节点地址的下一节点地址作为目标节点地址。
可选地,目标节点地址选择模块401还包括:
不可用节点地址确定子模块,用于将系统失败率大于或等于预设失败阈值,或者,平均耗时大于预设耗时阈值,或者,调用成功率小于或等于预设成功阈值的节点地址确定为不可用节点地址;
周期性请求子模块,用于周期性发送预设的服务请求包到不可用节点地址;
节点恢复判断子模块,用于根据从不可用节点地址返回的请求服务,确定不可用节点地址对应的系统失败率、平均耗时和调用成功率的变化情况,判断不可用节点地址对应的节点是否恢复。
可选地,服务调用结果包括服务调用次数和服务调用耗时,服务调用结果确定模块402,包括:
发送时间戳获取子模块,用于发送服务调用请求到目标节点地址对应的目标节点,获取发送时间戳;
返回时间戳确定子模块,用于当接收到目标节点返回的目标服务时,确定返回时间戳;
调用耗时与次数累计子模块,用于计算返回时间戳和发送时间戳的差值,确定服务调用耗时,并累加服务调用次数。
可选地,服务提供列表更新模块404,包括:
节点质量报告接收子模块,用于接收服务代理端响应服务调用结果构建统计窗口,并采用滑动窗口计算方法返回的节点质量报告;
节点质量信息更新子模块,用于根据节点质量报告更新目标节点地址对应的目标节点质量信息。
可选地,节点质量报告包括节点平均质量数据和对应的质量方差,节点质量信息更新子模块包括:
质量数据获取单元,用于从节点平均质量数据中获取到平均系统失败率和目标平均耗时,从质量方差中获取系统失败率方差和耗时方差;
耗时调整幅度确定单元,用于若服务调用耗时小于目标平均耗时,则根据耗时方差和目标平均耗时的差值,确定耗时调整幅度;
系统失败率调整幅度确定单元,用于根据系统失败率方差和平均系统失败率的差值,确定系统失败率调整幅度;
第一调整单元,用于按照耗时调整幅度,对目标节点地址对应的目标节点质量信息内的平均耗时进行降低。
可选地,节点质量信息更新子模块还包括:
第二调整单元,用于若服务调用耗时大于预设的超时阈值,则按照耗时调整幅度增加目标节点质量信息内的平均耗时,按照系统失败率调整幅度对目标节点质量信息内的系统失败率进行增加。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置、模块和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (10)
1.一种服务调用优化方法,其特征在于,应用于服务调用端,所述服务调用端与服务代理端通信连接,所述服务调用端与所述服务代理端均预存有服务提供列表,所述服务提供列表包括多个节点地址和对应的节点质量信息,所述方法包括:
响应于输入的服务调用请求,根据所述节点质量信息从多个所述节点地址中选择目标节点地址;
发送所述服务调用请求到所述目标节点地址,确定所述目标节点地址返回目标服务的服务调用结果;
定时上报所述服务调用结果到所述服务代理端;
根据所述服务代理端响应所述服务调用结果返回的节点质量报告,更新所述目标节点地址对应的目标节点质量信息。
2.根据权利要求1所述的服务调用优化方法,其特征在于,所述节点质量信息包括系统失败率、平均耗时和调用成功率;所述响应于输入的服务调用请求,根据所述节点质量信息从多个所述节点地址中选择目标节点地址的步骤,包括:
响应于输入的服务调用请求,按照预设读取规则读取每个所述节点地址对应的所述系统失败率、所述平均耗时和所述调用成功率;
将所述系统失败率小于预设失败阈值,且所述平均耗时小于或等于预设耗时阈值,且所述调用成功率大于预设成功阈值的所述节点地址确定为健康节点地址;
将所述系统失败率处于第一预设范围,或者,所述平均耗时处于第二预设范围,或者,所述调用成功率处于第三预设范围的所述节点地址确定为待定节点地址;
从所述健康节点地址和所述待定节点地址中选择目标节点地址。
3.根据权利要求2所述的服务调用优化方法,其特征在于,所述从所述健康节点地址和所述待定节点地址中选择目标节点地址的步骤,包括:
检测当前节点地址为所述健康节点地址或所述待定节点地址;
若所述当前节点地址为所述健康节点地址,则将所述当前节点地址作为目标节点地址;
若所述当前节点地址为所述待定节点地址,则根据预设随机数与所述当前节点地址对应的所述调用成功率的比对结果,确定目标节点地址。
4.根据权利要求3所述的服务调用优化方法,其特征在于,所述若所述当前节点地址为所述待定节点地址,则根据预设随机数与所述当前节点地址对应的所述调用成功率的比对结果,确定目标节点地址的步骤,包括:
若所述当前节点地址为待定节点地址,则获取所述当前节点地址对应的所述调用成功率;
从所述当前节点地址对应的所述调用成功率和预设最小成功率中选择最小值作为第一比对成功率;
从所述当前节点地址对应的所述调用成功率和预设最大成功率中选择最大值作为第二比对成功率;
判断预设随机数是否小于所述第一比对成功率或第二比对成功率;
若所述随机数小于所述第一比对成功率或第二比对成功率,则将所述当前节点地址作为目标节点地址;
若所述随机数大于或等于所述第一比对成功率和第二比对成功率,则将所述当前节点地址的下一所述节点地址作为目标节点地址。
5.根据权利要求2所述的服务调用优化方法,其特征在于,还包括:
将所述系统失败率大于或等于预设失败阈值,或者,所述平均耗时大于预设耗时阈值,或者,所述调用成功率小于或等于预设成功阈值的所述节点地址确定为不可用节点地址;
周期性发送预设的服务请求包到所述不可用节点地址;
根据从所述不可用节点地址返回的请求服务,确定所述不可用节点地址对应的所述系统失败率、所述平均耗时和所述调用成功率的变化情况,判断所述不可用节点地址对应的节点是否恢复。
6.根据权利要求1所述的服务调用优化方法,其特征在于,所述服务调用结果包括服务调用次数和服务调用耗时,所述发送所述服务调用请求到所述目标节点地址,确定所述目标节点地址返回目标服务的服务调用结果的步骤,包括:
发送所述服务调用请求到所述目标节点地址对应的目标节点,获取发送时间戳;
当接收到所述目标节点返回的目标服务时,确定返回时间戳;
计算所述返回时间戳和所述发送时间戳的差值,确定所述服务调用耗时,并累加所述服务调用次数。
7.根据权利要求6所述的服务调用优化方法,其特征在于,所述根据所述服务代理端响应所述服务调用结果返回的节点质量报告,更新所述目标节点地址对应的目标节点质量信息的步骤,包括:
接收所述服务代理端响应所述服务调用结果构建统计窗口,并采用滑动窗口计算方法返回的节点质量报告;
根据所述节点质量报告更新所述目标节点地址对应的目标节点质量信息。
8.根据权利要求7所述的服务调用优化方法,其特征在于,所述节点质量报告包括节点平均质量数据和对应的质量方差,所述根据所述节点质量报告更新所述目标节点地址对应的目标节点质量信息的步骤,包括:
从所述节点平均质量数据中获取到平均系统失败率和目标平均耗时,从所述质量方差中获取系统失败率方差和耗时方差;
若所述服务调用耗时小于所述目标平均耗时,则根据所述耗时方差和所述目标平均耗时的差值,确定耗时调整幅度;
根据所述系统失败率方差和所述平均系统失败率的差值,确定系统失败率调整幅度;
按照所述耗时调整幅度,对所述目标节点地址对应的目标节点质量信息内的所述平均耗时进行降低。
9.根据权利要求8所述的服务调用优化方法,其特征在于,所述方法还包括:
若所述服务调用耗时大于预设的超时阈值,则按照所述耗时调整幅度增加所述目标节点质量信息内的所述平均耗时,按照所述系统失败率调整幅度对所述目标节点质量信息内的所述系统失败率进行增加。
10.一种服务调用优化装置,其特征在于,应用于服务调用端,所述服务调用端与服务代理端通信连接,所述服务调用端与所述服务代理端均预存有服务提供列表,所述服务提供列表包括多个节点地址和对应的节点质量信息,所述装置包括:
目标节点地址选择模块,用于响应于输入的服务调用请求,根据所述节点质量信息从多个所述节点地址中选择目标节点地址;
服务调用结果确定模块,用于发送所述服务调用请求到所述目标节点地址,确定所述目标节点地址返回目标服务的服务调用结果;
信息定时上报模块,用于定时上报所述服务调用结果到所述服务代理端;
服务提供列表更新模块,用于根据所述服务代理端响应所述服务调用结果返回的节点质量报告,更新所述目标节点地址对应的目标节点质量信息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110378446.8A CN113014673B (zh) | 2021-04-08 | 2021-04-08 | 一种服务调用优化方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110378446.8A CN113014673B (zh) | 2021-04-08 | 2021-04-08 | 一种服务调用优化方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113014673A true CN113014673A (zh) | 2021-06-22 |
CN113014673B CN113014673B (zh) | 2022-11-04 |
Family
ID=76388124
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110378446.8A Active CN113014673B (zh) | 2021-04-08 | 2021-04-08 | 一种服务调用优化方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113014673B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116016675A (zh) * | 2022-11-29 | 2023-04-25 | 北京奇艺世纪科技有限公司 | 一种服务请求处理方法、装置、网关设备及存储介质 |
CN116319505A (zh) * | 2023-02-10 | 2023-06-23 | 安芯网盾(北京)科技有限公司 | 路由分发方法及装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101674320A (zh) * | 2008-09-12 | 2010-03-17 | 阿里巴巴集团控股有限公司 | 一种集群环境下的服务寻址方法及装置 |
CN106941508A (zh) * | 2016-01-05 | 2017-07-11 | 阿里巴巴集团控股有限公司 | 服务调用方法、装置和系统 |
CN108769101A (zh) * | 2018-04-03 | 2018-11-06 | 北京奇艺世纪科技有限公司 | 一种信息处理方法、客户端及系统 |
CN109542641A (zh) * | 2018-11-14 | 2019-03-29 | 中国联合网络通信集团有限公司 | 服务调用方法、装置及系统 |
CN111274604A (zh) * | 2020-01-16 | 2020-06-12 | 平安医疗健康管理股份有限公司 | 服务访问方法、装置、设备及计算机可读存储介质 |
-
2021
- 2021-04-08 CN CN202110378446.8A patent/CN113014673B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101674320A (zh) * | 2008-09-12 | 2010-03-17 | 阿里巴巴集团控股有限公司 | 一种集群环境下的服务寻址方法及装置 |
CN106941508A (zh) * | 2016-01-05 | 2017-07-11 | 阿里巴巴集团控股有限公司 | 服务调用方法、装置和系统 |
CN108769101A (zh) * | 2018-04-03 | 2018-11-06 | 北京奇艺世纪科技有限公司 | 一种信息处理方法、客户端及系统 |
CN109542641A (zh) * | 2018-11-14 | 2019-03-29 | 中国联合网络通信集团有限公司 | 服务调用方法、装置及系统 |
CN111274604A (zh) * | 2020-01-16 | 2020-06-12 | 平安医疗健康管理股份有限公司 | 服务访问方法、装置、设备及计算机可读存储介质 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116016675A (zh) * | 2022-11-29 | 2023-04-25 | 北京奇艺世纪科技有限公司 | 一种服务请求处理方法、装置、网关设备及存储介质 |
CN116319505A (zh) * | 2023-02-10 | 2023-06-23 | 安芯网盾(北京)科技有限公司 | 路由分发方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN113014673B (zh) | 2022-11-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113014673B (zh) | 一种服务调用优化方法和装置 | |
US8199654B2 (en) | Method and apparatus for providing end-to-end high quality services based on performance characterizations of network conditions | |
US20040103194A1 (en) | Method and system for server load balancing | |
US20080285438A1 (en) | Methods, systems, and computer program products for providing fault-tolerant service interaction and mediation function in a communications network | |
US9075660B2 (en) | Apparatus and method for providing service availability to a user via selection of data centers for the user | |
JPH0366253A (ja) | 通信網監視方法およびシステムおよび通信網要素 | |
CN110830290B (zh) | 网络拓扑生成方法及服务器 | |
CN113242297B (zh) | 服务系统及服务状态的调整方法 | |
CN112491719A (zh) | 网络节点的选择方法、设备及存储介质 | |
CN112218342A (zh) | 一种实现核心网子切片容灾的方法、装置和系统 | |
CN109542627A (zh) | 节点切换方法、装置、管理机、节点设备和分布式系统 | |
CN111949404A (zh) | 调整服务器负载的方法、装置和相关设备 | |
WO2022078070A1 (zh) | 一种设备检测方法、装置和通信设备 | |
CN100512162C (zh) | 流量数据采集方法和系统以及设备 | |
CN112738246B (zh) | 一种区块链物联网设备感知区块链节点的方法 | |
WO2007059667A1 (fr) | Procede d'obtention de donnees d'alarme des elements de reseau | |
WO2013103387A1 (en) | Method for optimizing network performance after a temporary loss of connection | |
US7369538B1 (en) | Method and apparatus for implementing a high-reliability load balanced easily upgradeable packet technology | |
CN110213778B (zh) | 一种网元主备智能配对的方法及装置 | |
CN112988434A (zh) | 一种服务熔断器、服务熔断方法以及计算机可读存储介质 | |
EP2883414A2 (en) | Self organizing network event reporting | |
CN110830284A (zh) | 一种基于sdn网络的业务故障监测的方法和装置 | |
CN107819591B (zh) | 数据同步方法、装置、系统和网络设备 | |
US11825370B2 (en) | Methods, systems, and computer readable media for providing for network function (NF) fallback to recovered NF repository function (NRF) | |
US20070171896A1 (en) | Management system and management method for managing a communication apparatus |
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 |