CN115114361A - 一种基于容器云平台统一接口的资源检索方法和系统 - Google Patents

一种基于容器云平台统一接口的资源检索方法和系统 Download PDF

Info

Publication number
CN115114361A
CN115114361A CN202210727379.0A CN202210727379A CN115114361A CN 115114361 A CN115114361 A CN 115114361A CN 202210727379 A CN202210727379 A CN 202210727379A CN 115114361 A CN115114361 A CN 115114361A
Authority
CN
China
Prior art keywords
resource
resource data
cloud platform
container cloud
retrieval
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202210727379.0A
Other languages
English (en)
Other versions
CN115114361B (zh
Inventor
刘齐均
韩小鹏
李辉
颜开
潘远航
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Daoke Network Technology Co ltd
Original Assignee
Shanghai Daoke Network Technology Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shanghai Daoke Network Technology Co ltd filed Critical Shanghai Daoke Network Technology Co ltd
Priority to CN202210727379.0A priority Critical patent/CN115114361B/zh
Publication of CN115114361A publication Critical patent/CN115114361A/zh
Application granted granted Critical
Publication of CN115114361B publication Critical patent/CN115114361B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/25Integrating or interfacing systems involving database management systems
    • G06F16/252Integrating or interfacing systems involving database management systems between a Database Management System and a front-end application
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/951Indexing; Web crawling techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/953Querying, e.g. by the use of web search engines
    • G06F16/9532Query formulation
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Linguistics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请提供了一种基于容器云平台统一接口的资源检索方法和系统。该方法包括:响应于接收到资源数据检索请求,判断资源数据检索请求所指向的资源对象的类型是否属于预设类型;响应于资源数据检索请求所指向的资源对象的类型属于预设类型,使用预先建立的键值对索引对预先存储的资源数据进行检索;响应于资源数据检索请求所指向的资源对象的类型不属于预设类型,通过容器云平台统一接口对资源对象对应的资源数据进行检索。籍此,预先存储了预设类型的资源对象对应的资源数据,并且为资源数据建立了键值对索引,用于提升对资源数据的检索速度,同时兼顾对不属于预设类型的资源对象对应的资源数据进行检索的需求。

Description

一种基于容器云平台统一接口的资源检索方法和系统
技术领域
本申请涉及云原生技术领域,特别涉及一种基于容器云平台统一接口的资源检索方法、系统、计算机可读存储介质和电子设备。
背景技术
容器云平台统一接口(比如Kubernetes集群中的API-Server组件)是整个云原生体系的数据中心,其提供了对各类资源对象进行操作的能力,包括但不限于对资源的验证、配置,对集群的管理、认证、授权等。
容器云平台管理员可以通过访问容器云平台统一接口来对容器云平台中的各类资源对象进行增、删、改、查等操作。
对于增加、删除、修改等操作来说,每次只对少量的资源对象进行相应操作,而对于查询(即检索)来说,通常需要同时查询大量的资源对象对应的资源数据,容器云平台统一接口的每秒查询率(QPS,Queries-per-second)不高,当检索涉及的资源对象的数量过多时,每秒查询的资源数据量将超过容器云平台统一接口的上限,导致容器云平台统一接口出现不稳定和异常的情况,并且无法及时反馈检索结果。
因而,亟需提供一种针对上述现有技术不足的技术方案。
发明内容
本申请的目的在于提供一种基于容器云平台统一接口的资源检索方法、系统、计算机可读存储介质和电子设备,以解决或缓解上述现有技术中存在的问题。
为了实现上述目的,本申请提供如下技术方案:
本申请提供一种基于容器云平台统一接口的资源检索方法,包括:响应于接收到资源数据检索请求,判断所述资源数据检索请求所指向的资源对象的类型是否属于预设类型;响应于所述资源数据检索请求所指向的资源对象的类型属于所述预设类型,使用预先建立的键值对索引对预先存储的资源数据进行检索;响应于所述资源数据检索请求所指向的资源对象的类型不属于所述预设类型,通过容器云平台统一接口对所述资源对象对应的资源数据进行检索。
优选的,所述资源数据通过以下步骤存储:通过所述容器云平台统一接口对所述预设类型的资源对象对应的资源文件中记载的全部资源信息进行抓取;对所述预设类型的资源对象对应的资源文件中记载的全部资源信息进行筛选和处理,以生成所述预设类型的资源对象对应的资源数据并进行存储。
优选的,所述键值对索引通过以下步骤建立:从所述资源数据中选取至少一个字段的资源信息,以生成所述键值对索引的键;将所述资源数据的存储标识作为所述键值对索引的值。
优选的,所述资源数据检索请求中包含检索参数;相应地,所述使用预先建立的键值对索引对预先存储的资源数据进行检索,包括:使用所述检索参数与所述键值对索引的键进行匹配,以筛选出特定字段的资源信息与所述检索参数匹配的资源数据。
优选的,所述资源数据检索请求中还包含排序参数和分页参数,所述方法还包括:根据所述排序参数,对资源数据检索结果按照指定字段的资源信息进行排序;根据所述分页参数,对资源数据检索结果按照指定行数进行分页。
优选的,还包括:通过所述容器云平台统一接口对所述预设类型的资源对象对应的资源事件进行监听;响应于监听到所述预设类型的资源对象对应的资源事件,根据所述资源事件,对所述预设类型的资源对象对应的资源数据进行更新。
优选的,响应于接收到资源文件操作请求,通过所述容器云平台统一接口对所述资源文件进行操作。
本申请实施例还提供一种基于容器云平台统一接口的资源数据检索系统,包括:类型判断单元,配置为响应于接收到资源数据检索请求,判断所述资源数据检索请求所指向的资源对象的类型是否属于预设类型;第一检索单元,配置为响应于所述资源检索请求所指向的资源对象的类型属于所述预设类型,使用预先建立的键值对索引对预先存储的资源数据进行检索;第二检索单元,配置为响应于所述资源数据检索请求所指向的资源对象的类型不属于所述预设类型,通过容器云平台统一接口对所述资源对象对应的资源数据进行检索。
本申请实施例还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序为如上任一所述的基于容器云平台统一接口的资源检索方法。
本申请实施例还提供一种电子设备,包括:存储器、处理器、以及存储在所述存储器中并可在所述处理器上运行的程序,所述处理器执行所述程序时实现如上任一所述的基于容器云平台统一接口的资源检索方法。
有益效果:
本申请提供的基于容器云平台统一接口的资源数据检索技术中,当接收到资源数据检索请求时,对资源数据检索请求所指向的资源对象的类型是否属于预设类型进行判断,如果资源数据检索请求所指向的资源对象的类型属于预设类型,则使用预先建立的键值对索引对预先存储的资源数据进行检索;如果资源数据检索请求所指向的资源对象的类型不属于预设类型,则通过容器云平台统一接口对资源对象对应的资源数据进行检索。籍此,预先存储了预设类型的资源对象对应的资源数据,并且为资源数据建立了键值对索引,用于提升对资源数据的检索速度,同时兼顾对不属于预设类型的资源对象对应的资源数据进行检索的需求。
附图说明
构成本申请的一部分的说明书附图用来提供对本申请的进一步理解,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。其中:
图1为根据本申请的一些实施例提供的一种基于容器云平台统一接口的资源检索方法的流程示意图;
图2为根据本申请的一些实施例提供的对资源数据进行预先存储的逻辑示意图;
图3为根据本申请的一些实施例提供的发送操作请求的逻辑示意图;
图4为根据本申请的一些实施例提供的接收资源数据检索结果的逻辑示意图;
图5为根据本申请的一些实施例提供的键值对索引的结构示意图;
图6为根据本申请的一些实施例提供的多容器云平台场景下对资源数据进行预先存储的逻辑示意图;
图7为根据本申请的一些实施例提供的多容器云平台场景下发送操作请求的逻辑示意图;
图8为根据本申请的一些实施例提供的多容器云平台场景下接收资源数据检索结果的逻辑示意图;
图9为根据本申请的一些实施例提供的一种基于容器云平台统一接口的资源数据检索系统的结构示意图;
图10为根据本申请的一些实施例提供的电子设备的结构示意图;
图11为根据本申请的一些实施例提供的电子设备的硬件结构图。
具体实施方式
下面将参考附图并结合实施例来详细说明本申请。各个示例通过本申请的解释的方式提供而非限制本申请。实际上,本领域的技术人员将清楚,在不脱离本申请的范围或精神的情况下,可在本申请中进行修改和变型。例如,示为或描述为一个实施例的一部分的特征可用于另一个实施例,以产生又一个实施例。因此,所期望的是,本申请包含归入所附权利要求及其等同物的范围内的此类修改和变型。
容器云平台统一接口是整个云原生体系的数据中心,其提供了对各类资源对象对应的资源数据进行检索的能力,但由于容器云平台统一接口的每秒查询率不高,当检索涉及的资源对象的数量过多时,每秒查询的资源数据量将超过容器云平台统一接口的上限,导致容器云平台统一接口出现不稳定和异常的情况,并且无法及时反馈检索结果。
此外,容器云平台管理员通过访问容器云平台统一接口进行资源检索时,虽然能够根据标签和属性对检索结果进行筛选,但无法进行高级检索(比如模糊检索、精确字段匹配等),并且容器云平台统一接口没有提供检索结果的分页和排序功能,需要先将检索结果存入用于访问容器云平台统一接口的客户端的内存,再在内存中对检索结果进行相关操作,十分不便。
进一步地,在实际的生产环境中,由于单个容器云平台的承载能力和应用场景有限,企业通常使用多个容器云平台来满足服务的可用性、隔离性以及扩展性。
在使用多个容器云平台场景下,容器云平台统一接口没有提供有效的数据聚合方案,每个容器云平台统一接口分别用于对各自平台的资源对象进行操作。当管理员需要对不同容器云平台中的资源对象进行操作时,需要切换至不同容器云平台的认证和管理界面,操作复杂。
为此,申请人提供了一种基于容器云平台统一接口的资源检索的方案,在使用单个容器云平台的场景下,提升了对资源数据的检索速度,并且提供高级检索功能(比如模糊检索、精确字段匹配、分页、排序等);在使用多个容器云平台的场景下,提供有效的数据聚合方案,能够在统一的认证和管理界面对不同容器云平台中的资源对象进行相应操作。
示例性方法
图1为根据本申请的一些实施例提供的一种基于容器云平台统一接口的资源检索方法的流程示意图;图2为根据本申请的一些实施例提供的对资源数据进行预先存储的逻辑示意图;图3为根据本申请的一些实施例提供的发送操作请求的逻辑示意图;图4为根据本申请的一些实施例提供的接收资源数据检索结果的逻辑示意图。如图1-4所示,该基于容器云平台统一接口的资源检索方法包括:
步骤S101、响应于接收到资源数据检索请求,判断资源数据检索请求所指向的资源对象的类型是否属于预设类型。
需要说明的是,在容器云平台中所有内容都抽象为资源,资源对象是资源的实例,是持久化的实体,用于表现容器云平台的状态。容器云平台中的资源对象都可以采用yaml或者json格式的文件(即资源文件)来定义或描述。容器云平台允许通过HTTP协议对容器云平台统一接口进行访问。相应地,要在容器云平台中增加、删除、修改资源对象,就需要通过访问容器云平台统一接口来对该资源对象对应的资源文件进行创建、删除、修改操作。而要对容器云平台中的资源对象对应的资源数据进行检索,则需要根据该资源对象对应的资源文件中记载的资源信息生成该资源对象对应的资源数据,并将资源数据返回给检索请求方。因此,在增加、删除、修改资源对象时实际上是对资源对象对应的资源文件进行相应操作,而在检索资源对象时实际上是将资源对象对应的资源文件中记载的资源信息按指定格式处理为资源数据。为了便于说明,后续将增、删、改操作对应的请求统一定义为资源文件操作请求,将检索操作对应的请求定义为资源数据检索请求。
可以理解,容器云平台管理员在进行增、删、修、查等操作时,需要使用客户端向容器云平台统一接口发送对应的请求。本申请实施例所提出的一种基于容器云平台统一接口的资源检索方法主要用于提升对资源数据的检索速度,并不对资源文件操作请求的处理过程进行优化,直接将其发送至容器云平台统一接口即可。也就是说,响应于接收到资源文件操作请求,通过容器云平台统一接口对资源文件进行操作。具体地,对接收到的请求的类型进行识别,如果为资源文件操作请求,则将其直接转发至容器云平台统一接口,如果为资源数据检索请求,则使用本申请实施例中的基于容器云平台统一接口的资源检索方法对检索请求进行处理。
基于前述说明可知,容器云平台统一接口的每秒查询率不高,当容器云平台管理员同时对大量的资源对象对应的资源数据进行检索时,将导致容器云平台统一接口出现不稳定和异常的情况。
基于此,如图1所示,在本申请实施例对容器云平台中的资源数据检索需求进行分流,将一部分资源对象对应的资源数据预先存储至存储器中,当资源数据检索请求指向这部分资源对象时,直接对存储器中存储的资源数据进行检索,无需访问容器云平台统一接口,以减轻容器云平台统一接口的负担,并提升对资源数据的检索速度。
在对数据资源进行存储时,通过容器云平台统一接口对预设类型的资源对象对应的资源文件中记载的全部资源信息进行抓取,对预设类型的资源对象对应的资源文件中记载的全部资源信息进行筛选和处理,以生成预设类型的资源对象对应的资源数据并进行存储。
具体来说,容器云平台管理员可以预先指定存储至存储器中的资源数据对应的资源对象的类型,由监听模块调用容器云平台统一接口提供的监听接口(Watch接口)对容器云平台中所有的资源对象对应的资源文件进行监听,进而从中筛选出预设类型的资源对象对应的资源文件,并按照资源文件的格式和协议进行解析,以确定资源文件中预设字段(比如说资源群组、类型、版本号、变更类型等)记载的资源信息。
应当理解,在首次将资源数据存储至存储器中时,调用监听接口获取的就是当前最新的资源信息。
监听模块在确定了资源文件中预设字段(比如说资源群组、类型、版本号、变更类型等)记载的资源信息后,即向存储模块发送存储请求,存储请求中包括预设类型的资源对象对应的资源文件中预设字段记载的资源信息。
存储模块接收到监听模块发送的存储请求后,按照存储器的存储格式对存储请求中预设类型的资源对象对应的资源文件中预设字段记载的资源信息进行处理,即可得到对应的资源数据,进而将资源数据存入存储器。具体地,存储器可以采用内存的形式,以便满足资源检索的高性能需求,也可以采用持久化存储的形式,本申请实施例对此不做限定。此外,存储器提供了通用的数据库接口,可以实现基于如MySQL类型等的存储。
进一步地,为了提升对存储器中存入的资源数据的检索速度,本申请实施例在存储模块中设置了索引单元,用于建立键值对形式的索引。具体来说,资源数据由若干个预设字段记载的资源信息按照存储器的存储格式处理生成,这些预设字段中的一部分字段属于资源对象对应的资源文件中的关键字段,比如说资源群组、资源类别、资源类型等字段记载的资源信息用于定义资源对象,命名空间、集群名称等字段记载的资源信息用于确定资源对象在容器云平台中的位置,对于不同资源对象对应的资源文件,这些关键字段记载的资源信息不可能完全相同,因此这些关键字段记载的资源信息可以用作区分不同的资源对象。在将资源文件中预设字段记载的资源信息处理为资源数据以后,资源文件中的关键字段同样可以作为资源数据的关键字段。
基于此,如图5所示,本申请实施例从资源数据中选取至少一个字段的资源信息,以生成键值对索引的键,将资源数据的存储标识作为键值对索引的值。具体来说,索引单元从资源数据中选取至少一个前述的关键字段(比如说资源群组、资源类别、资源类型、命名空间、集群名称),按照预设的格式(比如说资源群组-资源类别-资源类型-命名空间-集群名称)将所选取的字段记载的资源信息进行组合,作为键值对索引的键,再将资源数据的存储标识作为键值对索引的值,从而将所选取的字段记载的资源信息与资源数据的存储标识进行了绑定。比如说,在生成“资源群组-资源类别-资源类型-命名空间-集群名称->存储标识”(即以“Key->Value”的形式)这一键值对索引时,“资源群组-资源类别-资源类型-命名空间-集群名称”作为键值对的键,可以作为特定资源对象的唯一标识,而“存储标识”作为键值对的值,指明了该特定资源对象对应的资源数据在存储器中的存储位置。需要说明的是,本申请实施例中的存储标识指的是任何能够指向资源数据存储位置的标识信息,包括但不限于资源对象的名称或者编号、资源数据的存储路径、资源数据在数据库中的编号,本申请实施例对此不做限定。
在使用键值对索引对资源数据进行检索时,只需要先在索引中选择某个键值对索引的键,再根据键值对索引的键与值之间的一一关系确定资源数据的存储标识,进而访问该存储标识指向的存储位置,即可获得对应的资源数据。
基于上述说明可知,当代理分发模块接收到请求时,首先由代理分发模块的代理单元对请求的类型进行识别,如果请求的类型为资源文件操作请求,则可以通过反向代理的方式将其直接转发至容器云平台统一接口,如果请求的类型为资源数据检索请求,则将请求转发至代理分发模块的分发单元进一步识别资源数据检索请求所指向的资源对象的类型是否属于预设类型。
具体地,代理分发模块的代理单元具体可以使用Nginx反向代理服务器,具有高性能、占用内存小、支持高并发的优点,也可以使用其它的实现方式,本申请实施例对此不做限定。
代理分发模块的代理单元将资源文件操作请求直接转发至容器云平台统一接口,可以减少资源文件操作请求的访问链路,提升对资源文件操作请求的响应性能,降低数据不一致的风险。
步骤S102a、响应于资源数据检索请求所指向的资源对象的类型属于预设类型,使用预先建立的键值对索引对预先存储的资源数据进行检索。
基于前述说明可知,本申请实施例预先将预设类型的资源对象对应的资源文件中预设字段记载的资源信息转换为资源数据,存储在存储器中。
因此,如果资源数据检索请求所指向的资源对象的类型属于预设类型,那就无需访问容器云平台统一接口,直接对存储器中存储的资源数据进行检索即可。具体可以由代理分发模块的分发单元将资源数据检索请求发送给存储模块,由存储模块的查询单元对存储器中存储的资源数据进行检索,并将资源数据检索结果返回给代理分发模块的分发单元,再由分发单元返回给代理分发模块的代理单元,进而返回给客户端。
在识别资源数据检索请求所指向的资源对象的类型时,一种可能的实现方式是,使用路由匹配功能对请求进行识别,比如请求的API路径地址为:/api/{version}/namespaces/{namespace}/{resourceType}/{resou rceName},则可以根据{resourceType}的内容确定检索请求所指向的资源对象的类型。
进一步地,本申请实施例中的资源检索方法支持模糊检索和精确字段匹配等高级检索功能。资源数据检索请求的指令格式中允许插入检索参数,容器云平台管理员可以在资源数据检索请求中输入检索参数,存储模块的查询单元在接收到资源数据检索请求后,即可使用检索参数与键值对索引的键进行匹配,以筛选出特定字段的资源信息与检索参数匹配的资源数据。
具体来说,检索参数可以是“某个资源信息”的形式(比如“Pod”),也可以是“某个字段为某个资源信息”的形式(比如“resourceType=Pod”)。如果检索参数是“Pod”,那么只要键值对索引的键中包含P-o-d这一字母组合,那么该键值对索引就与检索参数匹配成功。如果检索参数是“resourceType=Pod”,那么只要键值对索引的键中与“resourceType”(即资源类别)字段相对应的部分包含P-o-d这一字母组合,那么该键值对索引就与检索参数匹配成功。进一步地,检索参数可以有多个,当资源数据检索请求的指令格式中插入的检索参数有多个时,与检索参数匹配成功的键值对索引需要同时与每个检索参数匹配成功。
在上述使用检索参数进行资源数据检索的过程中,如果某个键值对索引与检索参数匹配成功,则将该键值对索引对应的资源数据列为资源数据检索结果的一项。进一步地,在将键值对索引与检索参数进行匹配的过程中,如果出现多个键值对索引同时与检索参数匹配成功的情况,则将这些键值对索引对应的资源数据全部列入资源数据检索结果。
此外,本申请实施例中的资源检索方法还支持分页和排序等功能。资源数据检索请求的指令格式中还允许插入排序参数和分页参数中的至少一种,容器云平台管理员可以在资源数据检索请求中输入排序参数和分页参数中的至少一种,存储模块的查询单元在接收到资源数据检索请求后,可以根据排序参数,对资源数据检索结果按照指定字段的资源信息进行排序,还可以根据分页参数,对资源数据检索结果按照指定行数进行分页,并按照页码对资源数据检索结果进行筛选,即将指定页码的页面中的全部资源数据作为最终的资源数据检索结果进行反馈。
具体来说,排序参数可以是“某个字段”和“排序类型”的形式(比如“resourceType”和“up”),分页参数可以是“每页资源数据量为某个数字”和“页码为某个数字”的形式(比如“items=500”和“page=10”)。如果排序参数是“resourceType”和“up”,那么就将资源数据检索结果按照resourceType字段记载的资源信息进行升序(up)排列。如果分页参数是“items=500”和“page=10”,那么就将资源数据检索结果按照每页500项资源数据进行分页,并将分页处理后第10页中的全部资源数据作为最终的资源数据检索结果进行反馈。
应当理解,资源数据检索请求的指令格式中可以同时插入前述的检索参数、排序参数、分页参数中的多项,本申请实施例对此不做限定。
步骤S102b、响应于资源数据检索请求所指向的资源对象的类型不属于预设类型,通过容器云平台统一接口对资源对象对应的资源数据进行检索。
如果资源数据检索请求所指向的资源对象的类型不属于预设类型,那么仍需访问容器云平台统一接口,来对资源对象对应的资源数据进行检索。具体可以由代理分发模块的分发单元通过反向代理的方式将资源数据检索请求直接转发至容器云平台统一接口,并且从容器云平台统一接口接收资源数据检索结果,再将资源数据检索结果返回给代理分发模块的代理单元,进而返回给客户端。
需要特别说明的是,在本申请实施例中,存储器中存储的资源数据是由预设类型的资源对象对应的资源文件中预设字段记载的资源信息处理后得到的。因此,要对不属于预设类型的资源对象对应的资源数据进行检索,仍需访问容器云平台统一接口。但存储器中存储的资源数据并不包含预设类型的资源对象对应的资源文件中不属于预设字段的资源信息。也就是说,如果容器云平台管理员要获取预设类型的资源对象对应的资源文件中不属于预设字段的资源信息,仅仅对存储器中存储的资源数据进行检索是不够的。
为了解决这一问题,一种可能的实现方式是,容器云平台管理员预先将预设类型的资源对象对应的资源文件中所有字段都选作预设字段,从而让存储器中存储的资源数据包含预设类型的资源对象对应的资源文件中所有字段的资源信息。另一种可能的实现方式是,在代理分发模块的分发单元确定资源数据检索请求所指向的资源对象的类型属于预设类型之后,进一步识别资源数据检索请求所指向的资源信息是否属于预设字段,如果不属于预设字段,仍需访问容器云平台统一接口。
特别地,在代理分发模块的分发单元确定资源数据检索请求所指向的资源对象的类型属于预设类型之后,如果资源数据检索请求所指向的资源信息中的一部分属于预设字段,另一部分不属于预设字段,那么需要对资源数据检索请求进行拆分,得到指向属于预设字段的资源信息的资源数据检索请求A和指向不属于预设字段的资源信息的资源数据检索请求B,并将资源数据检索请求A发送给存储模块,根据资源数据检索请求B访问容器云平台统一接口。之后将资源数据检索请求A和资源数据检索请求B分别对应的资源数据检索结果进行汇总,即可得到资源数据检索请求对应的全部的资源数据检索结果。
综上所述,本申请提供的基于容器云平台统一接口的资源数据检索技术中,当接收到资源数据检索请求时,对资源数据检索请求所指向的资源对象的类型是否属于预设类型进行判断,如果资源数据检索请求所指向的资源对象的类型属于预设类型,则使用预先建立的键值对索引对预先存储的资源数据进行检索;如果资源数据检索请求所指向的资源对象的类型不属于预设类型,则通过容器云平台统一接口对资源对象对应的资源数据进行检索。籍此,预先存储了预设类型的资源对象对应的资源数据,并且为资源数据建立了键值对索引,用于提升对资源数据的检索速度,同时兼顾对不属于预设类型的资源对象对应的资源数据进行检索的需求。
需要说明的是,在云原生场景下,容器云平台中的资源对象对应的资源文件中记载的资源信息会经常发生变化,因此在将预设类型的资源对象对应的资源数据存入存储器后,本申请实施例中的监听模块仍需要长期调用容器云平台统一接口的监听接口对资源对象变化事件进行监听,并根据资源对象变化事件对存储器中存储的资源数据进行更新。也就是说,通过容器云平台统一接口对预设类型的资源对象对应的资源事件进行监听,响应于监听到预设类型的资源对象对应的资源事件,根据资源事件,对预设类型的资源对象对应的资源数据进行更新。需要说明的是,监听接口支持快速、高效的资源对象变化事件通知,因此可以实现对资源数据的实时更新。
也就是说,容器云平台管理员在使用资源文件操作请求对预设类型的资源对象对应的资源文件进行相应操作之后,既会让容器云平台中的该资源对象发生变化,还会让容器云平台产生该资源对象对应的资源事件,进而更新存储器中存储的该资源对象对应的资源数据。
需要特别说明的是,在云原生场景下,容器云平台可以使用Kubernetes系统,也可以使用其它的容器编排系统,而不同系统的容器云平台统一接口所支持的请求语句、请求语句的语法结构等存在区别,比如说Kubernetes系统的API-Server组件不支持“{}”等特殊字符。
为了让本申请实施例所提出的基于容器云平台统一接口的资源数据检索技术能够兼容各种系统,本申请实施例中的代理分发模块从客户端接收到任意语法结构的资源数据检索请求或者资源文件操作请求后,即将该请求转换为通用的编码格式(比如base64),以便将该请求发送至存储模块或者使用该请求访问容器云平台统一接口。
此外,如果代理分发模块从客户端接收到请求语句的长度超出最大长度限制,本申请实施例还可以对请求语句进行切片处理,将请求语句分割为多个部分,并按照前后顺序进行编号,存储模块和容器云平台统一接口可以将多个切片按照编号顺序进行拼接,还原出请求语句。
籍此,使得本申请实施例所提出的基于容器云平台统一接口的资源数据检索技术能够兼容各种系统,容器云平台管理员可以使用任意语法结构的请求对容器云平台中的资源对象进行相应操作。
基于前述说明可知,在使用多个容器云平台场景下,现有的容器云平台统一接口没有提供有效的数据聚合方案,每个容器云平台统一接口分别用于对各自平台的资源对象进行操作,为了解决这些问题,可以将本申请实施例所提出的基于容器云平台统一接口的资源数据检索技术应用于多个容器云平台的场景。
图6为根据本申请的一些实施例提供的多容器云平台场景下对资源数据进行预先存储的逻辑示意图;图7为根据本申请的一些实施例提供的多容器云平台场景下发送操作请求的逻辑示意图;图8为根据本申请的一些实施例提供的多容器云平台场景下接收资源数据检索结果的逻辑示意图。
考虑到不同容器云平台之间的网络存在波动,本申请实施例为每个容器云平台独立设置了各自的监听模块,并为多个容器云平台这一整体设置了统一的存储模块、存储器和代理分发模块。监听模块用于分别获取每个容器云平台中预设类型的资源对象对应的资源文件中预设字段记载的资源信息,并向对应的存储模块发送存储请求。存储模块用于按照存储器的存储格式对存储请求中预设类型的资源对象对应的资源文件中预设字段记载的资源信息进行处理,以生成对应的资源数据并将资源数据存入的存储器中。此外,存储模块还需要根据发出存储请求的监听模块,为每个资源数据打上注解,用于标注资源数据来自的容器云平台。
容器云平台管理员可以使用同一个客户端对任意容器云平台中的资源对象对应的资源数据进行检索。具体来说,只需要在输入资源数据检索请求时,将注解作为其中的一个指令参数,客户端将资源数据检索请求发送给代理分发模块,由代理分发模块将资源数据检索请求发送给存储模块,存储模块先根据注解对存储器中存储的资源数据进行筛选,再根据资源数据检索请求返回资源数据检索结果。
示例性系统
图9为根据本申请的一些实施例提供的一种基于容器云平台统一接口的资源检索系统的结构示意图;如图9所示,该基于容器云平台统一接口的资源检索系统包括:
类型判断单元901,配置为响应于接收到资源数据检索请求,判断资源数据检索请求所指向的资源对象的类型是否属于预设类型;
第一检索单元902,配置为响应于资源检索请求所指向的资源对象的类型属于预设类型,使用预先建立的键值对索引对预先存储的资源数据进行检索;
第二检索单元903,配置为响应于资源数据检索请求所指向的资源对象的类型不属于预设类型,通过容器云平台统一接口对资源对象对应的资源数据进行检索。
本申请实施例提供的基于容器云平台统一接口的资源检索系统能够实现上述任一实施例的基于容器云平台统一接口的资源检索方法的步骤、流程,并达到相同的技术效果,在此不再一一赘述。
示例性设备
图10为根据本申请的一些实施例提供的电子设备的结构示意图;如图10所示,该电子设备包括:
一个或多个处理器1001;
计算机可读介质,可以配置为存储一个或多个程序1002,一个或多个处理器1001执行一个或多个程序1002时,实现如下步骤:响应于接收到资源数据检索请求,判断资源数据检索请求所指向的资源对象的类型是否属于预设类型;响应于资源数据检索请求所指向的资源对象的类型属于预设类型,使用预先建立的键值对索引对预先存储的资源数据进行检索;响应于资源数据检索请求所指向的资源对象的类型不属于预设类型,通过容器云平台统一接口对资源对象对应的资源数据进行检索。
图11为根据本申请的一些实施例提供的电子设备的硬件结构;如图11所示,该电子设备的硬件结构可以包括:处理器1101、通信接口1102、计算机可读介质1103和通信总线1104。
其中,处理器1101、通信接口1102、计算机可读存储介质1103通过通信总线1104完成相互间的通信。
可选地,通信接口1102可以为通信模块的接口,如GSM模块的接口。
其中,处理器1101具体可以配置为:响应于接收到资源数据检索请求,判断资源数据检索请求所指向的资源对象的类型是否属于预设类型;响应于资源数据检索请求所指向的资源对象的类型属于预设类型,使用预先建立的键值对索引对预先存储的资源数据进行检索;响应于资源数据检索请求所指向的资源对象的类型不属于预设类型,通过容器云平台统一接口对资源对象对应的资源数据进行检索。
处理器1101可以是通用处理器,包括中央处理器(central processing unit,简称CPU)、网络处理器(Network Processor,简称NP)等,还可以是数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其它可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
本申请实施例的电子设备以多种形式存在,包括但不限于:
(1)移动通信设备:这类设备的特点是具备移动通信功能,并且以提供话音、数据通信为主要目标。这类终端包括:智能手机(例如:iPhone)、多媒体手机、功能性手机,以及低端手机等。
(2)超移动个人计算机设备:这类设备属于个人计算机的范畴,有计算和处理功能,一般也具备移动上网特性。这类终端包括:PDA、MID和UMPC设备等,例如iPad。
(3)便携式娱乐设备:这类设备可以显示和播放多媒体内容。该类设备包括:音频、视频播放器(例如:iPod),掌上游戏机,电子书,以及智能玩具和便携式车载导航设备。
(4)服务器:提供计算服务的设备,服务器的构成包括处理器、硬盘、内存、系统总线等,服务器和通用的计算机架构类似,但是由于需要提供高可靠的服务,因此在处理能力、稳定性、可靠性、安全性、可扩展性、可管理性等方面要求较高。
(5)其它具有数据交互功能的电子装置。
需要指出,根据实施的需要,可将本申请实施例中描述的各个部件/步骤拆分为更多部件/步骤,也可以将两个或多个部件/步骤或者部件/步骤的部分操作组合成新的部件/步骤,以实现本申请实施例的目的。
上述根据本申请实施例的方法可在硬件、固件中实现,或者被实现为可存储在记录介质(诸如CD ROM、RAM、软盘、硬盘或磁光盘)中的软件或计算机代码,或者被实现通过网络下载的原始存储在远程记录介质或非暂时机器存储介质中并将被存储在本地记录介质中的计算机代码,从而在此描述的方法可被存储在使用通用计算机、专用处理器或者可编程或专用硬件(诸如ASIC或FPGA)的记录介质上的这样的软件处理。可以理解,计算机、处理器、微处理器控制器或可编程硬件包括可存储或接收软件或计算机代码的存储组件(例如,RAM、ROM、闪存等),当软件或计算机代码被计算机、处理器或硬件访问且执行时,实现在此描述的基于容器云平台统一接口的资源检索方法。此外,当通用计算机访问用于实现在此示出的方法的代码时,代码的执行将通用计算机转换为用于执行在此示出的方法的专用计算机。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及方法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和涉及约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请实施例的范围。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其它实施例的不同之处。尤其,对于设备及系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。
以上所描述得设备及系统实施例仅仅是示意性的,其中作为分离不见说明的单元可以使或者也可以不是物理上分开的,作为单元提示的不见可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述仅为本申请的优选实施例,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

Claims (10)

1.一种基于容器云平台统一接口的资源检索方法,其特征在于,包括:
响应于接收到资源数据检索请求,判断所述资源数据检索请求所指向的资源对象的类型是否属于预设类型;
响应于所述资源数据检索请求所指向的资源对象的类型属于所述预设类型,使用预先建立的键值对索引对预先存储的资源数据进行检索;
响应于所述资源数据检索请求所指向的资源对象的类型不属于所述预设类型,通过容器云平台统一接口对所述资源对象对应的资源数据进行检索。
2.根据权利要求1所述的基于容器云平台统一接口的资源检索方法,其特征在于,所述资源数据通过以下步骤存储:
通过所述容器云平台统一接口对所述预设类型的资源对象对应的资源文件中记载的全部资源信息进行抓取;
对所述预设类型的资源对象对应的资源文件中记载的全部资源信息进行筛选和处理,以生成所述预设类型的资源对象对应的资源数据并进行存储。
3.根据权利要求2所述的基于容器云平台统一接口的资源检索方法,其特征在于,所述键值对索引通过以下步骤建立:
从所述资源数据中选取至少一个字段的资源信息,以生成所述键值对索引的键;
将所述资源数据的存储标识作为所述键值对索引的值。
4.根据权利要求3所述的基于容器云平台统一接口的资源检索方法,其特征在于,所述资源数据检索请求中包含检索参数;
相应地,所述使用预先建立的键值对索引对预先存储的资源数据进行检索,包括:
使用所述检索参数与所述键值对索引的键进行匹配,以筛选出特定字段的资源信息与所述检索参数匹配的资源数据。
5.根据权利要求4所述的基于容器云平台统一接口的资源检索方法,其特征在于,所述资源数据检索请求中还包含排序参数和分页参数,所述方法还包括:
根据所述排序参数,对资源数据检索结果按照指定字段的资源信息进行排序;
根据所述分页参数,对资源数据检索结果按照指定行数进行分页。
6.根据权利要求2-5中任一项所述的基于容器云平台统一接口的资源检索方法,其特征在于,还包括:
通过所述容器云平台统一接口对所述预设类型的资源对象对应的资源事件进行监听;
响应于监听到所述预设类型的资源对象对应的资源事件,根据所述资源事件,对所述预设类型的资源对象对应的资源数据进行更新。
7.根据权利要求1所述的基于容器云平台统一接口的资源检索方法,其特征在于,还包括:
响应于接收到资源文件操作请求,通过所述容器云平台统一接口对所述资源文件进行操作。
8.一种基于容器云平台统一接口的资源检索系统,其特征在于,包括:
类型判断单元,配置为响应于接收到资源数据检索请求,判断所述资源数据检索请求所指向的资源对象的类型是否属于预设类型;
第一检索单元,配置为响应于所述资源检索请求所指向的资源对象的类型属于所述预设类型,使用预先建立的键值对索引对预先存储的资源数据进行检索;
第二检索单元,配置为响应于所述资源数据检索请求所指向的资源对象的类型不属于所述预设类型,通过容器云平台统一接口对所述资源对象对应的资源数据进行检索。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序为如权利要求1-7任一所述的基于容器云平台统一接口的资源检索方法。
10.一种电子设备,其特征在于,包括:存储器、处理器、以及存储在所述存储器中并可在所述处理器上运行的程序,所述处理器执行所述程序时实现如权利要求1-7任一所述的基于容器云平台统一接口的资源检索方法。
CN202210727379.0A 2022-06-25 2022-06-25 一种基于容器云平台统一接口的资源检索方法和系统 Active CN115114361B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210727379.0A CN115114361B (zh) 2022-06-25 2022-06-25 一种基于容器云平台统一接口的资源检索方法和系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210727379.0A CN115114361B (zh) 2022-06-25 2022-06-25 一种基于容器云平台统一接口的资源检索方法和系统

Publications (2)

Publication Number Publication Date
CN115114361A true CN115114361A (zh) 2022-09-27
CN115114361B CN115114361B (zh) 2023-07-07

Family

ID=83329145

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210727379.0A Active CN115114361B (zh) 2022-06-25 2022-06-25 一种基于容器云平台统一接口的资源检索方法和系统

Country Status (1)

Country Link
CN (1) CN115114361B (zh)

Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106611000A (zh) * 2015-10-26 2017-05-03 北京神州泰岳软件股份有限公司 一种检索资源对象的方法、装置和系统
CN106815324A (zh) * 2016-12-27 2017-06-09 甘肃万维信息技术有限责任公司 一种基于云计算对象存储快速检索系统
CN110245170A (zh) * 2019-04-19 2019-09-17 联通系统集成有限公司 数据处理方法及系统
CN110716994A (zh) * 2019-04-24 2020-01-21 中国科学院地理科学与资源研究所 一种支持异构地理数据资源检索的检索方法及装置
CN111405055A (zh) * 2020-03-23 2020-07-10 北京达佳互联信息技术有限公司 多集群管理方法、系统、服务器、存储介质
CN111782766A (zh) * 2020-06-30 2020-10-16 福建健康之路信息技术有限公司 一种通过关键字检索Kubernetes集群中所有资源的方法和系统
CN111800458A (zh) * 2020-05-22 2020-10-20 浙商银行股份有限公司 一种Kubernetes容器云平台的动态负载均衡方法及系统
CN112286903A (zh) * 2020-09-27 2021-01-29 苏州浪潮智能科技有限公司 一种基于容器化的关系型数据库优化方法及装置
CN112835966A (zh) * 2019-11-22 2021-05-25 北京金山云网络技术有限公司 数据查询方法、装置以及电子设备
CN113312345A (zh) * 2020-02-26 2021-08-27 中科星图股份有限公司 结合Kubernetes和Ceph的遥感数据存储系统、存储及检索方法
CN113961346A (zh) * 2021-10-26 2022-01-21 云知声智能科技股份有限公司 数据缓存的管理与调度方法、装置、电子设备和存储介质
CN114610449A (zh) * 2022-03-23 2022-06-10 上海道客网络科技有限公司 基于统一请求入口的多集群资源操作方法和系统

Patent Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106611000A (zh) * 2015-10-26 2017-05-03 北京神州泰岳软件股份有限公司 一种检索资源对象的方法、装置和系统
CN106815324A (zh) * 2016-12-27 2017-06-09 甘肃万维信息技术有限责任公司 一种基于云计算对象存储快速检索系统
CN110245170A (zh) * 2019-04-19 2019-09-17 联通系统集成有限公司 数据处理方法及系统
CN110716994A (zh) * 2019-04-24 2020-01-21 中国科学院地理科学与资源研究所 一种支持异构地理数据资源检索的检索方法及装置
CN112835966A (zh) * 2019-11-22 2021-05-25 北京金山云网络技术有限公司 数据查询方法、装置以及电子设备
CN113312345A (zh) * 2020-02-26 2021-08-27 中科星图股份有限公司 结合Kubernetes和Ceph的遥感数据存储系统、存储及检索方法
CN111405055A (zh) * 2020-03-23 2020-07-10 北京达佳互联信息技术有限公司 多集群管理方法、系统、服务器、存储介质
CN111800458A (zh) * 2020-05-22 2020-10-20 浙商银行股份有限公司 一种Kubernetes容器云平台的动态负载均衡方法及系统
CN111782766A (zh) * 2020-06-30 2020-10-16 福建健康之路信息技术有限公司 一种通过关键字检索Kubernetes集群中所有资源的方法和系统
CN112286903A (zh) * 2020-09-27 2021-01-29 苏州浪潮智能科技有限公司 一种基于容器化的关系型数据库优化方法及装置
CN113961346A (zh) * 2021-10-26 2022-01-21 云知声智能科技股份有限公司 数据缓存的管理与调度方法、装置、电子设备和存储介质
CN114610449A (zh) * 2022-03-23 2022-06-10 上海道客网络科技有限公司 基于统一请求入口的多集群资源操作方法和系统

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
李倩;: "基于云平台的城市轨道交通检测数据系统构建研究与应用", 现代城市轨道交通, no. 02, pages 83 - 88 *
翟雅荣;于金刚;: "基于Filebeat自动收集Kubernetes日志的分析系统", 计算机系统应用, no. 09, pages 83 - 88 *

Also Published As

Publication number Publication date
CN115114361B (zh) 2023-07-07

Similar Documents

Publication Publication Date Title
WO2017166644A1 (zh) 一种数据采集方法和系统
US20120290555A1 (en) Method, System and Apparatus of Hybrid Federated Search
CN108572970B (zh) 一种结构化数据的处理方法和分布式处理系统
CN113839977A (zh) 消息推送方法、装置、计算机设备及存储介质
CN107103011B (zh) 终端数据搜索的实现方法和装置
CN109871498B (zh) 后端接口响应方法、装置、电子设备及存储介质
CN111740868A (zh) 告警数据的处理方法和装置及存储介质
US11882154B2 (en) Template representation of security resources
US10298656B2 (en) Extending representational state transfer application program interface (REST API) functionality
CN112527504A (zh) 多租户的资源配额管理方法、装置、计算机设备
CN111221851A (zh) 一种基于Lucene的海量数据查询、存储的方法和装置
CN104503983A (zh) 为搜索引擎提供网站认证数据的方法及装置
CN112346758B (zh) 一种数字基建业务更新平台、更新方法及电子设备
CN114610449B (zh) 基于统一请求入口的多集群资源操作方法和系统
CN110460673B (zh) 一种服务地址获取方法、装置及设备
CN106156210B (zh) 一种确定应用标识匹配列表的方法和装置
CN115114361B (zh) 一种基于容器云平台统一接口的资源检索方法和系统
CN112738153B (zh) 业务系统中的网关选择方法、系统、装置、服务器及介质
CN114637969A (zh) 目标对象的鉴权方法及装置
CN111988195B (zh) 用于分组测试的应答方案确定方法、装置、设备及介质
US11144593B2 (en) Indexing structure with size bucket indexes
US8914408B2 (en) Detecting mobile operator networks
CN110737662A (zh) 一种数据分析方法、装置、服务器及计算机存储介质
CN113190236B (zh) Hql脚本校验方法及装置
CN115391293B (zh) 文件获取方法、装置、服务器及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant