CN109729121A - 一种云存储系统及用于云存储系统中实现自定义数据处理的方法 - Google Patents

一种云存储系统及用于云存储系统中实现自定义数据处理的方法 Download PDF

Info

Publication number
CN109729121A
CN109729121A CN201711045693.6A CN201711045693A CN109729121A CN 109729121 A CN109729121 A CN 109729121A CN 201711045693 A CN201711045693 A CN 201711045693A CN 109729121 A CN109729121 A CN 109729121A
Authority
CN
China
Prior art keywords
custom function
user
cloud storage
storage system
processing
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
CN201711045693.6A
Other languages
English (en)
Other versions
CN109729121B (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.)
Alibaba Group Holding Ltd
Original Assignee
Alibaba Group Holding 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 Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Priority to CN201711045693.6A priority Critical patent/CN109729121B/zh
Priority to PCT/CN2018/111174 priority patent/WO2019085780A1/zh
Publication of CN109729121A publication Critical patent/CN109729121A/zh
Application granted granted Critical
Publication of CN109729121B publication Critical patent/CN109729121B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本申请公开了一种云存储系统,其包括:请求接入模块、云存储系统控制模块以及计算实例管理模块;其中,所述请求接入模块,用于为云存储系统控制模块和/或计算实例管理模块提供接口;所述系统控制模块,用于实现自定义函数管理;所述计算实例管理模块,用于对自定义函数实例进行管理;其中,所述自定义函数用于实现用户自定义对云存储系统中数据的处理。使得用户可以根据需要编写自定义的函数,在使用时传入自定义的参数,大大提升了自定义函数的灵活性。本申请另外提供在云存储系统注册、修改、执行自定义函数实例的方法。

Description

