System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本申请涉及云原生,特别是涉及一种元数据请求优化方法、装置、计算机设备、计算机可读存储介质和计算机程序产品。
技术介绍
1、在云原生容器大规模kubernetes集群建设的实践中,超大规模kubernetes集群的节点会轻松超过10000+节点,因此上面承接部署的pod数量也会轻松突破100000+的规模,当有客户端(client)对资源进行获取及监听(list-watch)操作,接口服务器(api server)组件会将全量的元数据打包一次性发送给客户端。此时打包并发送给客户端的元数据量较大,且数据的编解码(encode/decoce)会消耗大量的内存资源。
2、当面临大量针对api server组件的list操作时,这些操作可能会迅速消耗apiserver的内存资源,导致其面临内存溢出(out of memory,oom)的风险。一旦某个apiserver组件因oom而失效,原本发往该组件的list请求会转而涌向其他api server组件,这可能导致整个kubernetes集群中的所有api server组件相继因内存压力而崩溃,最终造成kubernetes整体服务的不可用。
技术实现思路
1、基于此,有必要针对上述技术问题,提供一种能够对元数据进行分片并逐个传输的元数据请求优化方法、装置、计算机设备、计算机可读存储介质和计算机程序产品。
2、第一方面,本申请提供了一种元数据请求优化方法,包括:
3、接收到来自客户端的元数据获取请求后;与所述
4、基于所述元数据获取请求,确定所需要获取的目标元数据;
5、从分布式键值数据库中获取所述目标元数据,将获取到的目标元数据按照容器进行分片,得到至少一个容器配置数据;
6、通过所述长连接将所述至少一个容器配置数据逐个发送给所述客户端;并将所述目标元数据的当前版本号发送给客户端,以指示所述客户端基于所述当前版本号进行版本监听处理。
7、在其中一个实施例中,所述元数据获取请求携带客户端标识;所述与所述客户端建立长连接,包括:
8、对所述元数据获取请求进行解析,得到所述客户端标识;基于所述客户端标识确定客户端的地址;基于所述地址,调用列表流处理接口,与所述客户端建立长连接。
9、在其中一个实施例中,所述从分布式键值数据库中获取所述目标元数据,还包括:
10、获取已授权访问的客户端标识列表;判断所述客户端标识是否在所述客户端标识列表中;若所述客户端标识在所述客户端标识列表中,则身份验证通过;基于所述客户端标识确定所述客户端的权限等级;基于所述目标元数据,确定所述目标元数据的权限要求等级;若所述客户端的权限等级不小于所述权限要求等级,则权限验证通过;从分布式键值数据库中获取所述目标元数据。
11、在其中一个实施例中,所述方法还包括:
12、若所述客户端的标识未在所述客户端标识列表中,则身份验证未通过,断开长连接以及和客户端的连接;若所述客户端的权限等级小于所述权限要求等级,则权限验证未通过,断开长连接并返回权限不足的提示。
13、在其中一个实施例中,所述方法还包括:
14、接收来自所述客户端的监听请求;解析所述监听请求,确定所述客户端所要监听的目标元数据的版本号,并建立监听对象,监听所述目标元数据的版本号。
15、在其中一个实施例中,所述建立监听对象,监听所述目标元数据的版本号,包括:
16、当分布式键值数据库中存储的所述目标元数据的版本号发送改变时,通过长连接,将改变后的目标元数据发送给所述客户端;通过长连接,将改变后的目标元数据的版本号发送给所述客户端。
17、第二方面,本申请还提供了一种元数据请求优化装置,所述装置包括:
18、接收模块,用于接收到来自客户端的元数据获取请求后;与所述客户端建立长连接;
19、查询模块,用于基于所述元数据获取请求,确定所需要获取的目标元数据;
20、获取模块,用于从分布式键值数据库中获取所述目标元数据,将获取到的目标元数据按照容器进行分片,得到至少一个容器配置数据;
21、发送模块,用于通过所述长连接将所述至少一个容器配置数据逐个发送给所述客户端;并将所述目标元数据的当前版本号发送给客户端,以指示所述客户端基于所述当前版本号进行版本监听处理。
22、第三方面,本申请还提供了一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
23、接收到来自客户端的元数据获取请求后;与所述客户端建立长连接;
24、基于所述元数据获取请求,确定所需要获取的目标元数据;
25、从分布式键值数据库中获取所述目标元数据,将获取到的目标元数据按照容器进行分片,得到至少一个容器配置数据;
26、通过所述长连接将所述至少一个容器配置数据逐个发送给所述客户端;并将所述目标元数据的当前版本号发送给客户端,以指示所述客户端基于所述当前版本号进行版本监听处理。
27、第四方面,本申请还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
28、接收到来自客户端的元数据获取请求后;与所述客户端建立长连接;
29、基于所述元数据获取请求,确定所需要获取的目标元数据;
30、从分布式键值数据库中获取所述目标元数据,将获取到的目标元数据按照容器进行分片,得到至少一个容器配置数据;
31、通过所述长连接将所述至少一个容器配置数据逐个发送给所述客户端;并将所述目标元数据的当前版本号发送给客户端,以指示所述客户端基于所述当前版本号进行版本监听处理。
32、第五方面,本申请还提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现以下步骤:
33、接收到来自客户端的元数据获取请求后;与所述客户端建立长连接;
34、基于所述元数据获取请求,确定所需要获取的目标元数据;
35、从分布式键值数据库中获取所述目标元数据,将获取到的目标元数据按照容器进行分片,得到至少一个容器配置数据;
36、通过所述长连接将所述至少一个容器配置数据逐个发送给所述客户端;并将所述目标元数据的当前版本号发送给客户端,以指示所述客户端基于所述当前版本号进行版本监听处理。
37、上述元数据请求优化方法、装置、计算机设备、计算机可读存储介质和计算机程序产品,接收到来自客户端的元数据获取请求后;与所述客户端建立长连接;基于所述元数据获取请求,确定所需要获取的目标元数据;从分布式键值数据库中获取所述目标元数据,将获取到的目标元数据按照容器进行分片,得到至少一个容器配置数据;通过所述长连接将所述至少一个容器配置数据逐个发送给所述客户端;并将所述目标元数据的当前版本号发本文档来自技高网...
【技术保护点】
1.一种元数据请求优化方法,其特征在于,包括:
2.根据权利要求1所述的方法,其特征在于,所述元数据获取请求携带客户端标识;所述与所述客户端建立长连接,包括:
3.根据权利要求1所述的方法,其特征在于,所述从分布式键值数据库中获取所述目标元数据,还包括:
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
6.根据权利要求5所述的方法,其特征在于,所述建立监听对象,监听所述目标元数据的版本号,包括:
7.一种元数据请求优化装置,其特征在于,所述装置包括:
8.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至6中任一项所述的方法的步骤。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至6中任一项所述的方法的步骤。
10.一种计算机程序产品,包括计算机程序,其特征在于,所述计算机程
...【技术特征摘要】
1.一种元数据请求优化方法,其特征在于,包括:
2.根据权利要求1所述的方法,其特征在于,所述元数据获取请求携带客户端标识;所述与所述客户端建立长连接,包括:
3.根据权利要求1所述的方法,其特征在于,所述从分布式键值数据库中获取所述目标元数据,还包括:
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
6.根据权利要求5所述的方法,其特征在于,所述建立监听对象,监听所述目标元数据的版本号,包括...
【专利技术属性】
技术研发人员:徐兴文,李召,徐赛,张彬彬,李志武,毛燕茹,
申请(专利权)人:天翼云科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。