CN107317830B - 一种服务发现的处理方法及装置 - Google Patents
一种服务发现的处理方法及装置 Download PDFInfo
- Publication number
- CN107317830B CN107317830B CN201610266262.1A CN201610266262A CN107317830B CN 107317830 B CN107317830 B CN 107317830B CN 201610266262 A CN201610266262 A CN 201610266262A CN 107317830 B CN107317830 B CN 107317830B
- Authority
- CN
- China
- Prior art keywords
- service
- service provider
- provider information
- name information
- information
- 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/50—Network services
- H04L67/51—Discovery or management thereof, e.g. service location protocol [SLP] or web services
-
- 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/40—Support for services or applications
-
- 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
Abstract
本发明提供了一种服务发现的处理方法及装置,涉及通信领域,解决现有服务发现机制存在的服务提供者地址列表更新不及时的问题,该处理方法包括:按照预设时间间隔,定时获取已查询的第一服务名信息;根据所述第一服务名信息向服务注册中心发送第一服务查询请求,并接收所述服务注册中心根据所述第一服务查询请求返回的,与所述第一服务名信息对应的服务提供者信息;根据所述服务注册中心返回的服务提供者信息,对本地存储的与所述第一服务名信息对应的服务提供者信息进行更新。本发明的方案能及时将更新后的服务提供者信息同步到本地,增强了服务发现的有效性。
Description
技术领域
本发明涉及通信领域,特别涉及一种服务发现的处理方法及装置。
背景技术
分布式服务系统就是将服务系统的功能拆分,将各个功能放在几台独立的计算机上,通过这几台计算机之间的相互协作,来完成整个系统的功能。在这里,拆分的功能模块通常指的就是服务。
采用分布式系统,最大的优点表现在系统的处理速度上。分布式服务系统另外的优点还在于功能模块分开,便于管理、维护和更新。然而,随着移动互联网的发展,网站应用规模的不断扩大,业务量和业务类型日趋复杂多样,同一个业务类型的服务可能由多个服务提供端提供。同时,业务之间服务的查找发现调用也日趋频繁,提供一种高效稳定的服务发现机制在大型的服务系统中也就显得相当重要了。
为了能找到满足用户需求的服务,现有的服务发现机制包括以下几个部分:
服务注册中心:主要负责服务的管理和监控服务的状态。
服务提供端:主要负责通过服务端代理模块向服务注册中心注册服务和发布服务。
服务消费端:主要负责通过消费端代理模块向服务注册中心查找所需要的服务。
首先服务提供端向服务注册中心注册自己提供的服务信息,然后服务消费端向服务注册中心查询服务的信息列表,接着服务注册中心返回服务提供者地址列表给服务消费端,最后服务消费端从返回的服务提供端地址列表中,选择其中一台服务提供端,并与其建立链接进行服务调用。
上述服务发现实现方案中,在某些应用场景下可能存在以下问题:
服务消费端获取服务发生调用后,如果该服务在服务注册中心的服务信息及状态有更新,只有再次获取服务,服务消费端才能得到最新的服务提供者信息列表,否则服务提供者地址列表会存在更新不及时的情况。比如,某个服务在服务注册中心的状态已不可用,如果服务消费端没有更新本地缓存中的服务提供者地址列表,调用的仍可能是原来的服务,这时就会造成服务调用失败。
发明内容
本发明要解决的技术问题是提供一种服务发现的处理方法及装置,解决现有服务发现机制存在的服务提供者地址列表更新不及时的问题。
为解决上述技术问题,本发明的实施例提供一种服务发现的处理方法,包括:
按照预设时间间隔,定时获取已查询的第一服务名信息;
根据所述第一服务名信息向服务注册中心发送第一服务查询请求,并接收所述服务注册中心根据所述第一服务查询请求返回的,与所述第一服务名信息对应的服务提供者信息;
根据所述服务注册中心返回的服务提供者信息,对本地存储的与所述第一服务名信息对应的服务提供者信息进行更新。
其中,所述本地存储的与所述第一服务名信息对应的服务提供者信息包括:预先存储在本地缓存中的与所述第一服务名信息对应的服务提供者信息;
所述处理方法还包括:将所述本地缓存中存储的与所述第一服务名信息对应的服务提供者信息备份到本地内存文件中;
所述根据所述服务注册中心返回的服务提供者信息,对本地存储的与所述第一服务名信息对应的服务提供者信息进行更新的步骤包括:
根据所述服务注册中心返回的服务提供者信息,对所述本地缓存以及所述本地内存文件中存储的与所述第一服务名信息对应的服务提供者信息进行更新。
其中,所述处理方法还包括:
接收服务调用请求后,根据所述服务调用请求包含的第二服务名信息,在本地查询与所述第二服务名信息对应的服务提供者信息;
若在本地查询到与所述第二服务名信息对应的服务提供者信息,则从本地获取与所述第二服务名信息对应的服务提供者信息;
若在本地中没有查询到与所述第二服务名信息对应的服务提供者信息,则根据所述第二服务名信息,向所述服务注册中心发送第二服务查询请求,接收所述服务注册中心根据所述第二服务查询请求返回的,与所述第二服务名信息对应的服务提供者信息;
将从本地获取的或者所述服务注册中心返回的,与所述第二服务名信息对应的服务提供者信息返回给用户。
其中,所述若在本地中没有查询到与所述第二服务名信息对应的服务提供者信息,则根据所述第二服务名信息,向所述服务注册中心发送第二服务查询请求之后,所述处理方法还包括:
判断所述服务调用请求所调用的服务链接类型是否为长链接,得到第一判断结果;
若所述第一判断结果为是,则使所述服务注册中心根据所述第二服务查询请求以及预设负载均衡策略,获取与所述第二服务名信息对应的一个服务提供者信息并返回;
若所述第一判断结果为否,则使所述服务注册中心根据所述第二服务查询请求,获取与所述第二服务名信息对应的服务提供者信息列表并返回,其中所述服务提供者信息列表包括多个服务提供者信息。
其中,所述从本地获取的或者所述服务注册中心返回的,与所述第二服务名信息对应的服务提供者信息包括:与所述第二服务名信息对应的一个服务提供者信息或者与所述第二服务名信息对应的服务提供者信息列表,其中所述服务提供者信息列表包括多个服务提供者信息;
所述将从本地获取的或者所述服务注册中心返回的,与所述第二服务名信息对应的服务提供者信息返回给用户的步骤包括:
判断所述服务调用请求所调用的服务链接类型是否为长链接,得到第二判断结果;
若所述第二判断结果为是,则将从本地获取的或者所述服务注册中心返回的,与所述第二服务名信息对应的一个服务提供者信息返回给用户;
若所述第二判断结果为否,则根据预设负载均衡策略,在从本地获取的或者所述服务注册中心返回的,与所述第二服务名信息对应的服务提供者信息列表中获取一个服务提供者信息并返回给用户。
为解决上述技术问题,本发明的实施例还提供一种服务发现的处理装置,包括:
第一获取模块,用于按照预设时间间隔,定时获取已查询的第一服务名信息;
第一接收模块,用于根据所述第一服务名信息向服务注册中心发送第一服务查询请求,并接收所述服务注册中心根据所述第一服务查询请求返回的,与所述第一服务名信息对应的服务提供者信息;
更新模块,用于根据所述服务注册中心返回的服务提供者信息,对本地存储的与所述第一服务名信息对应的服务提供者信息进行更新。
其中,所述本地存储的与所述第一服务名信息对应的服务提供者信息包括:预先存储在本地缓存中的与所述第一服务名信息对应的服务提供者信息;
所述处理装置还包括:
备份模块,用于将所述本地缓存中存储的与所述第一服务名信息对应的服务提供者信息备份到本地内存文件中;
所述更新模块包括:
更新单元,用于根据所述服务注册中心返回的服务提供者信息,对所述本地缓存以及所述本地内存文件中存储的与所述第一服务名信息对应的服务提供者信息进行更新。
其中,所述处理装置还包括:
查询模块,用于接收服务调用请求后,根据所述服务调用请求包含的第二服务名信息,在本地查询与所述第二服务名信息对应的服务提供者信息;
第二获取模块,用于若在本地查询到与所述第二服务名信息对应的服务提供者信息,则从本地获取与所述第二服务名信息对应的服务提供者信息;
第二接收模块,用于若在本地中没有查询到与所述第二服务名信息对应的服务提供者信息,则根据所述第二服务名信息,向所述服务注册中心发送第二服务查询请求,接收所述服务注册中心根据所述第二服务查询请求返回的,与所述第二服务名信息对应的服务提供者信息;
返回模块,用于将从本地获取的或者所述服务注册中心返回的,与所述第二服务名信息对应的服务提供者信息返回给用户。
其中,所述处理装置还包括:
判断模块,用于判断所述服务调用请求所调用的服务链接类型是否为长链接,得到第一判断结果;
第一执行模块,用于若所述第一判断结果为是,则使所述服务注册中心根据所述第二服务查询请求以及预设负载均衡策略,获取与所述第二服务名信息对应的一个服务提供者信息并返回;
第二执行模块,用于若所述第一判断结果为否,则使所述服务注册中心根据所述第二服务查询请求,获取与所述第二服务名信息对应的服务提供者信息列表并返回,其中所述服务提供者信息列表包括多个服务提供者信息。
其中,所述从本地获取的或者所述服务注册中心返回的,与所述第二服务名信息对应的服务提供者信息包括:与所述第二服务名信息对应的一个服务提供者信息或者与所述第二服务名信息对应的服务提供者信息列表,其中所述服务提供者信息列表包括多个服务提供者信息;
所述返回模块包括:
判断单元,用于判断所述服务调用请求所调用的服务链接类型是否为长链接,得到第二判断结果;
第一返回单元,用于若所述第二判断结果为是,则将从本地获取的或者所述服务注册中心返回的,与所述第二服务名信息对应的一个服务提供者信息返回给用户;
第二返回单元,用于若所述第二判断结果为否,则根据预设负载均衡策略,在从本地获取的或者所述服务注册中心返回的,与所述第二服务名信息对应的服务提供者信息列表中获取一个服务提供者信息并返回给用户。
本发明的上述技术方案的有益效果如下:
本发明实施例的服务发现的处理方法,首先按照预设时间间隔,定时获取已查询的第一服务名信息;然后根据第一服务名信息向服务注册中心发送第一服务查询请求,并接收服务注册中心根据第一服务查询请求返回的,与第一服务名信息对应的服务提供者信息;最后根据服务注册中心返回的服务提供者信息,对本地存储的与第一服务名信息对应的服务提供者信息进行更新。这样,当服务注册中心的服务提供者信息有更新时,通过本发明的方法能及时将更新后的服务提供者信息同步到本地,解决了现有服务发现机制存在的服务提供者地址列表更新不及时的问题,避免了由于更新不及时造成的服务调用失败,增强了服务发现的有效性。
附图说明
图1为本发明服务发现的处理方法流程图;
图2为本发明服务发现的处理方法一具体实现流程图;
图3为本发明服务发现的处理方法另一具体实现流程图;
图4为本发明服务发现的处理装置的结构示意图。
具体实施方式
为使本发明要解决的技术问题、技术方案和优点更加清楚,下面将结合附图及具体实施例进行详细描述。
如图1所示,本发明实施例的服务发现的处理方法,包括:
步骤101,按照预设时间间隔,定时获取已查询的第一服务名信息;
步骤102,根据所述第一服务名信息向服务注册中心发送第一服务查询请求,并接收所述服务注册中心根据所述第一服务查询请求返回的,与所述第一服务名信息对应的服务提供者信息;
步骤103,根据所述服务注册中心返回的服务提供者信息,对本地存储的与所述第一服务名信息对应的服务提供者信息进行更新。
本发明实施例的服务发现的处理方法,应用于服务消费端,在服务注册中心的服务提供者信息有更新时,能及时将更新后的服务提供者信息同步到服务消费端本地,解决了现有服务发现机制存在的服务提供者地址列表更新不及时的问题,避免了由于更新不及时造成的服务调用失败,增强了服务发现的有效性。
其中,已查询的服务名信息指向服务注册中心查询服务后保存在本地的服务名信息。
其中,查询过的服务提供者信息一般仅存储在本地缓存中,服务提供者信息可包括描述服务功能的服务名、服务提供者的IP地址、端口、服务路径、属性等。
由于服务提供者信息仅存储在本地缓存中,因此服务消费端重启后再次查询服务并调用服务时,如果服务注册中心已发生异常或者不可用,比如宕机,则服务消费端将查询不到服务,从而导致服务调用不成功。为避免这种问题,优选的,所述本地存储的与所述第一服务名信息对应的服务提供者信息包括:预先存储在本地缓存中的与所述第一服务名信息对应的服务提供者信息;
所述处理方法还可以包括:
步骤104,将所述本地缓存中存储的与所述第一服务名信息对应的服务提供者信息备份到本地内存文件中。
这里,当服务注册中心发生异常或者不可用时,服务消费端重启后再次调用服务时,可以根据服务名从本地内存文件中获取服务提供者信息并加载到本地缓存,保证了服务调用的顺利进行。
此时,通过将查询到的服务提供者信息备份到本地内存文件中,解决了服务注册中心异常导致服务再次调用失败的问题,增加了服务发现的稳定性。
进一步的,上述步骤103的步骤可以包括:
步骤1031,根据所述服务注册中心返回的服务提供者信息,对所述本地缓存以及所述本地内存文件中存储的与所述第一服务名信息对应的服务提供者信息进行更新。
此时,通过对本地缓存以及本地内存文件中的服务提供者信息及时进行更新,避免了由于更新不及时造成的服务调用失败,增强了服务发现的有效性。
基于上述内容,下面对本发明实施例的一具体实现流程举例说明如下:
如图2所示,本发明实施例的服务发现的处理方法,包括:
步骤201,启动定时更新任务。
步骤202,按照预设时间间隔,定时获取已查询的第一服务名信息。
步骤203,根据第一服务名信息向服务注册中心发送第一服务查询请求。
步骤204,接收服务注册中心根据第一服务查询请求返回的,与第一服务名信息对应的服务提供者信息。
步骤205,将服务注册中心返回的服务提供者信息与本地缓存中存储的服务提供者信息进行对比,判断服务提供者信息是否有更新,如果有更新则跳转至步骤206,否则跳转至步骤207。
步骤206,对本地缓存以及本地内存文件中的服务提供者信息进行更新。
步骤207,判断定时更新任务进程是否结束,如果是则跳转至步骤208,否则,跳转至步骤202。
步骤208,结束。
通过上述流程可以看出,本发明实施例的服务发现的处理方法,在服务注册中心的服务提供者信息有更新时,能及时将更新后的服务提供者信息同步到服务消费端本地,避免了由于更新不及时造成的服务调用失败,增强了服务发现的有效性。且通过将查询到的服务提供者信息备份到本地内存文件中,解决了服务注册中心异常导致服务再次调用失败的问题,增加了服务发现的稳定性。
优选的,所述处理方法还可以包括:
步骤105,接收服务调用请求后,根据所述服务调用请求包含的第二服务名信息,在本地查询与所述第二服务名信息对应的服务提供者信息。
这里,可在本地内存文件中查询与第二服务名信息对应的服务提供者信息。
其中,对于首次调用的服务,一般不会在本地内存文件中查询到对应的服务名信息。而对于再次调用的服务,由于之前已经保存并备份,一般可以在本地内存文件中查询到对应的服务名信息。
步骤106,若在本地查询到与所述第二服务名信息对应的服务提供者信息,则从本地获取与所述第二服务名信息对应的服务提供者信息。
这里,若本地内存文件中查询到与第二服务名信息对应的服务提供者信息,则可将本地内存文件中的服务提供者信息加载到本地缓存中,然后直接从本地缓存中取出并通过后续步骤返回给用户。
其中,本地内存文件中存储的服务提供者信息为经上述步骤101-103更新后的信息。
步骤107,若在本地中没有查询到与所述第二服务名信息对应的服务提供者信息,则根据所述第二服务名信息,向所述服务注册中心发送第二服务查询请求,接收所述服务注册中心根据所述第二服务查询请求返回的,与所述第二服务名信息对应的服务提供者信息。
这里,若在本地内存文件没有查询到与第二服务名信息对应的服务提供者信息,则需要向服务注册中心查询获取。
其中,接收到服务注册中心返回的服务提供者信息之后,可将接收的服务提供者信息保存到本地缓存中,并在本地内存文件中进行备份,以供后续使用。
步骤108,将从本地获取的或者所述服务注册中心返回的,与所述第二服务名信息对应的服务提供者信息返回给用户。
这里,通过将获取到的与第二服务名信息对应的服务提供者信息返回给用户,方便了用户对服务的调用。
此时,通过在本地以及服务注册中心两侧查询,增强了服务调用的有效性。
其中,同一个业务类型的服务可能由多个服务提供者提供,因此,服务消费端调用一次服务可能查询到多个服务提供者信息。为了保证各服务提供者之间的平衡,一般服务消费端可基于负载均衡原理选择一个服务提供者。
但若服务调用的是基于长链接的服务应用场景,且此时服务的负载均衡由服务消费端侧来执行,这种情况一方面增加了服务注册中心的传输负载,另一方面会大大降低服务调用的执行效率。
为避免上述问题,优选的,上述步骤107中,所述若在本地中没有查询到与所述第二服务名信息对应的服务提供者信息,则根据所述第二服务名信息,向所述服务注册中心发送第二服务查询请求之后,所述处理方法还可以包括:
步骤109,判断所述服务调用请求所调用的服务链接类型是否为长链接,得到第一判断结果。
步骤1010,若所述第一判断结果为是,则使所述服务注册中心根据所述第二服务查询请求以及预设负载均衡策略,获取与所述第二服务名信息对应的一个服务提供者信息并返回。
这里,对于长链接服务,可通过服务注册中心执行服务的负载均衡,使服务注册中心在多个服务提供者中选择一个负载合适的服务提供者并返回给服务消费端,减少了服务注册中心的传输负载,并提高了服务调用的执行效率。
步骤1011,若所述第一判断结果为否,则使所述服务注册中心根据所述第二服务查询请求,获取与所述第二服务名信息对应的服务提供者信息列表并返回,其中所述服务提供者信息列表包括多个服务提供者信息。
这里,对于短链接服务,可继续通过服务消费端执行服务的负载均衡,使服务注册中心将查询到的多个服务提供者信息返回给服务消费端,并通过服务消费端在多个服务提供者中选择一个负载合适的服务提供者。
此时,根据服务是否属于长链接服务来决定服务的负载均衡是否由服务注册中心侧来执行,解决了调用服务是基于长链接的服务时应用服务注册中心传输负载开销过大和服务调用效率低下的问题,增加了服务发现处理的灵活性和有效性。
进一步的,所述从本地获取的或者所述服务注册中心返回的,与所述第二服务名信息对应的服务提供者信息包括:与所述第二服务名信息对应的一个服务提供者信息或者与所述第二服务名信息对应的服务提供者信息列表,其中所述服务提供者信息列表包括多个服务提供者信息。
这里,对于再次调用的服务,即从本地获取到与第二服务名信息对应的服务提供者信息的情况,可在首次调用该服务时,通过上述步骤109-1011,对于长链接服务,使服务注册中心经过负载均衡返回一个负载合适的服务提供者信息;对于短链接服务,使服务注册中心返回包括多个服务提供者信息的服务提供者信息列表。
上述步骤108的步骤可以包括:
步骤1081,判断所述服务调用请求所调用的服务链接类型是否为长链接,得到第二判断结果。
步骤1082,若所述第二判断结果为是,则将从本地获取的或者所述服务注册中心返回的,与所述第二服务名信息对应的一个服务提供者信息返回给用户。
这里,对于长链接服务,由于已经在服务注册中心进行了负载均衡,因此直接将与第二服务名信息对应的一个服务提供者信息返回给用户即可。
步骤1083,若所述第二判断结果为否,则根据预设负载均衡策略,在从本地获取的或者所述服务注册中心返回的,与所述第二服务名信息对应的服务提供者信息列表中获取一个服务提供者信息并返回给用户。
这里,对于短链接服务,需要在服务消费端进行负载均衡后选择一个负载合适的服务提供者返回给用户。
此时,通过将长链接服务的负载均衡放在服务注册中心侧执行,减少了服务注册中心的传输负载,并提高了服务调用的执行效率。
基于上述内容,下面对本发明实施例的另一具体实现流程举例说明如下:
如图3所示,本发明实施例的服务发现的处理方法,包括:
步骤301,根据服务调用请求,启动服务查询任务。
步骤302,判断与第二服务名信息对应的服务提供者信息在本地内存文件中是否存在,如果存在则跳转至步骤303,否则,跳转至步骤304。
这里,对于再次调用的服务,本地内存文件中存储有经过更新的服务提供者信息。
步骤303,从本地内存文件获取与第二服务名信息对应的服务提供者信息并放到缓存,之后跳转至步骤309。
步骤304,根据第二服务名信息,向服务注册中心发送第二服务查询请求。
步骤305,判断服务调用请求所调用的服务链接类型是否为长链接,如果是则跳转至步骤306,否则,跳转至步骤307。
步骤306,使服务注册中心根据第二服务查询请求以及预设负载均衡策略,获取与第二服务名信息对应的一个服务提供者信息并返回,之后跳转至步骤308。
步骤307,使服务注册中心根据第二服务查询请求,获取与第二服务名信息对应的服务提供者信息列表并返回。其中服务提供者信息列表包括多个服务提供者信息。
步骤308,接收服务注册中心返回的一个服务提供者信息或者服务提供者信息列表,将接收到的信息保存到本地缓存,并在本地内存文件中进行备份。
步骤309,判断服务调用请求所调用的服务链接类型是否为长链接,如果是则跳转至步骤3010,否则,跳转至步骤3011。
步骤3010,将从本地获取的或者服务注册中心返回的,与第二服务名信息对应的一个服务提供者信息返回给用户。
步骤3011,根据预设负载均衡策略,在从本地获取的或者服务注册中心返回的,与第二服务名信息对应的服务提供者信息列表中获取一个服务提供者信息并返回给用户。
通过上述流程可以看出,本发明实施例的服务发现的处理方法,根据服务是否属于长链接服务来决定服务的负载均衡是否由服务注册中心侧来执行,解决了调用服务是基于长链接的服务时应用服务注册中心传输负载开销过大和服务调用效率低下的问题,增加了服务发现处理的灵活性和有效性。
本发明实施例的服务发现的处理方法,应用于包括服务提供端、服务注册中心和服务消费端的分布式系统,具体应用于服务消费端。其中,服务提供端将要发布的服务注册到服务注册中心,服务注册中心用于接受服务消费端的查找服务请求,当发现存在相应服务时,实时返回最新的服务提供者信息给服务消费端,服务消费端用于向服务注册中心发送查询服务请求,接收从服务注册中心返回的服务,自动与服务提供端建立链接,并调用相应的服务。
本发明实施例的服务发现的处理方法,在服务注册中心的服务提供者信息有更新时,能及时将更新后的服务提供者信息同步到服务消费端本地,避免了由于更新不及时造成的服务调用失败,增强了服务发现的有效性。且通过将查询到的服务提供者信息备份到本地内存文件中,解决了服务注册中心异常导致服务再次调用失败的问题,增加了服务发现的稳定性。且根据服务是否属于长链接服务来决定服务的负载均衡是否由服务注册中心侧来执行,解决了调用服务是基于长链接的服务时应用服务注册中心传输负载开销过大和服务调用效率低下的问题,增加了服务发现处理的灵活性和有效性。
如图4所示,本发明的实施例还提供一种服务发现的处理装置,包括:
第一获取模块,用于按照预设时间间隔,定时获取已查询的第一服务名信息;
第一接收模块,用于根据所述第一服务名信息向服务注册中心发送第一服务查询请求,并接收所述服务注册中心根据所述第一服务查询请求返回的,与所述第一服务名信息对应的服务提供者信息;
更新模块,用于根据所述服务注册中心返回的服务提供者信息,对本地存储的与所述第一服务名信息对应的服务提供者信息进行更新。
本发明实施例的服务发现的处理装置,应用于服务消费端,在服务注册中心的服务提供者信息有更新时,能及时将更新后的服务提供者信息同步到服务消费端本地,解决了现有服务发现机制存在的服务提供者地址列表更新不及时的问题,避免了由于更新不及时造成的服务调用失败,增强了服务发现的有效性。
优选的,所述本地存储的与所述第一服务名信息对应的服务提供者信息包括:预先存储在本地缓存中的与所述第一服务名信息对应的服务提供者信息;
所述处理装置还可以包括:
备份模块,用于将所述本地缓存中存储的与所述第一服务名信息对应的服务提供者信息备份到本地内存文件中;
所述更新模块可以包括:
更新单元,用于根据所述服务注册中心返回的服务提供者信息,对所述本地缓存以及所述本地内存文件中存储的与所述第一服务名信息对应的服务提供者信息进行更新。
优选的,所述处理装置还可以包括:
查询模块,用于接收服务调用请求后,根据所述服务调用请求包含的第二服务名信息,在本地查询与所述第二服务名信息对应的服务提供者信息;
第二获取模块,用于若在本地查询到与所述第二服务名信息对应的服务提供者信息,则从本地获取与所述第二服务名信息对应的服务提供者信息;
第二接收模块,用于若在本地中没有查询到与所述第二服务名信息对应的服务提供者信息,则根据所述第二服务名信息,向所述服务注册中心发送第二服务查询请求,接收所述服务注册中心根据所述第二服务查询请求返回的,与所述第二服务名信息对应的服务提供者信息;
返回模块,用于将从本地获取的或者所述服务注册中心返回的,与所述第二服务名信息对应的服务提供者信息返回给用户。
优选的,所述处理装置还可以包括:
判断模块,用于判断所述服务调用请求所调用的服务链接类型是否为长链接,得到第一判断结果;
第一执行模块,用于若所述第一判断结果为是,则使所述服务注册中心根据所述第二服务查询请求以及预设负载均衡策略,获取与所述第二服务名信息对应的一个服务提供者信息并返回;
第二执行模块,用于若所述第一判断结果为否,则使所述服务注册中心根据所述第二服务查询请求,获取与所述第二服务名信息对应的服务提供者信息列表并返回,其中所述服务提供者信息列表包括多个服务提供者信息。
优选的,所述从本地获取的或者所述服务注册中心返回的,与所述第二服务名信息对应的服务提供者信息包括:与所述第二服务名信息对应的一个服务提供者信息或者与所述第二服务名信息对应的服务提供者信息列表,其中所述服务提供者信息列表包括多个服务提供者信息;
所述返回模块可以包括:
判断单元,用于判断所述服务调用请求所调用的服务链接类型是否为长链接,得到第二判断结果;
第一返回单元,用于若所述第二判断结果为是,则将从本地获取的或者所述服务注册中心返回的,与所述第二服务名信息对应的一个服务提供者信息返回给用户;
第二返回单元,用于若所述第二判断结果为否,则根据预设负载均衡策略,在从本地获取的或者所述服务注册中心返回的,与所述第二服务名信息对应的服务提供者信息列表中获取一个服务提供者信息并返回给用户。
本发明实施例的服务发现的处理方法,在服务注册中心的服务提供者信息有更新时,能及时将更新后的服务提供者信息同步到服务消费端本地,避免了由于更新不及时造成的服务调用失败,增强了服务发现的有效性。且通过将查询到的服务提供者信息备份到本地内存文件中,解决了服务注册中心异常导致服务再次调用失败的问题,增加了服务发现的稳定性。且根据服务是否属于长链接服务来决定服务的负载均衡是否由服务注册中心侧来执行,解决了调用服务是基于长链接的服务时应用服务注册中心传输负载开销过大和服务调用效率低下的问题,增加了服务发现处理的灵活性和有效性。
需要说明的是,该服务发现的处理装置是与上述服务发现的处理方法相对应的装置,其中上述方法实施例中所有实现方式均适用于该装置的实施例中,也能达到同样的技术效果。
在本发明的各种实施例中,应理解,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明所述原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (10)
1.一种服务发现的处理方法,其特征在于,包括:
服务消费端按照预设时间间隔,定时获取本地缓存中的第一服务名信息;
所述服务消费端根据从所述本地缓存中获取的所述第一服务名信息,向服务注册中心发送用于查询服务提供者信息的第一服务查询请求,并接收所述服务注册中心根据所述第一服务查询请求返回的与所述第一服务名信息对应的服务提供者信息;
所述服务消费端利用从所述服务注册中心查询得到的与所述第一服务查询请求对应的服务提供者信息,对所述本地缓存的与所述第一服务名信息对应的服务提供者信息进行更新。
2.根据权利要求1所述的处理方法,其特征在于,所述处理方法还包括:
将所述本地缓存中存储的与所述第一服务名信息对应的服务提供者信息备份到本地内存文件中;
根据所述服务注册中心返回的服务提供者信息,对所述本地内存文件中存储的与所述第一服务名信息对应的服务提供者信息进行更新。
3.根据权利要求1所述的处理方法,其特征在于,所述处理方法还包括:
接收服务调用请求后,根据所述服务调用请求包含的第二服务名信息,在本地查询与所述第二服务名信息对应的服务提供者信息;
若在本地查询到与所述第二服务名信息对应的服务提供者信息,则从本地获取与所述第二服务名信息对应的服务提供者信息;
若在本地中没有查询到与所述第二服务名信息对应的服务提供者信息,则根据所述第二服务名信息,向所述服务注册中心发送第二服务查询请求,接收所述服务注册中心根据所述第二服务查询请求返回的,与所述第二服务名信息对应的服务提供者信息;
将从本地获取的或者所述服务注册中心返回的,与所述第二服务名信息对应的服务提供者信息返回给用户。
4.根据权利要求3所述的处理方法,其特征在于,所述若在本地中没有查询到与所述第二服务名信息对应的服务提供者信息,则根据所述第二服务名信息,向所述服务注册中心发送第二服务查询请求之后,所述处理方法还包括:
判断所述服务调用请求所调用的服务链接类型是否为长链接,得到第一判断结果;
若所述第一判断结果为是,则使所述服务注册中心根据所述第二服务查询请求以及预设负载均衡策略,获取与所述第二服务名信息对应的一个服务提供者信息并返回;
若所述第一判断结果为否,则使所述服务注册中心根据所述第二服务查询请求,获取与所述第二服务名信息对应的服务提供者信息列表并返回,其中所述服务提供者信息列表包括多个服务提供者信息。
5.根据权利要求3所述的处理方法,其特征在于,所述从本地获取的或者所述服务注册中心返回的,与所述第二服务名信息对应的服务提供者信息包括:与所述第二服务名信息对应的一个服务提供者信息或者与所述第二服务名信息对应的服务提供者信息列表,其中所述服务提供者信息列表包括多个服务提供者信息;
所述将从本地获取的或者所述服务注册中心返回的,与所述第二服务名信息对应的服务提供者信息返回给用户的步骤包括:
判断所述服务调用请求所调用的服务链接类型是否为长链接,得到第二判断结果;
若所述第二判断结果为是,则将从本地获取的或者所述服务注册中心返回的,与所述第二服务名信息对应的一个服务提供者信息返回给用户;
若所述第二判断结果为否,则根据预设负载均衡策略,在从本地获取的或者所述服务注册中心返回的,与所述第二服务名信息对应的服务提供者信息列表中获取一个服务提供者信息并返回给用户。
6.一种服务发现的处理装置,其特征在于,所述装置应用于服务消费端,所述装置包括:
第一获取模块,用于按照预设时间间隔,定时获取本地缓存中的第一服务名信息;
第一接收模块,用于根据从所述本地缓存中获取的所述第一服务名信息,向服务注册中心发送用于查询服务提供者信息的第一服务查询请求,并接收所述服务注册中心根据所述第一服务查询请求返回的与所述第一服务名信息对应的服务提供者信息;
更新模块,用于利用从所述服务注册中心查询得到的与所述第一服务查询请求对应的服务提供者信息,对所述本地缓存的与所述第一服务名信息对应的服务提供者信息进行更新。
7.根据权利要求6所述的处理装置,其特征在于,所述处理装置还包括:
备份模块,用于将所述本地缓存中存储的与所述第一服务名信息对应的服务提供者信息备份到本地内存文件中;
所述更新模块,还用于根据所述服务注册中心返回的服务提供者信息,对所述本地内存文件中存储的与所述第一服务名信息对应的服务提供者信息进行更新。
8.根据权利要求6所述的处理装置,其特征在于,所述处理装置还包括:
查询模块,用于接收服务调用请求后,根据所述服务调用请求包含的第二服务名信息,在本地查询与所述第二服务名信息对应的服务提供者信息;
第二获取模块,用于若在本地查询到与所述第二服务名信息对应的服务提供者信息,则从本地获取与所述第二服务名信息对应的服务提供者信息;
第二接收模块,用于若在本地中没有查询到与所述第二服务名信息对应的服务提供者信息,则根据所述第二服务名信息,向所述服务注册中心发送第二服务查询请求,接收所述服务注册中心根据所述第二服务查询请求返回的,与所述第二服务名信息对应的服务提供者信息;
返回模块,用于将从本地获取的或者所述服务注册中心返回的,与所述第二服务名信息对应的服务提供者信息返回给用户。
9.根据权利要求8所述的处理装置,其特征在于,所述处理装置还包括:
判断模块,用于判断所述服务调用请求所调用的服务链接类型是否为长链接,得到第一判断结果;
第一执行模块,用于若所述第一判断结果为是,则使所述服务注册中心根据所述第二服务查询请求以及预设负载均衡策略,获取与所述第二服务名信息对应的一个服务提供者信息并返回;
第二执行模块,用于若所述第一判断结果为否,则使所述服务注册中心根据所述第二服务查询请求,获取与所述第二服务名信息对应的服务提供者信息列表并返回,其中所述服务提供者信息列表包括多个服务提供者信息。
10.根据权利要求8所述的处理装置,其特征在于,所述从本地获取的或者所述服务注册中心返回的,与所述第二服务名信息对应的服务提供者信息包括:与所述第二服务名信息对应的一个服务提供者信息或者与所述第二服务名信息对应的服务提供者信息列表,其中所述服务提供者信息列表包括多个服务提供者信息;
所述返回模块包括:
判断单元,用于判断所述服务调用请求所调用的服务链接类型是否为长链接,得到第二判断结果;
第一返回单元,用于若所述第二判断结果为是,则将从本地获取的或者所述服务注册中心返回的,与所述第二服务名信息对应的一个服务提供者信息返回给用户;
第二返回单元,用于若所述第二判断结果为否,则根据预设负载均衡策略,在从本地获取的或者所述服务注册中心返回的,与所述第二服务名信息对应的服务提供者信息列表中获取一个服务提供者信息并返回给用户。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610266262.1A CN107317830B (zh) | 2016-04-26 | 2016-04-26 | 一种服务发现的处理方法及装置 |
PCT/CN2017/079623 WO2017185961A1 (zh) | 2016-04-26 | 2017-04-06 | 一种服务发现的处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610266262.1A CN107317830B (zh) | 2016-04-26 | 2016-04-26 | 一种服务发现的处理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107317830A CN107317830A (zh) | 2017-11-03 |
CN107317830B true CN107317830B (zh) | 2021-05-18 |
Family
ID=60160726
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610266262.1A Active CN107317830B (zh) | 2016-04-26 | 2016-04-26 | 一种服务发现的处理方法及装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN107317830B (zh) |
WO (1) | WO2017185961A1 (zh) |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110730197B (zh) * | 2018-07-17 | 2023-08-08 | 北京京东尚科信息技术有限公司 | 一种服务发现方法和系统 |
CN110740046B (zh) * | 2018-07-18 | 2023-08-08 | 北京京东尚科信息技术有限公司 | 分析服务契约的方法和装置 |
CN109189856B (zh) * | 2018-08-15 | 2021-09-28 | 中国联合网络通信集团有限公司 | 分布式数据库服务管理方法、装置、服务器及存储介质 |
CN109710424A (zh) * | 2018-12-18 | 2019-05-03 | 成都淞幸科技有限责任公司 | 一种分布式应用服务的实现方法 |
CN110190997A (zh) * | 2019-05-31 | 2019-08-30 | 深圳前海微众银行股份有限公司 | 配置信息获取方法、装置、设备及计算机可读存储介质 |
CN110377431B (zh) * | 2019-07-29 | 2022-02-01 | 中国工商银行股份有限公司 | 多注册中心场景下服务调用方法及装置 |
CN110955460B (zh) * | 2019-11-15 | 2023-10-03 | 北京金山云网络技术有限公司 | 一种服务进程启动方法、装置、电子设备和存储介质 |
CN113783826B (zh) * | 2020-09-22 | 2023-08-04 | 北京沃东天骏信息技术有限公司 | 一种微服务异常处理方法和装置 |
CN112202605A (zh) * | 2020-09-27 | 2021-01-08 | 中国建设银行股份有限公司 | 服务配置方法、装置、设备及存储介质 |
CN112579319B (zh) * | 2020-12-07 | 2023-09-08 | 中国民航信息网络股份有限公司 | 一种基于LRU Cache优化的服务调用方法及装置 |
CN114697231B (zh) * | 2020-12-31 | 2023-08-01 | 电科云(北京)科技有限公司 | 基于网关的服务发现与服务注册方法和装置 |
CN112887149B (zh) * | 2021-01-29 | 2023-06-23 | 中汽创智科技有限公司 | 一种服务可视化管理系统及其管理方法 |
CN113364706B (zh) * | 2021-06-03 | 2023-01-31 | 上海中通吉网络技术有限公司 | 服务流量集中的方法 |
CN113742100A (zh) * | 2021-08-27 | 2021-12-03 | 欧电云信息科技(江苏)有限公司 | 基于微服务架构的服务调用方法、系统、设备及介质 |
CN115103008B (zh) * | 2022-06-13 | 2024-03-08 | 北京奇艺世纪科技有限公司 | 一种服务请求转发系统 |
CN115037785B (zh) * | 2022-08-12 | 2022-11-01 | 深圳市星卡软件技术开发有限公司 | 即时通讯系统及方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5694547A (en) * | 1992-10-13 | 1997-12-02 | Bay Networks, Inc. | System for registration of clients in an ATM network providing for communication of client registration messages to a central manager |
CN1665206A (zh) * | 2004-03-03 | 2005-09-07 | 华为技术有限公司 | 实现网络长连接倒换的方法 |
CN1700173A (zh) * | 2005-04-22 | 2005-11-23 | 珠海金山软件股份有限公司 | 一种在计算机系统中使用的软件升级方法 |
CN103516746A (zh) * | 2012-06-26 | 2014-01-15 | 中兴通讯股份有限公司 | 服务变化消息的推送方法、装置及系统 |
CN105376225A (zh) * | 2015-11-02 | 2016-03-02 | 亚信科技(南京)有限公司 | 一种软件服务化的方法及装置 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7840418B2 (en) * | 2007-10-02 | 2010-11-23 | American Well Corporation | Tracking the availability of service providers across multiple platforms |
CN104468838B (zh) * | 2014-12-30 | 2017-08-11 | 桂林电子科技大学 | 一种P2P网路和发布订阅模式的Web服务选择方法 |
CN105450757A (zh) * | 2015-12-02 | 2016-03-30 | 联动优势电子商务有限公司 | 一种服务管理方法及系统 |
-
2016
- 2016-04-26 CN CN201610266262.1A patent/CN107317830B/zh active Active
-
2017
- 2017-04-06 WO PCT/CN2017/079623 patent/WO2017185961A1/zh active Application Filing
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5694547A (en) * | 1992-10-13 | 1997-12-02 | Bay Networks, Inc. | System for registration of clients in an ATM network providing for communication of client registration messages to a central manager |
CN1665206A (zh) * | 2004-03-03 | 2005-09-07 | 华为技术有限公司 | 实现网络长连接倒换的方法 |
CN1700173A (zh) * | 2005-04-22 | 2005-11-23 | 珠海金山软件股份有限公司 | 一种在计算机系统中使用的软件升级方法 |
CN103516746A (zh) * | 2012-06-26 | 2014-01-15 | 中兴通讯股份有限公司 | 服务变化消息的推送方法、装置及系统 |
CN105376225A (zh) * | 2015-11-02 | 2016-03-02 | 亚信科技(南京)有限公司 | 一种软件服务化的方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
WO2017185961A1 (zh) | 2017-11-02 |
CN107317830A (zh) | 2017-11-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107317830B (zh) | 一种服务发现的处理方法及装置 | |
CN110324177B (zh) | 一种微服务架构下的服务请求处理方法、系统及介质 | |
CN111615066B (zh) | 一种基于广播的分布式微服务注册及调用方法 | |
CN104601702B (zh) | 集群远程过程调用方法及系统 | |
CN110391940B (zh) | 服务地址的响应方法、装置、系统、设备和存储介质 | |
CN101453404A (zh) | 一种实现负载均衡的方法及装置 | |
CN110311896B (zh) | 机载平台服务注册中心系统 | |
CN106775816A (zh) | 一种局域网中应用程序的自动更新方法及系统 | |
CN113434249A (zh) | 镜像同步方法、装置、docker主机及存储介质 | |
US10715628B2 (en) | Attribute operating method and device | |
CN113452808A (zh) | 域名解析方法、装置、设备及存储介质 | |
CN1983979A (zh) | 自动更新软件的方法和系统 | |
CN115499447A (zh) | 一种集群主节点确认方法、装置、电子设备及存储介质 | |
CN108337280B (zh) | 一种资源更新方法及装置 | |
CN110955460B (zh) | 一种服务进程启动方法、装置、电子设备和存储介质 | |
CN114363233A (zh) | 一种分组路由方法、装置、电子设备及存储介质 | |
CN104639379A (zh) | 测试代理方法及其装置 | |
CN113596795B (zh) | 设备绑定方法、装置及计算机可读存储介质 | |
CN112702441B (zh) | 基于容器的访问数据处理方法、装置、系统及存储介质 | |
CN113783826B (zh) | 一种微服务异常处理方法和装置 | |
US20230146880A1 (en) | Management system and management method | |
CN111737028B (zh) | Dubbo服务检测方法及装置 | |
CN114356456A (zh) | 业务处理方法、装置、存储介质和电子设备 | |
CN113727138A (zh) | 一种hls内网回源方法 | |
CN113190565A (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 |