一种云存储系统及用于云存储系统中实现自定义数据处理的 方法
技术领域
本申请涉及云存储领域,具体涉及一种云存储系统。本申请同时涉及一种在云存储系统中用于云存储系统中实现自定义数据处理的方法、用于云存储系统中执行自定义函数程序的方法。
背景技术
随着计算机科学的发展,云存储技术被越来越广泛地使用。
在云存储系统中,很多时候用户需要对文件进行定制化的加工,当前有两种方法,第一种方法是将文件加工好上传到云存储,或者下载文件到本地后再做加工,这种方案的缺点是需要维护本地的处理服务器,另外加工过程与云存储脱节,不能很好的融合进云存储提供的文件url(Uniform Resource Locator,统一资源定位器)中;第二种方法是提需求到云存储服务商,由其进行评估、开发以及上线,缺点是流程太长,而且是定制化的功能,需求可能不被云存储服务商接受,方案也不一定能够符合用户的要求。因此如何托管用户的定制功能是云存储系统的一种关键和迫切的技术方案。
生态方面,第三方产商有更多的基于云存储的计算技术,比如人脸识别、鉴黄等,迫切需要云存储系统提供一个平台,将他们的技术和服务接入进来,通过云存储系统模块提供给用户。
AWS Lambda技术提供了一种解决上述问题的方法,该方法的大致原理是:先编写一定规范的代码(一般使用java、python等语言),提供规定的函数实现,将其上传托管在Lambda上;由于S3提供了事件通知功能,在上传文件或者删除文件的时候,根据配置自动触发Lambda,并将事件的基本信息比如bucket、object等信息传递过去,Lambda即可执行代码,从而执行用户自定义的逻辑。但是,Lambda是事件通知的形式,通知的消息体都是自动生成,用户不能传入自定义的参数,灵活性较差。
发明内容
本申请提供一种云存储系统,以解决现有技术的上述的问题。本申请另外提供在云存储系统注册、修改、执行自定义函数实例的方法。
本申请提供的一种云存储系统,其包括:请求接入模块、云存储系统控制模块以及计算实例管理模块;其中,
所述请求接入模块,用于为云存储系统控制模块和/或计算实例管理模块提供接口;
所述系统控制模块,用于实现自定义函数管理;
所述计算实例管理模块,用于对自定义函数实例进行管理;
其中,所述自定义函数用于实现用户自定义对云存储系统中数据的处理。
可选的,所述云存储系统控制模块包括:自定义函数注册单元和自定义函数操作单元;其中,
所述自定义函数注册单元,用于根据所述请求接入模块的接口传来的用户注册请求生成注册信息,并返回注册信息;
所述自定义函数操作单元,用于接收并根据用户指令对已注册自定义函数的相关信息进行操作。
可选的,所述自定义函数操作单元包括删除单元、查询单元及列举单元中的至少一个;
所述删除单元用于删除自定义函数的注册信息;
所述查询单元用于根据用户指令查询自定义函数的注册信息;
所述列举单元用于列举被查询对象注册的满足设定条件的自定义函数的注册信息。
其中,所述自定义函数的注册信息包括下列至少一个:自定义函数名称、创建时间、拥有者、已启动的实例名称及实例个数。
可选的,所述计算实例管理模块包括镜像管理单元和实例管理单元;
所述镜像管理单元,用于生成并上传自定义函数镜像,并根据指令实现对所述自定义函数镜像的操作;
所述实例管理单元,用于根据用户上传的操作参数结合自定义函数镜像创建计算实例,并根据用户指令实现对计算实例的管理;其中,
所述自定义函数镜像为包含用户自定义数据处理程序命令的数据包。
可选的,所述镜像管理单元包括镜像构建单元和镜像查询单元;其中,
所述镜像构建单元用于生成自定义数据处理程序的命令集;
所述镜像查询单元用于自定义函数镜像信息的查询;
所述自定义函数镜像信息包括下列中的至少一个:自定义函数镜像名称、版本、各个版本的创建时间。
可选的,所述实例管理单元包括启动单元、停止单元、更新单元及查询单元中的至少一个;其中,
所述启动单元用于启动自定义函数实例;
所述停止单元用于停止已启动的自定义函数实例;
所述更新单元用于更新自定义函数实例;
所述查询单元用于查看自定义函数实例的信息。
可选的,
所述查询单元包括实例信息查询单元、实例资源使用查询单元及实例日志查询单元中的至少一个;
所述实例信息查询单元用于查看自定义函数实例的实例信息;
所述实例资源使用查询单元用于查看自定义函数实例的资源使用信息;
所述实例日志查询单元用于查看自定义函数程序的日志信息;
其中,
所述实例信息包括下列中的至少一个:自定义函数实例的镜像版本、实例数目、实例配置、启动时间;
所述资源使用信息包括自定义函数实例的CPU和内存资源使用率。
可选的,包括权限管理单元,用于管理自定义函数程序的使用权限。
此外,本申请还提供一种用于云存储系统中实现自定义数据处理的方法,其包括:
接收用户注册请求,并生成用于自定义数据处理的自定义函数注册信息;
接收已注册自定义函数的自定义数据处理程序的命令集,并基于所述自定义数据处理程序的命令集构建自定义函数镜像;
根据所述自定义函数镜像,分配并启动自定义函数实例。
可选的,所述接收用户注册请求,并生成用于自定义数据处理的自定义函数注册信息,包括:
根据用户注册请求,生成并存储自定义数据处理的自定义函数的注册信息;
向用户返回所述的自定义函数的注册信息;
其中,所述注册信息包括下列至少一个:自定义函数名称、创建时间、拥有者、已启动的实例名称及实例个数。
可选的,所述接收生成的已注册自定义函数的自定义数据处理程序的命令集,并基于所述自定义数据处理程序的命令集构建自定义函数镜像包括:
接收已注册自定义函数的自定义数据处理程序的命令集;
接收或生成命令集的配置文件;
接收或生成构建自定义函数的镜像的脚本文件;
执行所述脚本文件,基于所述自定义数据处理程序的命令集和配置文件生成自定义函数镜像。
此外,本申请还提供一种用于云存储系统中执行自定义函数程序的方法,其包括:
接收用户对数据进行处理的请求;
解析所述请求,获得待处理数据、自定义函数信息及处理参数;依据所述自定义函数信息调用相应的自定义函数;
根据所述处理参数执行所述自定义函数,通过所述自定义函数对所述待处理数据进行处理;
向用户返回处理结果。
可选的,所述用户为自定义函数管理权限拥有者之外的用户。
此外,本申请还提供一种用于云存储系统中执行自定义函数程序的方法,其包括:
请求接入模块接收用户对数据进行处理的请求,将其转发至处理引擎中;
所述处理引擎生成任务标识返回至用户;所述处理引擎解析所述请求,获得待处理数据、自定义函数信息及处理参数,将其转发至计算实例管理模块;
计算实例管理模块依据自定义函数信息调用相应自定义函数,根据所述处理参数执行所述自定义函数,通过所述自定义函数对所述待处理数据进行处理,并将处理结果返回至所述处理引擎中;
所述处理引擎根据用户提交的任务标识反馈处理进度或根据接收到的处理结果向用户转发所述处理结果。
可选的,所述用户为自定义函数管理权限拥有者之外的用户。
此外,本申请还提供一种用于云存储系统中执行自定义函数程序的方法,其包括:
接收用户对数据进行处理的请求,并将其转发至处理引擎中;
接收处理引擎返回的处理进度或处理引擎接收自计算实例管理模块的处理结果而向用户转发的所述处理结果;
其中,所述处理结果为自定义函数执行所述用户对数据进行处理请求中的处理参数及待处理数据的结果。
此外,本申请还提供一种用于云存储系统中执行自定义函数程序的方法,其包括:
接收请求接入模块发送的用户对数据进行处理的请求;
基于所述请求生成任务标识并反馈至所述请求接入模块;
解析所述请求,获得待处理数据、自定义函数信息及处理参数,并将其转发至计算实例管理模块;
接收计算实例管理模块返回的、自定义函数执行所述用户对数据进行处理请求中的处理参数及待处理数据而生成的处理结果;
根据用户提交的任务标识反馈处理进度或根据接收自计算实例管理模块的处理结果向用户转发的所述处理结果。
此外,本申请还提供一种用于云存储系统中执行自定义函数程序的方法,其包括:
接收处理引擎解析用户对数据处理的请求而获得的待处理数据、自定义函数信息及处理参数;
依据自定义函数信息调用相应自定义函数;
根据所述处理参数执行所述自定义函数,通过所述自定义函数对所述待处理数据进行处理,并将处理结果返回至所述处理引擎中。
此外,本申请还提供一种用于云存储系统中实现自定义数据处理的方法,其包括:
获取自定义函数,所述自定义函数用于实现用户自定义对云存储系统中数据的处理;
生成所述自定义函数的自定义数据处理程序的命令集,并基于所述自定义数据处理程序的命令集构建自定义函数镜像;
根据自定义函数镜像,分配并启动自定义函数实例。
与现有技术相比,本申请的其中一个方面具有以下优点:
本申请的一个方面为用户提供自定义函数注册和使用,在计算实例模块为自定义函数镜像分配计算实例,使自定义函数程序得以运行,这使得用户可以根据需要编写自定义的函数,在使用时传入自定义的参数,大大提升了自定义函数的灵活性。本申请还实现了完整的自定义函数权限控制,允许接入第三方的技术,形成基于云存储的自定义函数生态圈,扩大自定义函数的使用范围。
附图说明
图1为本申请的支持云存储系统的实施例的原理示意图。
图2为本申请的云存储系统的实施例的控制流架构图。
图3为在云存储系统中注册自定义函数的方法的流程图。
图4为云存储系统自定义函数控制流时序图。
图5为在云存储系统中同步执行自定义函数程序的方法的流程图。
图6为在云存储系统同步执行自定义函数程序的时序图。
图7为在云存储系统中异步执行自定义函数程序的方法的流程图。
图8为在云存储系统中异步执行自定义函数程序的方法的时序图。
具体实施方式
在下面的描述中阐述了很多具体细节以便于充分理解本申请。但是本申请能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本申请内涵的情况下做类似推广,因此本申请不受下面公开的具体实施的限制。
本申请提供一种云存储系统,包括:请求接入模块、云存储系统控制模块以及计算实例管理模块;其中,请求接入模块用于为云存储系统控制模块和/或计算实例管理模块提供接口;系统控制模块用于实现自定义函数管理;计算实例管理模块用于对自定义函数实例进行管理;其中,所述自定义函数所述自定义函数用于实现用户自定义对云存储系统中数据的处理。以下结合具体实施例进行说明。
如图1所示,其为本申请的一种云存储系统的实施例的原理示意图。本实施例中,所述云存储系统包括云存储子系统和实例管理模块(也称为计算实例管理模块),云存储子系统用于实现自定义函数的管理以及调用;计算实例管理模块用于实现自定义函数实例的管理及执行。根据每个单元功能的不同,可以将这些单元分为两个部分:一部分是控制流操作,目的是管理自定义函数,包括自定义函数的注册、上传,实例的启停,状态和日志的查看等等功能;一部分是数据流操作,用户通过文件的上传下载接口调用自定义函数,获得期望的处理。
其中API Gateway是“云网关”,它为所述云存储子系统操作自定义函数计算实例提供接口,这些接口又被称为“容器服务接口”,所述云存储子系统与所述计算实例管理模块通过http协议通信,使用POST方法。云存储子系统为请求的发起方,计算实例为请求的接收方。所述云存储子系统还提供下载接口,便于云存储子系统与计算实例之间传递文件。
请参考图2,其为本申请的云存储系统的实施例的控制流架构图。本实施例的云存储子系统包括请求接入模块和系统控制模块。
其中,所述请求接入模块为用户提供对系统控制模块和/或计算实例管理模块操作的接口;与用户进行交互,并将用户的命令转发给目的模块;
本实施例中,所述系统控制模块包括自定义函数注册单元和自定义函数操作单元。所述自定义函数注册单元用于完成用户对自定义函数的注册,生成注册信息,即用于根据所述请求接入模块的接口传来的用户注册请求生成注册信息,并返回注册信息。所述注册信息包括自定义函数名称、创建时间及拥有者中的至少一个;如果注册的自定义函数已经可以使用,则还包括已启动的实例名称及个数。所述创建时间,是指注册自定义函数的时间,一般在注册成功时将时间记录,作为创建时间;所述拥有者,一般指创建自定义函数并提供自定义函数镜像的个人或单位;所述已启动的实例名称,则是为该自定义函数所分配并启动的计算实例名称。
所述自定义函数操作单元,则是用于对已经注册的自定义函数进行管理操作,具体而言,用于接收并根据用户指令对已注册自定义函数的相关信息进行操作。本实施例中,操作单元包括删除单元、查询单元和列举单元中的至少一个。其中,删除单元,是指当一个自定义函数不再使用时,删除该自定义函数信息,并且将其所拥有的所有资源,比如计算实例、镜像等删除。例如,某用户对名称为Increse,拥有linuxOS实例以及镜像Mi的函数做删除操作,则该自定义的所有信息如注册时间、函数名称、拥有者等被删除;同时该函数所拥有的linuxOS实例以及镜像Mi也会被同时删除。
在自定义函数的使用过程中,用户还可能查询正在使用的自定义函数的信息,方便对计算实例进行更新。查询单元和列举单元则为用户提供了该功能,所述查询单元,是根据用户提供的信息查询与其相关的其他信息。例如,某用户a在2017年1月16日注册了一个自定义函数,名称为function,并分配了实例linuxOS。该用户可以通过提供2017年1月16日、function,linuxOS中的一项或几项信息,从而获得符合条件的自定义函数的其他信息;如果某用户注册了多个自定义函数,则可以使用列举单元,提供查找条件,列举单元则会返回符合所述查找条件的所有或特定自定义函数的信息。例如,某用户提供的查找条件是注册时间为2017年1月16日,则列举出2017年1月16日注册的自定义函数的信息,所述自定义函数可以是一条,也可以是多条,如果没有满足该信息的自定义函数,也可能是0条。
所述计算实例管理模块是对自定义函数实例及镜像进行管理及执行的模块。本实施例中,该模块分为两个单元,分别为实例管理单元和镜像管理单元。
所述实例管理单元,用于根据用户上传的操作参数结合自定义函数镜像创建计算实例,并根据用于指令实现对计算实例的管理,。所述计算实例,是指为运行自定义函数程序而提供的资源系统,自定义函数必须运行在操作系统平台上,所述操作系统(OperatingSystem,简称OS),是管理和控制计算机硬件与软件资源的计算机程序,是直接运行在“裸机”上的最基本的系统软件,任何其他软件都必须在操作系统的支持下才能运行。本申请中计算实例所使用的操作系统,可以是linux系统,也可以是Windows系统、UNIX系统或者其他系统,由于linux比较灵活和安全,本实施例采用linux为例作为说明每个计算实例的系统。
本实施例中,所述实例管理单元具体包括启动单元,停止单元,更新单元和查询单元中的至少一个。所述启动单元用于启动自定义函数实例;所述停止单元用于停止已启动的自定义函数实例;所述更新单元用于更新自定义函数实例;所述查询单元用于查看自定义函数实例的信息。
本实施例中,所述查询单元还可以具体包括实例信息查询单元、实例资源使用查询单元及实例日志查询单元中的至少一个。所述实例信息查询单元用于查看自定义函数实例的实例信息,包括自定义函数实例的镜像版本、实例数目、实例配置、启动时间;所述实例资源使用查询单元用于查看自定义函数实例的资源使用信息,包括自定义函数实例的CPU和内存资源使用率;所述实例日志查询单元用于查看自定义函数程序的日志信息;
所述镜像管理单元,用于生成并上传自定义函数镜像,并根据指令实现对所述自定义函数镜像的操作,即用于自定义函数镜像的构建和管理。其包括镜像构建单元和镜像查询单元。所述镜像构建单元用于生成自定义数据处理程序的命令集,并将该命令集上传至云存储系统,即用于自定义函数镜像的构建。所述自定义函数镜像是一个包含用户自定义数据处理程序的包,它指定了该处理程序运行方式,包的格式可以是zip,也可以是tar等其他格式。本实施例采用tar格式。
在用户上传自定义数据处理程序的命令集的程序包后,计算实例管理模块会根据用户上传的包构建一个自定义函数镜像。所述镜像查询单元用于自定义函数镜像信息的查询,所述镜像查询单元在所述请求接入模块留有接口,用户通过调用所述镜像信息查询接口查询自定义函数镜像信息。所述自定义函数镜像信息包括镜像的名称、版本以及各个版本的创建时间。通过所述计算实例管理模块,为用户提供了灵活的自定义函数执行环境。
本申请实施例的自定义函数云存储系统的控制流请求的处理流程如下:用户的自定义函数控制流请求经过云存储子系统请求接入模块处理后,首先转发到后端的云存储系统控制模块,在此模块中会记录自定义函数相关的注册信息,如自定义函数名称、拥有者、创建时间、实例个数等;注册信息写入成功后,云存储子系统会调用计算实例管理模块的接口,根据用户指定的资源类型,启动计算实例。该实例为用户的自定义函数程序提供计算和存储资源,用户的自定义函数程序会运行于该实例中。同时,云存储子系统还会根据用户的请求,调用计算实例管理模块的更新、删除、查看状态单元,对用户的自定义函数实例进行各种管理操作。
此外,本实施例的自定义函数云存储系统还提供了权限管理单元,为自定义函数程序的使用提供权限管理,扩大自定义函数程序的使用范围,提供给更多用户使用。
本申请上述实施例的技术方案为用户提供自定义函数注册和使用,在计算实例模块为自定义函数镜像分配计算实例,使自定义函数程序得以运行,这使得用户可以根据需要编写自定义的函数,在使用时传入自定义的参数,大大提升了自定义函数的灵活性。本申请还实现了完整的自定义函数权限控制,允许接入第三方的技术,形成基于云存储的自定义函数生态圈,扩大自定义函数的使用范围。
本申请还提供了一种用于云存储系统中实现自定义数据处理的方法,请参考图3,其为本申请的用于云存储系统中实现自定义数据处理的方法流程图,具体包括以下步骤:
S101:接收用户注册请求,并生成用于自定义数据处理的自定义函数注册信息。
只有在云存储系统中注册自定义函数后,云存储系统才能正确识别用户的自定义函数数据处理请求,并转发相应的请求到用户的自定义函数计算实例。
用户发送注册请求,通过云存储系统的请求接入模块提供的接口将所述注册请求转发至系统控制模块,系统控制模块生成自定义函数注册元数据信息,并将所述元数据信息存储,接着通过请求接入模块提供的接口向用户转发所述元数据信息其中,元数据信息包括名称、拥有者、创建时间、实例个数等。注册方式有很多种,可以通过终端命令的方式注册,也可以在网页或客户端中配置这些信息。通过注册,让云存储系统保存自定义函数的基础信息,以便在使用时准确识别该函数,注册自定义函数后,该自定义函数还无法立刻被使用,用户需要为该自定义函数上传镜像并启动计算实例。
S102:接收生成的已注册自定义函数的自定义数据处理程序的命令集,并基于所述自定义数据处理程序的命令集构建自定义函数镜像。
本步骤中,所述接收生成的已注册自定义函数的自定义数据处理程序的命令集,并基于所述自定义数据处理程序的命令集构建自定义函数镜像,构建自定义函数镜像包括:接收已注册自定义函数的自定义数据处理程序的命令集;接收或生成所述自定义函数的自定义数据处理程序的命令集的配置文件;接收或生成构建自定义函数的镜像的脚本文件;执行所述脚本文件,生成数自定义函数镜像。
具体而言,云存储系统包括上传镜像的接口,用户根据接口的要求将自定义函数镜像上传至计算实例管理模块中。所述计算实例管理模块会根据用户上传的包构建一个自定义函数镜像,所述自定义函数镜像是指具备可执行进行数据处理能力的程序。所述自定义函数镜像是包含自定义函数程序的包,不同的云存储系统可以对程序包的格式有不同的要求,可以在设计云存储系统时进行设定。本实施例中采用tar格式。
需要生成的文件如下:自定义函数.yaml、unzip、unzip.conf,其中,unzip可以是用户自己开发的自定义函数程序,是一个可执行文件,通过该程序对用户的数据进行自定义处理;unzip.conf是用户自己的配置文件(用户自己定义);自定义函数.yaml是自定义函数镜像构建脚本,格式如下:
其中,image是基础镜像的名称,所述基础镜像,是指所述自定义函数运行的操作系统平台,例如ubuntu、centOS等。所述云build_script是一个脚本文件,所述计算实例管理模块在构建镜像时,会根据该文件中的指令进行一些前置的操作,例如一些参数的设定等。同理,在启动实例时,所述计算实例管理模块会根据run_script中的指令启动用户的自定义函数程序。
上述自定义函数镜像上传至计算实例管理模块后,所述计算实例管理模块会执行脚本文件,构建自定义函数镜像。
S103:根据所述自定义函数镜像,分配并启动自定义函数实例。
自定义函数实例为用户的自定义函数程序提供计算和存储资源,是用户对数据进行自定义处理的真正的运行场所,后端为计算实例管理模块。用户需要指定用来启动实例的镜像版本(默认使用最新版本)、实例数目、实例计算和存储资源配置等。
请参考图4,其为本申请的云存储系统自定义函数控制流时序图,是对上述步骤加以更直观的表示。
本申请还提供了一种用于云存储系统中同步执行自定义函数程序的方法,请参考图5,其为本申请的用于云存储系统中同步执行自定义函数程序的方法的流程图,具体包括以下步骤:
S201:接收用户对数据进行处理的请求。
所述请求接入模块提供了上传或下载的接口,用户通过调用云存储系统的文件上传下载接口,将自定义函数参数传递进来,参数的位置可以为url中的query string部分或者http的请求头中,自定义函数的参数格式依云存储提供商设定。本实施例约定的格式如下:
自定义函数/自定义函数Name,key1_value1,key2_value2…
其中自定义函数Name为自定义函数的名称,key1_value1等为参数对,key为参数的名称,value为参数的值,通过逗号分隔。例如,某用户要使用已注册的函数Function,其参数为l、o,功能分别为提高亮度、对比度的值,正数为提高,负数为降低,当用户使用上传接口上传一张图片时,在上传的请求中的query string部分或者http的header中加入自定义函数/Function,l_0.2,o_-0.3这个参数,则计算实例会在这张图片上传后对这张图片进行亮度增加20%,对比度降低30%的处理。
如果是上传请求,则原始数据被上传至所述云存储系统中;如果是下载请求,则原始数据被下载至所述云存储系统中。
S202:解析所述请求,获得待处理数据、自定义函数信息及处理参数;依据所述自定义函数信息调用相应的自定义函数。
请参考图2,所述云存储系统控制模块记录管理着自定义函数元数据信息,元数据信息中记录有自定义函数的计算实例地址。云存储系统接收到请求后,解析请求得到自定义函数的名称,并根据名称从计算实例管理模块中找到所述自定义函数对应的计算实例地址,然后按照协议发送带有自定义函数参数的POST请求到所述计算实例地址,所述协议是指自定义函数程序的使用者和自定义函数程序的提供者为了顺利完成所述自定义函数程序的使用而约定的一些规则,例如请求的端口等。本实施例对自定义函数程序要求为:有执行权限,可以通过./的方式直接运行;监听9000端口,接收此端口的POST请求。端口也可以设定为其他端口,以能够顺利监听POST请求为准。
所述发送带有自定义函数参数的POST请求包括以下步骤:
云存储系统将解析到的自定义函数名称、参数对插入到POST请求中;
将所述POST请求发送至指定地址的自定义函数计算实例的9000端口中。
所述已注册的自定义函数程序即在注册过程中生成的自定义函数镜像。
S203:根据所述处理参数执行所述自定义函数,通过所述自定义函数对所述待处理数据进行处理。
本步骤完成对数据的处理,所述已注册的自定义函数程序需要从所述云存储系统中请求待处理数据进行处理。
S204:向用户返回处理结果。
所述自定义函数程序对数据进行处理后,将处理结果通过POST请求中的responsebody返回给云存储系统,所述云存储系统将所述处理结果返回给用户。
请参考图6,其为在云存储系统同步执行自定义函数程序的时序图,以下载为例对上述步骤进行更直观的表示。
本申请还提供了一种用于云存储系统中异步执行自定义函数程序的方法,如图7所示,其为本申请的用于云存储系统中异步执行自定义函数程序的方法的流程图,具体步骤包括:
S301:请求接入模块接收用户对数据进行处理的请求,将其转发至处理引擎中。
本步骤主要完成上传或下载任务,如果是上传请求,则原始数据(待处理数据)被上传至所述云存储系统中;如果是下载请求,则原始数据被下载至所述云存储系统中。上传或下载请求被转发至所述处理引擎中。
S302:所述处理引擎生成任务标识返回至用户;所述处理引擎解析所述请求,获得待处理数据、自定义函数信息及处理参数,将其转发至计算实例管理模块。
所述处理引擎生成任务标识返回至用户,并解析所述请求,将解析后的请求通过POST请求发送至计算实例管理模块。每个任务有一个任务标识,每个任务标识与其任务是一一对应的。
所述处理引擎解析所述请求,得到自定义函数名称,并根据名称通过计算实例管理模块找到所述自定义函数对应的计算实例地址,然后按照协议发送带有自定义函数参数的POST请求到所述计算实例地址,所述协议是指自定义函数程序的使用者和自定义函数程序的提供者为了顺利完成所述自定义函数程序的使用而约定的一些规则,例如请求的端口等。本实施例对自定义函数程序要求为:有执行权限,可以通过./的方式直接运行;监听9000端口,接收此端口的POST请求。端口也可以设定为其他端口,以能够顺利监听POST请求为准。
所述发送带有自定义函数参数的POST请求包括以下步骤:
云存储系统将解析到的自定义函数名称、参数对插入到POST请求中;
将所述POST请求发送至指定地址的自定义函数计算实例的9000端口中。
S303:计算实例管理模块依据自定义函数信息调用相应自定义函数,根据所述处理参数执行所述自定义函数,通过所述自定义函数对所述待处理数据进行处理,并将处理结果返回至所述处理引擎中;
本步骤中,依据自定义函数信息调用相应的自定义函数,通过所述自定义函数完成对待处理数据的处理,然后将结果反馈至处理引擎。
S304,所述处理引擎根据用户提交的任务标识反馈处理进度或根据接收到的处理结果向用户转发所述处理结果。
对于用户查询而言,步骤如下:云存储系统收到查询任务完成情况请求;解析所述任务完成情况请求,得到任务标识,并将标识发送至所述处理引擎中;所述处理引擎根据所述任务标识,查询任务完成情况并返回到所述云存储系统,若完成,则返回处理结果;若未完成,则返回未完成;
若任务已完成,处理结果返回至所述处理引擎后,无论用户查询与否,处理引擎皆可以将处理结果转发给用户。请参考图8,其为在云存储系统中异步执行自定义函数程序的方法的时序图,以上传为例对上述步骤进行更直观的表示。
此外,上述的同步及异步执行自定义函数的实例中,所述用户均可以是自定义函数管理权限拥有者的之外的用户,也即云存储系统的自定义函数可以设置权限,根据需要开放给第三方。
本申请的实施例提供一种支持自定义函数的云存储系统,用户能够通过url或者http header传递UDF的参数,方便的控制代码逻辑。
本申请实施例的支持自定义函数的云存储系统还可以实现同步和异步的解决方案,用户既可以使用同步的方式,执行能够快速执行的逻辑,并将结果返回给用户;也能使用异步的方式,执行需要较长时间执行的代码,将结果异步通知到用户
本申请实施例的支持自定义函数的云存储系统还可以实现完成的UDF权限控制,接入第三方的技术,实现基于云存储的生态圈。
此外,本申请的实施例还提供一种用于云存储系统中执行自定义函数程序的方法,其包括:
接收用户对数据进行处理的请求,并将其转发至处理引擎中;
接收处理引擎返回的处理进度或处理引擎接收自计算实例管理模块的处理结果而向用户转发的所述处理结果;其中,所述处理结果为自定义函数执行所述用户对数据进行处理请求中的处理参数及待处理数据的结果。
此外,本申请的实施例还提供一种用于云存储系统中执行自定义函数程序的方法,其包括:
接收请求接入模块发送的用户对数据进行处理的请求;
基于所述请求生成任务标识并反馈至所述请求接入模块;
解析所述请求,获得待处理数据、自定义函数信息及处理参数,并将其转发至计算实例管理模块;
接收计算实例管理模块返回的、自定义函数执行所述用户对数据进行处理请求中的处理参数及待处理数据而生成的处理结果;
根据用户提交的任务标识反馈处理进度或根据接收自计算实例管理模块的处理结果向用户转发的所述处理结果。
此外,本申请的实施例还提供一种用于云存储系统中执行自定义函数程序的方法,其包括:
接收处理引擎解析用户对数据处理的请求而获得的待处理数据、自定义函数信息及处理参数;
依据自定义函数信息调用相应自定义函数;
根据所述处理参数执行所述自定义函数,通过所述自定义函数对所述待处理数据进行处理,并将处理结果返回至所述处理引擎中。
此外,本申请的实施例还提供一种用于云存储系统中实现自定义数据处理的方法,其包括:
获取自定义函数,所述自定义函数用于实现用户自定义对云存储系统中数据的处理;
生成所述自定义函数的自定义数据处理程序的命令集,并基于所述自定义数据处理程序的命令集构建自定义函数镜像;
根据自定义函数镜像,分配并启动自定义函数实例。
本发明虽然以较佳实施例公开如上,但其并不是用来限定本发明,任何本领域技术人员在不脱离本发明的精神和范围内,都可以做出可能的变动和修改,因此本发明的保护范围应当以本发明权利要求所界定的范围为准。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
1、计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
2、本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

