发明内容
有鉴于此,本发明的主要目的在于提供一种组件管理系统及方法,能够提高组件应用系统的扩展性,且能够方便、快速地更新组件。
为达到上述目的,本发明的技术方案是这样实现的:
一种组件管理系统,包括:服务中心、管理中心和发布中心,其中,
所述服务中心,用于对组件进行注册,以及在组件注册成功后,通知管理中心;以及存储相关服务信息;
所述管理中心,用于在收到服务中心发送的注册成功通知后,激活组件服务,并通知发布中心服务已激活;以及对服务中心的服务的状态进行管理;
所述发布中心,用于根据管理中心的服务已激活的通知,向服务应用端发布所述已激活的服务;以及在收到服务应用端的服务调用请求且服务中心存在服务应用端需要调用的服务时,对服务进行协议封装并发送给服务应用端。
该系统还包括监控中心,用于通过与服务中心、管理中心及发布中心交互,对服务的状态、调用及被调用情况进行监控。
所述服务中心,还用于接收组件注册请求,以及在根据组件注册请求判断需要注册组件的相关服务不存在,且所述需要注册的组件合法时,注册组件。
所述管理中心,还用于通知服务中心需要进行服务激活;
所述服务中心,还用于判断需要激活的服务是否为远程服务,以及需要激活的服务是远程服务时,通知远程调用生成代理对象实例,并修改所述需要激活的服务的状态为激活状态;或者在需要激活的服务不是远程服务时,生成本地对象实例,并修改所述需要激活的服务的状态为激活状态。
所述管理中心,还用于判断是否有服务引用需要钝化的服务,以及在有服务引用需要钝化的服务时进一步判断引用此需要钝化的服务的服务是否为激活状态,并在没有服务引用需要钝化的服务,或者有服务引用需要钝化的服务且引用此需要钝化的服务的服务不是激活状态时,通知服务中心修改所述需要钝化的服务的状态为钝化。
所述管理中心,还用于判断需要注销的服务是否为激活状态,以及在有服务引用所述需要注销的服务时进一步判断引用所述需要注销的服务的服务是否为激活状态,并在所述需要注销的服务不为激活状态,或者引用所述需要注销的服务的服务不为激活状态时,通知服务中心删除所述需要注销的服务的相关实例。
一种组件管理方法,包括:
服务中心对组件进行注册,并在组件注册成功后,通知管理中心;
管理中心激活组件服务,并通知发布中心;
发布中心向服务应用端发布所述已激活的服务;
发布中心收到服务应用端的服务调用请求且服务中心存在服务应用端需要调用的服务时,对服务进行协议封装并发送给服务应用端。
该方法还包括:监控中心通过与服务中心、管理中心及发布中心交互,对服务的状态、调用及被调用情况进行监控。
所述服务中心对组件进行注册具体包括:
服务中心接收组件注册请求;
服务中心根据组件注册请求判断需要注册组件相关的服务不存在,且所述需要注册的组件合法,则注册组件。
所述管理中心激活组件服务具体包括:
管理中心通知服务中心需要进行服务激活;服务中心判断需要激活的服务是远程服务,则通知远程调用生成代理对象实例,并修改所述需要激活的服务的状态为激活状态;服务中心判断需要激活的服务不是远程服务,则生成本地对象实例,并修改所述需要激活的服务的状态为激活状态。
该方法还包括对服务进行钝化,具体为:
需要进行服务钝化时,管理中心判断没有服务引用需要钝化的服务,或者有服务引用需要钝化的服务且引用此需要钝化的服务的服务不是激活状态,则通知服务中心修改所述需要钝化的服务的状态为钝化。
该方法还包括对服务进行注销,具体为:
需要进行服务注销时,管理中心判断所述需要注销的服务不为激活状态,或者引用所述需要注销的服务的服务不为激活状态,则通知服务中心删除所述需要注销的服务的相关实例。
本发明组件管理系统及方法,组件管理系统具体包括服务中心、管理中心、监控中心和发布中心。系统中的每个组件都可以独立部署、拆卸和维护,组件服务的生命周期分为注册、激活、钝化和注销四个状态,四个状态之间可以按照一定规则进行转化。由于本发明中由发布中心负责统一的服务对外机能,可以适应不同的服务应用端访问请求对服务进行协议封装,所以,能够提高组件应用系统的扩展性;另外,由于本发明对组件的状态进行区分,注册及钝化状态下的组件不能被调用,从而不需要重新启动应用服务器便可实现对组件的更新,即本发明能够方便、快速地更新组件。
具体实施方式
本发明的基本思想是:组件管理系统具体包括服务中心、管理中心、监控中心和发布中心。系统中的每个组件都可以独立部署、拆卸和维护,组件服务的生命周期分为注册、激活、钝化和注销四个状态,四个状态之间可以按照一定规则进行转化。
下面结合附图对技术方案的实施作进一步的详细描述。
图1为本发明组件管理系统结构示意图,如图1所示,本发明组件管理系统包括:服务中心11、管理中心12、发布中心13和监控中心14,其中,
服务中心11,用于对组件进行注册,以及在组件注册成功后,通知管理中心12。
具体的,所有的组件都需要向服务中心11注册,服务中心11统一管理组件服务,可以通过远程过程调用(RPC)或者消息机制与其他单元进行通讯。服务中心11存储相关服务信息,即本地服务元数据对象和服务实例,还可以使用JINI技术提供服务查询功能。
管理中心12,用于在收到服务中心11注册成功通知后,激活组件服务,并通知发布中心13服务已激活;以及对服务中心11的服务的状态进行管理。
具体的,管理中心12激活服务即为安装服务,服务安装时,必须先在服务中心11注册,然后由管理中心12加载组件物理文件,并创建组件实例。
管理中心12还可以用于执行组件升级及服务卸载,组件升级时,管理中心12会先停止组件运行,替换组件物理文件后,启动组件重新生成组件实例;而组件卸载时,管理中心12通知服务中心11删除该组件实例,以及修改组件状态。
组件服务生命周期的状态转变,全部由管理中心12完成。组件状态灵活转变,保证了组件的安装、卸载、升级和热部署、热替换特性。
发布中心13,用于根据管理中心12的服务已激活的通知,向服务应用端发布所述已激活的服务;以及在收到服务应用端的服务调用请求且服务中心11存在服务应用端需要调用的服务时,对服务进行协议封装并发送给服务应用端;
即发布中心13提供统一的服务对外机能,其管理所有激活的服务实例句柄,以及对服务进行协议封装,以适应不同的服务应用端访问请求。
服务应用端调用服务时,向发布中心13发出调用请求,发布中心13通过查询服务中心11判断该服务存在,则服务会顺利被调用,发布中心的协议封装机制,可以保证不同的服务协议调用,从而保证分布式组件模型的可能。
监控中心14,用于通过与服务中心11、管理中心12及发布中心13的交互,对服务的状态、调用及被调用情况等进行监控。
本发明中,组件一般由组件实体包、组件描述文件、组件服务清单三部分组成。其中,组件实体包以jar的形式存在;组件描述文件以XML形式存在,其主要描述组件的依赖关系、组件的功能和该组件能够提供的服务。组件在服务中心注册时,服务中心会检测该组件描述文件的合法性;组件服务清单主要描述组件对外暴露的服务详细信息,服务以接口的形式存在,所以,组件服务清单提供了一份详细的接口列表。
本发明中,组件服务的生命周期分为四个状态:注册、激活、钝化和注销。下面对这四种状态进行详细说明:
注册:系统的每一个组件都需要在服务中心注册。组件注册时,系统首先登记组件的描述文件,检查该组件描述信息是否合法,以及检测该组件是否已经注册。对于已经存在的组件,服务中心不再加载该组件。如果组件未注册且合法,则服务中心会登记该组件的相关信息,记录组件对外提供的接口信息和组件依赖信息,与组件相关的服务的状态为“注册”。注册状态的服务,不能被调用,只能激活以后,才能被发布中心发布,供服务调用端调用。
激活:注册后的组件,其相应的服务必须激活以后才能正常运行。服务一旦激活,系统会监控其运行状况,用户还可以查询服务的状态。服务激活时,会判断该服务调用是远程调用还是本地调用,如果是远程调用,则通知服务应用端在远程生成一个服务代理实例;如果是本地调用,则生成一个本地对象实例。
钝化:在特殊的条件下,如需要更新组件或服务长时间没有被调用等情况,服务由激活状态转换成钝化状体。钝化状态的服务不能够被调用,钝化后的服务的实例仍存在,但是不能够被继续调用,只有转换成激活状态后,才能被调用。当然,在人为注销、长时间未被调用等情况下,钝化状态的组件还可以转换成注销状态。
注销:服务注销后不能被使用,本发明中只能注销非激活状态的服务。服务注销指删除服务中心的相关注册信息,同时删除远程代理实例或者本地实例。注销后的服务,如果还需要被使用,则需要重新注册和激活。
根据上述描述,注册状态的组件,只是在服务中心进行了组件的基本信息登记,这个状态的组件,其相关的服务是不能被调用的;激活状态的服务,已经在产生了本地对象实例或者在远端服务代理对象实例,只有激活状态的服务才能够被调用;钝化状态的服务,其激活时创建的实例全部重置,这个状态的服务也是不能被调用的;注销状态的服务,其创建的对象实例被资源回收,而服务被注销以后,是不可再恢复的。
需要说明的是,在特定的条件下,服务的状态可以互相转换,图2为本发明服务状态转换示意图,如图2所示,本发明服务的四种状态之间的转换包括如下五种情况:
第一种情况:从注册状态转换为激活状态(Active),这种情况下,注册中心加载组件描述文件、组件服务清单文件和组件实体包,生成本地对象实例或者生成远程服务代理实例,即完成服务从注册状态到激活状态的转换。
第二种情况:从激活状态转换为注册状态(DeActive),这种情况下,组件管理系统卸载服务的实例,但是保留组件的描述信息和组件提供的服务信息。
第三种情况:从激活状态转换为钝化状态(Passvied),这种情况下,服务的实例释放,其他组件不能调用所述服务。
第四种情况:从钝化状态转换为激活状态(Active),这种情况下,服务重新实例化,其他服务可以继续调用所述服务。
第五种情况:从钝化状态转换为注销状态(Delete),这种情况下,组件管理系统清除服务的对象实例,并从服务中心清除该服务的相关注册信息。
需要说明的是,服务中心11,还用于接收组件注册请求,以及在根据组件注册请求判断需要注册组件的相关服务不存在,且所述需要注册的组件合法时,注册组件。
管理中心12,还用于通知服务中心11需要进行服务激活;
服务中心11,还用于判断需要激活的服务是否为远程服务,以及需要激活的服务是远程服务时,通知远程调用生成代理对象实例,并修改所述需要激活的服务的状态为激活状态;或者在需要激活的服务不是远程服务时,生成本地对象实例,并修改所述需要激活的服务的状态为激活状态。
管理中心12,还用于判断是否有服务引用需要钝化的服务,以及在有服务引用需要钝化的服务时进一步判断引用此需要钝化的服务的服务是否为激活状态,并在没有服务引用需要钝化的服务,或者有服务引用需要钝化的服务且引用此需要钝化的服务的服务不是激活状态时,通知服务中心11修改所述需要钝化的服务的状态为钝化。
管理中心12,还用于判断需要注销的服务是否为激活状态,以及在有服务引用所述需要注销的服务时进一步判断引用所述需要注销的服务的服务是否为激活状态,并在所述需要注销的服务不为激活状态,或者引用所述需要注销的服务的服务不为激活状态时,通知服务中心11删除所述需要注销的服务的相关实例。
另外,服务调用端一般包括:
服务接收单元,用于统一接收来自服务端的服务调用;
服务解析单元,用于对接收到的数据,进行统一的解析。屏蔽业务直接调用服务端服务。
服务代理单元,在分布式调用时,远程服务会在本地生成一个服务代理的对象实例。服务代理负责生成本地服务所引用服务的Proxy对象。
服务监控单元,用于监控本地服务调用情况。
图3为本发明组件管理方法流程示意图,如图3所示,本发明组件管理方法一般包括:
步骤31:服务中心对组件进行注册,并在组件注册成功后,通知管理中心。
图4为本发明一种组件注册流程示意图,如图4所示,本发明组件注册一般包括以下步骤:
步骤311:服务中心接收组件注册请求。
组件注册请求一般由组件提供端发起,所述组件注册请求携带组件描述文件。
步骤312:服务中心根据组件注册请求判断该组件相关的服务是否已经存在,如果存在,则不能注册,流程结束;如果不存在,执行步骤313。
服务中心根据组件注册请求携带的组件描述文件判断该组件相关的服务是否已经存在。
步骤313:服务中心判断该组件是否合法,如果是,执行步骤314;否则,不能注册,流程结束。
判断组件是否合法一般指根据组件注册请求携带的组件描述文件判断需要注册的组件的格式是否正确以及内容是否完整。
步骤314:服务中心注册组件。
服务中心注册组件包括:服务中心根据组件服务清单形成服务列表供服务查询和调用,以及加载组件实体包。
步骤315:组件注册成功,服务中心记录与所述组件相关的服务的状态。
步骤32:管理中心激活组件服务,并通知发布中心。
图5为本发明一种服务激活流程示意图,如图5所示,本发明服务激活流程一般包括以下步骤:
步骤321:管理中心通知服务中心需要进行服务激活。
需要进行服务激活的情况有多种,例如,当服务应用端需要调用的服务未激活时、系统管理员人为发起激活指令时等,具体可以根据实际需要进行设置。
步骤322:服务中心判断需要激活的服务是否是远程服务,如果是远程服务,执行步骤323;如果不是远程服务,执行步骤324。
步骤323:服务中心针对远程调用,通知远程调用生成代理对象实例,转到步骤325。
步骤324:服务中心生成本地对象实例。
步骤325:服务中心修改所述需要激活的服务的状态为激活状态,服务激活成功。
步骤33:发布中心向服务应用端发布所述已激活的服务。
步骤34:发布中心向服务应用端提供其需要调用的服务。
具体的,发布中心收到服务应用端的服务调用请求后,如果服务中心存在服务应用端需要调用的服务,则对所述服务进行协议封装并发送给服务应用端。
另外,本发明还可以实现服务的钝化及注销操作,图6为本发明一种服务钝化流程示意图,如图6所示,本发明服务钝化流程一般包括以下步骤:
步骤601:需要进行服务钝化时,管理中心判断是否有服务引用需要钝化的服务,如果是,执行步骤602;否则,转到步骤603。
这里,需要进行服务钝化的情况有多种,例如服务在设置的一段时长内没有被调用、系统管理员人为发起钝化指令等,具体可以根据实际需要设置。
管理中心需要通过向服务中心进行查询,以判断是否有服务引用此需要钝化的服务。
步骤602:管理中心判断引用此需要钝化的服务的服务是否是激活状态,如果是激活状态,则不能钝化,流程结束;如果不是激活状态,则执行步骤603。
这里,管理中心也需要通过向服务中心进行查询,以判断引用此需要钝化的服务的服务是否是激活状态。
步骤603:管理中心通知服务中心修改所述需要钝化的服务的状态为钝化,钝化完毕。
图7为本发明一种服务注销流程示意图,如图7所示,本发明服务注销流程一般包括以下步骤:
步骤701:需要进行服务注销时,管理中心判断需要注销的服务是否处于激活状态,如果是,则不能注销,流程结束;否则,执行步骤702。
这里,需要进行服务注销的情况有多种,例如服务在设置的一段时长内没有被调用、系统管理员人为发起注销指令等,具体可以根据实际需要设置。
步骤702:管理中心判断是否有服务引用此需要注销的服务,如果是,执行步骤703;否则,转到步骤704。
这里,管理中心需要通过向服务中心进行查询,以判断是否有服务引用此需要注销的服务。
步骤703:管理中心判断引用此需要注销的服务的服务是否是激活状态,如果是激活状态,则不能注销,流程结束;如果不是激活状态,则执行步骤704。
这里,管理中心也需要通过向服务中心进行查询,以判断引用此需要注销的服务的服务是否是激活状态。
步骤704:管理中心通知服务中心删除所述需要注销的服务的相关实例,注销完毕。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。