CN106603594A - 一种分布式服务的管理方法和系统 - Google Patents
一种分布式服务的管理方法和系统 Download PDFInfo
- Publication number
- CN106603594A CN106603594A CN201510665434.8A CN201510665434A CN106603594A CN 106603594 A CN106603594 A CN 106603594A CN 201510665434 A CN201510665434 A CN 201510665434A CN 106603594 A CN106603594 A CN 106603594A
- Authority
- CN
- China
- Prior art keywords
- service
- container
- configuration information
- configuration
- discovery
- 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
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/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/566—Grouping or aggregating service requests, e.g. for unified processing
-
- 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
Abstract
本发明公开了一种分布式服务的管理方法和系统。本实施在启动容器时获取与容器绑定的服务的配置信息模板,并基于服务配置信息模板生成容器服务的配置信息;容器引擎经由服务发现代理向服务注册服务器发送容器服务的配置信息;服务注册服务器基于接收到容器服务的配置信息,对部署在同一容器主机中的全部服务进行注册;容器引擎经由服务发现代理向服务注册服务器发送服务心跳请求;服务注册服务器基于所接收到的服务心跳请求,对部署在同一容器主机中的全部服务进行检测。本实施通过容器引擎合并部署在同一容器主机中的全部服务的注册、注销请求以及服务心跳请求,降低注册服务器的通信开销,缓解注册服务器的负载压力。
Description
技术领域
本发明涉及分布式系统领域,特别涉及一种分布式服务的管理方法和系统。
背景技术
服务发现是面向服务的分布式系统中实现服务透明调用的关键技术,用基于服务名字的通信方式代替传统基于IP/主机名的通信方式,服务提供者用服务名向注册服务器注册服务配置,服务使用者用服务名向注册服务器查询服务配置,绑定服务的实际IP和端口。
典型的服务发现机制如图1所示,包括服务提供者、服务使用者和服务注册服务器,服务提供者和服务使用者均内置了服务发现SDK,服务发现SDK负责与注册服务器进行通信,向服务提供者和服务使用者提供透明的服务发现API。服务提供者启动后通过服务发现SDK向注册服务器注册服务配置信息,注册服务器记录服务名与服务配置信息的对应关系。服务使用者需要使用服务时通过服务发现SDK向用服务名向注册服务器查询服务配置、绑定服务配置,并向服务提供者发起服务调用。
在现有服务发现技术中,服务使用者的每次服务查询请求和服务提供者的每次服务注册、服务心跳、注销请求都要与注册服务器进行一次通信,而大型的分布式应用往往由数以万计的服务使用者和服务提供者实例构成,大量并发的服务查询、注册和注销通信会造成大量的网络开销,也对注册服务器的负载带来巨大压力。
发明内容
本发明实施例所要解决的一个技术问题是:分布式服务的注册服务器负载过大的问题。
根据本发明实施例的一个方面,提供的一种分布式服务的管理方法,包括:在启动容器时获取与容器绑定的服务的配置信息模板,并基于所述服务的配置信息模板生成容器服务的配置信息;容器引擎经由服务发现代理向服务注册服务器发送容器服务的配置信息;服务注册服务器基于接收到容器服务的配置信息,对部署在同一容器主机中的全部服务进行注册;容器引擎经由服务发现代理向服务注册服务器发送服务心跳请求,其中服务心跳请求包括容器服务的配置信息;服务注册服务器基于所接收到的服务心跳请求,对部署在同一容器主机中的全部服务进行检测。
在一个实施例中,服务注册服务器基于所接收到的所述服务心跳请求,对部署在同一容器主机中的全部服务进行心跳检测,具体包括:若服务注册服务器接收到所述服务心跳请求;则获取部署在同一容器主机中的全部服务的配置信息,并向容器引擎返回服务心跳响应;若服务注册服务器未接收到服务心跳请求,则容器引擎删除服务配置信息。
在一个实施例中,容器引擎经由服务发现代理向服务注册服务器发送容器服务的配置信息,具体包括:容器引擎向服务发现代理发送容器服务的配置信息;服务发现代理接收容器服务的配置信息,获取部署在同一容器主机中的全部服务的配置信息,并将全部服务的配置信息存储在服务发现代理的本地缓存中。
在一个实施例中,服务的配置信息包括:服务名、服务实例号、服务过期时间(Time to Live,TTL)、通信协议、服务接口、服务IP地址和服务端口。
在一个实施例中,分布式服务的管理方法还包括:当容器引擎查询服务时,服务发现代理查询存储在本地缓存中的部署在同一容器主机中的全部服务的配置信息;若通过服务发现代理查询到服务的配置信息时,判断查询到的服务的配置信息的当前时间是否超过服务的配置失效时间;若当前时间没有超过服务的配置失效时间时,服务发现代理向容器管理者返回查询到的服务的配置信息;若当前时间超过服务的配置失效时间时,服务发现代理删除本地缓存中的超过服务的配置失效时间的服务的配置信息,并向服务注册服务器发送服务查询请求,以便服务注册服务器为容器引擎分配服务的配置信息;其中,服务的配置失效时间=服务的配置消息的设置时间+TTL。
在一个实施例中,若未查询到服务的配置信息时,服务发现代理向服务注册服务器发送服务查询请求;服务注册服务器接收服务查询请求,并通过服务发现代理向容器引擎发送服务的配置信息。
在一个实施例中,通过服务发现代理向管理服务器发送服务的配置信息,具体包括:服务注册服务器向服务发现代理发送服务的配置信息;服务发现代理接收服务注册服务器发送的服务的配置信息,并将服务的配置信息存储到服务发现代理的本地缓存;服务发现代理将服务的配置信息发送给容器引擎。
在一个实施例中,分布式服务的管理方法还包括:容器引擎通过服务发现代理的查询接口,根据服务的调度策略,查询存储在本地缓存中的部署在同一容器主机中的全部服务的配置信息;或者容器引擎通过服务发现代理的查询接口,根据服务的配置信息中的服务名和服务实例号,查询存储在本地缓存中的部署在同一容器主机中的全部服务的配置信息;或者容器引擎通过服务发现代理的查询接口,根据服务配置的服务名和服务IP地址,查询存储在本地缓存中的部署在同一容器主机中的全部服务的配置信息。
在一个实施例中,本实施例的方法包括:在容器引擎通过服务发现代理向服务注册服务器发送服务心跳请求或容器服务配置请求前,对服务心跳请求或容器服务配置请求进行压缩。
在一个实施例中,分布式服务的管理方法还包括:容器引擎在接收到服务的配置信息后,根据服务配置信息中的通信协议、服务IP地址、服务端口和服务接口信息向容器发送服务调用请求;容器引擎接收服务调用请求,向容器引擎返回服务调用响应,以便容器管理者完成服务调用。
在一个实施例中,分布式服务的管理方法还包括:容器引擎根据同一容器主机中的全部服务的服务名生成容器服务的配置信息;容器引擎经由服务发现代理向服务注册服务器发送容器服务的配置信息;服务注册服务器基于接收到容器服务的配置信息,对部署在同一容器主机中的全部服务进行注销。
在一个实施例中,容器引擎获取部署在同一容器主机中的全部服务的配置信息,具体包括:容器引擎提取同一容器主机中的全部服务的服务镜像文件,并提取服务的配置信息。
根据本发明实施例的一个方面,提供的一种分布式服务的管理系统,包括:容器引擎和服务注册服务器;其中,容器引擎包括:信息配置单元和发送单元;信息配置单元,用于在启动容器时获取与容器绑定的服务的配置信息模板,并基于所述服务的配置信息模板生成容器服务的配置信息;发送单元,用于由服务发现代理向服务注册服务器发送容器服务的配置信息;服务注册服务器包括:注册单元,用于基于接收到容器服务的配置信息,对部署在同一容器主机中的全部服务进行注册;发送单元,用于由服务发现代理向服务注册服务器发送所述容器服务的配置信息;还用于经由服务发现代理向服务注册服务器发送服务心跳请求,其中所述服务心跳请求包括所述容器服务的配置信息;服务注册服务器包括:注册单元和心跳检测单元;注册单元,用于基于接收到所述容器服务的配置信息,对所述部署在同一容器主机中的全部服务进行注册;心跳检测单元,用于基于所接收到的所述服务心跳请求,对所述部署在同一容器主机中的全部服务进行检测。
在一个实施例中,心跳检测单元具体用于:当接收到服务心跳请求时;则获取部署在同一容器主机中的全部服务的配置信息,并向容器引擎返回服务心跳响应;若服务注册服务器未接收到服务心跳请求时,则删除所述服务配置信息。
在一个实施例中,分布式服务的管理系统还包括:服务发现代理;服务发现代理,用于接收容器服务的配置信息,获取部署在同一容器主机中的全部服务的配置信息,并将全部服务的配置信息存储在服务发现代理的本地缓存中;所述容器引擎,用于向服务发现代理发送容器服务的配置信息。
在一个实施例中,服务的配置信息包括:服务名、服务实例号、服务过期时间(Time to Live,TTL)、通信协议、服务接口、服务IP地址和服务端口。
在一个实施例中,服务发现代理,还用于查询存储在本地缓存中的部署在同一容器主机中的全部服务的配置信息;当容器引擎查询服务时,用于查询存储在本地缓存中的部署在同一容器主机中的全部服务的配置信息;若通过服务发现代理查询到服务的配置信息时,用于判断查询到的服务的配置信息的当前时间是否超过服务的配置失效时间;若当前时间没有超过服务的配置失效时间时,用于向容器管理者返回查询到的服务的配置信息;若当前时间超过服务的配置失效时间时,用于删除本地缓存中的超过服务的配置失效时间的服务的配置信息,并向服务注册服务器发送服务查询请求,以便服务注册服务器为容器引擎分配服务的配置信息;其中,服务的配置失效时间=服务的配置消息的设置时间+TTL。
在一个实施例中,若未查询到服务的配置信息时,服务发现代理,还用于向服务注册服务器发送服务查询请求;服务注册服务器还包括:服务配置单元,用于接收服务查询请求,并通过服务发现代理向容器引擎发送服务的配置信息。
在一个实施例中,服务配置单元,用于向服务发现代理发送服务的配置信息;服务发现代理,用于接收服务注册服务器发送的服务的配置信息,并将服务的配置信息存储到服务发现代理的本地缓存;用于将服务的配置信息发送给容器引擎。
在一个实施例中,容器引擎还包括:查询单元,用于通过服务发现代理,根据服务的调度策略,查询存储在本地缓存中的部署在同一容器主机中的全部服务的配置信息;还用于通过服务发现代理,根据服务的配置信息中的服务名和服务实例号,查询存储在本地缓存中的部署在同一容器主机中的全部服务的配置信息;还用于通过服务发现代理,根据服务配置的服务名和服务IP地址,查询存储在本地缓存中的部署在同一容器主机中的全部服务的配置信息。
在一个实施例中,所述发送单元,用于在向服务注册服务器发送服务心跳请求或容器服务配置请求前,对服务心跳请求或容器服务配置请求进行压缩。
在一个实施例中,容器引擎还包括:服务调用单元,用于在接收到服务的配置信息后,根据服务配置信息中的通信协议、服务IP地址、服务端口和服务接口信息向容器发送服务调用请求;还用于接收服务调用请求,向容器引擎返回服务调用响应,以便容器引擎完成服务调用。
在一个实施例中,服务注册服务器还包括:注销单元,当容器停止服务或暂停服务时,用于基于根据同一容器主机中的全部服务的服务名生成的容器服务的配置信息,对部署在同一容器主机中的全部服务进行注销。
在一个实施例中,信息配置单元,还用于提取同一容器主机中的全部服务的服务镜像文件,并提取服务的配置信息。
本实施通过容器引擎合并部署在同一容器主机中的全部服务的注册、注销请求和服务心跳请求,降低注册服务器的通信开销,缓解注册服务器的负载压力;并且通过在服务发现代理中缓存同一容器主机中的全部服务的配置信息,以便需要使用服务的用户可以从本地缓存中获取服务的配置信息,提升服务查询效率,减少服务查询的通信开销,也缓解了注册服务器的负载压力。
通过以下参照附图对本发明的示例性实施例的详细描述,本发明的其它特征及其优点将会变得清楚。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1示出现有技术中的服务管理的流程图。
图2示出本发明的分布式服务的管理方法的一个实施例的流程示意图。
图3示出本发明的分布式服务的管理方法的一个实施例的流程示意图。
图4示出本发明的分布式服务的管理系统的一个实施例的结构示意图。
图5示出本发明的分布式服务的管理系统的一个实施例的结构示意图。
图6示出本发明的分布式服务的管理系统的一个实施例的结构示意图。
图7示出本发明的分布式服务的管理系统的一个实施例的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本发明及其应用或使用的任何限制。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本发明的范围。
同时,应当明白,为了便于描述,附图中所示出的各个部分的尺寸并不是按照实际的比例关系绘制的。
对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,技术、方法和设备应当被视为授权说明书的一部分。
在这里示出和讨论的所有示例中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它示例可以具有不同的值。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
图2为本发明的分布式服务的管理方法的一个实施例的流程示意图。参考图2,分布式服务的管理方法包括:
步骤S201,在启动容器时获取与容器绑定的服务的配置信息模板,并基于服务的配置信息模板生成容器服务的配置信息。
步骤S202,容器引擎经由服务发现代理向服务注册服务器发送容器服务的配置信息。
步骤S203,服务注册服务器基于接收到容器服务的配置信息,对部署在同一容器主机中的全部服务进行注册。
步骤S204,容器引擎经由服务发现代理向服务注册服务器发送服务心跳请求,其中服务心跳请求包括所述容器服务的配置信息。其中,容器引擎或者服务发现代理。
步骤S205,服务注册服务器基于所接收到的服务心跳请求,对部署在同一容器主机中的全部服务进行检测。
在一个实施例中,步骤S205具体可以包括:若服务注册服务器接收到服务心跳请求时,服务注册服务器获取部署在同一容器主机中的全部服务的配置信息,并向容器引擎返回服务心跳响应,从而确定服务配置正常,可以正常使用服务。
若服务注册服务器未接收到服务心跳请求,或者服务注册服务器接收到服务心跳请求,但为向容器引擎返回服务心跳响应时,则容器引擎可以确定服务配置异常,因此需要删除服务配置或停止服务配置。由于容器引擎需要定期向服务注册服务器发送服务心跳请求,因此服务心跳请求对于网络和服务注册服务器的压力较大,如果采用合并服务心跳的方式,可以降低网络和服务注册服务器的负载。
本实施首先通过管理服务器合并部署在同一容器主机中的全部服务的注册、注销请求和服务心跳请求,降低注册服务器的通信开销,从而缓解注册服务器的负载压力;并且通过在服务发现代理中缓存同一容器主机中的全部服务的配置信息,以便需要使用服务的用户可以从本地缓存中获取服务的配置信息,减少了服务查询的通信开销,提升了服务查询效率,并且也缓解了注册服务器的负载压力。
在一个实施例中,容器引擎获取部署在同一容器主机中的全部服务的配置信息,具体可以通过提取同一容器主机中的全部服务的服务镜像文件,从服务文件中读取服务配置模板,生成服务的配置信息。其中,在一个实施例中,例如可以只提取正在启动中的容器的服务配置信息,服务配置模板可以作为一个独立的文件放在容器的镜像中,甚至可以作为镜像元文件的一部分,放在dockerfile等镜像元文件中。
容器平台的镜像文件通常是一个压缩包,里面包含服务容器安装和运行所需的所有依赖文件和配置文件。可以采用某种模板格式对服务配置文件里与容器相关的参数进行抽象,使得服务配置文件可以在容器启动时根据启动参数动态生成,例如以下auth服务的JSON文件为例,auth服务配置模板如下:
{ServiceName:"auth",
InstanceIndex:${InstanceIndex},
TTL:300,
Protocol:"OAuth",
Version:"v1",
IP:${ContainerIP},
Port:${ContainerPort},
GetTokenURL:"/auth/get_token",
ValidateTokenURL:"/auth/validate_token"}
其中模板文件中的${}所指定的内容就是模板参数,容器在启动时首先从镜像文件中提取服务配置模板文件,然后从模板中找出所有的模板参数,对每个模板参数从容器的环境变量或启动参数中获取对应的参数值,例如容器的环境变量和启动参数通常放在一个map中,通过map.get可获取对应参数的值,然后用参数值替换模板文件中对应的${}模板参数占位字符串,得到最终的服务配置文件。
容器引擎根据服务镜像文件中的服务配置模板生成服务的配置信息,例如以认证服务的JSON服务为例,生成的服务的配置信息为:
{ServiceName:"auth",
InstanceIndex:1,
TTL:300,
Protocol:"OAuth",
Version:"v1",
IP:192.168.1.101,
Port:8081,
GetTokenURL:"/auth/get_token",
ValidateTokenURL:"/auth/validate_token"}
上述的服务的服务名ServiceName是auth,实例号InstanceIndex是1,服务的配置失效时间是300秒,每个服务由一个或多个服务实例提供服务,例如可以由多个认证服务器实例提认证服务,实例号用于区分同一个服务的不同实例。TTL用于设置每种服务的配置失效时间,服务注册服务器和服务发现代理中的缓存的服务的配置失效时间的均由TTL决定。
其中,在容器引擎启动服务注册的过程后,容器引擎和服务发现代理可以根据TTL定期向注册服务器发送服务心跳,其服务心跳的发送周期一般小于TTL,例如发送周期可以为60秒、300秒或600秒,以便通过服务心跳实现对服务配置的检测。
在一个实施例中,在基于配置信息生成容器服务的配置信息的过程中,由于同一个容器中所有服务名相同的服务的配置信息除了服务端口之外,其余的服务的配置信息相同,因此,生成的容器服务的配置信息例如是由三个服务端口分别为10001、10002和10003,并且服务名都为auth的服务配置组成。容器引擎可以将上述的一个容器服务的配置信息发送给服务注册服务器,从而完成三个服务的注册,由此可以减少注册的通信开销,从而缓解了服务注册服务器的负载。
其中,在一个实施例中,容器引擎还可以采用压缩算法对容器服务的配置信息请求以及服务心跳请求进行压缩,例如可以采用CJSON或HPack算法进行压缩,从而减少传输的信息的开销,而服务注册服务器也可以对容器服务的配置信息以及服务心跳进行解压缩,以便继续进行后续的注册或注销的操作。
而容器引擎在服务注销的过程中,容器引擎也可以根据同一容器主机中的全部服务的配置信息生成容器服务的配置信息,并将容器服务的配置信息发送给服务注册服务器,以便服务注册服务器接收到容器服务的配置信息后,根据同一容器中的全部服务的配置信息对部署在同一容器主机中的全部服务进行注销,由此也可以减少注销的通信开销,从而化解了服务注册服务器的负载。
图3示出本发明的分布式服务的管理方法的服务查询的操作的一个实施例的流程示意图。参考图3,本实施例的服务查询的操作包括:
步骤S301,当容器引擎查询服务时,服务发现代理查询存储在本地缓存中的部署在同一容器主机中的全部服务的配置信息。
步骤S302,若通过服务发现代理查询到服务的配置信息时,判断查询到的服务的配置信息的当前时间是否超过服务的配置失效时间。
步骤S303,若当前时间没有超过服务的配置失效时间,服务发现代理向容器管理者返回查询到的服务的配置信息。
步骤S304,若当前时间超过服务的配置失效时间时,服务发现代理删除本地缓存中的超过服务的配置失效时间的服务的配置信息,并向服务注册服务器发送服务查询请求,以便服务注册服务器为容器引擎分配服务的配置信息。
在步骤S301后,若未查询到服务的配置信息时,则直接执行步骤S305,服务发现代理向服务注册服务器发送服务查询请求。
以及步骤S306,服务注册服务器接收服务查询请求,并通过服务发现代理向容器引擎发送服务的配置信息。
本实施例中通过在服务发现代理中缓存同一容器主机中的全部服务的配置信息,以便需要使用服务的用户可以从本地缓存中获取服务的配置信息,提升服务查询效率,减少服务查询的通信开销,也缓解了注册服务器的负载压力。
下面详述服务发现代理具体如何查询本地的服务的配置信息。
服务发现代理一般只保存每种服务的一个Active的服务实例。本地服务配置缓存提供两个操作配置缓存的API:
设置配置缓存:bool SetServiceConfig(StringserviceName,ServiceConfig configObj)。
获取配置缓存:ServiceConfig GetServiceConfig(StringserviceName)。
其中ServiceConfig是服务配置对象,为了提高效率,服务发现代理通常会把字符串的服务的配置信息转换成某种语言的数据结构,例如Java、C++等,所选择的语言通常取决于本地缓存的实现语言。其中,服务的配置信息的服务过期时间由ServiceConfig对象的TTL属性决定,本地缓存为每个ServiceConfig对象设置一个服务的配置失效时间,服务的配置失效时间=服务的配置消息的设置时间+TTL。如上述服务名auth服务的例子,假定TTL为300秒,假设缓存设置时间为2015-09-0100:00:00,那么服务的配置失效时间就是2015-09-0100:05:00,当服务发现代理调用获取缓存(get)方法时,服务发现代理判断当前时间是否超过服务的配置失效时间,如果超过失效时间则删除缓存的服务的配置信息,并返回空对象。
其中,由于需要查询的服务不同,因此可以采取以下三种方式查询所需要的服务:
一、当查询部署在同一容器主机中的某一服务时,容器引擎可以通过服务发现代理的ServiceConfig getServiceConfig(StringserviceName,String policy)接口来查询所需要的服务。其中,policy为调度策略参数用于指定服务实例的选择策略,例如可以为最新注册、最少分配、最少连接等调度策略,以便按照指定的策略向容器引擎返回调度策略相应的某一服务。
二、当查询部署在同一容器主机中的指定服务时,容器引擎可以
查询服务的指定实例:ServiceConfig getServiceConfig(StringserviceName,int instanceIndex),按服务的配置信息中的服务名和服务实例序号获取实例配置
三、当查询部署在同一容器主机中的某些服务时,服务发现代理可以使用ServiceConfig[]getServiceConfig(String serviceName,Condition condition)接口,按服务名和指定的条件获取多个服务实例配置,例如根据服务名和服务IP地址查询,如果IP地址不是单一的地址,而是某一个网段,则服务可以属于某个网段服务的配置。
例如以上述的auth服务为例,查询auth服务最新注册的服务,使用getServiceConfig("auth","RegLatest")的接口对服务进行查询,对应的服务查询请求URL为:
http://ServiceRegistry/GetServiceConfig?serviceName="auth"&ploicy="RegLatest"
则服务发现代理向容器引擎返回的服务的配置信息则为:
{ServiceName:"auth",
InstanceIndex:1,
TTL:300,
UpdateDate:2015-09-0100:00:10
Protocol:"OAuth",
Version:"v1",
IP:192.168.1.101,
Port:8081,
GetTokenURL:"/auth/get_token",
ValidateTokenURL:"/auth/validate_token"}
在一个实施例中,当容器管理者接收到服务发现代理或者服务注册服务器返回的服务的配置信息后,即可根据服务的配置信息中的通信协议、服务IP地址、服务端口和服务接口信息请求获得服务的配置信息对应的服务。
图4示出本发明的分布式服务的管理系统的一个实施例的结构示意图。参考图4,本实施例的分布式服务的管理系统包括:
容器引擎401和服务注册服务器402。
在一个实施例中,参考图5,容器引擎401可以包括:信息配置单元4011和发送单元4012。
信息配置单元4011,用于在启动容器时获取与容器绑定的服务的配置信息模板,并基于服务的配置信息模板生成容器服务的配置信息。
发送单元4012,用于由服务发现代理向服务注册服务器402发送容器服务的配置信息。
参考图5,服务注册服务器402可以包括:注册单元4021和心跳检测单元4022。
注册单元4021,用于基于接收到容器服务的配置信息,对部署在同一容器主机中的全部服务进行注册。
心跳检测单元4022,用于基于所接收到的所述服务心跳请求,对所述部署在同一容器主机中的全部服务进行检测。
在一个实施例中,参考图6,分布式服务的管理系统还可以包括:
服务发现代理403,用于接收容器服务的配置信息,获取部署在同一容器主机中的全部服务的配置信息,并将全部服务的配置信息存储在服务发现代理的本地缓存中。
容器引擎401,还用于向服务发现代理403发送容器服务的配置信息。
在一个实施例中,服务的配置信息包括:服务名、服务实例号、服务过期时间(Time to Live,TTL)、通信协议、服务接口、服务IP地址和服务端口。
在一个实施例中,服务发现代理403还用于查询存储在本地缓存中的部署在同一容器主机中的全部服务的配置信息;当容器引擎查询服务时,用于查询存储在本地缓存中的部署在同一容器主机中的全部服务的配置信息;若通过服务发现代理查询到服务的配置信息时,用于判断查询到的服务的配置信息的当前时间是否超过服务的配置失效时间;若当前时间没有超过服务的配置失效时间时,用于向容器管理者返回查询到的服务的配置信息;若当前时间超过服务的配置失效时间时,用于删除本地缓存中的超过服务的配置失效时间的服务的配置信息,并向服务注册服务器发送服务查询请求,以便服务注册服务器为容器引擎分配服务的配置信息;其中,服务的配置失效时间=服务的配置消息的设置时间+TTL。
在一个实施例中,若未查询到服务的配置信息时,服务发现代理403还用于向服务注册服务器402发送服务查询请求。
在一个实施例中,参考图7,服务注册服务器402还可以包括:服务配置单元4023,用于接收服务查询请求,并通过服务发现代理403向容器引擎401发送服务的配置信息。
在一个实施例中,服务配置单元4023,用于向服务发现代理403发送服务的配置信息。
服务发现代理403还用于接收服务注册服务器发送的服务的配置信息,并将服务的配置信息存储到服务发现代理的本地缓存;用于将服务的配置信息发送给容器引擎。
在一个实施例中,参考图7,容器引擎401还可以包括:查询单元4013,用于通过服务发现代理,根据服务的调度策略,查询存储在本地缓存中的部署在同一容器主机中的全部服务的配置信息;还用于通过服务发现代理,根据服务的配置信息中的服务名和服务实例号,查询存储在本地缓存中的部署在同一容器主机中的全部服务的配置信息;还用于通过服务发现代理,根据服务配置的服务名和服务IP地址,查询存储在本地缓存中的部署在同一容器主机中的全部服务的配置信息。
在一个实施例中,发送单元4012,用于在向服务注册服务器发送服务心跳请求或容器服务配置请求前,对服务心跳请求或容器服务配置请求进行压缩。
在一个实施例中,参考图7,容器引擎401还可以包括:服务调用单元4014,用于在接收到服务的配置信息后,根据服务配置信息中的通信协议、服务IP地址、服务端口和服务接口信息向容器发送服务调用请求;还用于接收服务调用请求,向容器引擎返回服务调用响应,以便容器引擎完成服务调用。
在一个实施例中,参考图7,服务注册服务器402还包括:注销单元4023,用于基于接收到容器服务的配置信息,对部署在同一容器主机中的全部服务进行注销。
在一个实施例中,信息配置单元4011,还用于提取同一容器主机中的全部服务的服务镜像文件,并提取服务的配置信息。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (24)
1.一种分布式服务的管理方法,其特征在于,包括:
在启动容器时获取与容器绑定的服务的服务配置信息模板,并基于所述服务配置信息模板生成容器服务的配置信息;
所述容器引擎经由服务发现代理向服务注册服务器发送所述容器服务的配置信息;
所述服务注册服务器基于接收到所述容器服务的配置信息,对所述部署在同一容器主机中的全部服务进行注册;
所述容器引擎经由服务发现代理向服务注册服务器发送服务心跳请求,其中所述服务心跳请求包括所述容器服务的配置信息;
所述服务注册服务器基于所接收到的所述服务心跳请求,对所述部署在同一容器主机中的全部服务进行检测。
2.根据权利要求1所述的管理方法,其特征在于,所述服务注册服务器基于所接收到的所述服务心跳请求,对所述部署在同一容器主机中的全部服务进行心跳检测,具体包括:
若所述服务注册服务器接收到所述服务心跳请求,则获取部署在同一容器主机中的全部服务的配置信息,并向所述容器引擎返回服务心跳响应;
若容器引擎未接收到服务心跳,则所述容器引擎删除所述服务配置信息。
3.根据权利要求1所述的管理方法,其特征在于,所述容器引擎经由服务发现代理向服务注册服务器发送所述容器服务的配置信息,具体包括:
所述容器引擎向服务发现代理发送容器服务的配置信息;
所述服务发现代理接收所述容器服务的配置信息,获取部署在同一容器主机中的全部服务的配置信息,并将所述全部服务的配置信息存储在服务发现代理的本地缓存中。
4.根据权利要求1所述的方法,其特征在于,所述服务的配置信息包括:服务名、服务实例号、服务过期时间(Time to Live,TTL)、通信协议、服务接口、服务IP地址和服务端口。
5.根据权利要求4所述的管理方法,其特征在于,所述的管理方法还包括:
当容器引擎查询服务时,服务发现代理查询存储在本地缓存中的部署在同一容器主机中的全部服务的配置信息;
若通过服务发现代理查询到服务的配置信息时,判断查询到的服务的配置信息的当前时间是否超过服务的配置失效时间;
若当前时间没有超过服务的配置失效时间时,服务发现代理向容器管理者返回查询到的服务的配置信息;
若当前时间超过服务的配置失效时间时,服务发现代理删除本地缓存中的超过服务的配置失效时间的服务的配置信息,并向服务注册服务器发送服务查询请求,以便服务注册服务器为容器引擎分配服务的配置信息;其中,所述服务的配置失效时间=服务的配置消息的设置时间+TTL。
6.根据权利要求5所述的管理方法,其特征在于,
若未查询到服务的配置信息时,服务发现代理向服务注册服务器发送服务查询请求;
服务注册服务器接收所述服务查询请求,并通过服务发现代理向容器引擎发送服务的配置信息。
7.根据权利要求6所述的管理方法,其特征在于,通过服务发现代理向管理服务器发送服务的配置信息,具体包括:
服务注册服务器向服务发现代理发送服务的配置信息;
服务发现代理接收服务注册服务器发送的服务的配置信息,并将所述服务的配置信息存储到服务发现代理的本地缓存;
服务发现代理将所述服务的配置信息发送给容器引擎。
8.根据权利要求4所述的管理方法,其特征在于,所述的管理方法还包括:
容器引擎通过服务发现代理的查询接口,根据服务的调度策略,查询存储在本地缓存中的部署在同一容器主机中的全部服务的配置信息;
或者容器引擎通过服务发现代理的查询接口,根据服务的配置信息中的服务名和服务实例号,查询存储在本地缓存中的部署在同一容器主机中的全部服务的配置信息;
或者容器引擎通过服务发现代理的查询接口,根据服务配置的服务名和服务IP地址,查询存储在本地缓存中的部署在同一容器主机中的全部服务的配置信息。
9.根据权利要求1所述的管理方法,其特征在于,所述的管理方法还包括:
在容器引擎通过服务发现代理向服务注册服务器发送服务心跳请求或容器服务配置请求前,对所述服务心跳请求或容器服务配置请求进行压缩。
10.根据权利要求4所述的管理方法,其特征在于,所述的方法还包括:
容器引擎在接收到服务的配置信息后,根据服务配置信息中的通信协议、服务IP地址、服务端口和服务接口信息向容器发送服务调用请求;
容器引擎接收所述服务调用请求,向容器引擎返回服务调用响应,以便容器管理者完成服务调用。
11.根据权利要求1所述的管理方法,其特征在于,所述的方法还包括:
当容器停止服务或暂停服务时,容器引擎根据同一容器主机中的全部服务的服务名生成容器服务的配置信息;
所述容器引擎经由服务发现代理向服务注册服务器发送所述容器服务的配置信息;
所述服务注册服务器基于接收到所述容器服务的配置信息,对所述部署在同一容器主机中的全部服务进行注销。
12.根据权利要求1所述的管理方法,其特征在于,容器引擎获取部署在同一容器主机中的全部服务的配置信息,具体包括:
容器引擎提取同一容器主机中的全部服务的服务镜像文件,并提取服务的配置信息。
13.一种分布式服务的管理系统,其特征在于,包括:容器引擎和服务注册服务器;
其中,容器引擎包括:信息配置单元和发送单元;
信息配置单元,用于在启动容器时获取与容器绑定的服务的服务配置信息模板,并基于所述配置信息模板生成容器服务的配置信息;
发送单元,用于由服务发现代理向服务注册服务器发送所述容器服务的配置信息;还用于经由服务发现代理向服务注册服务器发送服务心跳请求,其中所述服务心跳请求包括所述容器服务的配置信息;
服务注册服务器包括:注册单元和心跳检测单元;
注册单元,用于基于接收到所述容器服务的配置信息,对所述部署在同一容器主机中的全部服务进行注册;
心跳检测单元,用于基于所接收到的所述服务心跳请求,对所述部署在同一容器主机中的全部服务进行检测。
14.根据权利要求13所述的管理系统,其特征在于,心跳检测单元具体用于:
当接收到所述服务心跳请求时;
则获取部署在同一容器主机中的全部服务的配置信息,并向所述容器引擎返回服务心跳响应;
若所述服务注册服务器未接收到所述服务心跳请求时,则删除所述服务配置信息。
15.根据权利要求13所述的管理系统,其特征在于,所述管理系统还包括:服务发现代理;
所述服务发现代理,用于接收所述容器服务的配置信息,获取部署在同一容器主机中的全部服务的配置信息,并将所述全部服务的配置信息存储在服务发现代理的本地缓存中;
所述容器引擎,用于向服务发现代理发送容器服务的配置信息。
16.根据权利要求15所述的管理系统,其特征在于,服务的配置信息包括:服务名、服务实例号、服务过期时间(Time to Live,TTL)、通信协议、服务接口、服务IP地址和服务端口。
17.根据权利要求16所述的管理系统,其特征在于,
服务发现代理,还用于查询存储在本地缓存中的部署在同一容器主机中的全部服务的配置信息;
当容器引擎查询服务时,用于查询存储在本地缓存中的部署在同一容器主机中的全部服务的配置信息;
若通过服务发现代理查询到容器服务的配置信息时,用于判断查询到的服务的配置信息的当前时间是否超过服务的配置失效时间;若当前时间没有超过服务的配置失效时间时,用于向容器管理者返回查询到的服务的配置信息;若当前时间超过服务的配置失效时间时,用于删除本地缓存中的超过服务的配置失效时间的服务的配置信息,并向服务注册服务器发送服务查询请求,以便服务注册服务器为容器引擎分配服务的配置信息;其中,服务的配置失效时间=服务的配置消息的设置时间+TTL。
18.根据权利要求17所述的管理系统,其特征在于,
若未查询到服务的配置信息时,服务发现代理,还用于向服务注册服务器发送服务查询请求;
服务注册服务器还包括:服务配置单元,用于接收所述服务查询请求,并通过服务发现代理向容器引擎发送容器服务的配置信息。
19.根据权利要求18所述的管理系统,其特征在于,
服务配置单元,用于向服务发现代理发送容器服务的配置信息;
服务发现代理,用于接收服务注册服务器发送的容器服务的配置信息,并将所述容器服务的配置信息存储到服务发现代理的本地缓存;用于将所述容器服务的配置信息发送给容器引擎。
20.根据权利要求17所述的管理系统,其特征在于,
容器引擎还包括:查询单元,用于通过服务发现代理,根据服务的调度策略,查询存储在本地缓存中的部署在同一容器主机中的全部服务的配置信息;还用于通过服务发现代理,根据服务的配置信息中的服务名和服务实例号,查询存储在本地缓存中的部署在同一容器主机中的全部服务的配置信息;还用于通过服务发现代理,根据服务配置的服务名和服务IP地址,查询存储在本地缓存中的部署在同一容器主机中的全部服务的配置信息。
21.根据权利要求13所述的管理系统,其特征在于,所述发送单元,用于在向服务注册服务器发送服务心跳请求或容器服务配置请求前,对所述服务心跳请求或容器服务配置请求进行压缩。
22.根据权利要求16所述的管理系统,其特征在于,容器引擎还包括:服务调用单元,用于在接收到服务的配置信息后,根据服务配置信息中的通信协议、服务IP地址、服务端口和服务接口信息向容器发送服务调用请求;还用于接收所述服务调用请求,向容器引擎返回服务调用响应,以便容器引擎完成服务调用。
23.根据权利要求13所述的管理系统,其特征在于,
所述服务注册服务器还包括:注销单元,当容器停止服务或暂停服务时,用于基于根据同一容器主机中的全部服务的服务名生成的容器服务的配置信息,对所述部署在同一容器主机中的全部服务进行注销。
24.根据权利要求13所述的管理系统,其特征在于,所述信息配置单元,提取同一容器主机中的全部服务的服务镜像文件,并提取服务的配置信息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510665434.8A CN106603594B (zh) | 2015-10-15 | 2015-10-15 | 一种分布式服务的管理方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510665434.8A CN106603594B (zh) | 2015-10-15 | 2015-10-15 | 一种分布式服务的管理方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106603594A true CN106603594A (zh) | 2017-04-26 |
CN106603594B CN106603594B (zh) | 2019-07-09 |
Family
ID=58553370
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510665434.8A Active CN106603594B (zh) | 2015-10-15 | 2015-10-15 | 一种分布式服务的管理方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106603594B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107608768A (zh) * | 2017-07-26 | 2018-01-19 | 广州亦云信息技术股份有限公司 | 基于命令行模式的资源访问方法、电子设备及存储介质 |
CN107948249A (zh) * | 2017-11-02 | 2018-04-20 | 华南理工大学 | 基于服务发现和容器技术的大数据平台弹性伸缩方法 |
CN109842637A (zh) * | 2017-11-24 | 2019-06-04 | 武汉斗鱼网络科技有限公司 | 一种分布式服务注册方法及装置 |
CN109857475A (zh) * | 2018-12-27 | 2019-06-07 | 深圳云天励飞技术有限公司 | 一种框架管理的方法及装置 |
CN110502761A (zh) * | 2019-08-27 | 2019-11-26 | 北京金山数字娱乐科技有限公司 | 一种翻译平台及其负载调整方法 |
CN111279320A (zh) * | 2017-09-30 | 2020-06-12 | 甲骨文国际公司 | 实现微服务配置和管理的api储存库 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1942860A (zh) * | 2004-04-29 | 2007-04-04 | 国际商业机器公司 | 在分布式网络体系结构中建模和动态部署服务的系统和方法 |
CN101251796A (zh) * | 2008-03-31 | 2008-08-27 | 中国船舶重工集团公司第七〇九研究所 | 基于依赖注入的分布式构件依赖关系管理方法 |
CN101415001A (zh) * | 2007-10-15 | 2009-04-22 | Sap股份公司 | 使用安全注解的组合应用 |
CN102316163A (zh) * | 2011-09-07 | 2012-01-11 | 山东中创软件工程股份有限公司 | 一种实现Web容器扩展的方法及Web容器 |
CN102323879A (zh) * | 2011-06-07 | 2012-01-18 | 北京大学 | 完整网络中间件运行支撑平台及异构中间件的集成方法 |
CN103401897A (zh) * | 2013-07-15 | 2013-11-20 | 云南电网公司普洱供电局 | 一种分布式服务注册中心构建方法 |
-
2015
- 2015-10-15 CN CN201510665434.8A patent/CN106603594B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1942860A (zh) * | 2004-04-29 | 2007-04-04 | 国际商业机器公司 | 在分布式网络体系结构中建模和动态部署服务的系统和方法 |
CN101415001A (zh) * | 2007-10-15 | 2009-04-22 | Sap股份公司 | 使用安全注解的组合应用 |
CN101251796A (zh) * | 2008-03-31 | 2008-08-27 | 中国船舶重工集团公司第七〇九研究所 | 基于依赖注入的分布式构件依赖关系管理方法 |
CN102323879A (zh) * | 2011-06-07 | 2012-01-18 | 北京大学 | 完整网络中间件运行支撑平台及异构中间件的集成方法 |
CN102316163A (zh) * | 2011-09-07 | 2012-01-11 | 山东中创软件工程股份有限公司 | 一种实现Web容器扩展的方法及Web容器 |
CN103401897A (zh) * | 2013-07-15 | 2013-11-20 | 云南电网公司普洱供电局 | 一种分布式服务注册中心构建方法 |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107608768A (zh) * | 2017-07-26 | 2018-01-19 | 广州亦云信息技术股份有限公司 | 基于命令行模式的资源访问方法、电子设备及存储介质 |
US11132241B2 (en) | 2017-09-30 | 2021-09-28 | Oracle International Corporation | API registry in a container platform for automatically generating client code libraries |
CN111279320A (zh) * | 2017-09-30 | 2020-06-12 | 甲骨文国际公司 | 实现微服务配置和管理的api储存库 |
US11681573B2 (en) | 2017-09-30 | 2023-06-20 | Oracle International Corporation | API registry in a container platform providing property-based API functionality |
US11755393B2 (en) | 2017-09-30 | 2023-09-12 | Oracle International Corporation | API registry in a container platform for automatically generating client code libraries |
CN107948249B (zh) * | 2017-11-02 | 2019-12-10 | 华南理工大学 | 基于服务发现和容器技术的大数据平台弹性伸缩方法 |
CN107948249A (zh) * | 2017-11-02 | 2018-04-20 | 华南理工大学 | 基于服务发现和容器技术的大数据平台弹性伸缩方法 |
CN109842637A (zh) * | 2017-11-24 | 2019-06-04 | 武汉斗鱼网络科技有限公司 | 一种分布式服务注册方法及装置 |
CN109857475A (zh) * | 2018-12-27 | 2019-06-07 | 深圳云天励飞技术有限公司 | 一种框架管理的方法及装置 |
CN109857475B (zh) * | 2018-12-27 | 2020-06-16 | 深圳云天励飞技术有限公司 | 一种框架管理的方法及装置 |
WO2020134549A1 (zh) * | 2018-12-27 | 2020-07-02 | 深圳云天励飞技术有限公司 | 一种框架管理的方法及装置 |
CN110502761A (zh) * | 2019-08-27 | 2019-11-26 | 北京金山数字娱乐科技有限公司 | 一种翻译平台及其负载调整方法 |
CN110502761B (zh) * | 2019-08-27 | 2023-09-19 | 北京金山数字娱乐科技有限公司 | 一种翻译平台及其负载调整方法 |
Also Published As
Publication number | Publication date |
---|---|
CN106603594B (zh) | 2019-07-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106603594A (zh) | 一种分布式服务的管理方法和系统 | |
CN108510389B (zh) | 基于区块链的智能合约调用方法、设备及可读存储介质 | |
CN106528432B (zh) | 测试场景数据的构建方法及装置、埋点测试方法 | |
CN110830463A (zh) | 第三方授权登录方法和装置 | |
CN109862051A (zh) | 一种微服务架构下多租户的实现方法及系统 | |
CN109495559A (zh) | 微服务客户端的服务注册及调用方法、注册及调用系统 | |
CN110417842A (zh) | 用于网关服务器的故障处理方法和装置 | |
CN109491758A (zh) | docker镜像分发方法、系统、数据网关及计算机可读存储介质 | |
EP3086219A1 (en) | Method for providing cloud printing service, and apparatus and system for performing the same | |
US20070165615A1 (en) | Apparatus and method for notifying communication network event in application server capable of supporting open API based on Web services | |
CN112135185B (zh) | 基于nfc技术的投屏方法、装置、设备及存储介质 | |
CN110442610A (zh) | 负载均衡的方法、装置、计算设备以及介质 | |
CN109547512A (zh) | 一种基于NoSQL的分布式Session管理的方法及装置 | |
WO2017041562A1 (zh) | 一种识别终端设备用户身份的方法和装置 | |
CN110048879A (zh) | 微服务注册方法、装置、电子设备和计算机可读存储介质 | |
WO2018014683A1 (zh) | 一种可视通信管理方法及装置 | |
CN109005433B (zh) | 一种视频云服务平台架构及实现方法 | |
CN103532833A (zh) | 一种业务系统访问方法、终端及代理服务系统 | |
CN111651418B (zh) | 一种文档内容下载方法、装置、计算机设备和存储介质 | |
US9128886B2 (en) | Computer implemented method, computer system, electronic interface, mobile computing device and computer readable medium | |
CN105763545B (zh) | 一种byod方法及装置 | |
CN113114503B (zh) | 基于应用交付网络需求的部署方法及装置 | |
CN108876608B (zh) | 一种区块链应用方法及系统 | |
CN110708309A (zh) | 反爬虫系统及方法 | |
CN105897865A (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 |