Claims (19)

1.一种云存储系统,其特征在于,包括:请求接入模块、云存储系统控制模块以及计算实例管理模块;其中,
所述请求接入模块,用于为云存储系统控制模块和/或计算实例管理模块提供接口;
所述系统控制模块,用于实现自定义函数管理;
所述计算实例管理模块,用于对自定义函数实例进行管理;
其中,所述自定义函数用于实现用户自定义对云存储系统中数据的处理。
2.根据权利要求1所述的云存储系统,其特征在于,所述云存储系统控制模块包括:自定义函数注册单元和自定义函数操作单元;其中,
所述自定义函数注册单元,用于根据所述请求接入模块的接口传来的用户注册请求生成注册信息,并返回注册信息;
所述自定义函数操作单元,用于接收并根据用户指令对已注册自定义函数的相关信息进行操作。
3.根据权利要求2所述的云存储系统,其特征在于,
所述自定义函数操作单元包括删除单元、查询单元及列举单元中的至少一个;
所述删除单元用于删除自定义函数的注册信息;
所述查询单元用于根据用户指令查询自定义函数的注册信息;
所述列举单元用于列举被查询对象注册的满足设定条件的自定义函数的注册信息。
其中,所述自定义函数的注册信息包括下列至少一个:自定义函数名称、创建时间、拥有者、已启动的实例名称及实例个数。
4.根据权利要求1所述的云存储系统,其特征在于,所述计算实例管理模块包括镜像管理单元和实例管理单元;
所述镜像管理单元,用于生成并上传自定义函数镜像,并根据指令实现对所述自定义函数镜像的操作;
所述实例管理单元,用于根据用户上传的操作参数结合自定义函数镜像创建计算实例,并根据用户指令实现对计算实例的管理;其中,
所述自定义函数镜像为包含用户自定义数据处理程序命令的数据包。
5.根据权利要求4所述的云存储系统,其特征在于:
所述镜像管理单元包括镜像构建单元和镜像查询单元;其中,
所述镜像构建单元用于生成自定义数据处理程序的命令集;
所述镜像查询单元用于自定义函数镜像信息的查询;
所述自定义函数镜像信息包括下列中的至少一个:自定义函数镜像名称、版本、各个版本的创建时间。
6.根据权利要求4所述的云存储系统,其特征在于,所述实例管理单元包括启动单元、停止单元、更新单元及查询单元中的至少一个;其中,
所述启动单元用于启动自定义函数实例;
所述停止单元用于停止已启动的自定义函数实例;
所述更新单元用于更新自定义函数实例;
所述查询单元用于查看自定义函数实例的信息。
7.根据权利要求6所述的云存储系统,其特征在于,
所述查询单元包括实例信息查询单元、实例资源使用查询单元及实例日志查询单元中的至少一个;
所述实例信息查询单元用于查看自定义函数实例的实例信息;
所述实例资源使用查询单元用于查看自定义函数实例的资源使用信息;
所述实例日志查询单元用于查看自定义函数程序的日志信息;
其中,
所述实例信息包括下列中的至少一个:自定义函数实例的镜像版本、实例数目、实例配置、启动时间;
所述资源使用信息包括自定义函数实例的CPU和内存资源使用率。
8.根据权利要求1所述的支持用于自定义函数的云存储系统,其特征在于,包括权限管理单元,用于管理自定义函数程序的使用权限。
9.一种用于云存储系统中实现自定义数据处理的方法,其特征在于,包括:
接收用户注册请求,并生成用于自定义数据处理的自定义函数注册信息;
接收已注册自定义函数的自定义数据处理程序的命令集,并基于所述自定义数据处理程序的命令集构建自定义函数镜像;
根据所述自定义函数镜像,分配并启动自定义函数实例。
10.根据权利要求9所述的用于云存储系统中实现自定义数据处理的方法,其特征在于,所述接收用户注册请求,并生成用于自定义数据处理的自定义函数注册信息,包括:
根据用户注册请求,生成并存储自定义数据处理的自定义函数的注册信息;
向用户返回所述的自定义函数的注册信息;
其中,所述注册信息包括下列至少一个:自定义函数名称、创建时间、拥有者、已启动的实例名称及实例个数。
11.根据权利要求9所述的用于云存储系统中实现自定义数据处理的方法,其特征在于,所述接收生成的已注册自定义函数的自定义数据处理程序的命令集,并基于所述自定义数据处理程序的命令集构建自定义函数镜像包括:
接收已注册自定义函数的自定义数据处理程序的命令集;
接收或生成命令集的配置文件;
接收或生成构建自定义函数的镜像的脚本文件;
执行所述脚本文件,基于所述自定义数据处理程序的命令集和配置文件生成自定义函数镜像。
12.一种用于云存储系统中执行自定义函数程序的方法,其特征在于,包括:
接收用户对数据进行处理的请求;
解析所述请求,获得待处理数据、自定义函数信息及处理参数;依据所述自定义函数信息调用相应的自定义函数;
根据所述处理参数执行所述自定义函数,通过所述自定义函数对所述待处理数据进行处理;
向用户返回处理结果。
13.根据权利要求12用于云存储系统中执行自定义函数程序的方法,其特征在于,所述用户为自定义函数管理权限拥有者之外的用户。
14.一种用于云存储系统中执行自定义函数程序的方法,其特征在于,包括:
请求接入模块接收用户对数据进行处理的请求,将其转发至处理引擎中;
所述处理引擎生成任务标识返回至用户;所述处理引擎解析所述请求,获得待处理数据、自定义函数信息及处理参数,将其转发至计算实例管理模块;
计算实例管理模块依据自定义函数信息调用相应自定义函数,根据所述处理参数执行所述自定义函数,通过所述自定义函数对所述待处理数据进行处理,并将处理结果返回至所述处理引擎中;
所述处理引擎根据用户提交的任务标识反馈处理进度或根据接收到的处理结果向用户转发所述处理结果。
15.根据权利要求14用于云存储系统中执行自定义函数程序的方法,其特征在于,所述用户为自定义函数管理权限拥有者之外的用户。
16.一种用于云存储系统中执行自定义函数程序的方法,其特征在于包括:
接收用户对数据进行处理的请求,并将其转发至处理引擎中;
接收处理引擎返回的处理进度或处理引擎接收自计算实例管理模块的处理结果而向用户转发的所述处理结果;
其中,所述处理结果为自定义函数执行所述用户对数据进行处理请求中的处理参数及待处理数据的结果。
17.一种用于云存储系统中执行自定义函数程序的方法,其特征在于包括:
接收请求接入模块发送的用户对数据进行处理的请求;
基于所述请求生成任务标识并反馈至所述请求接入模块;
解析所述请求,获得待处理数据、自定义函数信息及处理参数,并将其转发至计算实例管理模块;
接收计算实例管理模块返回的、自定义函数执行所述用户对数据进行处理请求中的处理参数及待处理数据而生成的处理结果;
根据用户提交的任务标识反馈处理进度或根据接收自计算实例管理模块的处理结果向用户转发的所述处理结果。
18.一种用于云存储系统中执行自定义函数程序的方法,其特征在于包括:
接收处理引擎解析用户对数据处理的请求而获得的待处理数据、自定义函数信息及处理参数;
依据自定义函数信息调用相应自定义函数;
根据所述处理参数执行所述自定义函数,通过所述自定义函数对所述待处理数据进行处理,并将处理结果返回至所述处理引擎中。
19.一种用于云存储系统中实现自定义数据处理的方法,其特征在于,包括:
获取自定义函数,所述自定义函数用于实现用户自定义对云存储系统中数据的处理;
生成所述自定义函数的自定义数据处理程序的命令集,并基于所述自定义数据处理程序的命令集构建自定义函数镜像;
根据自定义函数镜像,分配并启动自定义函数实例。
CN201711045693.6A 2017-10-31 2017-10-31 一种云存储系统及用于云存储系统中实现自定义数据处理的方法 Active CN109729121B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201711045693.6A CN109729121B (zh) 2017-10-31 2017-10-31 一种云存储系统及用于云存储系统中实现自定义数据处理的方法
PCT/CN2018/111174 WO2019085780A1 (zh) 2017-10-31 2018-10-22 一种云存储系统及用于云存储系统中实现自定义数据处理的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201711045693.6A CN109729121B (zh) 2017-10-31 2017-10-31 一种云存储系统及用于云存储系统中实现自定义数据处理的方法

