一种基于分布式资源管理组件DRM的实例更新方法技术

技术编号:24352400 阅读:28 留言:0更新日期:2020-06-03 01:52
本发明专利技术公开的基于分布式资源管理组件DRM的实例更新方法,涉及计算机技术领域,通过采用分布式资源管理组件DRM,只需按照传统Web程序部署,不需要依赖其他组件,即可实现对实例的更新,提高了宿主机器的运行性能。支持配置属性的灰度发布,可以对集群中某一部分实例进行修改并通过对比属性列表,实现对实例的自动更新,提高了更新的灵活性。

An instance update method based on DRM

【技术实现步骤摘要】
一种基于分布式资源管理组件DRM的实例更新方法
本专利技术属于计算机
,具体涉及一种基于分布式资源管理组件DRM的实例更新方法。
技术介绍
在传统的程序设计过程中,一般将关键的属性或配置放在单独的文件中,这样做的好处是当需要更新程序时,只需要修改该文件,然后重启该程序即可。但该方案每次修改都要重启程序,时效性很差。目前采用配置管理平台(例如Apollo、Consul)对集群中的各个实例进行更新,可以实现不用重启实例,修改实时生效的效果。该方案存在以下缺陷:(1)部署、接入文档配置相对繁琐,需要依赖其他组件,影响宿主机器运行性能;(2)有些项目业务很简单,需要修改的只是几个常用开关的状态,但却要部署一套相对复杂的配置中心,灵活性较差。
技术实现思路
针对现有技术存在的缺陷,本专利技术实施例提供了一种基于分布式资源管理组件(DistributedResourceManagement,DRM)的实例更新方法,该方法包括以下步骤:接收DRM客户端发送的第一实例的第一属性列表,对所述第一属性列表进行预处理;判断所述第一实例是否存在第二属性列表,若否,则判断所述第一实例所属的集群是否存在第二实例;若存在第二实例且所述第二实例存在镜像实例,则将所述镜像实例的属性最新状态值写入所述第二实例的属性列表,对所述第二实例进行更新;若不存在第二实例,则确定所述第一实例存在不可复制的属性并将所述属性的状态值写入所述第一实例的属性列表,对所述第一实例进行更新。r>优选地,判断所述第一实例是否存在第二属性列表包括:若存在第二属性列表,则比较所述第一属性列表及所述第二属性列表,根据比较结果,对所述第一实例进行更新。优选地,根据比较结果,对所述第一实例进行更新包括:保存所述第一实例存在且所述第二实例不存在的属性及所述属性的状态值。优选地,根据比较结果,对所述第一实例进行更新包括:删除所述第一实例不存在且所述第二实例存在的属性及所述属性的状态值。优选地,根据比较结果,对所述第一实例进行更新包括:对于所述第一实例及所述第二实例均存在的属性,从所述第二实例中获取所述属性的最新状态值写入所述第一实例的属性列表。本专利技术实施例提供的基于分布式资源管理组件DRM的实例更新方法具有以下有益效果:(1)只需按照传统Web程序部署,不需要依赖其他组件,即可实现对实例的更新,不影响宿主机器运行性能;(2)支持配置属性的灰度发布,可以对集群中某一部分实例进行修改并通过对比属性列表,实现对实例的自动更新,灵活性较高。具体实施方式以下结合具体实施例对本专利技术作具体的介绍。名词解释DRM:基于源生的JAVA管理扩展框架,可实现JAVA运行时程序的动态修改,可做到实时生效、无需重启服务。实例:一台启动着(在DRM上注册过)的服务。集群:多个实例组成的机器组。其中,DRM对实例的管理一般以集群(多实例)方式部署,当一个实例启动时,潜入在其中的DRM客户端开始工作,注册被托管的Java对象、向DRM服务端发送本地默认配置和本机连接信息,当DRM服务端收到DRM客户端发送的配置信息时,根据实例的唯一标识(集群名、实例的IP地址和服务端口)查找该实例的配置信息,并将修改的配置信息传递给远程实例,实现实时推送,为了方便开发,DRM提供了基于注解的配置方式。由于DRM的设计很轻巧,所以DRM只有@ManagedResource和@ManagedAttribute2个注解,其中:@ManagedResource是被DRM管理的类的注解,当一个类文件被此注解修饰时,DRM将在启动时加载该类的对象为一个MBean(MBean是一个托管的Java对象,与JavaBeans组件类似,它遵循JMX规范中提出的设计模式。MBean可以表示设备,应用程序或需要管理的任何资源)。并注册到MBeanServer上,供远程方法调用修改。ManagedResource还有一个属性ObjectNameDesc,它表示被修饰资源在当前服务中的唯一标识(默认值为:默认标识和全类名),一个服务中可存在多个ManagedResource修饰的类文件,但需要确保各个ObjectNameDesc不一致,因为DRM需要依赖该值进行注册和推送修改变化。@ManagedAttribute是DRM管理的实例属性的注解,当一个实例属性被此注解修饰时,DRM将在启动时上报该属性信息到DRM服务端,此时可以在后台页面对该属性进行修改,并通过远程方法调用将修改的属性值传递给该属性的配置方法。可以在配置方法中根据自己的业务需求,自由发挥,例如改变开关的状态、执行一段代码等。ManagedAttribute也有一个属性InitEnable,它表示服务在重启时是否接收DRM服务端推送过来的属性状态值(默认为接收)。DRM客户端的设计原则是尽可能的体积轻量化,配置简单化。只有这样才能减少给服务端代理的性能压力,同时也能降低服务端代理的复杂度。DRM服务端是一个web程序,主要负责处理DRM客户端的请求和管理后台操作请求、负责管理集群的配置,推动已经改动的配置信息到client端,并作持久化处理,监控集群推动指标,有异常时,记录并发送给联系人,通常以多实例部署,防止单点问题。当一个集群第一次连接DRM服务端时,DRM会将集群实例上报的属性列表存储到数据库中,以供DRM管理页面展示和修改操作。登陆DRM管理后台,修改实例的属性并发布,DRM服务端通过远程方法调用协议将新的属性值传递给远程服务端,即时生效,并更改数据库中的对应的属性值为最新值。远程方法调用连接信息由DRM客户端启动时上报而来,当实例重新启动时,DRM服务端接收到上报请求后,从数据库中读取属性列表,检测到之前修改过的属性列表并将该属性类别对应的最新值推送给远程实例,这样实例启动后的属性值就和后台配置的一致。当某个属性值或实例推送连接出现异常(超时或失败)时,DRM管理端将给后台配置的集群联系人发送报警短信,确保及时修复问题。当一个集群增加实例节点时,新增加的实例节点第一次连接DRM服务端时,DRM服务端未从数据库中找到对应的集群实例节点信息,根据DRM客户端的配置参数,是否需要启动自动赋值操作(随机获取数据库中同集群下的一个实例的属性配置信息推送给新增加的节点)。当一个实例服务启动时,嵌入在其中的DRM客户端开始工作,注册被托管的Java对象、向DRM服务端发送本地默认配置和本机连接信息。其中,为了实现对数据安全的严格把控,DRM管理端对用户的授权机制为:将用户共有普通用户、管理员、超级管理员3种角色,其中:普通用户只能看到和操作自己被授权的集群信息;管理员和超级管理员可看到和操作所有集群;管理员可对普通用户进行集群授权或对其个人信息进行修改(删除用户、修改密码等);超级管理员可以任命普通用户为管理员本文档来自技高网...

