CN113904963B - 一种基于服务目录代理服务化和计分板方法的服务治理方法 - Google Patents
一种基于服务目录代理服务化和计分板方法的服务治理方法 Download PDFInfo
- Publication number
- CN113904963B CN113904963B CN202111029918.5A CN202111029918A CN113904963B CN 113904963 B CN113904963 B CN 113904963B CN 202111029918 A CN202111029918 A CN 202111029918A CN 113904963 B CN113904963 B CN 113904963B
- Authority
- CN
- China
- Prior art keywords
- service
- directory
- service directory
- notification
- agent
- 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
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/10—Active monitoring, e.g. heartbeat, ping or trace-route
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/1066—Session management
- H04L65/1073—Registration or de-registration
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Business, Economics & Management (AREA)
- General Business, Economics & Management (AREA)
- Multimedia (AREA)
- Health & Medical Sciences (AREA)
- Cardiology (AREA)
- General Health & Medical Sciences (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于服务目录代理服务化和计分板方法的服务治理方法,包括:在每个机器内部署能够被访问使用的服务目录代理服务,利用服务目录代理服务建立机器与服务目录的访问连接;基于建立的访问连接,进行服务注册、应用注册和服务寻址;基于建立的访问连接,采用计分板方法进行服务信息变更通知,其中,采用计分板方法进行服务信息变更通知包括:在应用或服务访问其他服务时,利用应用或服务所在机器内的服务目录代理服务记录访问信息,并将访问信息发送至服务目录进行存储,基于服务目录存储的访问信息,结合可靠通知机制,进行服务信息可靠变更通知。本发明能避免需要与服务目录建立大量的查询连接,降低服务目录的查询和变更推送压力。
Description
技术领域
本发明涉及计算机技术领域,具体涉及机动环境下大型软件系统可靠性和可用性设计,更具体地涉及一种基于服务目录代理服务化和计分板方法的服务治理方法。
背景技术
当前各个领域的软件朝着服务化的方向发展,尤其是对于机动环境下大型的军事信息系统来说,软件服务化面临的各方面的挑战更多。在软件服务化下,应用对服务的访问,以及服务和服务之间的访问是一个研究重点,对于大型软件系统来说,往往需要先将服务地址等元数据注册到服务目录上,应用或者其他服务通过嵌入服务目录代理发起对服务目录的访问从而获取需要访问的服务地址等元数据。同时,由于在机动环境下,存在大量连接、网络抖动等情况,对整个软件系统的可用性和可靠性造成了较大影响。
现有的大型软件系统中,每个应用和每个服务中均嵌入一个服务目录代理,服务目录代理会建立一个对服务目录的访问连接,每个应用和每个服务中嵌入的服务目录代理通常采用长轮询或者长连接的方法查询服务目录上的地址变更,无论地址是否变更,该长轮询或者长连接会一直存在,若有变更则返回变更信息,若无变更则定时返回无变更信号并发起新的查询,此时会对机动环境下的大型软件系统中的服务目录造成极大的查询压力,影响软件系统的性能。除了长连接/长轮询外,目前也存在通过服务目录广播服务实例变更通知的方法,此时无论应用和服务是否需要访问变更的服务实例,均会收到变更通知,这对网络的要求较高,不适用于网络不稳定的机动环境下的大型软件系统。并且,每个应用和每个服务中嵌入的服务目录代理均需具有客户端负载均衡功能,导致应用和服务的规模和支持成本增加。
此外,在机动环境下,极易发生网络抖动甚至中断的情况,若每一个服务中均嵌入服务目录代理,并通过长连接或者长轮询的方式和服务目录之间建立联系,在机动环境下服务目录所在的服务器网络异常并恢复后,极易发生所有客户端同时重新连接服务目录的情况,造成连接风暴,直接导致服务目录服务端异常。
发明内容
为解决上述现有技术中存在的部分或全部技术问题,本发明提供一种基于服务目录代理服务化和计分板方法的服务治理方法。
本发明的技术方案如下:
提供了一种基于服务目录代理服务化和计分板方法的服务治理方法,所述方法包括:
在每个机器内部署服务目录代理服务,利用服务目录代理服务建立每个机器与服务目录的访问连接,基于建立的访问连接,进行服务注册、应用注册和服务寻址,其中,服务目录代理服务被配置为能够被同一机器内的所有应用和所有服务访问使用,服务目录代理服务配置有对外访问端口,服务目录能够通过对外访问端口与服务目录代理服务互相访问,其中,机器包括物理机和/或虚拟机;
基于建立的访问连接,采用计分板方法进行服务信息变更通知,其中,采用计分板方法进行服务信息变更通知包括:在应用或服务访问其他服务时,利用应用或服务所在机器内的服务目录代理服务记录访问信息,并将访问信息发送至服务目录进行存储,基于服务目录存储的访问信息,结合可靠通知机制,进行服务信息可靠变更通知,其中,访问信息包括进行访问的应用名或服务名、以及被访问的服务名。
在一些可能的实现方式中,所述进行服务注册,包括:
将待注册服务的服务名和端口信息发送至同一机器内的服务目录代理服务;
利用服务目录代理服务将接收到的服务名和端口信息、以及本机IP地址发送至服务目录;
利用服务目录接收并记录服务目录代理服务发送的服务名、端口信息和本机IP地址。
在一些可能的实现方式中,所述进行应用注册,包括:
将待注册应用的应用名发送至同一机器内的服务目录代理服务;
利用服务目录代理服务将接收到的应用名、以及本机IP地址发送至服务目录;
利用服务目录接收并记录服务目录代理服务发送的应用名和本机IP地址。
在一些可能的实现方式中,所述进行服务寻址,包括:
利用访问者向同一机器内的服务目录代理服务发送寻址请求,其中,访问者为需要访问服务的应用或服务,寻址请求包括被访问服务的服务名和负载均衡方法;
若服务目录代理服务存储有被访问服务的服务实例地址,则利用服务目录代理服务以寻址请求中指定的负载均衡方法从被访问服务的所有服务实例地址中选择出一个服务实例地址返回至访问者;
若服务目录代理服务未存储被访问服务的服务实例地址,则利用服务目录代理服务访问服务目录,获取并存储被访问服务的所有服务实例地址,利用服务目录代理服务以寻址请求中指定的负载均衡方法从被访问服务的所有服务实例地址中选择出一个服务实例地址返回至访问者;
根据访问者接收到的服务实例地址,利用访问者对服务发送访问并获取访问结果。
在一些可能的实现方式中,所述进行服务寻址,还包括:
在访问者向服务目录代理服务发送寻址请求的同时,利用访问者向服务目录代理服务发送自身的服务名或应用名。
在一些可能的实现方式中,所述方法还包括:基于建立的每个机器与服务目录的访问连接,进行服务目录代理服务和服务实例的心跳状态控制。
在一些可能的实现方式中,所述进行服务目录代理服务和服务实例的心跳状态控制,包括:
利用服务目录代理服务以第一预设时间间隔向服务目录发送心跳状态信息;
利用服务实例以第二预设时间间隔向同一机器内的服务目录代理服务发送心跳状态信息;
若服务目录代理服务在第三预设时间内没有接收到同一机器内的服务实例发送的心跳状态信息,则利用服务目录代理服务通知服务目录将对应的服务实例设置为假删除状态,其中,假删除状态表示服务实例地址仍存储于服务目录,但无法被其他应用和服务访问;
若服务目录在第四预设时间内没有接收到服务目录代理服务发送的心跳状态信息,则将服务目录上对应的服务目录代理服务设置为假删除状态;
在服务目录将服务实例设置为假删除状态后,若服务目录代理服务再次接收到对应的服务实例发送的心跳状态信息,则利用服务目录代理服务通知服务目录将对应的服务实例由假删除状态设置为正常状态,其中,正常状态表示服务实例地址存储于服务目录,且允许其他应用和服务访问;
在服务目录将服务目录代理服务设置为假删除状态后,若服务目录再次接收到对应的服务目录代理服务发送的心跳状态信息,则将服务目录上对应的服务目录代理服务由假删除状态设置为正常状态。
在一些可能的实现方式中,基于建立的访问连接,采用计分板方法进行服务信息变更通知,还包括:
在利用服务目录代理服务记录访问信息时,若服务目录代理服务已存储有相同的访问信息,则不对当前访问信息进行记录和发送。
在一些可能的实现方式中,基于服务目录存储的访问信息,结合可靠通知机制,进行服务信息可靠变更通知,包括:
当服务的服务实例增加或减少时,利用增加或减少的当前服务实例所在机器内的服务目录代理服务通知服务目录进行服务实例地址更新;
在服务目录接收服务实例地址更新通知后,根据服务目录存储的访问信息,利用服务目录向访问过当前服务实例对应的服务的应用或服务所在机器内的服务目录代理服务发送服务实例变更通知,以进行服务实例地址更新。
在一些可能的实现方式中,基于服务目录存储的访问信息,结合可靠通知机制,进行服务信息可靠变更通知,还包括:
在利用服务目录向服务目录代理服务发送服务实例变更通知后,将对应的服务实例变更通知存储在通知模块,其中,通知模块为服务目录中配置的一个功能模块;
在服务目录代理服务接收到服务实例变更通知后,利用服务目录代理服务向通知模块返回回执;
若通知模块在预设回执时间内接收到服务目录代理服务返回的回执,则删除通知模块存储的对应的服务实例变更通知;
若通知模块在预设回执时间内未接收到服务目录代理服务返回的回执,则查询服务目录上对应的服务目录代理服务地址是否处于假删除状态,若不处于假删除状态,则重新向服务目录代理服务发送服务实例变更通知,若处于假删除状态,则暂停发送服务实例变更通知;
每间隔预设回执时间重复上述查询处理过程,并利用通知模块进行重复通知次数计数,直至通知模块记录的重复通知次数达到预设通知次数,或者通知模块在预设通知次数内接收到服务目录代理服务返回的回执;
当通知模块记录的重复通知次数达到预设通知次数时,将服务目录上对应的服务目录代理服务设置为清理状态,并将通知模块中对应的通知记录删除,其中,通知记录包括存储的服务实例变更通知和记录的重复通知次数;
若处于清理状态的服务目录代理服务重新发送心跳状态信息到服务目录,则将服务目录上对应的服务目录代理服务由清理状态设置为正常状态,并发送清理通知给对应的服务目录代理服务,以使服务目录代理服务删除缓存。
本发明技术方案的主要优点如下:
本发明的基于服务目录代理服务化和计分板方法的服务治理方法通过在一个机器内部署能够与服务目录互相访问,且能够被所有应用及服务共用的服务目录代理服务,即将服务目录代理进行服务化,基于服务化的服务目录代理进行服务注册、应用注册和服务寻址,无需在每个应用和服务上单独配置服务目录代理,能够减少代理数量,降低客户端与服务目录之间的连接数量,无需每个应用/服务和服务目录之间建立连接并进行心跳报送、服务注册和服务寻址等,提高机动环境下大型软件系统的可靠性;同时,通过采用计分板方法和应对网络中断的可靠通知机制,能够实现服务实例变更精确推送和可靠推送,避免需要服务目录代理与服务目录建立大量的查询连接,降低服务目录的查询和变更推送压力,提高机动环境下大型软件系统的可用性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明一实施例的基于服务目录代理服务化和计分板方法的服务治理方法的流程图;
图2为利用本发明一实施例的基于服务目录代理服务化和计分板方法的服务治理方法的一种软件系统的信息流示意图;
图3为图2所示的信息流示意图下的一种应用和服务的访问拓扑图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明具体实施例及相应的附图对本发明技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本发明的一部分实施例,而不是全部的实施例。基于本发明的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
以下结合附图,详细说明本发明一实施例提供的技术方案。
参见附图1,本发明一实施例提供了一种基于服务目录代理服务化和计分板方法的服务治理方法,该方法包括:
在每个机器内部署服务目录代理服务,利用服务目录代理服务建立每个机器与服务目录的访问连接,基于建立的访问连接,进行服务注册、应用注册和服务寻址,其中,服务目录代理服务被配置为能够被同一机器内的所有应用和所有服务访问使用,服务目录代理服务配置有对外访问端口,服务目录能够通过对外访问端口与服务目录代理服务互相访问,其中,机器包括物理机和/或虚拟机;
基于建立的访问连接,采用计分板方法进行服务信息变更通知,其中,采用计分板方法进行服务信息变更通知包括:在应用或服务访问其他服务时,利用应用或服务所在机器内的服务目录代理服务记录访问信息,并将访问信息发送至服务目录进行存储,基于服务目录存储的访问信息,结合可靠通知机制,进行服务信息可靠变更通知,其中,访问信息包括进行访问的应用名或服务名、以及被访问的服务名。
进一步地,对于如何基于建立的访问连接,进行服务注册、应用注册和服务寻址,以下进行具体说明。
本发明一实施例中,基于建立的访问连接,进行服务注册,包括:
将待注册服务的服务名和端口信息发送至同一机器内的服务目录代理服务;
利用服务目录代理服务将接收到的服务名和端口信息、以及本机IP地址发送至服务目录;
利用服务目录接收并记录服务目录代理服务发送的服务名、端口信息和本机IP地址。
附图2为利用本发明一实施例的基于服务目录代理服务化和计分板方法的服务治理方法的一种软件系统的信息流示意图,附图3为附图2所示的信息流示意图下的一种应用和服务的访问拓扑图。以附图2和附图3为例,假设需要在服务目录上注册机器3中的服务1和服务2,在服务1和服务2启动时,将服务1和服务2的服务名(Svc1、Svc2)及端口信息(Port1、Port2)发送给机器3中的服务目录代理服务,服务目录代理服务接收到服务1和服务2的服务名及端口信息后,将接收到的服务名及端口信息、以及本机地址IP3一起发送给服务目录,附图2中,IP1、IP2、IP3和IP4分别表示机器1、机器2、机器3和机器4的IP地址,Svc1、Svc2和Svc3分别表示服务1、服务2和服务3的服务名,App1、App2和App3分别表示应用1、应用2和应用3的应用名。
进一步地,本发明一实施例中,基于建立的访问连接,进行应用注册,包括:
将待注册应用的应用名发送至同一机器内的服务目录代理服务;
利用服务目录代理服务将接收到的应用名、以及本机IP地址发送至服务目录;
利用服务目录接收并记录服务目录代理服务发送的应用名和本机IP地址。
以附图2和附图3为例,假设需要在服务目录上注册机器IP1中的应用1和应用2,在应用1和应用2启动时,将应用1和应用2的应用名(App1、App2)发送给机器1中的服务目录代理服务,服务目录代理服务接收到应用1和应用2的应用名后,将接收到的应用名、以及本机地址IP1一起发送给服务目录。
进一步地,本发明一实施例中,基于建立的访问连接,进行服务寻址,包括:
利用访问者向同一机器内的服务目录代理服务发送寻址请求,其中,访问者为需要访问服务的应用或服务,寻址请求包括被访问服务的服务名和负载均衡方法;
若服务目录代理服务存储有被访问服务的服务实例地址,则利用服务目录代理服务以寻址请求中指定的负载均衡方法从被访问服务的所有服务实例地址中选择出一个服务实例地址返回至访问者;
若服务目录代理服务未存储被访问服务的服务实例地址,则利用服务目录代理服务访问服务目录,获取并存储被访问服务的所有服务实例地址,利用服务目录代理服务以寻址请求中指定的负载均衡方法从被访问服务的所有服务实例地址中选择出一个服务实例地址返回至访问者;
根据访问者接收到的服务实例地址,利用访问者对服务发送访问并获取访问结果。
以附图2和附图3为例,假设机器1中的应用1需要访问服务1,若机器1中的服务目录代理服务中没有服务1的地址信息,则利用服务目录代理服务访问服务目录,获取并存储服务1的地址IP3:Port1和IP4:Port1,而后利用服务目录代理服务以应用1指定的负载均衡方法从服务1的地址IP3:Port1和IP4:Port1中选择出一个地址返回至应用1;若机器1中的服务目录代理服务中存储有服务1的地址信息IP3:Port1和IP4:Port1,则利用服务目录代理服务以应用1指定的负载均衡方法从服务1的地址IP3:Port1和IP4:Port1中选择出一个地址返回至应用1;例如当机器1中的应用1再次访问服务1,此时机器1中的服务目录代理服务中存储有服务1的地址信息。
其中,负载均衡方法可以包括:随机法、轮询法、最小连接数法和IP哈希中的任一个。
其中,基于建立的访问连接,进行服务寻址,还包括:
在访问者向服务目录代理服务发送寻址请求的同时,利用访问者向服务目录代理服务发送自身的服务名或应用名。
进一步地,本发明一实施例中,基于建立的访问连接,采用计分板方法进行服务信息变更通知,还包括:
在利用服务目录代理服务记录访问信息时,若服务目录代理服务已存储有相同的访问信息,则不对当前访问信息进行记录和发送。
其中,相同的访问信息表示两个访问信息中包含的进行访问的应用名或服务名、以及被访问的服务名相同。
以附图2和附图3为例,假设机器1中的应用1需要访问服务1,在应用1向机器1中的服务目录代理服务发送寻址请求的同时,将自身的应用名发送给服务目录代理服务,服务目录代理服务对该次访问信息进行存储,即存储应用1访问服务1的访问信息,并在服务目录代理服务访问服务目录以获取服务1的地址时,将该次访问信息发送至服务目录,由服务目录对该次访问信息进行存储。当应用1再次访问服务1时,由于机器1中的服务目录代理服务已存储有相同的访问信息,此时无需对当前访问信息进行再次存储和发送。
通过上述步骤,能够对应用及服务的具体访问内容进行记录,便于在服务目录上注册的服务信息发生变化时,服务目录可以根据存储的访问信息精确推送服务信息变更通知到访问过当前发生变化的服务的应用或服务所对应的服务目录代理服务,以使服务目录代理服务更新相关服务地址信息,能够避免需要服务目录代理与服务目录建立大量的查询连接,降低服务目录的查询和变更推送压力。
进一步地,本发明一实施例中,该方法还可以包括:基于建立的每个机器与服务目录的访问连接,进行服务目录代理服务和服务实例的心跳状态控制。
具体地,基于建立的每个机器与服务目录的访问连接,进行服务目录代理服务和服务实例的心跳状态控制,包括:
利用服务目录代理服务以第一预设时间间隔向服务目录发送心跳状态信息;
利用服务实例以第二预设时间间隔向同一机器内的服务目录代理服务发送心跳状态信息;
若服务目录代理服务在第三预设时间内没有接收到同一机器内的服务实例发送的心跳状态信息,则利用服务目录代理服务通知服务目录将对应的服务实例设置为假删除状态,其中,假删除状态表示服务实例地址仍存储于服务目录,但无法被其他应用和服务访问;
若服务目录在第四预设时间内没有接收到服务目录代理服务发送的心跳状态信息,则将服务目录上对应的服务目录代理服务设置为假删除状态;
在服务目录将服务实例设置为假删除状态后,若服务目录代理服务再次接收到赌赢对应的服务实例发送的心跳状态信息,则利用服务目录代理服务通知服务目录将对应的服务实例由假删除状态设置为正常状态,其中,正常状态表示服务实例地址存储于服务目录,且允许其他应用和服务访问;
在服务目录将服务目录代理服务设置为假删除状态后,若服务目录再次接收到对应的服务目录代理服务发送的心跳状态信息,则将服务目录上对应的服务目录代理服务由假删除状态设置为正常状态。
本发明一实施例中,第一预设时间、第二预设时间、第三预设时间和第四预设时间可以根据实际情况设定;可选的,第三预设时间不小于第二预设时间,第四预设时间不小于第一预设时间。
进一步地,本发明一实施例中,进行服务目录代理服务和服务实例的心跳状态控制,还可以包括:当应用被卸载时,利用同一机器内的服务目录代理服务通知服务目录删除对应应用的IP地址。
进一步地,本发明一实施例中,基于服务目录存储的访问信息,结合可靠通知机制,进行服务信息可靠变更通知,包括:
当服务的服务实例增加或减少时,利用增加或减少的当前服务实例所在机器内的服务目录代理服务通知服务目录进行服务实例地址更新;
在服务目录接收服务实例地址更新通知后,根据服务目录存储的访问信息,利用服务目录向访问过当前服务实例对应的服务的应用或服务所在机器内的服务目录代理服务发送服务实例变更通知,以进行服务实例地址更新。
以附图2和附图3为例,假设:机器4中的服务1出现问题,对服务1发起访问的有应用1和应用2;此时机器4中的服务目录代理服务通知服务目录进行服务实例地址更新,将服务目录上的服务1的地址IP4:Port1注销(删除),或者将服务1的地址IP4:Port1假删除;而后,通过服务目录查询到应用1和应用2所在机器的地址为IP1和IP2,发送服务1的地址更新信息到机器1和机器2中的服务目录代理服务,将服务目录代理服务中的服务1的地址IP4:Port1删除。
以附图2和附图3为例,假设:假设机器3中增加了服务3,对服务3发起访问的有应用3,此时机器3中的服务目录代理服务通知服务目录进行服务实例地址更新,即将机器3中的服务3注册到服务目录上;而后,通过服务目录查询到应用3所在机器的地址为IP3,发送服务3的地址更新信息到机器3中的服务目录代理服务,在服务目录代理服务中添加服务3的地址IP3:Port3。
其中,将新增加的服务注册到服务目录的过程与上述的进行服务注册的过程相同。
本发明一实施例中,在进行服务信息变更通知时,服务目录可以通过查询自身存储的访问信息确定访问过当前服务实例对应的服务的应用或服务。
以附图2和附图3为例,假设在服务实例变更前对服务1发起访问的有应用1和应用2,由于服务目录记录存储有相应的访问信息,能够直接查询到对服务1发起访问的有应用1和应用2。
由于在机动环境下,存在网络抖动或网络偶发中断的情况,而当网络抖动或中断时,可能出现服务目录给服务目录代理服务发送服务实例变更通知不到位的情况。为解决该技术问题,本发明一实施例中,基于服务目录存储的访问信息,结合可靠通知机制,进行服务信息可靠变更通知,还包括:
在利用服务目录向服务目录代理服务发送服务实例变更通知后,将对应的服务实例变更通知存储在通知模块,其中,通知模块为服务目录中配置的一个功能模块;
在服务目录代理服务接收到服务实例变更通知后,利用服务目录代理服务向通知模块返回回执;
若通知模块在预设回执时间内接收到服务目录代理服务返回的回执,则删除通知模块存储的对应的服务实例变更通知;
若通知模块在预设回执时间内未接收到服务目录代理服务返回的回执,则查询服务目录上对应的服务目录代理服务地址是否处于假删除状态,若不处于假删除状态,则重新向服务目录代理服务发送服务实例变更通知,若处于假删除状态,则暂停发送服务实例变更通知;
每间隔预设回执时间重复上述查询处理过程,并利用通知模块进行重复通知次数计数,直至通知模块记录的重复通知次数达到预设通知次数,或者通知模块在预设通知次数内接收到服务目录代理服务返回的回执;
当通知模块记录的重复通知次数达到预设通知次数时,将服务目录上对应的服务目录代理服务设置为清理状态,并将通知模块中对应的通知记录删除,其中,通知记录包括存储的服务实例变更通知和记录的重复通知次数;
若处于清理状态的服务目录代理服务重新发送心跳状态信息到服务目录,则将服务目录上对应的服务目录代理服务由清理状态设置为正常状态,并发送清理通知给对应的服务目录代理服务,以使服务目录代理服务删除缓存。
其中,清理状态表示对应的服务目录代理服务重新发送心跳状态信息到服务目录,则服务目录发送清理通知给对应的服务目录代理服务,要求其清除缓存。例如在网络中断时,导致服务目录代理服务连接不上服务目录,会使得服务目录代理服务中的缓存信息较长时间不更新,非常容易导致访问错误,此时,在服务目录代理服务重新连接上服务目录后,必须对服务目录代理服务清理缓存,以保证后续的访问正确进行。
本发明一实施例中,预设回执时间和预设通知次数可以根据实际情况设定;可选的,预设回执时间例如可以为10秒,预设通知次数例如可以为10次。
本发明一实施例中,服务目录发送给服务目录代理服务的服务实例变更通知包括:服务实例增加通知、服务实例删除通知、以及服务实例更改通知中的任一个。其中,服务实例更改通知为服务实例增加通知和服务实例删除通知组成的复合通知。
基于上述的本发明一实施例提供的基于服务目录代理服务化和计分板方法的服务治理方法,以及附图2所示的软件系统的信息流示意图和附图3所示的应用和服务的具体访问关系,并假设Agent1、Agent2、Agent3和Agent4分别表示四个机器中服务目录代理服务的服务名,服务目录代理服务的端口为端口Port0,可以得到服务目录中存储的相关信息如表1所示,各个服务目录代理服务中存储的相关信息如表2所示。
表1服务目录的存储信息
表2各个服务目录代理服务的存储信息
本发明一实施例提供的基于服务目录代理服务化和计分板方法的服务治理方法通过在一个机器内部署能够与服务目录互相访问,且能够被所有应用及服务共用的服务目录代理服务,即将服务目录代理进行服务化,基于服务化的服务目录代理进行服务注册、应用注册和服务寻址,无需在每个应用和服务上单独配置服务目录代理,能够减少代理数量,降低客户端与服务目录之间的连接数量,无需每个应用/服务和服务目录之间建立连接并进行心跳报送、服务注册和服务寻址等,提高机动环境下大型软件系统的可靠性;同时,通过采用计分板方法和应对网络中断的可靠通知机制,能够实现服务实例变更精确推送和可靠推送,避免需要服务目录代理与服务目录建立大量的查询连接,降低服务目录的查询和变更推送压力,提高机动环境下大型软件系统的可用性。
需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。此外,本文中“前”、“后”、“左”、“右”、“上”、“下”均以附图中表示的放置状态为参照。
最后应说明的是:以上实施例仅用于说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (8)
1.一种基于服务目录代理服务化和计分板方法的服务治理方法,其特征在于,所述方法包括:
在每个机器内部署服务目录代理服务,利用服务目录代理服务建立每个机器与服务目录的访问连接,基于建立的访问连接,进行服务注册、应用注册和服务寻址,其中,服务目录代理服务被配置为能够被同一机器内的所有应用和所有服务访问使用,服务目录代理服务配置有对外访问端口,服务目录能够通过对外访问端口与服务目录代理服务互相访问,其中,机器包括物理机和/或虚拟机;
基于建立的访问连接,采用计分板方法进行服务信息变更通知,其中,采用计分板方法进行服务信息变更通知包括:在应用或服务访问其他服务时,利用应用或服务所在机器内的服务目录代理服务记录访问信息,并将访问信息发送至服务目录进行存储,基于服务目录存储的访问信息,结合可靠通知机制,进行服务信息可靠变更通知,其中,访问信息包括进行访问的应用名或服务名、以及被访问的服务名;
基于服务目录存储的访问信息,结合可靠通知机制,进行服务信息可靠变更通知,包括:
当服务的服务实例增加或减少时,利用增加或减少的当前服务实例所在机器内的服务目录代理服务通知服务目录进行服务实例地址更新;
在服务目录接收服务实例地址更新通知后,根据服务目录存储的访问信息,利用服务目录向访问过当前服务实例对应的服务的应用或服务所在机器内的服务目录代理服务发送服务实例变更通知,以进行服务实例地址更新;
基于服务目录存储的访问信息,结合可靠通知机制,进行服务信息可靠变更通知,还包括:
在利用服务目录向服务目录代理服务发送服务实例变更通知后,将对应的服务实例变更通知存储在通知模块,其中,通知模块为服务目录中配置的一个功能模块;
在服务目录代理服务接收到服务实例变更通知后,利用服务目录代理服务向通知模块返回回执;
若通知模块在预设回执时间内接收到服务目录代理服务返回的回执,则删除通知模块存储的对应的服务实例变更通知;
若通知模块在预设回执时间内未接收到服务目录代理服务返回的回执,则查询服务目录上对应的服务目录代理服务地址是否处于假删除状态,若不处于假删除状态,则重新向服务目录代理服务发送服务实例变更通知,若处于假删除状态,则暂停发送服务实例变更通知;
每间隔预设回执时间重复上述查询处理过程,并利用通知模块进行重复通知次数计数,直至通知模块记录的重复通知次数达到预设通知次数,或者通知模块在预设通知次数内接收到服务目录代理服务返回的回执;
当通知模块记录的重复通知次数达到预设通知次数时,将服务目录上对应的服务目录代理服务设置为清理状态,并将通知模块中对应的通知记录删除,其中,通知记录包括存储的服务实例变更通知和记录的重复通知次数;
若处于清理状态的服务目录代理服务重新发送心跳状态信息到服务目录,则将服务目录上对应的服务目录代理服务由清理状态设置为正常状态,并发送清理通知给对应的服务目录代理服务,以使服务目录代理服务删除缓存;
其中,清理状态表示对应的服务目录代理服务重新发送心跳状态信息到服务目录,则服务目录发送清理通知给对应的服务目录代理服务,要求其清除缓存。
2.根据权利要求1所述的基于服务目录代理服务化和计分板方法的服务治理方法,其特征在于,所述进行服务注册,包括:
将待注册服务的服务名和端口信息发送至同一机器内的服务目录代理服务;
利用服务目录代理服务将接收到的服务名和端口信息、以及本机IP地址发送至服务目录;
利用服务目录接收并记录服务目录代理服务发送的服务名、端口信息和本机IP地址。
3.根据权利要求2所述的基于服务目录代理服务化和计分板方法的服务治理方法,其特征在于,所述进行应用注册,包括:
将待注册应用的应用名发送至同一机器内的服务目录代理服务;
利用服务目录代理服务将接收到的应用名、以及本机IP地址发送至服务目录;
利用服务目录接收并记录服务目录代理服务发送的应用名和本机IP地址。
4.根据权利要求3所述的基于服务目录代理服务化和计分板方法的服务治理方法,其特征在于,所述进行服务寻址,包括:
利用访问者向同一机器内的服务目录代理服务发送寻址请求,其中,访问者为需要访问服务的应用或服务,寻址请求包括被访问服务的服务名和负载均衡方法;
若服务目录代理服务存储有被访问服务的服务实例地址,则利用服务目录代理服务以寻址请求中指定的负载均衡方法从被访问服务的所有服务实例地址中选择出一个服务实例地址返回至访问者;
若服务目录代理服务未存储被访问服务的服务实例地址,则利用服务目录代理服务访问服务目录,获取并存储被访问服务的所有服务实例地址,利用服务目录代理服务以寻址请求中指定的负载均衡方法从被访问服务的所有服务实例地址中选择出一个服务实例地址返回至访问者;
根据访问者接收到的服务实例地址,利用访问者对服务发送访问并获取访问结果。
5.根据权利要求4所述的基于服务目录代理服务化和计分板方法的服务治理方法,其特征在于,所述进行服务寻址,还包括:
在访问者向服务目录代理服务发送寻址请求的同时,利用访问者向服务目录代理服务发送自身的服务名或应用名。
6.根据权利要求1至5中任一项所述的基于服务目录代理服务化和计分板方法的服务治理方法,其特征在于,还包括:基于建立的每个机器与服务目录的访问连接,进行服务目录代理服务和服务实例的心跳状态控制。
7.根据权利要求6所述的基于服务目录代理服务化和计分板方法的服务治理方法,其特征在于,所述进行服务目录代理服务和服务实例的心跳状态控制,包括:
利用服务目录代理服务以第一预设时间间隔向服务目录发送心跳状态信息;
利用服务实例以第二预设时间间隔向同一机器内的服务目录代理服务发送心跳状态信息;
若服务目录代理服务在第三预设时间内没有接收到同一机器内的服务实例发送的心跳状态信息,则利用服务目录代理服务通知服务目录将对应的服务实例设置为假删除状态,其中,假删除状态表示服务实例地址仍存储于服务目录,但无法被其他应用和服务访问;
若服务目录在第四预设时间内没有接收到服务目录代理服务发送的心跳状态信息,则将服务目录上对应的服务目录代理服务设置为假删除状态;
在服务目录将服务实例设置为假删除状态后,若服务目录代理服务再次接收到对应的服务实例发送的心跳状态信息,则利用服务目录代理服务通知服务目录将对应的服务实例由假删除状态设置为正常状态,其中,正常状态表示服务实例地址存储于服务目录,且允许其他应用和服务访问;
在服务目录将服务目录代理服务设置为假删除状态后,若服务目录再次接收到对应的服务目录代理服务发送的心跳状态信息,则将服务目录上对应的服务目录代理服务由假删除状态设置为正常状态。
8.根据权利要求1所述的基于服务目录代理服务化和计分板方法的服务治理方法,其特征在于,基于建立的访问连接,采用计分板方法进行服务信息变更通知,还包括:
在利用服务目录代理服务记录访问信息时,若服务目录代理服务已存储有相同的访问信息,则不对当前访问信息进行记录和发送。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111029918.5A CN113904963B (zh) | 2021-09-03 | 2021-09-03 | 一种基于服务目录代理服务化和计分板方法的服务治理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111029918.5A CN113904963B (zh) | 2021-09-03 | 2021-09-03 | 一种基于服务目录代理服务化和计分板方法的服务治理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113904963A CN113904963A (zh) | 2022-01-07 |
CN113904963B true CN113904963B (zh) | 2023-04-11 |
Family
ID=79188335
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111029918.5A Active CN113904963B (zh) | 2021-09-03 | 2021-09-03 | 一种基于服务目录代理服务化和计分板方法的服务治理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113904963B (zh) |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7376827B1 (en) * | 1999-11-05 | 2008-05-20 | Cisco Technology, Inc. | Directory-enabled network elements |
US10608899B2 (en) * | 2013-03-14 | 2020-03-31 | Cisco Technology, Inc. | Service directory for quick and simplified application identification |
CN111193720A (zh) * | 2019-12-16 | 2020-05-22 | 中国电子科技集团公司第三十研究所 | 一种基于安全代理的信任服务适配方法 |
CN112492060B (zh) * | 2020-11-18 | 2023-05-09 | 中国人寿保险股份有限公司 | 一种服务资源处理方法及系统、代理设备、请求设备 |
-
2021
- 2021-09-03 CN CN202111029918.5A patent/CN113904963B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN113904963A (zh) | 2022-01-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7577960B2 (en) | System and method for managing cached objects using notifications bonds | |
CN111885098B (zh) | 对象存储集群的代理访问方法、系统及计算机设备 | |
US8209491B2 (en) | Techniques for directory server integration | |
CN103731447B (zh) | 一种数据查询方法及系统 | |
US8793355B2 (en) | Techniques for directory data resolution | |
US20080253403A1 (en) | Nomadic subscriber data system | |
US7870288B2 (en) | Sharing data in scalable software blade architecture | |
JP2009505567A5 (zh) | ||
US10069941B2 (en) | Scalable event-based notifications | |
WO2007056336A1 (en) | System and method for writing data to a directory | |
US9390156B2 (en) | Distributed directory environment using clustered LDAP servers | |
US7779157B2 (en) | Recovering a blade in scalable software blade architecture | |
US7873696B2 (en) | Scalable software blade architecture | |
CN112671554A (zh) | 一种节点故障处理方法及相关装置 | |
US7334038B1 (en) | Broadband service control network | |
CN113904963B (zh) | 一种基于服务目录代理服务化和计分板方法的服务治理方法 | |
US8572201B2 (en) | System and method for providing a directory service network | |
US8478898B2 (en) | System and method for routing directory service operations in a directory service network | |
CN113542319B (zh) | 用于Dubbo框架中的服务提供实体变更通知方法、装置及系统 | |
CN113949708A (zh) | 一种支持灰度升级访问流量控制的服务总线设计方法 | |
CN113190546A (zh) | 一种Eureka服务管控方法、系统及可读存储介质 | |
US20070106691A1 (en) | System and method for efficient directory performance using non-persistent storage | |
CN114866594B (zh) | 设备连接管理方法、装置、系统、服务器及可读存储介质 | |
WO2007123580A2 (en) | System and method for routing directory service operations in a directory service network | |
JP2004260332A (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 |