Publications (2)

Publication Number Publication Date
CN109729121A true CN109729121A (zh) 2019-05-07
CN109729121B CN109729121B (zh) 2022-05-06

Family

ID=66293162

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201711045693.6A Active CN109729121B (zh) 2017-10-31 2017-10-31 一种云存储系统及用于云存储系统中实现自定义数据处理的方法

Country Status (2)

Country Link
CN (1) CN109729121B (zh)
WO (1) WO2019085780A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113110913A (zh) * 2020-01-13 2021-07-13 中国移动通信集团浙江有限公司 镜像管理系统、方法及计算设备
US11995453B2 (en) 2020-06-22 2024-05-28 Tencent Technology (Shenzhen) Company Limited Method and apparatus for generating image file and computer-readable storage medium

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110704192A (zh) * 2019-09-30 2020-01-17 的卢技术有限公司 一种多元化数据云存储方法及系统
CN116360891A (zh) * 2023-04-03 2023-06-30 北京柏睿数据技术股份有限公司 一种可视化人工智能建模的算子自定义的方法和系统

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN202210812U (zh) * 2011-08-26 2012-05-02 浙江协同数据系统有限公司 基于云平台的数据终端接入系统
CN103440303A (zh) * 2013-08-21 2013-12-11 曙光信息产业股份有限公司 一种异构云存储系统及其数据处理方法
CN103620551A (zh) * 2011-06-29 2014-03-05 微软公司 虚拟机迁移工具
US20140317617A1 (en) * 2013-04-23 2014-10-23 Sap Ag Optimized Deployment of Data Services on the Cloud
CN105068852A (zh) * 2015-09-22 2015-11-18 普元信息技术股份有限公司 云计算环境下实现Java类在线热更新的系统与方法
CN105262801A (zh) * 2015-09-24 2016-01-20 广东亿迅科技有限公司 一种云平台消息分发的方法及系统
CN105335215A (zh) * 2015-12-05 2016-02-17 中国科学院苏州生物医学工程技术研究所 一种基于云计算的蒙特卡洛仿真加速方法及系统
CN107122238A (zh) * 2017-04-25 2017-09-01 郑州轻工业学院 基于Hadoop云计算框架的高效迭代机制设计方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103425795B (zh) * 2013-08-31 2016-09-21 四川川大智胜软件股份有限公司 一种基于云计算的雷达数据分析方法
US9424097B1 (en) * 2015-03-17 2016-08-23 International Business Machines Corporation Dynamically managing workload placements in virtualized environments based on current user globalization customization requests

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103620551A (zh) * 2011-06-29 2014-03-05 微软公司 虚拟机迁移工具
CN202210812U (zh) * 2011-08-26 2012-05-02 浙江协同数据系统有限公司 基于云平台的数据终端接入系统
US20140317617A1 (en) * 2013-04-23 2014-10-23 Sap Ag Optimized Deployment of Data Services on the Cloud
CN103440303A (zh) * 2013-08-21 2013-12-11 曙光信息产业股份有限公司 一种异构云存储系统及其数据处理方法
CN105068852A (zh) * 2015-09-22 2015-11-18 普元信息技术股份有限公司 云计算环境下实现Java类在线热更新的系统与方法
CN105262801A (zh) * 2015-09-24 2016-01-20 广东亿迅科技有限公司 一种云平台消息分发的方法及系统
CN105335215A (zh) * 2015-12-05 2016-02-17 中国科学院苏州生物医学工程技术研究所 一种基于云计算的蒙特卡洛仿真加速方法及系统
CN107122238A (zh) * 2017-04-25 2017-09-01 郑州轻工业学院 基于Hadoop云计算框架的高效迭代机制设计方法

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113110913A (zh) * 2020-01-13 2021-07-13 中国移动通信集团浙江有限公司 镜像管理系统、方法及计算设备
CN113110913B (zh) * 2020-01-13 2024-01-05 中国移动通信集团浙江有限公司 镜像管理系统、方法及计算设备
US11995453B2 (en) 2020-06-22 2024-05-28 Tencent Technology (Shenzhen) Company Limited Method and apparatus for generating image file and computer-readable storage medium

