用于操作资源对象的方法及装置、电子设备与流程

专利检索2024-12-25  33


本发明涉及分布式,具体而言,涉及一种用于操作资源对象的方法及装置、电子设备。


背景技术:

1、分布式系统是一种建立在网络通信之上的软件系统,该系统中存在着一个以全局方式管理所有资源的控制器,以及多个运行具体工作任务的终端。由于控制器功能多、业务复杂,所以会将控制器中的软件架构设计为微服务架构,而由于java语言(即一种面向对象编程语言)和golang语言(即一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言)的生态特性,适合用于在控制器中分别实现一个独立微服务进程,从而通过多个微服务的组合能够实现控制器的全部功能。由于终端上的程序对性能、资源使用量要求高,所以通常使用c++(即一种面向对象的计算机程序设计语言)/golang等具有高性能特性的编程语言进行实现。因此,由于分布式系统中存在多种语言实现的业务进程,被称作异构语言的系统(即分布式异构系统)。

2、在如上的分布式异构系统中,终端上进程进行启动时需要从控制器获取配置数据,而随着业务的发展,系统中的配置数据也会发生修改,终端需要实时地从控制器中感知发生变化的配置数据。而kube-apiserver是kubernetes(简称k8s)中的核心组件之一,能够提供优秀的配制监听感知能力,通过聚合apiserver(即,接口服务器)扩展其功能,适合在基于k8s的分布式系统中进行配置共享。但是,apiserver的服务端和客户端(称作client-go)都使用golang语言进行开发,虽然具有高性能和易用性,但是无法方便地扩展到其他语言中,如java/c++中。

3、相关技术中的kube-apiserver提供的多种客户端能够方便地操作k8s中现有的各种资源对象,但是在实际使用中,现有资源并不满足需求,需要用聚合apiserver的方式去扩展apiserver的功能,增加自定义的配置对象。因此,直接使用相关技术中的kube-apisrver具有如下问题:(1)client-go/client-java/client-c只能访问kube-apiserver自带的标准资源,不能访问扩展资源;(2)官方客户端对各个语言的支持程度不同,client-go支持所有特性,client-java支持对官方资源的高级接口,client-c只支持对官方资源的低级接口的访问,尤其缺少informer特性。总之,client-go所提供的高级接口是利用apiserver做配置分发的必要基础,而client-java和client-c缺少对扩展apiserver操作的高级接口,无法应用在多语言跨主机的异构系统中。

4、针对上述的问题,目前尚未提出有效的解决方案。


技术实现思路

1、本发明实施例提供了一种用于操作资源对象的方法及装置、电子设备,以至少解决相关技术中分布式系统无法跨进程操作扩展资源对象的技术问题。

2、根据本发明实施例的一个方面,提供了一种用于操作资源对象的方法,应用于分布式系统中,所述分布式系统中部署有接口服务器;所述接口服务器存储有不同于标准资源对象的扩展资源对象,所述方法包括:针对所述接口服务器中的扩展资源对象生成多种语言代码;其中,所述多种语言代码中的第一类型语言代码,用于使第一类型客户端进程支持针对所述扩展资源对象的所有操作;在所述多种语言代码包括第二类型语言代码的情况下,为不支持操作所述扩展资源对象的第二类型客户端进程构建代理模块;其中,所述第二类型语言代码,用于使所述第二类型客户端进程基于所述代理模块与所述第一类型客户端进程之间的通信,进行针对所述扩展资源对象的所有操作;在所述多种语言代码包括第三类型语言代码的情况下,将所述第三类型语言代码与第三类型客户端进程的原始语言代码进行合并,得到所述第三类型客户端进程的合并代码;其中,所述第三类型语言代码用于使所述第三类型客户端进程支持针对所述扩展资源对象的所有操作中的部分操作;所述原始语言代码用于使所述第三类型客户端进程支持针对所述标准资源对象的所有操作;所述合并代码用于使所述第三类型客户端进程支持针对所述扩展资源对象的所有操作。

