CN110730197B - 一种服务发现方法和系统 - Google Patents
一种服务发现方法和系统 Download PDFInfo
- Publication number
- CN110730197B CN110730197B CN201810783952.3A CN201810783952A CN110730197B CN 110730197 B CN110730197 B CN 110730197B CN 201810783952 A CN201810783952 A CN 201810783952A CN 110730197 B CN110730197 B CN 110730197B
- Authority
- CN
- China
- Prior art keywords
- service
- calling
- port number
- deployment
- providing end
- 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
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
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer And Data Communications (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种服务发现方法和系统,涉及计算机技术领域。该方法的一具体实施方式包括:接收部署端发送的服务查询请求;根据所述服务查询请求在注册服务列表中查询相应的服务,并将该服务的服务提供端的地址数据向部署端返回;其中,所述地址数据用于由部署端写入服务调用端的调用配置文件,以使服务调用端可调用该服务。该实施方式能够适用于复杂服务调用环境,并具有轻量级,配置简单灵活的优点。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种服务发现方法和系统。
背景技术
目前,很多应用和系统都是采用多服务器多实例的方式去组织的,应用与应用之间需要通过网络间的接口进行调用,一般的接口间服务的发现和调用都是通过额外的第三方远程过程调用框架来实现。
在实现本发明过程中,发明人发现现有技术中至少存在如下问题:由于在测试执行机调用环境中,服务的调用方式、接口类型和执行机操作系统环境差异很大,测试执行机的环境具有相对临时性,导致现有的服务发现方法难于进行服务的配置管理,不能够对测试执行机的服务发现提供很好的支持,对于一些广义应用,如测试环境中需要用到的数据库实例,没有办法进行管理。同时,在测试环境中,服务间的调用数据量很少、调用次数也很少,且提供服务者与调用者,其自身对服务的接口、方法和数据请求等信息是明确的,在这种场景下,现有的服务发现方法,显得过于冗余,配置复杂,也不够灵活。
因此,亟需一种轻量级的,配置简单灵活,且能够适用于复杂服务调用环境的服务发现方法和系统。
发明内容
有鉴于此,本发明实施例提供一种服务发现方法和系统,能够适用于复杂服务调用环境,并具有轻量级,配置简单灵活的优点。
为实现上述目的,根据本发明实施例的一个方面,提供了一种服务发现方法,包括:
接收部署端发送的服务查询请求;
根据所述服务查询请求在注册服务列表中查询相应的服务,并将该服务的服务提供端的地址数据向部署端返回;
其中,所述地址数据用于由部署端写入服务调用端的调用配置文件,以使服务调用端可调用该服务。
进一步的,所述注册服务列表中维护有服务的服务提供端的ip、端口号、服务标识、是否占用状态和是否可用状态,所述服务提供端的地址数据包括:服务提供端的ip和端口号,所述服务查询请求包括:服务标识,
所述根据服务查询请求在注册服务列表中查询相应的服务,并将该服务的服务提供端的地址数据向部署端返回包括:
根据所述服务标识查询所述注册服务列表中具有相同服务标识,且处于未占用状态和可用状态的服务,并向部署端返回该服务的服务提供端的ip和端口号。
进一步的,本发明实施例提供的服务发现方法还包括:
接收服务提供端发送的服务注册请求,所述服务注册请求包括:服务提供端的ip、端口号和服务标识;
判断所述注册服务列表是否已存在该服务,若是,更新该服务为已占用状态和可用状态,否则,将该服务的服务提供端的ip、端口号和服务标识加入所述注册服务列表,并将该服务设置为未占用状态和可用状态。
进一步的,本发明实施例提供的服务发现方法还包括:
接收服务提供端发送的指定服务的已占用状态变更请求,将该指定服务更新为已占用状态,其中,所述服务提供端在开始执行被调用的该指定服务时,发送该指定服务的已占用状态变更请求;
接收服务提供端发送的指定服务的未占用状态变更请求,将该指定服务更新为未占用状态,其中,所述服务提供端在执行完成被调用的该指定服务时,发送该指定服务的未占用状态变更请求;
接收服务提供端发送的指定服务的不可用状态变更请求,将该指定服务更新为不可用状态,其中,所述服务提供端在关闭时,发送该指定服务的不可用状态变更请求。
进一步的,本发明实施例提供的服务发现方法还包括:
在设定时间,对所述注册服务列表中的每一个可用状态的服务执行下述步骤:
向指定服务的服务提供端发送用于检测该指定服务的地址可用性的检测请求,若返回错误或超时,则将该指定服务更新为不可用状态。
进一步的,本发明实施例提供的服务发现方法还包括:
部署端获取服务调用端的服务标识;
发送包括所述服务标识的服务查询请求,并接收根据所述服务标识查询获得的服务提供端的ip和端口号;
将所述服务提供端的ip和端口号写入服务调用端的调用配置文件,以使服务调用端可调用所述服务。
可选的,所述服务调用端配置有用于将所述服务提供端的ip和端口号写入服务调用端的调用配置文件的脚本文件,该脚本文件名为指定服务标识,部署端通过读取所述脚本文件名获取服务调用端的该指定服务标识;
所述将所述服务提供端的ip和端口号写入服务调用端的调用配置文件包括:
部署端调用所述脚本文件并传入所述服务提供端的ip和端口号,将所述调用配置文件中的服务提供端地址修改为所述传入的服务提供端的ip和端口号,以使服务调用端可通过该服务提供端地址,调用服务提供端的所述服务。
进一步的,本发明实施例提供的服务发现方法还包括:
服务调用端在启动时,加载所述调用配置文件,利用所述服务提供端的ip和端口号,向服务提供端调用服务。
为实现上述目的,根据本发明实施例的另一个方面,还提供了一种服务发现系统,包括:部署端、注册端、服务提供端和服务调用端;
所述注册端包括:
接收模块,用于接收部署端发送的服务查询请求;
查询模块,用于根据所述服务查询请求在注册服务列表中查询相应的服务,并将该服务的服务提供端的地址数据向部署端返回;
其中,所述地址数据用于由部署端写入服务调用端的调用配置文件,以使服务调用端可调用该服务。
进一步的,所述注册服务列表中维护有服务的服务提供端的ip、端口号、服务标识、是否占用状态和是否可用状态,所述服务提供端的地址数据包括:服务提供端的ip和端口号,所述服务查询请求包括:服务标识,
所述查询模块进一步用于根据所述服务标识查询所述注册服务列表中具有相同服务标识,且处于未占用状态和可用状态的服务,并向部署端返回该服务的服务提供端的ip和端口号。
进一步的,所述接收模块进一步用于接收服务提供端发送的服务注册请求,所述服务注册请求包括:服务提供端的ip、端口号和服务标识;
所述查询模块进一步用于判断所述注册服务列表是否已存在该服务,若是,更新该服务为已占用状态和可用状态,否则,将该服务的服务提供端的ip、端口号和服务标识加入所述注册服务列表,并将该服务设置为未占用状态和可用状态。
进一步的,所述接收模块进一步用于接收服务提供端发送的指定服务的已占用状态变更请求、未占用状态变更请求以及不可用状态变更请求;
所述查询模块进一步用于在所述接收模块接收到所述已占用状态变更请求后,将该指定服务更新为已占用状态,在所述接收模块接收到所述未占用状态变更请求后,将该指定服务更新为未占用状态,在所述接收模块接收到所述不可用状态变更请求后,将该指定服务更新为不可用状态;
所述服务提供端在开始执行被调用的该指定服务时,发送该指定服务的已占用状态变更请求,在执行完成被调用的该指定服务时,发送该指定服务的未占用状态变更请求,在关闭时,发送该指定服务的不可用状态变更请求。
进一步的,所述查询模块进一步用于在设定时间,对所述注册服务列表中的每一个可用状态的服务执行下述步骤:
向指定服务的服务提供端发送用于检测该指定服务的地址可用性的检测请求,若返回错误或超时,则将该指定服务更新为不可用状态。
进一步的,部署端用于获取服务调用端的服务标识,然后发送包括所述服务标识的服务查询请求,并接收根据所述服务标识查询获得的服务提供端的ip和端口号,将所述服务提供端的ip和端口号写入服务调用端的调用配置文件,以使服务调用端可调用所述服务。
进一步的,所述服务调用端配置有用于将所述服务提供端的ip和端口号写入服务调用端的调用配置文件的脚本文件,该脚本文件名为指定服务标识,部署端通过读取所述脚本文件名获取服务调用端的该指定服务标识;
部署端进一步用于调用所述脚本文件并传入所述服务提供端的ip和端口号,将所述调用配置文件中的服务提供端地址修改为所述传入的服务提供端的ip和端口号,以使服务调用端可通过该服务提供端地址,调用服务提供端的所述服务。
进一步的,服务调用端在启动时,加载所述调用配置文件,利用所述服务提供端的ip和端口号,向服务提供端调用服务。
为实现上述目的,根据本发明实施例的另一个方面,还提供了一种服务发现电子设备,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本发明提供的服务发现方法。
为实现上述目的,根据本发明实施例的另一个方面,还提供了一种计算机可读介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现本发明提供的服务发现方法。
本发明提供的服务发现方法和系统,由于采用http请求方式,不受网络端口限制的影响,也可以在公网上运行。采用http请求方式注册、查询和检测服务,实现开发语言和框架无关性,也不受实际业务代码的调用方式影响。编写少量代码即可实现服务发现,实现容易,使用方式灵活,该方法也可以与即有远程过程调用方式相结合。服务提供端和服务调用端不需要关注服务发现相关的配置,只需要关注业务代码即可。注册端只起服务提供端和服务调用端之间桥梁的作用,服务实际调用时不参与执行,大大降低了注册端的压力,由于注册端本身采用web加数据库形式,也方便进行水平扩容。该注册端的机制也方便进行一些功能的扩展,如屏蔽操作、服务统计、不同环境的服务隔离等,扩展性很强。本方案也可以和即有测试环境的相关部署技术相结合,达到比较好的测试体验度,例如同一服务器上已经被占用的端口,不会再被其它应用占用。
上述的非惯用的可选方式所具有的进一步效果将在下文中结合具体实施方式加以说明。
附图说明
附图用于更好地理解本发明,不构成对本发明的不当限定。其中:
图1是本发明实施例提供的服务发现方法的主要流程的示意图;
图2是本发明实施例提供的服务发现方法的应用流程的示意图;
图3是本发明实施例提供的服务发现系统的主要模块的示意图;
图4是本发明实施例可以应用于其中的示例性系统架构图;
图5是适于用来实现本发明实施例的电子设备的计算机系统的结构示意图。
具体实施方式
以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
本发明实施例提供一种服务发现方法,如图1所示,该方法包括:步骤S101和步骤S102。
在步骤S101中,接收部署端发送的服务查询请求。在步骤S102中,根据服务查询请求在注册服务列表中查询相应的服务,并将该服务的服务提供端的地址数据向部署端返回。其中,地址数据用于由部署端写入服务调用端的调用配置文件,以使服务调用端可调用该服务。
在本发明中,上述步骤S101和步骤S102可以配置为在注册端上实现。如图2所示,本发明提供的服务发现方法可以通过部署端、注册端、服务提供端和服务调用端之间的交互过程实现。本发明实施例中的上述各端交互过程中,发送的请求均可以为http请求,通过http请求与响应实现上述各端交互,进而完成服务发现。部署端、注册端、服务提供端和服务调用端均可以部署在web服务器,部署端的功能可以通过部署程序实现,部署程序可以配置在注册端、服务提供端或服务调用端上。
本发明提供的服务发现方法由于采用http请求方式,不受网络端口限制的影响,也可以在公网上运行。采用http请求方式注册、查询和检测服务,实现开发语言和框架无关性,也不受实际业务代码的调用方式影响。
在本发明的一种实施方式中,注册服务列表中维护有服务的服务提供端的ip、端口号、服务标识、是否占用状态和是否可用状态,服务提供端的地址数据包括:服务提供端的ip和端口号,服务查询请求包括:服务标识。
步骤S102中,根据服务查询请求在注册服务列表中查询相应的服务,并将该服务的服务提供端的地址数据向部署端返回的过程具体为:根据服务标识查询注册服务列表中具有相同服务标识,且处于未占用状态和可用状态的服务,并向部署端返回该服务的服务提供端的ip和端口号。
在本发明的一种实施方式中,执行上述过程的注册端可以为一个自动配置的注册端服务和数据库,该数据库拥有六个重要字段,服务提供端服务器的IP、端口号、服务标识、是否占用状态,是否可用状态、服务器环境信息,该字段为可选字段,是一个由key-value组成的复合型字段,用于记录该服务所需要的运行环境信息。
注册端提供了一个服务提供端查询服务,该服务用于查询可用的、未被占用的服务提供端信息提供给服务调用端使用。该服务返回所有服务标识下所有可用服务列表,供服务调用端从中选择一个或多个单点服务来进行调用,多个单点的调用形式类似于集群的分布式调用。
在一种实施方式中,本发明提供的服务发现方法还包括下述过程:接收服务提供端发送的服务注册请求,服务注册请求包括:服务提供端的ip、端口号和服务标识。
判断注册服务列表是否已存在该服务,若是,更新该服务为已占用状态和可用状态,否则,将该服务的服务提供端的ip、端口号和服务标识加入注册服务列表,并将该服务设置为未占用状态和可用状态。
在一种实施方式中,启动服务提供端web服务器,在服务提供端应用启动成功后,通过服务器的初始化方法向注册端提供相关的服务提供端信息,即发送服务注册http请求,包括服务器的IP,提供者服务的端口信息,服务标识(用于进行服务匹配发现)其它服务本身信息不需提供,通常服务提供端与服务调用端是同一项目,不需要提供服务接口的元信息数据。服务调用端通过IP和端口通过web http请求直连服务提供端。
在本发明中,针对新服务,服务提供端才进行注册。服务注册时,若注册服务列表已经存在该服务,也就是说已经存在的服务,再次尝试注册时,这个新服务就是已占用状态了。
注册端服务收到服务提供端服务初始化请求时,解析服务提供端的IP和端口号,如果该IP地址不存在,则插入注册端的数据库中,反之则不插入该服务器信息,更新该服务器的状态为未占用状态、可用状态。
在一种实施方式中,本发明提供的服务发现方法还包括下述过程:
接收服务提供端发送的指定服务的已占用状态变更请求,将该指定服务更新为已占用状态,其中,服务提供端在开始执行被调用的该指定服务时,发送该指定服务的已占用状态变更请求。
接收服务提供端发送的指定服务的未占用状态变更请求,将该指定服务更新为未占用状态,其中,服务提供端在执行完成被调用的该指定服务时,发送该指定服务的未占用状态变更请求。
接收服务提供端发送的指定服务的不可用状态变更请求,将该指定服务更新为不可用状态,其中,服务提供端在关闭时,发送该指定服务的不可用状态变更请求。
注册端提供了一个服务提供端占用状态变更服务,用于在开始调用服务和结束调用服务时变更服务状态。服务提供端开始执行被调用服务时,调用注册端状态变更服务把当前单点服务变更为已占用状态。服务提供端执行被调用服务完成时,调用注册端状态变更服务把当前单点服务变更为未占用状态。
注册端提供了一个服务提供端可用状态变更服务,用于服务不可用时,变更服务为不可用状态。服务提供端关闭服务时(包括重启),调用服务提供端可用状态变更服务,把该单调服务变更为不可用状态。
在一种实施方式中,本发明提供的服务发现方法还包括下述过程:
在设定时间,对注册服务列表中的每一个可用状态的服务执行下述步骤:
向指定服务的服务提供端发送用于检测该指定服务的地址可用性的检测请求,若返回错误或超时,则将该指定服务更新为不可用状态。
服务提供端提供了一个公共的web接口服务,用于检测服务提供端的存活状态。注册端会提供一个定时扫描任务,该任务用于定期检测服务提供端的可用性,对于执行机这种单点使用场景来说,执行机经常增减和IP地址变更,服务提供端不可用的情况很多,该任务用于完成上述功能。首先会从注册端数据库中获得所有可用状态的服务器(不可用状态服务器无须检测,因为在服务启动成功之后会初始化为可用状态)。遍历所有的可用状态的服务器,如果可以正常调用,则不改变可用状态,如果调用时出错或超时,说明服务不可用,调用服务提供端可用状态变更为服务为不可用状态。
在一种实施方式中,本发明提供的服务发现方法还包括下述过程:
部署端获取服务调用端的服务标识,然后发送包括服务标识的服务查询请求,并接收根据所述服务标识查询获得的服务提供端的ip和端口号,进而将服务提供端的ip和端口号写入服务调用端的调用配置文件,以使服务调用端可调用服务。服务调用端可调用服务的方式可以是通过http请求的方式,也可以是通过即有远程过程调用的方式。
在本发明中,部署端的功能可以由部署程序实现,部署程序可以配置在服务提供端以及服务调用端上。
在本方案中,部署端会在部署服务调用端时,修改其中的IP和端口配置项,其中修改配置的方法,可以是在部署服务调用端应用的部署包中指定相应的脚本文件,并由部署端回调该文件中的方法,已达到动态发现服务的目的。如果目标IP中的服务提供端和服务器调用者数量大于预设阀值时,则终止部署过程,反馈给部署人员提示应用数量过多超限。
在部署服务提供端应用时,发现已注册服务的端口在同一台服务器上存在时,则终止部署过程,反馈给部署人员提示应用端口被占用。在部署完成服务提供端应用时会调用部署包中的脚本文件,该脚本文件会检查服务是否可用,并发送服务器IP、端口、服务标识、服务器环境信息等。
在部署服务时,会先检测部署包中的脚本文件中的服务器环境信息,如果可以对相应的服务器环境信息项进行安装,则部署端会调用脚本文件中的安装方法,安装相应的服务器环境信息,如果不能安装,则退出部署过程,反馈给部署人员选择正确的测试执行机服务器。
在本发明的一种实施方式中,服务调用端配置有用于将服务提供端的ip和端口号写入服务调用端的调用配置文件的脚本文件,该脚本文件名为指定服务标识,部署端通过读取脚本文件名获取服务调用端的该指定服务标识。
将服务提供端的ip和端口号写入服务调用端的调用配置文件的过程具体为:部署端调用脚本文件并传入服务提供端的ip和端口号,将调用配置文件中的服务提供端地址修改为传入的服务提供端的ip和端口号,以使服务调用端可通过该服务提供端地址,调用服务提供端的服务。
脚本文件可以配置在服务调用端应用的部署包中。部署包中可以包括一个用于修改服务器配置信息的脚本文件的目录,这个脚本文件目的是用于修改服务调用者配置文件中涉及服务提供者配置信息。该脚本文件名为服务标识,该脚本有两个入参,即IP地址与端口号,部署脚本在部署时,会检测该脚本目录中有几个脚本文件,不同的脚本文件名代表不同的服务标识,将这些测试唯一标识向注册端查询对应的服务的IP和端口信息,再调用这些测试唯一标识对应的脚本文件及传入相应的入参,这些脚本文件会修改相应配置文件中的服务提供端信息,完成服务发现过程。
在一种实施方式中,本发明提供的服务发现方法还包括下述过程:服务调用端在启动时,加载调用配置文件,利用服务提供端的ip和端口号,向服务提供端调用服务。
服务调用端所属应用在部署前,部署端调用注册端的的查询指定服务标识和满足条件的服务器环境信息的服务,得到可用的服务提供端,得到IP和端口信息写入应用的相应配置文件中,如果未查询到可用的服务,则部署端报错,退出反馈给部署人员。
服务调用端所属应用在服务启动时,加载相应的配置文件,得到IP和端口信息与已知实际服务所需要的调用信息组合为实际的http web请求,直接服务提供端调用服务。
由于包括IP和端口信息,服务调用端也可以根据上述信息,通过其它途径如远程过程调用等即有方式实现服务调用,方便与即有技术相结合,此情形只是利用注册端发现服务提供端而已。
本发明提供的服务发现方法,能够适用于复杂服务调用环境,并具有轻量级,配置简单灵活的优点。该方法由于采用http请求方式,不受网络端口限制的影响,也可以在公网上运行。该方法采用http请求方式注册、查询和检测服务,实现开发语言和框架无关性,也不受实际业务代码的调用方式影响。编写少量代码即可实现服务发现,实现容易,使用方式灵活,该方法也可以与即有远程过程调用方式相结合。服务提供端和服务调用端不需要关注服务发现相关的配置,只需要关注业务代码即可。注册端只起服务提供端和服务调用端之间桥梁的作用,服务实际调用时不参与执行,大大降低了注册端的压力,由于注册端本身采用web加数据库形式,也方便进行水平扩容。该注册端的机制也方便进行一些功能的扩展,如屏蔽操作、服务统计、不同环境的服务隔离等,扩展性很强。本方案也可以和即有测试环境的相关部署技术相结合,达到比较好的测试体验度,例如同一服务器上已经被占用的端口,不会再被其它应用占用。
本发明实施例还提供一种服务发现系统,如图3所示,该系统300包括:部署端301、注册端302、服务提供端303和服务调用端304。
注册端302包括:接收模块3021和查询模块3022。
接收模块3021用于接收部署端发送的服务查询请求。查询模块3022用于根据服务查询请求在注册服务列表中查询相应的服务,并将该服务的服务提供端的地址数据向部署端返回。其中,地址数据用于由部署端写入服务调用端的调用配置文件,以使服务调用端可调用该服务。
在本发明中,注册服务列表中维护有服务的服务提供端的ip、端口号、服务标识、是否占用状态和是否可用状态,服务提供端的地址数据包括:服务提供端的ip和端口号,服务查询请求包括:服务标识,
查询模块进一步用于根据服务标识查询注册服务列表中具有相同服务标识,且处于未占用状态和可用状态的服务,并向部署端返回该服务的服务提供端的ip和端口号。
在本发明中,接收模块进一步用于接收服务提供端发送的服务注册请求,服务注册请求包括:服务提供端的ip、端口号和服务标识;
查询模块进一步用于判断注册服务列表是否已存在该服务,若是,更新该服务为已占用状态和可用状态,否则,将该服务的服务提供端的ip、端口号和服务标识加入注册服务列表,并将该服务设置为未占用状态和可用状态。
在本发明中,接收模块进一步用于接收服务提供端发送的指定服务的已占用状态变更请求、未占用状态变更请求以及不可用状态变更请求;
查询模块进一步用于在接收模块接收到已占用状态变更请求后,将该指定服务更新为已占用状态,在接收模块接收到未占用状态变更请求后,将该指定服务更新为未占用状态,在接收模块接收到不可用状态变更请求后,将该指定服务更新为不可用状态;
服务提供端在开始执行被调用的该指定服务时,发送该指定服务的已占用状态变更请求,在执行完成被调用的该指定服务时,发送该指定服务的未占用状态变更请求,在关闭时,发送该指定服务的不可用状态变更请求。
在本发明中,查询模块进一步用于在设定时间,对注册服务列表中的每一个可用状态的服务执行下述步骤:
向指定服务的服务提供端发送用于检测该指定服务的地址可用性的检测请求,若返回错误或超时,则将该指定服务更新为不可用状态。
在本发明中,部署端用于获取服务调用端的服务标识,然后发送包括服务标识的服务查询请求,并接收根据所述服务标识查询获得的服务提供端的ip和端口号,将服务提供端的ip和端口号写入服务调用端的调用配置文件,以使服务调用端可调用服务。
在本发明中,服务调用端配置有用于将服务提供端的ip和端口号写入服务调用端的调用配置文件的脚本文件,该脚本文件名为指定服务标识,部署端通过读取脚本文件名获取服务调用端的该指定服务标识;
部署端进一步用于调用脚本文件并传入服务提供端的ip和端口号,将调用配置文件中的服务提供端地址修改为传入的服务提供端的ip和端口号,以使服务调用端可通过该服务提供端地址,调用服务提供端的服务。
在本发明中,服务调用端在启动时,加载调用配置文件,利用服务提供端的ip和端口号,向服务提供端调用服务。
图4示出了可以应用本发明实施例的服务发现方法或服务发现系统的示例性系统架构400。
如图4所示,系统架构400可以包括终端设备401、402、403,网络404和服务器405。网络404用以在终端设备401、402、403和服务器405之间提供通信链路的介质。网络404可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用终端设备401、402、403通过网络404与服务器405交互,以接收或发送消息等。终端设备401、402、403上可以安装有各种通讯客户端应用。
终端设备401、402、403可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。
服务器405可以是提供各种服务的服务器,例如接收部署端发送的服务查询请求,将该地址数据向部署端返回的后台管理服务器。
需要说明的是,本发明实施例所提供的服务发现方法一般由服务器405执行,相应地,服务发现系统的中各个端一般设置于服务器405中。
应该理解,图4中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
下面参考图5,其示出了适于用来实现本发明实施例的终端设备的计算机系统500的结构示意图。图5示出的终端设备仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图5所示,计算机系统500包括中央处理单元(CPU)501,其可以根据存储在只读存储器(ROM)502中的程序或者从存储部分508加载到随机访问存储器(RAM)503中的程序而执行各种适当的动作和处理。在RAM 503中,还存储有系统500操作所需的各种程序和数据。CPU 501、ROM 502以及RAM 503通过总线504彼此相连。输入/输出(I/O)接口505也连接至总线504。
以下部件连接至I/O接口505:包括键盘、鼠标等的输入部分506;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分507;包括硬盘等的存储部分508;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分509。通信部分509经由诸如因特网的网络执行通信处理。驱动器510也根据需要连接至I/O接口505。可拆卸介质511,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器510上,以便于从其上读出的计算机程序根据需要被安装入存储部分508。
特别地,根据本发明公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本发明公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分509从网络上被下载和安装,和/或从可拆卸介质511被安装。在该计算机程序被中央处理单元(CPU)501执行时,执行本发明的系统中限定的上述功能。
需要说明的是,本发明所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本发明中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本发明中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本发明实施例中所涉及到的模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的模块也可以设置在处理器中,例如,可以描述为:一种处理器包括接收模块和查询模块。其中,这些模块的名称在某种情况下并不构成对该模块本身的限定。
作为另一方面,本发明还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的设备中所包含的;也可以是单独存在,而未装配入该设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该设备执行时,使得该设备包括:
接收部署端发送的服务查询请求;
根据所述服务查询请求在注册服务列表中查询相应的服务,并将该服务的服务提供端的地址数据向部署端返回;
其中,所述地址数据用于由部署端写入服务调用端的调用配置文件,以使服务调用端可调用该服务。
上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。
Claims (16)
1.一种服务发现方法,其特征在于,包括:
接收部署端发送的服务查询请求;
根据所述服务查询请求在注册服务列表中查询相应的服务,并将该服务的服务提供端的地址数据向部署端返回;
其中,所述地址数据用于由部署端写入服务调用端的调用配置文件,以使服务调用端可调用该服务,所述服务调用端是由部署端部署的,且部署端在部署服务调用端时,通过修改调用配置文件中的配置项以将所述地址数据写入服务调用端的调用配置文件;
所述注册服务列表中维护有服务的服务提供端的ip、端口号、服务标识、是否占用状态和是否可用状态,所述服务提供端的地址数据包括:服务提供端的ip和端口号,所述服务查询请求包括:服务标识,
根据所述服务查询请求在注册服务列表中查询相应的服务,并将该服务的服务提供端的地址数据向部署端返回包括:根据所述服务标识查询所述注册服务列表中具有相同服务标识,且处于未占用状态和可用状态的服务,并向部署端返回该服务的服务提供端的ip和端口号。
2.根据权利要求1所述的方法,其特征在于,还包括:
接收服务提供端发送的服务注册请求,所述服务注册请求包括:服务提供端的ip、端口号和服务标识;
判断所述注册服务列表是否已存在该服务,若是,更新该服务为已占用状态和可用状态,否则,将该服务的服务提供端的ip、端口号和服务标识加入所述注册服务列表,并将该服务设置为未占用状态和可用状态。
3.根据权利要求1所述的方法,其特征在于,还包括:
接收服务提供端发送的指定服务的已占用状态变更请求,将该指定服务更新为已占用状态,其中,所述服务提供端在开始执行被调用的该指定服务时,发送该指定服务的已占用状态变更请求;
接收服务提供端发送的指定服务的未占用状态变更请求,将该指定服务更新为未占用状态,其中,所述服务提供端在执行完成被调用的该指定服务时,发送该指定服务的未占用状态变更请求;
接收服务提供端发送的指定服务的不可用状态变更请求,将该指定服务更新为不可用状态,其中,所述服务提供端在关闭时,发送该指定服务的不可用状态变更请求。
4.根据权利要求1所述的方法,其特征在于,还包括:
在设定时间,对所述注册服务列表中的每一个可用状态的服务执行下述步骤:
向指定服务的服务提供端发送用于检测该指定服务的地址可用性的检测请求,若返回错误或超时,则将该指定服务更新为不可用状态。
5.根据权利要求1所述的方法,其特征在于,还包括:
部署端获取服务调用端的服务标识;
发送包括所述服务标识的服务查询请求,并接收根据所述服务标识查询获得的服务提供端的ip和端口号;
将所述服务提供端的ip和端口号写入服务调用端的调用配置文件,以使服务调用端可调用所述服务。
6.根据权利要求5所述的方法,其特征在于,所述服务调用端配置有用于将所述服务提供端的ip和端口号写入服务调用端的调用配置文件的脚本文件,该脚本文件名为指定服务标识,部署端通过读取所述脚本文件名获取服务调用端的该指定服务标识;
将所述服务提供端的ip和端口号写入服务调用端的调用配置文件包括:
部署端调用所述脚本文件并传入所述服务提供端的ip和端口号,将所述调用配置文件中的服务提供端地址修改为所述传入的服务提供端的ip和端口号,以使服务调用端可通过该服务提供端地址,调用服务提供端的所述服务。
7.根据权利要求1所述的方法,其特征在于,还包括:
服务调用端在启动时,加载所述调用配置文件,利用所述服务提供端的ip和端口号,向服务提供端调用服务。
8.一种服务发现系统,其特征在于,包括:部署端、注册端、服务提供端和服务调用端;
所述注册端包括:
接收模块,用于接收部署端发送的服务查询请求;
查询模块,用于根据所述服务查询请求在注册服务列表中查询相应的服务,并将该服务的服务提供端的地址数据向部署端返回;
其中,所述地址数据用于由部署端写入服务调用端的调用配置文件,以使服务调用端可调用该服务,所述服务调用端是由部署端部署的,且部署端在部署服务调用端时,通过修改调用配置文件中的配置项以将所述地址数据写入服务调用端的调用配置文件;
所述注册服务列表中维护有服务的服务提供端的ip、端口号、服务标识、是否占用状态和是否可用状态,所述服务提供端的地址数据包括:服务提供端的ip和端口号,所述服务查询请求包括:服务标识,
所述查询模块进一步用于根据所述服务标识查询所述注册服务列表中具有相同服务标识,且处于未占用状态和可用状态的服务,并向部署端返回该服务的服务提供端的ip和端口号。
9.根据权利要求8所述的系统,其特征在于,所述接收模块进一步用于接收服务提供端发送的服务注册请求,所述服务注册请求包括:服务提供端的ip、端口号和服务标识;
所述查询模块进一步用于判断所述注册服务列表是否已存在该服务,若是,更新该服务为已占用状态和可用状态,否则,将该服务的服务提供端的ip、端口号和服务标识加入所述注册服务列表,并将该服务设置为未占用状态和可用状态。
10.根据权利要求8所述的系统,其特征在于,所述接收模块进一步用于接收服务提供端发送的指定服务的已占用状态变更请求、未占用状态变更请求以及不可用状态变更请求;
所述查询模块进一步用于在所述接收模块接收到所述已占用状态变更请求后,将该指定服务更新为已占用状态,在所述接收模块接收到所述未占用状态变更请求后,将该指定服务更新为未占用状态,在所述接收模块接收到所述不可用状态变更请求后,将该指定服务更新为不可用状态;
所述服务提供端在开始执行被调用的该指定服务时,发送该指定服务的已占用状态变更请求,在执行完成被调用的该指定服务时,发送该指定服务的未占用状态变更请求,在关闭时,发送该指定服务的不可用状态变更请求。
11.根据权利要求8所述的系统,其特征在于,所述查询模块进一步用于在设定时间,对所述注册服务列表中的每一个可用状态的服务执行下述步骤:
向指定服务的服务提供端发送用于检测该指定服务的地址可用性的检测请求,若返回错误或超时,则将该指定服务更新为不可用状态。
12.根据权利要求8所述的系统,其特征在于,部署端用于获取服务调用端的服务标识,然后发送包括所述服务标识的服务查询请求,并接收根据所述服务标识查询获得的服务提供端的ip和端口号,将所述服务提供端的ip和端口号写入服务调用端的调用配置文件,以使服务调用端可调用所述服务。
13.根据权利要求8所述的系统,其特征在于,所述服务调用端配置有用于将所述服务提供端的ip和端口号写入服务调用端的调用配置文件的脚本文件,该脚本文件名为指定服务标识,部署端通过读取所述脚本文件名获取服务调用端的该指定服务标识;
部署端进一步用于调用所述脚本文件并传入所述服务提供端的ip和端口号,将所述调用配置文件中的服务提供端地址修改为所述传入的服务提供端的ip和端口号,以使服务调用端可通过该服务提供端地址,调用服务提供端的所述服务。
14.根据权利要求8所述的系统,其特征在于,服务调用端在启动时,加载所述调用配置文件,利用所述服务提供端的ip和端口号,向服务提供端调用服务。
15.一种服务发现电子设备,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-7中任一所述的方法。
16.一种计算机可读介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1-7中任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810783952.3A CN110730197B (zh) | 2018-07-17 | 2018-07-17 | 一种服务发现方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810783952.3A CN110730197B (zh) | 2018-07-17 | 2018-07-17 | 一种服务发现方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110730197A CN110730197A (zh) | 2020-01-24 |
CN110730197B true CN110730197B (zh) | 2023-08-08 |
Family
ID=69217421
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810783952.3A Active CN110730197B (zh) | 2018-07-17 | 2018-07-17 | 一种服务发现方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110730197B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111404759B (zh) * | 2020-04-17 | 2022-03-04 | 腾讯科技(深圳)有限公司 | 服务检测方法、规则配置方法、相关设备及介质 |
CN112925628A (zh) * | 2021-03-29 | 2021-06-08 | 建信金融科技有限责任公司 | 一种服务管理方法和装置 |
CN113742100B (zh) * | 2021-08-27 | 2024-05-31 | 欧电云信息科技(江苏)有限公司 | 基于微服务架构的服务调用方法、系统、设备及介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102427451A (zh) * | 2011-12-06 | 2012-04-25 | 宁波电业局 | 一种获取服务应用的方法与系统 |
CN102571550A (zh) * | 2010-12-30 | 2012-07-11 | 北京亿阳信通软件研究院有限公司 | 一种通用的信息交互平台和方法 |
CN103188204A (zh) * | 2011-12-27 | 2013-07-03 | 腾讯科技(深圳)有限公司 | 开放平台中的服务控制方法及系统 |
CN105141452A (zh) * | 2015-08-07 | 2015-12-09 | 北京思特奇信息技术股份有限公司 | 一种基于cxf的高性能服务系统及方法 |
CN106708547A (zh) * | 2015-11-12 | 2017-05-24 | 卓望数码技术(深圳)有限公司 | 一种服务插件管理方法和系统 |
WO2017185961A1 (zh) * | 2016-04-26 | 2017-11-02 | 中兴通讯股份有限公司 | 一种服务发现的处理方法及装置 |
CN108055248A (zh) * | 2017-11-30 | 2018-05-18 | 平安科技(深圳)有限公司 | 基于dubbo框架的远程调用方法、服务器及存储介质 |
-
2018
- 2018-07-17 CN CN201810783952.3A patent/CN110730197B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102571550A (zh) * | 2010-12-30 | 2012-07-11 | 北京亿阳信通软件研究院有限公司 | 一种通用的信息交互平台和方法 |
CN102427451A (zh) * | 2011-12-06 | 2012-04-25 | 宁波电业局 | 一种获取服务应用的方法与系统 |
CN103188204A (zh) * | 2011-12-27 | 2013-07-03 | 腾讯科技(深圳)有限公司 | 开放平台中的服务控制方法及系统 |
CN105141452A (zh) * | 2015-08-07 | 2015-12-09 | 北京思特奇信息技术股份有限公司 | 一种基于cxf的高性能服务系统及方法 |
CN106708547A (zh) * | 2015-11-12 | 2017-05-24 | 卓望数码技术(深圳)有限公司 | 一种服务插件管理方法和系统 |
WO2017185961A1 (zh) * | 2016-04-26 | 2017-11-02 | 中兴通讯股份有限公司 | 一种服务发现的处理方法及装置 |
CN107317830A (zh) * | 2016-04-26 | 2017-11-03 | 中兴通讯股份有限公司 | 一种服务发现的处理方法及装置 |
CN108055248A (zh) * | 2017-11-30 | 2018-05-18 | 平安科技(深圳)有限公司 | 基于dubbo框架的远程调用方法、服务器及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN110730197A (zh) | 2020-01-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11157304B2 (en) | System for peering container clusters running on different container orchestration systems | |
CN109547570B (zh) | 服务注册方法、装置、注册中心管理设备及存储介质 | |
CN106888233B (zh) | 数据更新系统及方法 | |
US10757197B2 (en) | Self-extending cloud | |
RU2670794C2 (ru) | Способ и система формирования гибкого узла на локальных или распределенных вычислительных системах | |
CN112860451A (zh) | 一种基于SaaS的多租户数据处理方法和装置 | |
US8185624B2 (en) | Efficient on-demand provisioning of servers for specific software sets | |
US20150067167A1 (en) | Hot pluggable extensions for access management system | |
US8856365B2 (en) | Computer-implemented method, computer system and computer readable medium | |
CN110730197B (zh) | 一种服务发现方法和系统 | |
CN114500481B (zh) | 业务请求处理方法、系统和装置 | |
US20170033980A1 (en) | Agent manager for distributed transaction monitoring system | |
CN109828830B (zh) | 用于管理容器的方法和装置 | |
CN113127335B (zh) | 一种系统测试的方法和装置 | |
CN109981546B (zh) | 获取应用模块间的远程调用关系的方法和装置 | |
CN109218338B (zh) | 信息处理系统、方法和装置 | |
US11381665B2 (en) | Tracking client sessions in publish and subscribe systems using a shared repository | |
CN112202605A (zh) | 服务配置方法、装置、设备及存储介质 | |
CN110750424A (zh) | 资源巡检方法和装置 | |
CN116737662A (zh) | 业务数据处理的方法、装置、电子设备和存储介质 | |
CN112579247A (zh) | 确定任务状态的方法和装置 | |
CN114398035A (zh) | 利用组件提供服务的方法、装置、设备和计算机可读介质 | |
CN114925066A (zh) | 数据处理方法、装置、电子设备和存储介质 | |
US20150350340A1 (en) | Management of headless hardware in data center | |
US10387944B2 (en) | Management of revisions on revisions of orders |
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 |