CN118159956A - 数据中心存储中用于安全、高性能地执行用户代码的存储服务器 - Google Patents
数据中心存储中用于安全、高性能地执行用户代码的存储服务器 Download PDFInfo
- Publication number
- CN118159956A CN118159956A CN202180103656.4A CN202180103656A CN118159956A CN 118159956 A CN118159956 A CN 118159956A CN 202180103656 A CN202180103656 A CN 202180103656A CN 118159956 A CN118159956 A CN 118159956A
- Authority
- CN
- China
- Prior art keywords
- storage server
- server
- storage
- user
- data
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 claims description 53
- 238000004891 communication Methods 0.000 claims description 11
- 230000007246 mechanism Effects 0.000 claims description 7
- 238000004590 computer program Methods 0.000 claims description 4
- 238000012544 monitoring process Methods 0.000 claims description 4
- 230000008093 supporting effect Effects 0.000 claims description 4
- 238000012545 processing Methods 0.000 abstract description 48
- 244000035744 Hura crepitans Species 0.000 abstract description 4
- 230000006870 function Effects 0.000 description 28
- 230000001976 improved effect Effects 0.000 description 8
- 238000005516 engineering process Methods 0.000 description 7
- 230000008901 benefit Effects 0.000 description 6
- 230000008569 process Effects 0.000 description 5
- 238000012546 transfer Methods 0.000 description 5
- 238000004422 calculation algorithm Methods 0.000 description 4
- 230000001537 neural effect Effects 0.000 description 4
- 230000003190 augmentative effect Effects 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000002955 isolation Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 230000004931 aggregating effect Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000001010 compromised effect Effects 0.000 description 1
- 229910052802 copper Inorganic materials 0.000 description 1
- 239000010949 copper Substances 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 239000003999 initiator Substances 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 230000009225 memory damage Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000001151 other effect Effects 0.000 description 1
- 230000036316 preload Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/188—Virtual file systems
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
提供一种数据中心,所述数据中心包括一个或多个存储服务器(200),以及计算服务器和前端服务器中的至少一个。提供了一种用于数据中心的存储服务器(200)。所述存储服务器(200)用于获取数据请求(208),所述数据请求(208)指示目标数据(210)和用户定义代码(209)。所述存储服务器(200)用于获取所述目标数据(210)并自行执行所述用户定义代码(209),而不是将所述目标数据(210)提供给请求者。由于所述用户定义代码(209)可能是恶意的,因此所述存储服务器(200)用于在虚拟机或容器等隔离执行环境(207)或沙箱中执行所述用户定义代码(209)。这样,由于应用了近数据处理范式,所述数据中心的数据处理可以更加高效,同时可以维持安全级别。
Description
技术领域
本发明大体上涉及计算机科学领域,并且涉及该领域的数据中心存储。本发明提出了一种用于数据中心的存储服务器、一种包括至少一个存储服务器的系统以及一种用于所述系统的方法。
背景技术
数据中心可以用于通过使用复杂基础设施(包括网络、计算服务器和存储服务器)来提供对应用程序和数据的共享访问。数据中心通常用于信息和通信技术(informationand communications technology,ICT)行业,例如企业、互联网内容提供商、电信运营商。数据中心的安全性对于业务连续性和数据安全性至关重要。
通常,数据中心中的存储服务器运行安全、可信的存储软件,而数据中心中的计算服务器运行提供商提供的软件和用户提供的软件的混合体。在一些应用场景中,这种用户提供的软件(也称为“用户定义代码”)被上传到数据中心并由数据中心中的计算服务器执行,以便为用户或客户提供灵活、可定制的服务。但是,不能认为用户定义代码是安全可信的。
发明内容
本发明进一步基于以下考虑。
在一些情况下,由数据中心中的计算服务器执行用户定义代码也会消耗大量的时间和带宽,例如,由在数据中心的计算服务器与存储服务器之间复制和传输数据引起。特别是当用户定义代码涉及到大量数据时。这可能会导致数据中心的性能出现重大瓶颈。
执行用户定义代码也可能存在安全风险。这是因为对编写用户定义代码的编程语言通常没有限制。用户可能在数据中心(例如,在执行用户定义代码的计算服务器上)执行不安全的或恶意的代码。
此外,由于数据中心通常用于执行多个用户的用户定义代码和/或存储属于多个用户的数据,因此数据有可能从一个用户泄露给另一个用户,这可能导致安全漏洞。
综上所述,本发明的目的是提高数据中心的性能和数据安全性。
该目的和其它目的通过本发明的方案实现,如独立权利要求中所述。有利实现方式在从属权利要求中进一步定义。
本发明中描述的思想是支持用户定义代码在数据中心的存储服务器的隔离执行环境中执行。为了减少隔离执行环境引入的开销,可以可选地使用共享内存手段。
本发明的第一方面提供了一种用于数据中心的存储服务器。所述存储服务器用于获取数据请求,所述数据请求指示目标数据和用户定义代码。然后,所述存储服务器用于通过使用所述存储服务器的存储软件,获取所述目标数据。此外,所述存储服务器用于使用所述目标数据作为输入,在隔离执行环境中执行所述用户定义代码,其中,所述隔离执行环境与所述存储软件分离。然后,所述存储服务器用于获取执行所述用户定义代码的结果,作为与所述数据请求相关的输出。
可选地,可以将执行用户定义代码的结果返回给数据请求的请求者。可选地,在接收到数据请求后,存储服务器还可以用于基于数据请求获取用户定义代码。可选地,数据请求可以包括指示目标数据的第一部分和指示用户定义代码的第二部分。第一部分可以包括目标数据的存储位置。第二部分可以包括用户定义代码。在这种情况下,存储服务器可以用于直接从数据请求中获取用户定义代码,并将用户定义代码提供给隔离执行环境。或者,第二部分可以包括或指示用户定义代码的存储位置。在这种情况下,存储服务器可以用于从存储位置获取用户定义代码,并将用户定义代码提供给隔离执行环境。用户定义代码可以是可执行文件或对象。可执行文件或对象可以具有任何形式,例如归档文件、可执行二进制文件、可执行指令等。用户定义代码可以由用户提供和/或可以由用户软件生成。存储位置可以由路径或链接表示,根据路径或链接可以访问目标(目标数据或用户定义代码)。
可选地,存储服务器可以是用于存储(用户)数据的刀片服务器。
可选地,存储服务器可以用于托管操作系统。存储服务器可以用于运行基于操作系统(或在操作系统上面)的存储软件。可选地,存储软件可以与操作系统集成。用户定义代码可以不是操作系统的一部分或不与操作系统集成。
用于执行用户定义代码的隔离执行环境可以是用户专用的。例如,存储服务器可以用于创建对应于每个用户的专用的、隔离执行环境。附加地或替代地,隔离执行环境可以是应用程序专用的。例如,存储服务器可以用于创建对应于每个应用程序(例如,用户软件)的专用执行环境。
由存储服务器执行用户定义代码的优点是执行时间(或运行时)更快,数据中心的网络利用率更低。由存储服务器执行用户定义代码可以启用“近数据处理”(near-dataprocessing,NDP)计算范式,其中,代码尽可能地靠近其存储位置执行。其它效果是,在数据中心中,可以优化网络利用率,因为不需要在存储服务器与(例如)传统计算服务器之间传输目标数据。当目标数据相对较大(例如,大小为千兆字节(gigabyte,GB)或更大)时,这尤其有益。
此外,用户定义代码可以在存储服务器上安全地执行,以避免数据泄露和损害。NDP可能会带来安全风险,因为用户定义软件中包括的恶意代码可能会在存储服务器上执行。但是,通过在隔离执行环境中执行用户定义代码,可以显著降低这种风险。此外,用户可以执行以任何编程语言编写的用户定义代码。
在所述第一方面的一种可能的实现方式中,为了执行所述用户定义代码,所述存储服务器可以用于:
-确定所述存储服务器的一个或多个空闲处理器;
-通过使用所述一个或多个空闲处理器,执行所述用户定义代码。
所述一个或多个空闲处理器可以是一个或多个处理单元,所述一个或多个处理单元可以包括以下组件中的一个或多个组件:智能网络接口控制器(smart networkinterface controller,smartNIC)、加速卡、中央处理器(central processing unit,CPU)、图形处理单元(graphics processing unit,GPU)、神经处理单元(neuralprocessing unit,NPU)、现场可编程门阵列(field-programmable gate array,FPGA),这些组件可以包括在存储服务器中。
在所述第一方面的一种可能的实现方式中,在确定所述一个或多个空闲处理器之前,所述存储服务器可以用于将所述数据请求存储在队列中。在确定所述一个或多个空闲处理器期间或之后,所述存储服务器可以用于从所述队列中拾取(或检索)所述数据请求。然后,存储服务器可以用于将检索到的数据请求传递给存储软件进行处理。
存储服务器可以用于在队列中存储一个或多个另外的数据请求。存储服务器可以用于基于以下条件中的一个或多个确定从队列中检索数据请求:
-是否有可用的处理器;
-所述可用处理器是否具有足够的资源(例如处理器周期)来执行数据请求;
-执行数据请求是否与其它正在运行的数据请求的执行冲突。
可选地,队列可以基于任何数据结构,如列表、双链表、树等。队列可以用于实现插入和/或删除算法。
使用队列存储数据请求的优点是减少拒绝服务。此外,队列可以有助于为已经运行的数据请求引入性能隔离,从而维护承诺的服务水平协议。
在所述第一方面的一种可能的实现方式中,所述存储服务器还可以用于使用共享内存进程间通信机制在所述存储软件与在所述隔离执行环境中执行的所述用户定义代码之间进行通信。为此,所述存储软件可以用于:
-将所述获取的目标数据存储到第一共享内存区域中;
-从第二共享内存区域中获取执行所述用户定义代码的所述结果。
可选地,所述用户定义代码可以用于从所述第一共享内存区域中检索所述目标数据,并将执行所述用户定义代码的所述结果存储到所述第二共享内存区域中。
共享内存进程间通信机制可以由存储服务器发起和维护,优选地通过相关软件手段,例如但不限于透明页共享。可选地,第一共享内存区域和第二共享内存区域可以由存储服务器在存储服务器中包括的计算机内存中分配。第一共享内存区域和第二共享内存区域可以用于在存储软件与用户定义代码之间共享数据。
使用共享内存进程间通信机制的优点是减少了存储服务器组件之间数据传输的开销。实际上,可以避免存储服务器内部的数据传输等操作。因此,可以实现更快的数据处理速度。
在所述第一方面的一种可能的实现方式中,所述第一共享内存区域可以包括输入缓冲区,所述第二共享内存区域可以包括输出缓冲区。所述输入缓冲区可以用于只读,所述输出缓冲区可以用于只写。
其中,输入缓冲区可以用于由存储软件存储目标数据,输出缓冲区可以用于通过用户定义代码存储执行用户定义代码的结果。这样,可以进一步提高存储服务器的数据安全性和数据中心的安全性。
在所述第一方面的一种可能的实现方式中,所述存储服务器还可以包括一个或多个支持组件。每个支持组件可以与所述隔离执行环境相关联,并且可以包括以下中的至少一个:操作系统、运行时系统和用于支持所述用户定义代码的执行的库。
每个支持组件可以包括在隔离执行环境中,也可以对隔离执行环境可用。可选地,一个或多个支持组件可以存储在存储服务器上。
可选地,在接收到数据请求之后,存储服务器还可以用于确定一个或多个合适的支持组件,以便例如根据用户定义代码的类型在隔离执行环境中执行用户定义代码。然后,存储服务器还可以用于检索一个或多个确定的支持组件并将其提供给隔离执行环境。
这样,可以进一步提高数据处理速度。
在所述第一方面的一种可能的实现方式中,所述存储服务器还可以用于创建所述隔离执行环境的检查点或映像。
这样,可以减少启动时间,进一步提高数据处理速度。
在所述第一方面的一种可能的实现方式中,所述隔离执行环境可以基于虚拟机或容器。
虚拟机可以是指计算机系统的虚拟化。需要说明的是,虚拟机可以包括基于存储服务器的硬件的虚拟化硬件。隔离执行环境可以通过一个或多个虚拟机实例来创建和维护。
容器可以是指(可选地)在操作系统级别打包代码及其所有依赖项的软件单元。
通常,虚拟机和容器都可以认为是虚拟化技术。或者,存储服务器可以使用虚拟化技术中的任何其它手段来创建和维护隔离执行环境。
本发明的第二方面提供了一种系统,包括根据第一方面或其任何实现方式的至少一个存储服务器,以及计算服务器和前端服务器中的至少一个。所述计算服务器和所述前端服务器中的至少一个用于将所述数据请求提供给所述至少一个存储服务器。
在所述第二方面的一种实现方式中,所述系统可以包括至少一个前端服务器,所述至少一个前端服务器用于:
-从所述系统外部获取所述数据请求;
-将所述数据请求转发给所述至少一个存储服务器。
可选地,所述至少一个前端服务器可以用于充当代理,以便从系统外部收集数据请求。
在所述第二方面的一种实现方式中,所述系统可以包括至少一个计算服务器,所述至少一个计算服务器用于:
-生成所述数据请求;
-将所述数据请求转发给所述至少一个存储服务器。
可选地,所述至少一个计算服务器可以是用于运行用户定义软件的刀片服务器。用户定义软件可以用于生成数据请求。
在所述第二方面的一种实现方式中,所述计算服务器和所述前端服务器中的至少一个可以用于:
-监控每个存储服务器的状态;
-将所述数据请求提供给基于所述监控状态选择的存储服务器。
存储服务器的选择还可以基于数据请求,包括用户定义代码的类型。
在所述第二方面的一种实现方式中,所述计算服务器和所述前端服务器中的至少一个还可以用于:
-将所述数据请求拆分为多个子请求,
-将所述多个子请求提供给基于所述监控状态选择的所述至少一个存储服务器中的一个或多个存储服务器。
每个子请求可以看作是单个数据请求。多个子请求可以一起用于完成共同的任务。
这样,可以将单个任务拆分为可以按分布式方式处理的多个子任务。因此,可以实现并行,并且可以提高数据处理的效率。
本发明的第三方面提供了一种由存储服务器执行的用于数据中心的方法。所述方法包括以下步骤:
-获取数据请求,其中,所述数据请求指示目标数据和用户定义代码;
-通过使用所述存储服务器的存储软件,获取所述目标数据;
-使用所述目标数据作为输入,在隔离执行环境中执行所述用户定义代码,其中,所述执行环境与所述存储软件分离;
-获取执行所述用户定义代码的结果,作为与所述数据请求相关的输出。
在所述第三方面的一种可能的实现方式中,所述执行所述用户定义代码的步骤可以包括:
-确定所述存储服务器的一个或多个空闲处理器;
-通过使用所述一个或多个空闲处理器,执行所述用户定义代码。
在所述第三方面的一种可能的实现方式中,在确定所述一个或多个空闲处理器之前,所述方法还可以包括:将所述数据请求存储在队列中。在确定所述一个或多个空闲处理器期间或之后,从所述队列中拾取所述数据请求。
在所述第三方面的一种可能的实现方式中,所述方法还可以包括:使用共享内存进程间通信机制在所述存储软件与在所述隔离执行环境中执行的所述用户定义代码之间进行通信。所述方法还可以包括:
-所述存储软件将所述获取的目标数据存储到第一共享内存区域中;
-所述存储软件从第二共享内存区域中获取执行所述用户定义代码的所述结果。
在所述第三方面的一种可能的实现方式中,所述第一共享内存区域可以包括输入缓冲区,所述第二共享内存区域可以包括输出缓冲区。所述输入缓冲区可以用于只读,所述输出缓冲区可以用于只写。
在所述第三方面的一种可能的实现方式中,所述存储服务器还可以包括一个或多个支持组件。每个支持组件可以与所述隔离执行环境相关联,并且包括以下中的至少一个:操作系统、运行时系统和用于支持所述用户定义代码执行的库。
在所述第三方面的一种可能的实现方式中,所述方法还可以包括创建所述隔离执行环境的检查点或映像。
在所述第三方面的一种可能的实现方式中,所述隔离执行环境可以基于虚拟机或容器。
所述第三方面及其实现方式的方法提供了与上述所述第一方面的存储服务器相同的优点。
本发明的第四方面提供了一种用于系统的方法。所述系统包括至少一个存储服务器,以及计算服务器和前端服务器中的至少一个。所述计算服务器和所述前端服务器中的所述至少一个与所述至少一个存储服务器连接。所述方法包括以下步骤:
-所述计算服务器或所述前端服务器中的所述至少一个将数据请求提供给所述至少一个存储服务器;
-所述至少一个存储服务器获取所述数据请求,其中,所述数据请求指示目标数据和用户定义代码;
-所述至少一个存储服务器通过使用所述至少一个存储服务器的存储软件获取所述目标数据;
-所述至少一个存储服务器使用所述目标数据作为输入,在隔离执行环境中执行所述用户定义代码,
其中,所述执行环境与所述存储软件分离;
-所述至少一个存储服务器获取执行所述用户定义代码的结果,作为与所述数据请求相关的输出。
在所述第四方面的一种实现方式中,所述将所述数据请求提供给所述至少一个存储服务器的步骤可以包括:
-所述至少一个前端服务器从所述系统外部获取所述数据请求;
-所述至少一个前端服务器将所述数据请求转发给所述至少一个存储服务器。
在所述第四方面的一种实现方式中,所述将所述数据请求提供给所述至少一个存储服务器的步骤可以包括:
-所述至少一个计算服务器生成所述数据请求;
-所述至少一个计算服务器将所述数据请求转发给所述至少一个存储服务器。
在所述第四方面的一种实现方式中,所述方法还可以包括:
-所述计算服务器和所述前端服务器中的所述至少一个监控每个存储服务器的状态;
-所述计算服务器和所述前端服务器中的所述至少一个将所述数据请求提供给基于所述监控状态选择的存储服务器。
在所述第四方面的一种实现方式中,所述方法还可以包括:
-所述计算服务器和所述前端服务器中的所述至少一个将所述数据请求拆分为多个子请求;
-所述计算服务器和所述前端服务器中的所述至少一个将所述多个子请求提供给基于所述监控状态选择的所述至少一个存储服务器中的一个或多个存储服务器。
所述第四方面及其实现方式的方法提供了与上述所述第一方面的系统相同的优点。
本发明的第五方面提供了一种包括程序代码的计算机程序,所述程序代码用于当在计算机上执行时,执行根据所述第三方面或其任何实现方式所述的方法。
本发明的第六方面提供了一种包括程序代码的计算机程序,所述程序代码用于当在多个计算机上执行时,执行根据所述第四方面或其任何实现方式所述的方法。
本发明的第七方面提供了一种包括指令的计算机可读介质,所述指令当由计算机执行时,使所述计算机执行根据所述第三方面或其任何实现方式中任一项所述的方法。
本发明的第八方面提供了一种包括指令的计算机可读介质,所述指令当由多个计算机执行时,使所述计算机执行根据所述第四方面或其任何实现方式中任一项所述的方法。
本发明的第九方面提供了一种包括指令的芯片组,所述指令当由所述芯片组执行时,使所述芯片组执行根据所述第三方面或其任何实现方式中任一项所述的方法。
本发明的第十方面提供了多个芯片组,每个芯片组包括指令,所述指令当由所述芯片组执行时,使所述芯片组执行根据所述第四方面或其任何实现方式中任一项所述的方法。
需要说明的是,本申请中描述的所有装置、设备、元件、单元和方法可以软件或硬件元件或其任意组合来实现。本申请中描述的各种实体执行的所有步骤以及所描述的将由各种实体执行的功能旨在表明相应的实体用于执行相应的步骤和功能。即使在以下具体实施例的描述中,外部实体要执行的特定功能或步骤未反映在执行该特定步骤或功能的该实体的特定详细元件的描述中,技术人员应清楚,这些方法和功能可以在相应的软件或硬件元件中实现,或以此类元件的任何种组合实现。
附图说明
结合所附附图,下面具体实施例的描述将阐述上述各方面及其实现方式,在附图中:
图1A示出了没有专用存储网络的数据中心;
图1B示出了具有专用存储网络的另一个数据中心;
图2示出了本发明提供的存储服务器;
图3示出了本发明提供的另一个存储服务器;
图4示出了本发明提供的另一个存储服务器;
图5示出了本发明提供的另一个存储服务器;
图6示出了本发明提供的另一个存储服务器;
图7A示出了本发明提供的系统;
图7B示出了本发明提供的另一个系统;
图8示出了本发明提供的方法;
图9示出了本发明提供的另一个方法;
图10示出了本发明的一种应用场景。
具体实施方式
在图1至图10中,对应元件可以用相同的附图标记标注,可以共享相同的特征,并且可以起到类似的作用。此外,需要说明的是,在图1至图10中描述的元件的数量仅用于说明目的,不应解释为对本发明实施例的限制。
本发明大体上涉及一种数据中心。数据中心可以是指至少用于提供存储服务的分布式系统。分布式系统可以包括用于可选地大规模地(例如,以拍字节(petabyte,PB)级,例如超过数百PB)处理、存储和传播数据的网络计算机、存储系统和控制器。例如,企业可以使用一个或多个数据中心来维护数据库和实现客户关系管理。媒体流服务提供商可以使用一个或多个数据中心来存储内容并将其内容分发给大量终端用户。数据中心可以包括电源、路由器、交换机、防火墙、存储系统、服务器和控制器等。
图1A示出了没有专用存储网络的数据中心的示例。数据中心包括一个或多个前端服务器、一个或多个数据中心交换机、一个或多个计算服务器和一个或多个存储服务器。
图1B示出了具有专用存储网络的数据中心的另一个示例。数据中心包括一个或多个前端服务器、一个或多个数据中心交换机、一个或多个计算服务器、一个或多个存储网络交换机和一个或多个存储服务器。一个或多个存储网络交换机和一个或多个存储服务器形成专用存储网络。
在图1A和图1B所示的两种类型的数据中心中,请求可以来自数据中心外部。或者,请求可以来自数据中心内部,例如来自可以部署用户软件的一个或多个计算服务器。请求可以是数据存储请求、数据检索请求或数据处理请求,或者两者的组合。在本发明实施例中,请求可以称为数据请求。需要说明的是,在图1A和图1B中描述的两种类型的数据中心是非穷举的。
图1A和图1B中的元件仅用于说明数据中心的可能架构。并不是图1A和图1B中的每个元件对于本发明都是必要的。例如,本发明也可以应用于如图1A和图1B中所示的数据中心,但没有前端服务器或计算服务器。
在本发明中,计算服务器也可以称为计算节点,存储服务器也可以称为存储节点。本发明中可能的数据中心可以是指具有分离的计算节点和存储节点的数据中心。数据中心的计算服务器可以是用于执行数据计算/处理的服务器,例如处理批作业和执行用户软件。计算服务器可以用于处理来自用户或应用程序的传入请求。例如,计算服务器可以用于执行用户的软件。用于数据中心的存储服务器可以是用于存储和检索用户数据等数据的服务器。
需要说明的是,在数据中心中,尤其是在具有分离的计算服务器和存储服务器的数据中心中,在没有主要功能问题的情况下,计算服务器和存储服务器的角色不能互换。例如,计算服务器不能用作存储服务器,反之亦然。这是因为计算服务器和存储服务器的硬件配置可以是不同的:计算服务器的一个或多个处理器可以比存储服务器的处理器强大得多;存储服务器的存储容量可以比计算服务器的存储容量大得多(例如,比计算服务器大十倍或更多倍);并且计算服务器的随机存取存储器(random-access memory,RAM)可以大于存储服务器的随机存取存储器。例如,计算服务器和存储服务器可以是具有不同配置的刀片服务器。
数据中心可以包括多个前端服务器、计算服务器和存储服务器。多个服务器可以布置在数据中心的一个或多个机架中。
可选地,多个存储服务器可以形成一个存储集群,可以以扁平方式或分层方式组织。在扁平存储集群中,存储服务器在处理数据请求方面可以是平等的,数据请求可以到达其中的任何一个存储服务器。在分层存储集群中,存储服务器可以按级别组织,存储请求可以逐级传递,直到定位到目标数据。可选地,分层存储集群中的最低级别可以用于保存数据。类似地,多个前端服务器和计算服务器可以分别形成前端集群和计算集群。
如图1A和图1B中所示,本发明的数据中心的典型操作可以包括计算节点接收请求,从存储节点获取必要的数据,根据请求对获取的数据进行处理,并将处理后或更新后的数据发回存储节点进行存储。可选地或附加地,可以向请求发起者发送响应。这种过程可以涉及在计算服务器与存储服务器之间多次传递数据。有时,实际上可能只需要少量传递的数据。移动大量数据会消耗大量时间和带宽,并可能成为数据中心性能提升的重大瓶颈。
图2示出了本发明提供的存储服务器200的示例。存储服务器200适合用于图1A或图1B所示的数据中心。存储服务器200用于接收数据请求208。可选地,该数据请求可以来自计算节点或前端服务器,也可以来自数据中心外部。存储服务器200不必知道从何处接收数据请求。
数据请求208指示目标数据210和用户定义代码209。可选地,数据请求208可以看作是近数据处理请求。可选地,数据请求208可以包括至少两个部分。第一部分可以包括目标数据210的标识符,第二部分可以包括嵌入的用户定义代码或用户定义代码209的标识符。可选地,目标数据210的标识符可以包括目标数据210的链接(例如,URL)、路径或引用。目标数据210可以包括一个或多个对象(或文件)。用户定义代码209的标识符可以包括用户定义代码209的链接(例如,URL)、路径或引用。例如,用户定义代码209可以是以下中的任一个:
-用任何编程语言编写的源代码;
-字节码、中间表示(intermediate-representation,IR)或中间语言(intermediate language,IL),如Java字节码、LLVM IR或.NET IL;
-二进制可执行文件和库,例如机器码。
可选地,用户定义代码209可以以压缩和/或编码的形式提供,并且还可以包括软件组件,例如多媒体、配置和脚本文件。
存储服务器200还用于根据数据请求208通过使用存储服务器200的存储软件206获取目标数据210。可选地,可以从存储服务器200的存储介质205中检索目标数据210。存储介质205可以包括例如硬盘(hard disk,HDD)、固态硬盘(solid-state drive,SSD)和磁带。存储介质205可以以磁盘阵列的形式组织。
可选地,存储服务器200可以用于托管操作系统,存储软件206在所述操作系统上运行。可选地,存储软件206可以与操作系统集成。因此,存储软件206可以被认为是存储服务器200的可信软件,而用户定义代码209可以被认为是存储服务器200的不可信软件。
可选地,存储服务器200还可以用于与负载均衡器(图2中未示出)通信。在存储服务器200接收数据请求208之前,负载均衡器可以用于检查存储服务器200是否能够或适合处理数据请求208。例如,负载均衡器可以用于收集存储服务器200的当前状态,并且可以用于基于当前状态做出决策,其中,所述状态可以是存储服务器200的负载水平。另一种状态可以包括功耗、用户的凭证等。负载均衡器可以用于收集多于一个这种当前状态。可选地,在数据中心内存在多个存储服务器的情况下,负载均衡器还可以用于将收集到的状态(或多于一个状态)共享给其它存储服务器。在这种情况下,多个负载均衡器可以用于协调维持多个存储服务器的多于一个状态(例如负载、功率、缓存、用户等)的内聚状态。可选地,负载均衡器可以是用于执行上述功能的服务器。
可选地,负载均衡器可以用于将数据请求拆分为多个子请求。然后,负载均衡器可以用于将子请求提供给存储服务器200,或者提供给数据中心中包括的其它存储服务器(如果有的话)。需要说明的是,在这种情况下,图2中的数据请求208可以看作是多个子请求中的一个。这样,可以将复杂的任务分解为多个子任务,这些子任务可以被存储服务器200和/或处理能力有限的其它存储服务器更高效地处理。
通过使用可选的负载均衡器,存储服务器200不太可能因过度负载而过载。因此,数据中心可以更鲁棒地抵御拒绝服务(denial-of-service,DoS)攻击。因此,可以进一步提高数据中心的安全级别。
然后,存储服务器200用于使用目标数据210作为输入在隔离执行环境207中执行用户定义代码209。隔离执行环境207与存储软件206分离。
可选地,隔离执行环境207与存储软件206分离,可以理解为在隔离执行环境207内部执行的操作不会对隔离执行环境207外部的实体产生任何影响,尤其不会对存储软件206运行的操作产生任何影响。
可选地,在执行用户定义代码209之前,存储服务器200可以用于确定存储服务器的一个或多个空闲处理器。在确定存在一个或多个空闲处理器之后,存储服务器200可以用于使用一个或多个空闲处理器执行用户定义代码。可选地,空闲处理器可以是具有足够周期来执行用户定义代码209和用于创建和维护隔离执行环境207的相关软件的处理单元。可选地,处理单元可以是中央处理器(central processing unit,CPU)、专用处理器、托管在智能网络接口卡(smart network interface card,SmartNIC)上的处理器、图形处理单元(graphic processing unit,GPU)、神经处理单元(neural processing unit,NPU)、现场可编程门阵列(field-programmable gate array,FGPA)或专用集成电路(applicationspecific integrated circuit,ASIC)。
可选地,对于执行用户定义代码209,存储服务器200可以用于根据数据请求208获取用户定义代码209,并将获取的用户定义代码209实例化到隔离执行环境207中。
可选地,隔离执行环境207可以是沙箱,可以通过计算机虚拟化技术实现。例如,隔离执行环境207可以基于虚拟机,也可以基于容器。虚拟机或容器可以用于为特定应用程序或软件提供专用的执行环境。此外,存储服务器200可以用于使用如上所述的处理单元来运行(例如,创建和维护)隔离执行环境207。
可选地,存储服务器200可以用于创建隔离执行环境207的一个或多个检查点或映像。这样,隔离执行环境207可以从一个或多个检查点或映像开始或重新开始。这可以有助于减少隔离执行环境207的启动时间,并且可以进一步提高数据处理速度。
可选地,存储服务器200可以用于采用多个隔离执行环境207、207'。多个隔离执行环境207、207'可以是用户专用的,也可以是代码专用的。对于用户专用执行环境207,存储服务器200可以用于为每个用户分配专用的隔离执行环境。对于代码专用执行环境207,存储服务器200可以用于为每个代码分配专用的隔离执行环境。例如,存储服务器200可以分配三个沙箱,分别用于执行Java字节码、LLVM IR和.NET IL。
存储服务器200还用于获取执行用户定义代码的结果212,作为与数据请求相关的输出。结果212可以可选地存储到存储服务器200中,例如存储到存储介质205中。
通过在存储服务器上执行用户定义代码,可以高效地执行数据复制、移动、传输、过滤、聚合和统计等操作,这些操作通常需要在数据中心的服务器之间进行数据传输。因为可以避免或至少减少数据中心的服务器之间的数据传输。用户定义代码209可以在目标数据210的存储位置附近执行。这样,通过存储服务器200,可以加快数据处理速度,更高效地利用数据中心的网络资源,提高数据中心的性能。
需要说明的是,可以使用本领域公知的任何合适的手段来确定将数据请求发送到哪个存储服务器。例如,当只有一个存储服务器时,数据请求将发送到该存储服务器。当具有多个存储服务器时,前端服务器或计算服务器可以用于基于数据请求208确定存储服务器。或者,如图1B中示例性地描述,存储网络交换机可以用于基于数据请求208确定存储服务器。但是,这对于存储服务器200既不重要也不相关。存储服务器200只要接收到数据请求208,就完全能够处理数据请求208,与在哪里和如何接收数据请求208无关。
通过在隔离执行环境207中执行用户定义代码,可以降低用户定义代码带来的安全风险。因此,可以维持或提高数据中心的安全级别。
图2还描述了存储服务器200可以包括的一些可选的和示例性的硬件单元。例如,存储服务器可以包括存储器201、处理单元203和存储介质205中的至少一个。处理单元203可以用于执行上述针对存储服务器200的功能,包括但不限于运行存储软件206、创建和维护隔离执行环境207以及处理数据请求208。存储器201可以是随机存取存储器(randomaccess memory,RAM),可以用于临时存储或缓存数据。存储介质205可以用于为数据中心存储包括目标数据210的数据。存储器201、处理单元203和存储介质205可以通过总线或总线的层次结构(图2中未示出)连接。
可选地,存储介质205可以通过任何合适的计算机存储接口连接。计算机存储接口可以包括以下中的一个或多个:包括PCIe和PCI-X的外围组件互连(peripheral componentinterconnect,PCI)、高级主机控制器接口(advanced host controller interface,AHCI)、串行高级技术附件(serial advanced technology attachment,SATA)接口、SATAExpress、通用串行总线(universal serial bus,USB)、U.2(以前称为SFF-8639)、M.2(以前称为下一代封装尺寸(next generation form factor,NGFF))、非易失性内存主机控制器接口规范(non-volatile memory express,NVMe)等。
图3示出了本发明提供的另一个存储服务器300。存储服务器300基于图2中的存储服务器200构建,也具有图2中针对存储服务器200所述的元件、功能和特征。
图3中的存储服务器300还可以包括队列或请求队列301。请求队列301可以用于在存储服务器300接收到数据请求208之后缓存数据请求208。当存储服务器300正在处理其它数据请求或者存储服务器300繁忙时,这尤其有益,因为数据请求208可以暂时保存在请求队列301中,而不是立即被丢弃。
可选地,当数据请求208被临时保存在请求队列301中时,存储服务器300可以用于在隔离执行环境207中预加载用户定义代码209。这可以避免等待隔离执行环境207的启动时间,并且用户定义代码可以在检索数据请求208后及时执行。需要说明的是,尽管数据请求208被临时保存在请求队列301中,但是存储服务器300仍然能够例如通过简单地解析数据请求208的第二部分来获得由数据请求208指示或包括在数据请求208中的用户定义代码209。
存储服务器300可以用于例如在满足某些条件时拾取或检索数据请求208以进行进一步处理。这些条件可以包括但不限于:存在至少一个空闲处理器;存在足够的资源(例如功率、RAM和处理器周期)来执行数据请求208,而不影响存储服务器300执行的其它任务的执行,例如传统的存储请求和用于近数据处理的其它数据请求。可选地,当请求队列301中存在多个数据请求时,存储服务器300可以用于基于对要消耗的资源和/或执行持续时间的估计来决定要检索哪个(哪些)数据请求。可以使用算法(例如但不限于经典队列算法和基于机器学习的算法)来决定接下来检索哪个数据请求。
通过包括请求队列301,可以引入已经运行的任务的性能隔离。因此,可以维持承诺的服务水平协议,并且可以避免数据中心中的拒绝服务。
需要说明的是,为了简单起见,图2的一些元件没有在图3中示出,例如可选的负载均衡器、用户定义代码209和数据流208、210、212。除非另有说明,否则这些省略的元件仍然可以应用于存储服务器300。例如,图3中的数据请求208不是直接馈送到存储软件206中,而是可以存储在请求队列301中。
图4示出了本发明提供的另一个存储服务器400。存储服务器400基于图2中的存储服务器200或图3中的存储服务器300构建,可以分别具有针对图2中的存储服务器200或图3中的存储服务器300所述的元件、功能和特征。
图4中的存储服务器400还可以用于使用共享内存进程间通信机制实现存储软件206与在隔离执行环境207中执行的用户定义代码之间的通信。存储软件206还可以用于将获取的目标数据210存储到第一共享内存区域401中,并从第二共享内存区域402中收集执行用户定义代码的结果212。
这样,可以避免存储服务器400内部的数据复制、传输等操作。因此,可以进一步提高数据处理速度。
可选地,第一共享内存区域401可以用于作为输入缓冲区,第二共享内存区域402可以用于作为输出缓冲区。所述输入缓冲区可以用于只读,所述输出缓冲区可以用于只写。这样,除了存储软件206之外的任何实体,例如隔离执行环境207,只能从输入缓冲区读取,并且只能写入输出缓冲区。可以潜在地避免侧通道攻击、隐蔽通道攻击、内存损坏攻击等恶意操作。因此,可以进一步避免数据泄露,进一步提高存储服务器的数据安全性。
可选地,当隔离执行环境207、207'多于一个时,存储服务器400可以用于在多个隔离执行环境207、207'上分配共享内存区域。或者,存储服务器400可以用于为每个隔离执行环境创建共享内存区域。
需要说明的是,图2和图3的元件,例如图2的负载均衡器和图3所示的请求301,也可以与图4中的存储服务器400兼容和组合。只是为了简单起见,这些省略的元件没有在图4中示出。
图5示出了本发明提供的另一个存储服务器500。存储服务器500可以基于图2至图4中的存储服务器200至400中的任何一个构建,并且可以具有图2至图4中针对存储服务器200至400中的任何一个所述的元件、功能和特征。
图4中的存储服务器400还可以包括一个或多个支持组件501、501'。每个支持组件501可以连接到隔离执行环境,或者可以在隔离执行环境内执行。每个支持组件501可以包括用于支持用户定义代码209的执行的运行时系统和/或库。
可选地,用户定义代码209可以是不同的形式,包括但不限于任何语言的源代码、中间语言和可执行二进制文件。基于用户定义代码的类型,支持组件501可以包括支持元件,例如操作系统、运行时系统、配置和库,以促进用户定义代码209的执行。这样,可以提高存储服务器以及数据中心的可用性、兼容性和可移植性。
需要说明的是,图2至图4的元件,例如图2的负载均衡器、图3所示的请求301、图4所示的共享内存区域401和402,也可以与图5中的存储服务器500兼容和组合。为了简单起见,这些省略的元件没有在图5中示出。
图6示出了本发明提供的另一个存储服务器600。存储服务器600可以基于图2至图5中的存储服务器200至500中的任何一个构建,并且可以具有图2至图5中针对存储服务器200至500中的任何一个所述的元件、功能和特征。
图6的存储服务器600可以包括至少两个部分:存储服务器前端601和存储服务器后端602。
存储服务器前端601可以用于侧重于数据处理,例如对目标数据210执行用户定义代码209。为此,存储服务器前端601可以包括物理组件,例如存储器201、处理单元203。存储服务器前端601可以运行存储软件206和隔离执行环境207。
存储服务器后端602可以用于侧重于数据存储,例如存储和检索目标数据210以及存储结果212。为此,存储服务器后端602可以包括存储介质205。类似地,存储介质205可以包括硬盘(hard disk,HDD)、固态硬盘(solid-state drive,SSD)和磁带。存储介质205可以以磁盘阵列的形式组织。可选地,存储服务器600可以包括多于一个存储前端601。可选地或附加地,存储服务器600可以包括多于一个存储服务器后端602。
可选地,至少一个存储服务器前端601和至少一个存储服务器后端602可以通过任何合适的计算机存储接口连接。至少一个存储服务器前端601和至少一个存储服务器后端602可以在有线网络中连接或通过例如InfiniBand、铜缆、光技术、以太网、局域网(localarea network,LAN)、无线局域网(wireless local area network,WLAN)和蜂窝网等网络无线连接。
通过将存储服务器600拆分为至少两个部分,可以为存储服务器600引入灵活性和可扩展性。例如,可以更新或替换存储服务器前端601而不影响存储服务器后端602。可以在不影响存储服务器前端601的情况下扩展存储服务器后端602。
需要说明的是,图2至图5中的元件,例如图2的负载均衡器、图3所示的请求301、图4所示的共享内存区域401和402、图5所示的支持组件501,也可以与图6中的存储服务器600兼容和组合。为了简单起见,这些省略的元件没有在图6中示出。
图7A示出了本发明提供的系统710的示例。
图7A所示的系统710包括至少一个前端服务器711和至少一个存储服务器。存储服务器可以基于图2至图6中的存储服务器200至600中任何一个构建。前端服务器711可以用于从系统710外部获取数据请求208。然后,前端服务器711可以用于将数据请求208直接转发给存储服务器,或者通过数据中心交换机等网络转发给存储服务器。
可选地,系统710还可以包括负载均衡器713。负载均衡器713可以连接到前端服务器,如图7A所示。或者,负载均衡器713可以是前端服务器(图7A中未示出)的一部分。负载均衡器713可以共享与针对图2中的负载均衡器所述的相同功能和特征。
可选地,系统710还可以包括至少一个计算服务器712。
图7B示出了本发明提供的系统720的另一个示例。
图7B所示的系统720包括至少一个计算服务器722和至少一个存储服务器。存储服务器可以基于图2至图6中的存储服务器200至600中任何一个构建。计算服务器722可以用于生成数据请求208,并将数据请求208直接发送给存储服务器,或者通过网络(例如存储网络交换机)发送给存储服务器。
可选地,系统720还可以包括负载均衡器713。负载均衡器713可以连接到计算服务器(图7B中未示出)。或者,负载均衡器713可以是如图7B所示的计算服务器的一部分。负载均衡器713可以共享与针对图2中的负载均衡器所述的相同功能和特征。
可选地,系统720还可以包括至少一个前端服务器721。
在系统710或720中,接口可以被定义并用于向存储层(例如,至少一个存储服务器)提交请求。可以为处理目标数据定义至少三个通用类别:增强读(augmented read)、增强写(augmented write)和增强变换(augmented transform)。增强读可以是指对已经存储在存储层内部的目标数据执行用户定义代码,并将结果输出给数据请求的发起者的过程。增强写可以是指对待写入存储层的目标数据执行用户定义代码的过程。增强变换可以是指对已经存储在存储层内部的目标数据执行用户定义代码,并将结果存储到存储层的过程。
可选地,invoke()、invoke_get()或invoke_read()等一系列库调用可以被定义并用于指定目标数据和用户定义代码。例如,数据中心可以使用表述性状态传递(representational state transfer,REST)协议。用户软件可以使用一系列库调用生成数据请求。然后,可以将数据请求变换为一个或多个REST调用,这些调用可以由存储服务器的存储软件206处理。
需要说明的是,图7B中的计算服务器722可以与图7A中的系统710兼容。也就是说,图7A中的计算服务器712可以由图7B中的计算服务器722替换。类似地,图7A中的前端服务器711可以与图7B中的系统720兼容。也就是说,图7B中的前端服务器721可以由图7A中的前端服务器711替换。图7A和图7B之间的负载均衡器713也是可兼容和可切换的。也就是说,图7B中的负载均衡器713也可以是连接到计算服务器722的独立服务器;图7A中的负载均衡器713也可以包括在前端服务器711内部。
通常,在本发明中,前端服务器和计算服务器中的至少一个用于将数据请求208发送到存储服务器就足够了。
图8示出了本发明提供的方法800的示图。
方法800由图2至图6中的存储服务器200至600中的任何一个所述的存储服务器执行。方法800包括以下步骤:
-步骤801:获取数据请求,其中,数据请求指示目标数据和用户定义代码;
-步骤802:通过使用存储服务器的存储软件,获取目标数据;
-步骤803:使用目标数据作为输入,在隔离执行环境中执行用户定义代码,其中,执行环境与存储软件分离;
-步骤804:获取执行用户定义代码的结果,作为与数据请求相关的输出。
可选地,从上述图2至图6中所示的存储服务器的角度看,方法800的步骤可以共享相同的功能和细节。因此,此时不再详细描述对应的方法实现方式。
图9示出了本发明提供的另一个方法900的示图。
方法900用于包括至少一个存储服务器以及计算服务器和前端服务器中的至少一个的系统。方法900包括以下步骤:
-步骤901:计算服务器和前端服务器中的至少一个将数据请求提供给至少一个存储服务器;
-步骤902:至少一个存储服务器获取数据请求,其中,数据请求指示目标数据和用户定义代码;
-步骤903:至少一个存储服务器通过使用至少一个存储服务器的存储软件获取目标数据;
-步骤904:至少一个存储服务器使用目标数据作为输入,在隔离执行环境中执行用户定义代码,
其中,执行环境与存储软件分离;
-步骤905:至少一个存储服务器获取执行用户定义代码的结果,作为与数据请求相关的输出。
可选地,从上述图2至图7中所示的系统的角度看,方法900的步骤可以共享相同的功能和细节。因此,此时不再详细描述对应的方法实现方式。
图10示出了本发明的应用场景,其中,功能即服务(function as a service,FaaS)部署在数据中心中。图10中的数字1至7表示数据中心中前端节点(即前端服务器)、计算节点(C)和存储节点(S)之间数据流的顺序。
在FaaS设置中,用户定义代码可以包括一个或多个编程语言程序和/或函数。可选地,其中可以包括入口点,该入口点是要执行的第一程序或函数。FaaS的不同实现方式支持不同的编程语言。基于编程语言,程序和/或函数可以被编译成本机代码或中间代码。或者,它们可以作为源代码保存。例如,Python代码可以作为源代码保存并且仍然可以执行;Java代码可以被编译成中间代码;C/C++代码可以被本机编译。可选地,基于编程语言,所述程序和/或函数需要运行时才能执行,而运行时不在用户定义代码中提供。而是由FaaS运行时系统提供。FaaS运行时系统可以包括系统服务、系统库和用于非本机编译的所述程序和/或函数的实际语言运行时系统。可选地,FaaS运行时系统可以包括操作系统。
根据本发明,FaaS运行时系统可以嵌入到隔离执行环境中,例如一个或多个存储节点上的沙箱。
FaaS运行时系统可以用于支持由数据请求触发的新事件。数据请求可以是增强读请求、增强写请求或增强变换请求,并携带用户定义代码,或引用用户定义代码的URL。
可选地,增强读请求和增强变换请求的目标数据可以来自存储层,而增强写请求的目标数据可以来自用户(而不是来自存储层)。对于增强读请求,可以将结果发送给用户。对于变换请求或写请求,可以将结果发送给存储层。
可选地,如果用户定义代码被提供为URL,则这样的用户定义代码在被引用或使用之前可以存储在存储层本身的某处或互联网上。为了获取用户定义代码,存储节点可以用于检索用户定义代码并将其上载到隔离执行环境。可选地,存储节点可以用于对用户定义代码的合法性和格式进行检查。预检查可以在不同方面有所帮助,例如确保提供的函数程序是合法的。
可选地,FaaS运行时系统可以用于支持如上所述的可选共享内存进程间通信机制。
本发明的另一个应用场景是在数据中心中部署数据库(或数据存储库)系统。SQL软件(例如,MySQL)等数据库,或者NoSQL软件(例如,Spark)等数据存储库可以支持用户定义函数(user-defined function,UDF)。但是,支持的UDF通常在格式、功能和编程语言方面受到限制。
本发明可以帮助数据库或数据存储库支持在数据库或数据存储库软件本身外部运行的UDF,尽管在同一机器(即,存储服务器)上。因此,在本发明中,可以用任何编程语言定义UDF。
需要说明的是,本发明的任何存储服务器(如上所述)可以包括处理电路,所述处理电路用于分别执行、进行或启动本文所述设备的各种操作。处理电路可以包括硬件和软件。硬件可以包括模拟电路或数字电路,或既包括模拟电路又包括数字电路。数字电路可以包括专用集成电路(application-specific integrated circuit,ASIC)、现场可编程阵列(field-programmable array,FPGA)、数字信号处理器(digital signal processor,DSP)或多用途处理器等组件。在一个实施例中,处理电路包括一个或多个处理器和连接到一个或多个处理器的非瞬时性存储器。非瞬时性存储器可以携带可执行程序代码,可执行程序代码在由一个或多个处理器执行时,使设备分别执行、进行或启动本文所述的操作或方法。
还需要说明的是,本发明中的存储服务器可以是能够执行计算的单个电子设备或装置,也可以包括能够利用共享系统存储器进行计算的一组连接的电子设备或模块。本领域公知的是,这样的计算能力可以结合到许多不同的设备或模块中,因此术语“设备”或“装置”可以包括芯片、芯片组、计算机、服务器等。
已经结合作为示例和实施方式的各种实施例描述了本发明。但是,本领域技术人员通过实践请求保护的主题,研究附图、本发明以及独立权利要求,能够理解并实现其它变体。在权利要求书以及说明书中,词语“包括”不排除其它元件或步骤,且“一个”不排除多个。例如,数据请求指示的用户定义代码可以包括一系列可执行二进制文件和/或命令。单个元件或其它单元可满足权利要求中描述的若干实体或项目的功能。在互不相同的从属权利要求中列举某些措施并不表示这些措施的组合不能用于有利的实现方式中。
Claims (17)
1.一种用于数据中心的存储服务器(200),其特征在于,所述存储服务器(200)用于:
获取数据请求(208),其中,所述数据请求(208)指示目标数据(210)和用户定义代码(209);
通过所述存储服务器(200)的存储软件(206)获取所述目标数据(210);
使用所述目标数据(210)作为输入,在隔离执行环境(207)中执行所述用户定义代码(209),其中,所述隔离执行环境(207)与所述存储软件(206)分离;
获取执行所述用户定义代码(209)的结果,作为与所述数据请求(208)相关的输出。
2.根据权利要求1所述的存储服务器(200),其特征在于,为了执行所述用户定义代码(209),所述存储服务器(200)用于:
确定所述存储服务器(200)的一个或多个空闲处理器;
通过使用所述一个或多个空闲处理器,执行所述用户定义代码(209)。
3.根据权利要求2所述的存储服务器(200),其特征在于,在确定所述一个或多个空闲处理器之前,所述存储服务器(200)用于将所述数据请求(208)存储在队列(301)中;
在确定所述一个或多个空闲处理器期间或之后,所述存储服务器(200)用于从所述队列(301)中拾取所述数据请求(208)。
4.根据权利要求1至3中任一项所述的存储服务器(200),其特征在于,还用于使用共享内存进程间通信机制在所述存储软件(206)与在所述隔离执行环境(207)中执行的所述用户定义代码(209)之间进行通信,所述存储软件(206)还用于:
将所述获取的目标数据(210)存储到第一共享内存区域(401)中;
从第二共享内存区域(402)中获取执行所述用户定义代码(209)的所述结果(212)。
5.根据权利要求4所述的存储服务器(200),其特征在于,所述第一共享内存区域(401)包括输入缓冲区,所述第二共享内存区域(402)包括输出缓冲区,其中,所述输入缓冲区用于只读,所述输出缓冲区用于只写。
6.根据权利要求1至5中任一项所述的存储服务器(200),其特征在于,还包括一个或多个支持组件(501),其中,每个支持组件(501)与所述隔离执行环境(207)相关联,并且包括以下中的至少一个:操作系统、运行时系统和用于支持所述用户定义代码(209)的所述执行的库。
7.根据权利要求1至6中任一项所述的存储服务器(200),其特征在于,还用于:
创建所述隔离执行环境(207)的检查点或映像。
8.根据权利要求1至7中任一项所述的存储服务器(200),其特征在于,所述隔离执行环境(207)基于虚拟机或容器。
9.一种系统,其特征在于,包括至少一个根据权利要求1至8中任一项所述的存储服务器(200),所述系统还包括计算服务器和前端服务器中的至少一个,其中,所述计算服务器和所述前端服务器中的至少一个用于将所述数据请求(208)提供给所述至少一个存储服务器(200)。
10.根据权利要求9所述的系统,其特征在于,所述系统(710)包括至少一个前端服务器(711),所述至少一个前端服务器(711)用于:
从所述系统外部获取所述数据请求(208);
将所述数据请求(208)转发给所述至少一个存储服务器(200)。
11.根据权利要求9所述的系统,其特征在于,所述系统(720)包括至少一个计算服务器(722),所述至少一个计算服务器(722)用于:
生成所述数据请求(208);
将所述数据请求(208)转发给所述至少一个存储服务器(200)。
12.根据权利要求9至11中任一项所述的系统,其特征在于,所述计算服务器和所述前端服务器中的所述至少一个用于:
监控每个存储服务器的状态;
将所述数据请求(208)提供给基于所述监控状态选择的存储服务器。
13.根据权利要求9至12中任一项所述的系统,其特征在于,所述计算服务器和所述前端服务器中的所述至少一个还用于:
将所述数据请求(208)拆分为多个子请求;
将所述多个子请求提供给基于所述监控状态选择的所述至少一个存储服务器(200)中的一个或多个存储服务器。
14.一种由用于数据中心的存储服务器(200)执行的方法(800),其特征在于,所述方法(800)包括:
获取(801)数据请求,其中,所述数据请求指示目标数据和用户定义代码;
通过使用所述存储服务器(200)的存储软件,获取(802)所述目标数据;
使用所述目标数据作为输入,在隔离执行环境中执行(803)所述用户定义代码,其中,所述执行环境与所述存储软件分离;
获取(804)执行所述用户定义代码的结果,作为与所述数据请求相关的输出。
15.一种用于系统的方法(900),其特征在于,所述系统包括至少一个存储服务器(200),以及计算服务器和前端服务器中的至少一个,其中,所述计算服务器和所述前端服务器中的所述至少一个连接到所述至少一个存储服务器(200),所述方法(900)包括:
所述计算服务器和所述前端服务器中的所述至少一个将数据请求提供(901)给所述至少一个存储服务器;
所述至少一个存储服务器(200)获取(902)所述数据请求,其中,所述数据请求指示目标数据和用户定义代码;
通过使用所述存储服务器(200)的存储软件,获取(903)所述目标数据;
所述至少一个存储服务器(200)使用所述目标数据作为输入,在隔离执行环境中执行(904)所述用户定义代码,其中,所述执行环境与所述存储软件分离;
所述至少一个存储服务器(200)获取(905)执行所述用户定义代码的结果,作为与所述数据请求相关的输出。
16.一种包括指令的计算机程序,其特征在于,当所述程序由计算机执行时,所述指令使所述计算机执行根据权利要求14所述的方法。
17.一种包括指令的计算机程序,其特征在于,当所述程序由第一计算机和至少一个第二计算机执行时,所述指令使所述第一计算机和所述至少一个第二计算机执行根据权利要求15所述的方法。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2021/135544 WO2023097703A1 (en) | 2021-12-03 | 2021-12-03 | A storage server forsecure and performant execution of user code in a data center storage |
Publications (1)
Publication Number | Publication Date |
---|---|
CN118159956A true CN118159956A (zh) | 2024-06-07 |
Family
ID=86611436
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202180103656.4A Pending CN118159956A (zh) | 2021-12-03 | 2021-12-03 | 数据中心存储中用于安全、高性能地执行用户代码的存储服务器 |
Country Status (3)
Country | Link |
---|---|
EP (1) | EP4427145A1 (zh) |
CN (1) | CN118159956A (zh) |
WO (1) | WO2023097703A1 (zh) |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107657172A (zh) * | 2016-07-25 | 2018-02-02 | 腾讯科技(深圳)有限公司 | 代码处理方法、装置及系统 |
US11062021B2 (en) * | 2017-08-29 | 2021-07-13 | NortonLifeLock Inc. | Systems and methods for preventing malicious applications from exploiting application services |
CN112424765B (zh) * | 2018-07-20 | 2024-09-10 | 毕威拓软件公司 | 用于用户定义的函数的容器框架 |
US10997286B1 (en) * | 2020-06-02 | 2021-05-04 | Snowflake Inc. | Secure code execution in a database system |
-
2021
- 2021-12-03 WO PCT/CN2021/135544 patent/WO2023097703A1/en active Application Filing
- 2021-12-03 EP EP21966129.5A patent/EP4427145A1/en active Pending
- 2021-12-03 CN CN202180103656.4A patent/CN118159956A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
WO2023097703A1 (en) | 2023-06-08 |
EP4427145A1 (en) | 2024-09-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11868617B2 (en) | Virtualizing non-volatile storage at a peripheral device | |
US9817860B2 (en) | Generation and application of correctness-enforced executable filters | |
US10733019B2 (en) | Apparatus and method for data processing | |
US10574734B2 (en) | Dynamic data and compute management | |
US11093148B1 (en) | Accelerated volumes | |
CN109729106B (zh) | 处理计算任务的方法、系统和计算机程序产品 | |
US8516487B2 (en) | Dynamic job relocation in a high performance computing system | |
US20170031812A1 (en) | Scheme for determining data object usage in a memory region | |
CN109857545B (zh) | 一种数据传输方法及装置 | |
US20140019571A1 (en) | Processing data packets from a receive queue in a remote direct memory access device | |
US10873630B2 (en) | Server architecture having dedicated compute resources for processing infrastructure-related workloads | |
US11886302B1 (en) | System and method for execution of applications in a container | |
CN115858103A (zh) | 用于开放堆栈架构虚拟机之间热迁移的方法、设备及介质 | |
US20150113092A1 (en) | Method and apparatus for distributed enterprise data pattern recognition | |
KR20190119487A (ko) | 스몰 데이터 기계 학습을 위한 노드 관리 시스템 | |
US11507292B2 (en) | System and method to utilize a composite block of data during compression of data blocks of fixed size | |
CN115136133A (zh) | 按需代码执行的单次使用执行环境 | |
US10261722B2 (en) | Performing caching utilizing dispersed system buffers | |
CN110245027B (zh) | 一种进程间通信的方法和设备 | |
US11941446B1 (en) | Reducing extraneous messages in a distributed lock system | |
CN114726657B (zh) | 中断管理和数据收发管理的方法、装置及智能网卡 | |
US12107870B2 (en) | Protecting accelerators from malicious network functions | |
WO2019143967A1 (en) | Methods for automated artifact storage management and devices thereof | |
CN118159956A (zh) | 数据中心存储中用于安全、高性能地执行用户代码的存储服务器 | |
US20130318102A1 (en) | Data Handling in a Cloud Computing Environment |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |