本发明属于分布式服务领域,具体涉及一种基于元数据的服务发布与监管系统及方法。
背景技术:
在互联网企业,由于业务发展迅速、需求变化快等因素,需要应用能快速的实现业务以及响应需求的变化,所以分布式服务得到了广泛的应用。使用分布式服务可以带来如下三个好处:
其一,独立高负载模块:将负载高的模块独立成一个服务,部署到独立的机器上,使高负载模块独享硬件资源,也避免高负载模块影响其它模块的正常使用。例如:产品模块可能是个访问量很大的模块,可以将其以服务的方式发布,其它模块调用其服务来实现登陆的功能。
其二,方便系统容量的伸缩:当服务访问量增加时,独立的服务可通过简单的增加硬件的方式进行容量的扩充。而当服务访问量降低后,多余的服务可以停止,可节约硬件的使用。例如:上面的产品模块,当访问量增加后,可以直接增加产品服务来进行扩容,访问量降低后,多余的服务可进行停止,硬件回收。
其三,利于功能模块的复用:对于多个系统需要公用的功能模块,可以独立成独立服务,降低代码的重复。例如:多个系统都有登陆模块,可以将其独立为服务的形式发布,避免登陆模块代码的重复。
目前服务发现与服务注册主要通过服务端主动推送来实现,但此种方式对服务监控缺乏有效监管。例如:
某服务应用初次部署,向注册中心注册了3个服务,a、b、c
服务升级后,向注册中心注册了两个服务,a、c
此时b服务未注册到注册中心。由于一般注册中心并不会保存前一次的服务信息,故此时无法判断,没有注册的服务b是由于废弃后人为删除,还是服务本身注册失败。且如果服务b是注册失败,因为一般服务会发布多个节点,只要有一个节点发布成功,那么如果没有人为的去确认服务是否注册成功,可能很久都无法发现服务b注册失败。
另一方面,一般服务会发布多台机器,传统发布模式需要登录每台需要发布服务的机器进行服务的发布操作,费时费力。
如何降低服务发布过程中的时间和人力损耗,以及突破传统服务监管的局限性,对服务能够实时的监控与报警,能够极大的避免服务发布过程中的问题,提高服务发布问题的发现效率,是一件非常重要和有意义的工作。
技术实现要素:
为解决现有技术存在的局限性,本发明提出一种基于元数据管理系统的服务发布及监管方法及系统,通过对服务数据实施元数据化管理,包括服务的元数据化和服务集的元数据化,并结合对元数据管理系统的应用,以元数据的形式统一管理服务的发布和监控,减少传统分布式服务发布过程中人为控制每台服务器的发布,同时拓展分布式服务监控范围。本发明旨在通过对元数据的维护,提高服务的发布效率以及实现对服务的监管功能,提高服务发布过程中问题的发现效率。
本发明的技术方案是:一种基于元数据管理系统的服务发布及监控系统,其特征是包括客户端、管理中心、服务节点、监管系统四子系统:
所述客户端是服务的调用端,表现为有服务调用需求的应用程序;
所述服务节点以服务器的“ip地址和端口号”作为身份识别,是包含容器的服务应用,用于将服务发布至注册中心;其中,所述容器是部署服务集的组件,用于加载服务集的内容;所述服务集,是业务服务的集合,是业务服务在容器内部署的最小单位;每一次新服务发布前,服务节点要从服务集仓库中下载欲发布的服务集,获取服务集配置信息;服务集由服务集仓库统一管理,服务集仓库提供服务集的上传、下载及版本管理;
所有服务节点内的服务发布与否全由管理中心统一管理;
所述管理中心,即元数据管理系统,包含注册中心和web应用端,通过存储服务元数据和服务集元数据,管理服务集的下载、服务集内服务的发布及服务发布后的监控管理;其中,所述服务元数据包括:服务名称、服务版本号;所述服务集元数据包括:服务集名称、服务集所在的容器的id及容器所在的服务节点;用于管理服务节点、服务集及服务的元数据信息;所述注册中心:用于接收从服务节点发来的服务注册信息;在将服务注册信息持久化后,推送服务信息至有相应服务调用需求的客户端;
所述web应用端面向服务管理者用于以可视化的方式管理服务节点、服务集及服务等信息,包括服务集定义、服务集发布到指定服务节点、查看服务节点信息、查看服务集信息、查看服务信息、对服务进行启停操作、对服务集进行启停操作、设置监管服务、设置服务负载、设置服务权重、设置服务执行队列的操作;
所述监管系统,通过监测管理中心和服务节点内的服务集元数据,实施服务发布过程中的监控;当出现问题,由监管系统控制向负责人发送邮件和短信。
所述管理中心中的注册中心,用于接收从服务节点发来的服务注册信息,并将推送服务信息至有相应服务调用需求的客户端;所述管理中心中的web应用端面向服务管理者用于以可视化的方式管理服务节点、服务集及服务等信息,包括服务集定义、服务集发布到指定服务节点、查看服务节点信息、查看服务集信息、查看服务信息、对服务进行启停操作、对服务集进行启停操作、设置监管服务、设置服务负载、设置服务权重、设置服务执行队列的操作;
基于元数据管理系统的服务发布及监控系统的监控方法,其特征是,通过对服务数据实施元数据化管理,包括服务元数据管理和服务集元数据管理,并结合对元数据管理系统的应用,以元数据的形式统一管理服务的发布和监控,减少传统分布式服务发布过程中人为控制每台服务器的发布,同时拓展分布式服务监控范围,具体步骤包括:
步骤1:注册中心启动,根据注册中心内持久化的服务集信息和服务调用信息,一方面自动检查启动前是否有服务节点连接到自身;如果有,则恢复和该服务节点的连接,重新创建心跳连接;另一方面自动检查是否有客户端连接到自身,如果有,则恢复和该客户端的连接,重新创建心跳连接;如果有客户端连接到注册中心,则恢复和该客户端的连接,重新创建心跳连接;
步骤2:服务节点启动,检查是否有需要发布的服务集;如果有,启动容器加载当前需要发布的服务集,将服务集中的服务内容组装为注册消息推送给注册中心,其中,所述注册消息包括服务名称、版本号、所在的服务节点(ip+port)及所在的容器(id)。
步骤3:通过管理中心的web应用端控制执行新服务集的定义及服务发布;全权由管理中心的web应用端控制执行,具体为:当有新的服务内容需要发布时,管理中心的web应用端根据服务内容,在服务集仓库中定义新的服务集装载服务内容,包括定义服务集名称、服务节点的ip地址和端口号;控制新服务集从服务集仓库下载,并发送至指定的服务节点;接下来,当服务节点接收到web应用端指定发布的服务集信息时,启动容器加载服务内容,并执行新服务集的注册和对外发布;
步骤4:当注册中心接收到服务节点发送的服务注册信息时,完成服务在注册中心的注册;当服务注册成功后,通过管理中心的web应用端,服务管理者不仅能查看注册中心内的服务注册信息;也能控制将已注册的服务信息推送至客户端,同时执行包括流量管理、超时管理、权重管理、服务监控在内的多元化服务管理;
步骤5:服务首次注册到注册中心后,根据需要对新服务配置监管;具体为:当需要对某一已发布服务的服务提供过程进行监控时,服务管理者通过管理中心的web端设置监控与否,注册中心记录监控内容,包括监控服务的服务名称、服务版本号、服务集名称、容器id及服务节点(ip+port);
步骤6:当服务节点升级或重启后,相应地,服务节点需重新将内部服务集中的服务注册信息发送至注册中心,执行服务的再注册;其中,所述注册消息包括服务名称、版本号、所在的服务节点(ip+port)及所在的容器(id);
步骤7:注册中心接收到由服务节点发送的服务信息,针对已配置监控的服务,通过对比“发送的服务信息”和“已记录的监控内容”,判断服务再注册是否成功;若经过比对,“发送的服务信息”和“已持久化的服务信息”不一致,记录“服务注册失败”;
步骤8:监控系统实时监测注册中心的比对记录,针对“注册失败”的服务,根据该服务的监控内容,获取服务名称及服务所在的容器和服务节点,并组织监控提醒内容,以邮件和短信的方式通知相关人员,使相关人员实时掌握服务发布情况,并准确定位服务发布失败的位置。
本发明与其他技术方案相比较,有益效果:
(1)本发明系统通过在注册中心端配置web应用端,形成基于元数据管理系统的服务元数据及服务集元数据的管理和维护,进一步实现以元数据的形式统一管理服务的发布,降低服务发布所耗费的时间及人力,提高服务发布效率;
(2)本发明通过构建服务元数据和服务集元数据,协助服务管理者在服务发布过程中精准定位到某一具体服务和服务提供端地址;针对有监控需求的服务,同时记录服务元数据和服务集元数据,确保服务在升降级、重启等操作后,实时监测服务发布是否成功,解决传统服务化框架对服务无监管的问题。
附图说明
图1为本发明实施例中基于元数据管理系统的服务发布及监控系统结构图;
图2为本发明实施例中一种基于元数据管理系统的服务管理系统架构图;
图3为本发明实施例中服务发布、注册及推送过程示意图;
图4为本发明是实施例中服务监管流程示意图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面结合附图和具体实施例对本发明进行详细描述。
图1为本发明实施例中基于元数据管理系统的服务发布及监控系统结构图,具体包括客户端client101、服务节点servicenode102、管理中心103、监管系统104;其中,按照客户端101的服务需求,管理中心103控制服务节点102上的服务发布及服务注册,配置监控系统104的监管对象;
所述客户端client101是服务调用端,在本发明实施例中表现为有服务调用需求的业务系统应用;
所述服务节点servicenode102以“ip地址和端口号”作为身份识别,是包含容器的服务应用;服务节点上的服务发布与注册与否全由管理中心统一管理;其中,所述容器是部署服务集的组件,用于加载服务集的内容;所述服务集是业务服务的集合;每一次新服务发布前,服务节点要从服务集仓库中下载相应的服务集,获取服务集配置信息;;
所述管理中心103,即元数据管理系统,包含注册中心103-1和web应用端webapp103-2,通过存储服务元数据和服务集元数据,管理服务集的下载、服务集内服务的发布及服务发布后的监控管理;其中,所述服务元数据包括:服务名称、服务版本号;所述服务集元数据包括:服务集名称、服务集所在的容器的id及容器所在的服务节点;
所述注册中心103-1:用于接收从服务节点发来的服务注册信息,并将推送服务信息至有相应服务调用需求的客户端;
所述webapp103-2103-2面向服务管理者用于以可视化的方式管理服务节点、服务集及服务等信息,包括服务集定义、服务集发布到指定服务节点、查看服务节点信息、查看服务集信息、查看服务信息、对服务进行启停操作、对服务集进行启停操作、设置监管服务、设置服务负载、设置服务权重、设置服务执行队列的操作;
所述监管系统104,通过监测管理中心和服务节点内的服务元数据、服务集元数据,实施服务发布过程中的监控;当出现问题,由监管系统控制向负责人发送邮件和短信。
图2为本发明实施例中一种基于元数据管理系统的服务管理系统架构图,注册中心中包含服务监控模块、服务管理模块及元数据存储模块,服务管理者通过web应用端界面,以可视化的方式,通过注册中心的服务管理模块管理注册中心中存储的服务元数据和服务集元数据;其中,元数据存储模块用于持久化已完成服务注册的服务元数据和服务集元数据,服务监控模块记录有服务监管需求的服务元数据和服务集元数据;
当有新服务发布需求时,服务管理者直接通过管理中心的web应用端控制服务的发布进程,无需再登录每台有服务发布需求的机器上执行参阅图3为本发明实施例中服务发布、注册及推送过程示意图;
步骤301:服务管理者通过管理中心的web应用界面定义服务集的名称及服务集的服务内容;步骤302:服务管理者在管理中心的web应用界面操作步骤1中已定义的服务集在指定服务节点上的发布,即管理中心向指定服务节点发送服务发布信息,包括服务名称、服务版本号、服务集名称;
步骤303:服务节点接收到由管理中心发送的服务发布消息,根据服务发布信息,从服务集仓库中下载对应的服务集至服务节点中;
步骤304:服务节点创建并启动容器,由容器加载服务集中的服务内容,同时启动服务集中的服务;
步骤305:服务节点将步骤304中启动的服务,注册到注册中心,即将服务的注册信息发送至注册中心,包括服务名称、版本号、所在的服务节点(ip+port)及所在的容器(id);步骤306:注册中心接收到服务节点注册过来的服务信息,对服务注册信息进行持久化;此时,服务管理者能通过web应用端查阅已注册服务的服务信息;
步骤307:当注册中心收到由客户端发来时服务调用请求,注册中心将持久化至本地的服务信息推送给有服务调用需求的客户端;
步骤308:客户端接收到推送过来的服务信息,更新本地的服务信息缓存;
在服务首次注册到注册中心后,服务管理人员通过管理中心的web应用端配置服务监管,参阅图4为本发明是实施例中服务监管流程示意图,具体步骤有:
步骤401:当某一个服务完成在注册中心的首次注册后,服务管理者能通过管理中心的web应用端查看该服务的注册信息;针对有监管需求的服务,记录该服服务的名称、版本号及所在服务集;
步骤402:当服务节点重启或重新发布服务时,服务节点将对其内部所有服务集中服务进行在注册中心的重新注册,即服务节点需要重新发送服务注册消息至注册中心,注册消息包括服务名称、版本号、所在的服务节点(ip+port)及所在的容器(id)。
步骤403:注册中心接收到服务节点注册过来的服务信息,以服务集作为划分依据,将服务注册消息与步骤401中的监控记录进行内容比对;如果内容一致,则说明服务再注册成功;如果内容不一致,转步骤404;
步骤404:记录服务注册失败的“服务信息”;监管系统实时监测注册中心中存储的失败记录;
步骤405:监管系统实时监测注册中心的失败记录;针对监测到的失败记录,基于记录中包含的服务名称、版本号及所在服务集信息,组织监测提醒内容,以邮件和短信的方式通知相关人员,使相关人员实时掌握服务发布情况,并准确定位服务发布失败的位置;
所属领域的普通技术人员应当理解:以上所述仅为本发明的具体实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。