基于GraphQL的声明式应用开发方法、系统及计算机可读存储介质技术方案

技术编号:34391506 阅读:62 留言:0更新日期:2022-08-03 21:20
本发明专利技术实施例公开了一种基于GraphQL的声明式应用开发方法,包括:从workqueue目标队列中获取要协调处理的资源对象,并从所述内存存储中获取当前资源对象的最新状态信息进行协调处理过程;等待worker模块对所述协调处理完成后,调用GraphQLClient模块回写的当前资源对象的当前状态;GraphQLClient模块向Server服务器端进行当前资源对象进行资源更新操作;将client客户端协调处理后的当前资源对象的当前状态回写到Server服务器端中。本发明专利技术提供的开发方法减少无关事件传输与每次传输的数据量。据量。据量。

【技术实现步骤摘要】
基于GraphQL的声明式应用开发方法、系统及计算机可读存储介质


[0001]本专利技术涉及超融合系统
,尤其涉及一种基于GraphQL的声明式应用开发方法、系统及计算机可读存储介质。

技术介绍

[0002]随着容器化与容器编排技术的发展,Kubernetes作为主流的容器编排工具,在各个领域中被广泛使用。
[0003]研究人员进一步发现,现有的Kubernetes容器编排工具通过组件Apiserver提供声明式API,其它组件围绕Apiserver进行声明式应用开发。
[0004]相比于过程式,声明式应用更加用户友好,用户只需定义期望状态,由声明式应用提供资源从实际状态到期望状态的协调同步。用户通过声明式API管理各项资源,通过Apiserver提供的扩展能力,CustomResourceDefinition+ Operator的声明式应用开发流程被越来越多的人推广使用。使用此套流程开发声明式应用的大致步骤如下:步骤一、开发人员编写自定义资源定义(CustomResourceDefinition),并创建到Apiserver中。步骤二、编写控制器(Operator),通过订阅(list watch)获取自定义资源(Custom Resource)的变更事件,做对应处理。步骤三、处理完成后,将自定义资源的当前状态回写到Apiserver中(Apiserver作为集群的核心,负责集群各功能模块之间的通信)。
[0005]研究人员进一步发现,现有方案围绕kubernetes核心组件etcd与apiserver进行声明式应用开发在方便的同时也存在如下的技术缺陷:1、在Kubernetes场景下声明式应用可以复用kubernetes组件etcd与apiserver,但在非kubernetes场景下,etcd与apiserver难以与已存在的服务集成,需要单独部署并维护这两个组件。2、无法选择订阅资源的特定字段。这会导致资源的任意字段变更后,client都会收到Apiserver推送的资源变更事件。这增加了对网络资源的占用和client存储资源与过滤事件对计算资源消耗。
[0006]综上所述,如何克服上述技术缺陷是本领域技术人员急需解决的问题。

技术实现思路