3、进一步地,所述方法还包括:采用所述第一类型语言代码,生成所述扩展资源对象的配置结构;采集预设业务的业务数据,并基于所述业务数据以及所述配置结构,生成扩展资源对象;将所有标准资源对象以及所有所述扩展资源对象存储至与所述接口服务器关联的预设数据库中。

4、进一步地,所述方法还包括:将所述第一类型语言代码与所述第一类型客户端进程的原始语言代码进行合并,得到所述第一类型客户端进程的合并代码,其中,所述第一类型客户端进程的原始语言代码用于使所述第一类型客户端进程支持针对所述标准资源对象的所有操作。

5、进一步地,所述第三类型语言代码的生成过程包括:基于所述扩展资源对象,编译二进制进程,并运行所述二进制进程;采用预设命令,从正在运行的所述二进制进程中获取预设规范文件;基于所述预设规范文件,生成所述第三类型语言代码。

6、进一步地,所述方法还包括:启动所述第二类型客户端进程内的第一远程调用服务以及所述第一类型客户端进程内的第二远程调用服务,并连接所述第一远程调用服务以及所述第二远程调用服务;在所述第二类型客户端进程需要操作目标资源对象的情况下,通过所述代理模块接收所述第二类型客户端进程的操作请求,其中,所述代理模块将所述操作请求携带的第二类型语言代码转换为远程调用代码,并将所述远程调用代码转换为目标第一类型语言代码;所述目标第一类型语言代码用于访问所述接口服务器,完成对所述目标资源对象的操作。

7、进一步地,在所述代理模块采用所述第一类型语言代码向所述接口服务器发起监听连接后,所述方法还包括:在所述代理模块通过所述监听连接监听到所述接口服务器内的任一所述扩展资源对象发生变更的情况下,通过所述代理模块将发生变更的扩展资源对象的目标第一类型语言代码转换为目标远程调用代码,并将所述目标远程调用代码转换为所述发生变更的扩展资源对象的第二类型语言代码,以及将所述发生变更的扩展资源对象的第二类型语言代码发送至所述第二类型客户端进程。

8、进一步地,所述代理模块将所述操作请求携带的第二类型语言代码转换为远程调用代码的步骤,包括:确定操作接口类型集合,并为所述操作接口类型集合中的每个操作接口类型构建对应的操作接口类型模板;解析所述操作请求中的所述第二类型语言代码,得到所述目标资源对象的对象信息;将所述对象信息填充至多个所述操作接口类型模板中的目标操作接口类型模板,得到所述远程调用代码,其中,所述目标操作接口类型模板对应于所述操作请求所指示的接口类型。

9、进一步地,通过所述代理模块将发生变更的扩展资源对象的目标第一类型语言代码转换为目标远程调用代码的步骤,包括:解析所述目标第一类型语言代码,得到预设字符内的字符串;基于所述字符串,生成远程调用文件以及转换文件;基于所述远程调用文件以及所述转换文件,生成所述目标远程调用代码。

10、根据本发明实施例的另一方面,还提供了一种用于操作资源对象的装置,应用于分布式系统中,所述分布式系统中部署有接口服务器;所述接口服务器存储有不同于标准资源对象的扩展资源对象,所述装置包括:生成单元,用于针对所述接口服务器中的扩展资源对象生成多种语言代码;其中,所述多种语言代码中的第一类型语言代码,用于使第一类型客户端进程支持针对所述扩展资源对象的所有操作;构建单元,用于在所述多种语言代码包括第二类型语言代码的情况下,为不支持操作所述扩展资源对象的第二类型客户端进程构建代理模块;其中,所述第二类型语言代码,用于使所述第二类型客户端进程基于所述代理模块与所述第一类型客户端进程之间的通信,进行针对所述扩展资源对象的所有操作;合并单元,用于在所述多种语言代码包括第三类型语言代码的情况下,将所述第三类型语言代码与第三类型客户端进程的原始语言代码进行合并,得到所述第三类型客户端进程的合并代码;其中,所述第三类型语言代码用于使所述第三类型客户端进程支持针对所述扩展资源对象的所有操作中的部分操作;所述原始语言代码用于使所述第三类型客户端进程支持针对所述标准资源对象的所有操作;所述合并代码用于使所述第三类型客户端进程支持针对所述扩展资源对象的所有操作。