【技术保护点】
1.一种基于分布式资源管理组件DRM的实例更新方法,其特征在于,包括:/n接收DRM客户端发送的第一实例的第一属性列表,对所述第一属性列表进行预处理;/n判断所述第一实例是否存在第二属性列表,若否,则判断所述第一实例所属的集群是否存在第二实例;/n若存在第二实例且所述第二实例存在镜像实例,则将所述镜像实例的属性最新状态值写入所述第二实例的属性列表,对所述第二实例进行更新;/n若不存在第二实例,则确定所述第一实例存在不可复制的属性并将所述属性的状态值写入所述第一实例的属性列表,对所述第一实例进行更新。/n

【技术特征摘要】
1.一种基于分布式资源管理组件DRM的实例更新方法,其特征在于,包括:
接收DRM客户端发送的第一实例的第一属性列表,对所述第一属性列表进行预处理;
判断所述第一实例是否存在第二属性列表,若否,则判断所述第一实例所属的集群是否存在第二实例;
若存在第二实例且所述第二实例存在镜像实例,则将所述镜像实例的属性最新状态值写入所述第二实例的属性列表,对所述第二实例进行更新;
若不存在第二实例,则确定所述第一实例存在不可复制的属性并将所述属性的状态值写入所述第一实例的属性列表,对所述第一实例进行更新。


2.根据权利要求1所述的实例更新方法,其特征在于,判断所述第一实例是否存在第二属性列表包括:
若存在第二属性列表,则比较所述第一属性列表及所述第二属性列表,根据比较结果,对所述第一实例进行更新。


3....

【专利技术属性】
技术研发人员:邵祥飞常向阳
申请(专利权)人:首约科技北京有限公司
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1