[0007]有鉴于此,本专利技术实施例提出一种基于GraphQL的声明式应用开发方法、系统及计算机可读存储介质。
[0008]本专利技术的一实施例提出一种基于GraphQL的声明式应用开发方法,包括:
[0009]Server服务器端进行响应目标资源对象的查询与订阅请求,检测发现目标资源对象中的当前资源对象发生变更时,反射器将变更事件送入到缓冲器中;
[0010]所述缓冲器调用回调函数处理模块,由调用的所述回调函数处理模块进行处理当前变更事件。
[0011]所述缓冲器从当前变更事件中获取资源对象的最新状态信息,将所述资源对象的最新状态信息存到内存存储中;
[0012]在所述回调函数处理模块处理完成后,将当前资源对象加入到workqueue目标队列中等待worker模块进行协调处理;
[0013]worker模块从workqueue目标队列中获取要协调处理的资源对象,并从所述内存存储中获取当前资源对象的最新状态信息进行协调处理过程;
[0014]等待worker模块对所述协调处理完成后,调用GraphQL Client模块回写的当前资源对象的当前状态;
[0015]GraphQL Client模块向所述Server服务器端进行当前资源对象进行资源更新操作;将client客户端协调处理后的当前资源对象的当前状态回写到Server服务器端中。
[0016]优选的,作为一种可实施方案;在步骤Server服务器端进行响应目标资源对象的查询与订阅请求之前,还包括client客户端进行预设置处理操作。
[0017]一种基于GraphQL的声明式应用开发系统,包括client客户端和server服务器端;
[0018]所述Client客户端用于向server服务器端提供GraphQL API共享服务;
[0019]所述Client客户端用于根据GraphQL API共享服务向server服务器端发送目标资源对象的查询与订阅请求;
[0020]所述server服务器端用于响应所述目标资源对象的查询与订阅请求检测发现目标资源对象中的当前资源对象是否发生变更;
[0021]所述Client客户端还用于检测发现目标资源对象中的当前资源对象发生变更时,将当前资源对象对应的变更事件以及当前资源对象进行协调处理,并最终由所述server服务器端接收client客户端协调处理后的当前资源对象的当前状态回写到server服务器端中。
[0022]优选的,作为一种可实施方案;所述Client客户端包括反射器、缓冲器、回调函数处理模块、worker模块、GraphQL Client模块;
[0023]其中,所述反射器用于将变更事件送入到缓冲器中;
[0024]所述缓冲器用于调用回调函数处理模块;所述回调函数处理模块根据缓冲器的调用指令进行处理当前变更事件。
[0025]所述缓冲器还用于从当前变更事件中获取资源对象的最新状态信息,将所述资源对象的最新状态信息存到内存存储中;所述内存存储用于存储资源对象的最新状态信息;
[0026]所述回调函数处理模块还用于将当前资源对象加入到workqueue目标队列中等待worker模块进行协调处理;
[0027]所述worker模块用于从workqueue目标队列中获取要协调处理的资源对象,并从所述内存存储中获取当前资源对象的最新状态信息进行协调处理过程;等待worker模块对所述协调处理完成后,调用GraphQL Client模块回写的当前资源对象的当前状态;
[0028]所述GraphQL Client模块向所述Server服务器端进行当前资源对象进行资源更新操作;将所述GraphQL Client模块协调处理后的当前资源对象的当前状态回写到Server服务器端中。
[0029]本专利技术的再一实施例提出一种计算机可读存储介质,其存储有计算机程序,在所述计算机程序被执行时,实施根据上述的一种基于GraphQL的声明式应用开发方法。
[0030]与现有技术相比,本专利技术实施例至少存在如下技术优势:
[0031]本专利技术实施例提出的基于GraphQL的声明式应用开发方法、系统,其GraphQL是一
种用于查询的语言,查询和订阅时可以指定资源的特定字段,GraphQL Server仅返回指定字段的信息和变更推送,能有效的减少无效的传输。
[0032]本专利技术提出一种基于GraphQL的声明式应用开发系统(或称框架),通过此框架可支持围绕GraphQL Server进行声明式应用开发。此框架包括client端和server端两个部分,server端需要暴露资源查询(Quer本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于GraphQL的声明式应用开发方法,其特征在于,包括:Server服务器端进行响应目标资源对象的查询与订阅请求,检测发现目标资源对象中的当前资源对象发生变更时,反射器将变更事件送入到缓冲器中;所述缓冲器调用回调函数处理模块,由调用的所述回调函数处理模块进行处理当前变更事件;所述缓冲器从当前变更事件中获取资源对象的最新状态信息,将所述资源对象的最新状态信息存到内存存储中;在所述回调函数处理模块处理完成后,将当前资源对象加入到workqueue目标队列中等待worker模块进行协调处理;worker模块从workqueue目标队列中获取要协调处理的资源对象,并从所述内存存储中获取当前资源对象的最新状态信息进行协调处理过程;等待worker模块对所述协调处理完成后,调用GraphQL Client模块回写的当前资源对象的当前状态;GraphQL Client模块向所述Server服务器端进行当前资源对象进行资源更新操作;将client客户端协调处理后的当前资源对象的当前状态回写到Server服务器端中。2.根据权利要求1所述的一种基于GraphQL的声明式应用开发方法,其特征在于,在步骤Server服务器端进行响应目标资源对象的查询与订阅请求之前,还包括client客户端进行预设置处理操作。3.根据权利要求2所述的一种基于GraphQL的声明式应用开发方法,其特征在于,所述预设置处理操作包括:client客户端选择订阅的资源对象和特定字段,通过反射器向Server服务器端发送目标资源对象的查询与订阅请求。4.一种基于GraphQL的声明式应用开发系统,其特征在于,实施执行如权利要求1

3任一项所述的一种基于GraphQL的声明式应用开发方法,包括client客户端和server服务器端;所述Client客户端用于向server服务器端提供GraphQL API共享服务;所述Client客户端用于根据GraphQL API共享服务向server服务器端发送目标资源对象的查询与订阅请求;所述server服务器端用于响应所述目标资源对象的查询与...

【专利技术属性】
技术研发人员:展望徐文豪王弘毅张凯
申请(专利权)人:北京志凌海纳科技有限公司
类型:发明
国别省市:

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

1