11、进一步地,所述用于操作资源对象的装置还包括:第一生成模块,用于采用所述第一类型语言代码,生成所述扩展资源对象的配置结构;第二生成模块,用于采集预设业务的业务数据,并基于所述业务数据以及所述配置结构,生成扩展资源对象;第一存储模块,用于将所有标准资源对象以及所有所述扩展资源对象存储至与所述接口服务器关联的预设数据库中。

12、进一步地,所述用于操作资源对象的装置还包括:第一合并模块,用于将所述第一类型语言代码与所述第一类型客户端进程的原始语言代码进行合并,得到所述第一类型客户端进程的合并代码,其中,所述第一类型客户端进程的原始语言代码用于使所述第一类型客户端进程支持针对所述标准资源对象的所有操作。

13、进一步地,所述用于操作资源对象的装置还包括:第一编译模块,用于基于所述扩展资源对象,编译二进制进程,并运行所述二进制进程;第一获取模块,用于采用预设命令,从正在运行的所述二进制进程中获取预设规范文件;第三生成模块,用于基于所述预设规范文件,生成所述第三类型语言代码。

14、进一步地,所述用于操作资源对象的装置还包括:第一启动模块,用于启动所述第二类型客户端进程内的第一远程调用服务以及所述第一类型客户端进程内的第二远程调用服务,并连接所述第一远程调用服务以及所述第二远程调用服务;第一接收模块,用于在所述第二类型客户端进程需要操作目标资源对象的情况下,通过所述代理模块接收所述第二类型客户端进程的操作请求,其中,所述代理模块将所述操作请求携带的第二类型语言代码转换为远程调用代码,并将所述远程调用代码转换为目标第一类型语言代码;所述目标第一类型语言代码用于访问所述接口服务器,完成对所述目标资源对象的操作。

15、进一步地,在所述代理模块采用所述第一类型语言代码向所述接口服务器发起监听连接后,所述用于操作资源对象的装置还包括:第一转换模块,用于在所述代理模块通过所述监听连接监听到所述接口服务器内的任一所述扩展资源对象发生变更的情况下,通过所述代理模块将发生变更的扩展资源对象的目标第一类型语言代码转换为目标远程调用代码,并将所述目标远程调用代码转换为所述发生变更的扩展资源对象的第二类型语言代码,以及将所述发生变更的扩展资源对象的第二类型语言代码发送至所述第二类型客户端进程。

16、进一步地,所述第一接收模块包括:第一确定子模块,用于确定操作接口类型集合,并为所述操作接口类型集合中的每个操作接口类型构建对应的操作接口类型模板;第一解析子模块,用于解析所述操作请求中的所述第二类型语言代码,得到所述目标资源对象的对象信息;第一填充子模块,用于将所述对象信息填充至多个所述操作接口类型模板中的目标操作接口类型模板,得到所述远程调用代码,其中,所述目标操作接口类型模板对应于所述操作请求所指示的接口类型。

17、进一步地,所述第一转换模块包括:第二解析子模块,用于解析所述目标第一类型语言代码,得到预设字符内的字符串;第一生成子模块,用于基于所述字符串,生成远程调用文件以及转换文件;第二生成子模块,用于基于所述远程调用文件以及所述转换文件,生成所述目标远程调用代码。

18、根据本发明实施例的另一方面,还提供了一种电子设备,包括一个或多个处理器和存储器,所述存储器用于存储一个或多个程序,其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现上述任意一项用于操作资源对象的方法。