Also Published As

Publication number Publication date
CN109729121B (zh) 2022-05-06
WO2019085780A1 (zh) 2019-05-09

Similar Documents

Publication Publication Date Title
US10776104B2 (en) Systems and methods for tracking configuration file changes
US11036754B2 (en) Database table conversion
CN109522330B (zh) 基于区块链的云平台数据处理方法、装置、设备及介质
WO2019028992A1 (zh) 多模块版本依赖关系构建方法、装置、服务器和存储介质
US20180011739A1 (en) Data factory platform and operating system
US8656417B2 (en) Interface for telecommunication services using uniform resource identifiers
US10331697B2 (en) Synchronization of data between systems
US8204870B2 (en) Unwired enterprise platform
CN109582441A (zh) 用于提供容器服务的系统、方法和装置
US11575772B2 (en) Systems and methods for initiating processing actions utilizing automatically generated data of a group-based communication system
CN109729121A (zh) 一种云存储系统及用于云存储系统中实现自定义数据处理的方法
US11899627B1 (en) Recent file synchronization and aggregation methods and systems
US20170161291A1 (en) Database table conversion
CN103118140B (zh) 将文件分享给关系圈外其他用户终端的方法、系统及装置
US11575674B2 (en) Methods and systems relating to network based storage
US11086763B2 (en) Asynchronous consumer-driven contract testing in micro service architecture
CN102413022A (zh) 一种应用调试方法和系统
US11550551B2 (en) Method for establishing social network and storage medium thereof
WO2011023122A1 (zh) 业务路由方法、装置及系统
US11728928B2 (en) Securely sharing public and private blockchain data
CN103944805A (zh) 一种基于微信平台的信息更新方法和系统
US11966408B2 (en) Active data executable
US9621424B2 (en) Providing a common interface for accessing and presenting component configuration settings
US20200241946A1 (en) Graphical management of big data pipelines
Georgakopoulos et al. Sensor Sharing Marketplace

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