19、在本发明中,针对接口服务器中的扩展资源对象生成多种语言代码;其中,多种语言代码中的第一类型语言代码,用于使第一类型客户端进程支持针对扩展资源对象的所有操作;在多种语言代码包括第二类型语言代码的情况下,为不支持操作扩展资源对象的第二类型客户端进程构建代理模块;其中,第二类型语言代码,用于使第二类型客户端进程基于代理模块与第一类型客户端进程之间的通信,进行针对扩展资源对象的所有操作;在多种语言代码包括第三类型语言代码的情况下,将第三类型语言代码与第三类型客户端进程的原始语言代码进行合并,得到第三类型客户端进程的合并代码;其中,第三类型语言代码用于使第三类型客户端进程支持针对扩展资源对象的所有操作中的部分操作;原始语言代码用于使第三类型客户端进程支持针对标准资源对象的所有操作;合并代码用于使第三类型客户端进程支持针对扩展资源对象的所有操作。

20、在本发明中,可以为接口服务器中的扩展资源对象生成多种语言代码,并且第一类型客户端进程可以对扩展资源对象进行所有操作。如果第二类型客户端进程需要对扩展资源对象进行所有操作,则可以构建代理模块,以第二类型客户端进程使通过代理模块与第一类型客户端进程之间的通信,以完成对扩展资源对象的所有操作。如果第三类型客户端进程需要对扩展资源对象进行所有操作,则需要将第三类型语言代码与第三类型客户端进程的原始语言代码进行合并,以通过合并代码使第三类型客户端进程能够对扩展资源对象进行所有操作,不仅提高了不同语言进程进行通信的效率,并且能够使各个语言进程对扩展资源对象进行所有操作,进而解决了相关技术中分布式系统无法跨进程操作扩展资源对象的技术问题。


技术特征:

1.一种用于操作资源对象的方法,其特征在于,应用于分布式系统中,所述分布式系统中部署有接口服务器;所述接口服务器存储有不同于标准资源对象的扩展资源对象,所述方法包括:

2.根据权利要求1所述的方法,其特征在于,所述方法还包括:

3.根据权利要求1所述的方法,其特征在于,所述方法还包括:

4.根据权利要求1所述的方法,其特征在于,所述第三类型语言代码的生成过程包括:

5.根据权利要求1所述的方法,其特征在于,所述方法还包括:

6.根据权利要求1所述的方法,其特征在于,在所述代理模块采用所述第一类型语言代码向所述接口服务器发起监听连接后,所述方法还包括:

7.根据权利要求5所述的方法,其特征在于,所述代理模块将所述操作请求携带的第二类型语言代码转换为远程调用代码的步骤,包括:

8.根据权利要求6所述的方法,其特征在于,通过所述代理模块将发生变更的扩展资源对象的目标第一类型语言代码转换为目标远程调用代码的步骤,包括:

9.一种用于操作资源对象的装置,其特征在于,应用于分布式系统中,所述分布式系统中部署有接口服务器;所述接口服务器存储有不同于标准资源对象的扩展资源对象,所述装置包括:

10.一种电子设备,其特征在于,包括一个或多个处理器和存储器,所述存储器用于存储一个或多个程序,其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现权利要求1至8中任意一项所述的用于操作资源对象的方法。


技术总结
本发明公开了一种用于操作资源对象的方法及装置、电子设备,其中,该方法包括:为接口服务器中的扩展资源对象生成多种语言代码,且第一类型客户端进程可以对扩展资源对象进行所有操作。如果第二类型客户端进程需要对扩展资源对象进行所有操作,则构建代理模块,以第二类型客户端进程使通过代理模块与第一类型客户端进程之间的通信,以完成对扩展资源对象的所有操作。如果第三类型客户端进程需要对扩展资源对象进行所有操作,则需要将第三类型语言代码与第三类型客户端进程的原始语言代码进行合并,以通过合并代码使第三类型客户端进程能够对扩展资源对象进行所有操作。本发明解决了相关技术中分布式系统无法跨进程操作扩展资源对象的技术问题。

技术研发人员:叶文军,吴云蔚,姜晓松,郭睿,王真
受保护的技术使用者:山石网科通信技术股份有限公司
技术研发日:
技术公布日:2024/5/29
转载请注明原文地址:https://win.8miu.com/read-1147884.html

最新回复(0)