CN117118962A - 用于跨多个云平台部署用户方法的方法和系统 - Google Patents

用于跨多个云平台部署用户方法的方法和系统 Download PDF

Info

Publication number
CN117118962A
CN117118962A CN202310919528.8A CN202310919528A CN117118962A CN 117118962 A CN117118962 A CN 117118962A CN 202310919528 A CN202310919528 A CN 202310919528A CN 117118962 A CN117118962 A CN 117118962A
Authority
CN
China
Prior art keywords
target
user
specific
class
data file
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
CN202310919528.8A
Other languages
English (en)
Other versions
CN117118962B (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.)
Lingyue Digital Information Technology Co ltd
Original Assignee
Lingyue Digital Information 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 Lingyue Digital Information Technology Co ltd filed Critical Lingyue Digital Information Technology Co ltd
Priority to CN202310919528.8A priority Critical patent/CN117118962B/zh
Publication of CN117118962A publication Critical patent/CN117118962A/zh
Application granted granted Critical
Publication of CN117118962B publication Critical patent/CN117118962B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

公开了用于跨多个云平台部署用户方法的方法和系统。该方法包括:在编译用户类的过程中识别用户类中定义的目标方法;将目标方法的方法名、参数列表以及用户类的类名记录到第一数据文件中,作为目标方法定义;生成目标方法的方法标识符,并将方法标识符记录在第一数据文件中;在多个云平台中的特定云平台处,将入口函数设置为与特定云平台对应的特定入口函数,特定入口函数具有用户类的类名作为参数;基于在特定云平台处接收到的HTTP请求,从第一数据文件检索特定目标方法定义;基于特定目标方法定义,调用一个或多个目标方法中的特定目标方法以服务HTTP请求。

Description

用于跨多个云平台部署用户方法的方法和系统
技术领域
本公开整体涉及计算机领域,并且具体地涉及用于跨多个云平台部署用户方法的方法、设备、计算机系统和介质。
背景技术
云计算技术得到了日益广泛的应用。不同的云厂商提供了不同的云平台。开发人员可以编写与应用和计算实例相关联的代码,并将应用和计算实例部署在一个或多个云平台上,从而减少本地部署服务器的需要。来自用户的请求可以被该一个或多个云平台中的合适的云平台服务。
然而,跨多个云平台部署用户的应用和计算实例可能存在许多问题。例如,对于包含函数(function)及其相应方法(method)的用户代码,不同的云平台对于函数规范的定义可能不同。这导致在跨云平台进行函数开发时,开发人员需要针对不同的云平台进行不同的开发处理,增加了开发人员的工作量和复杂度。类似地,如果需要针对不同的云平台进行不同的部署处理,则这也可能会增加开发人员的工作量和学习成本,同时也会增加部署和管理的复杂度。而且,如果在函数调用时需要遍历所有的函数定义才能定位到特定的用户函数,则这可能会降低函数调用的效率。此外,还面临一个或多个其他问题。
发明内容
本公开旨在提供一种用于跨多个云平台部署用户的方法、设备、计算机系统和介质。
根据本公开的一些实施例,提供了一种用于跨多个云平台部署用户方法的方法,包括:在编译用户类的过程中:识别用户类中定义的一个或多个目标方法;将一个或多个目标方法中的每个目标方法的方法名、参数列表以及用户类的类名记录到第一数据文件中,作为目标方法的目标方法定义;生成一个或多个用户目标方法中的每个目标方法的方法标识符,并将方法标识符记录在第一数据文件中;在多个云平台中的特定云平台处,将入口函数设置为与特定云平台对应的特定入口函数,特定入口函数具有用户类的类名作为参数;基于在特定云平台处接收到的HTTP请求,从第一数据文件检索特定目标方法定义;基于特定目标方法定义,调用一个或多个目标方法中的特定目标方法以服务HTTP请求。
根据本公开的一些实施例,一个或多个目标方法的封装不特定于多个云平台中的每个云平台的封装规范。
根据本公开的一些实施例,参数列表包括参数名和参数类型。
根据本公开的一些实施例,识别用户类中定义的一个或多个目标方法包括:扫描用户类的代码以识别标记有特定注解字段的一个或多个目标方法。
根据本公开的一些实施例,方法还包括:生成第二数据文件,第二数据文件记录与一个或多个用户目标方法中的每个目标方法对应的相应API信息,相应的API信息包括:HTTP方法类型、HTTP请求路径和目标方法的方法标识符。
根据本公开的一些实施例,从第一数据文件检索特定目标方法定义包括:基于与HTTP请求相关联的HTTP方法类型和HTTP请求路径,从第二数据文件中识别特定API信息;基于所识别的特定API信息中的方法标识符,从第一数据文件检索匹配的目标方法定义,作为特定目标方法定义。
根据本公开的一些实施例,基于特定目标方法定义调用特定目标方法包括:基于特定目标方法定义中的特定方法名和特定参数列表,检索特定用户目标方法;将特定入口函数的参数转换为特定参数列表的参数;以及通过反射机制调用特定目标方法以服务HTTP请求。
根据本公开的一些实施例,第一数据文件是第一JSON文件,第二数据文件是第二JSON文件,第一JSON文件和第二JSON文件被包含在编译用户类所生成的编译文件中。
根据本公开的一些实施例,方法还包括:定义抽象处理类,抽象处理类实现用于多个云平台中的每个云平台的规范方法封装;其中,用户类继承抽象处理类。
根据本公开的一些实施例,每个目标方法的方法标识符是基于该目标方法的方法名和参数列表而生成的唯一标识符。
根据本公开的一些实施例,每个目标方法的方法标识符是基于该目标方法的方法名和参数列表而生成的散列值。
根据本公开的一些实施例,多个云平台包括以下各项中的一个或多个:亚马逊AWSLambda平台、阿里云Function Compute平台、微软Azure Function App平台、腾讯云SCF平台,华为云Function Graph平台。
根据本公开的一些实施例,用户类是以以下各项中的一种编写的:JAVA、python、C#、NodeJS、golang。
根据本公开一些实施例,提供了一种计算机系统,包括:一个或多个处理器,和与所述一个或多个处理器耦接的存储器,所述存储器存储计算机可读程序指令,所述指令在被所述一个或多个处理器执行时执行如上所述的方法。
根据本公开一些实施例,提供了一种计算机可读存储介质,其上存储计算机可读程序指令,所述指令在被所述处理器执行时执行如上所述的方法。
根据本公开一些实施例,提供了一种用于跨多个云平台部署用户方法的计算机设备,包括用于实现如上所述的方法的步骤的装置。
附图说明
通过结合附图对本公开示例性实施方式进行更详细的描述,本公开的上述以及其它目的、特征和优势将变得更加明显,其中,在本公开示例性实施方式中,相同的参考标号通常代表相同部件。
图1示出了适于用来实现本发明实施方式的示例性计算机系统/服务器的框图。
图2示出了根据本公开的实施例的用于跨多个云平台部署用户的方法的流程图。
图3示出了根据本公开的实施例的基于来自用户的HTTP请求从第一数据文件检索特定目标方法定义的方法的流程图。
图4示出了根据本公开的实施例的基于特定目标方法定义调用特定目标方法的方法的流程图。
具体实施方式
下面将参照附图更详细地描述本公开的优选实施方式。虽然附图中显示了本公开的优选实施方式,然而应该理解,可以以各种形式实现本公开而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
图1示出了适于用来实现本发明实施方式的示例性计算机系统/服务器12的框图。图1显示的计算机系统/服务器12仅仅是示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图1所示,计算机系统/服务器12以通用计算设备的形式表现。计算机系统/服务器12的组件可以包括但不限于:一个或者多个处理器或者处理单元16,系统存储器(又称为内存)28,连接不同系统组件(包括系统存储器28和处理单元16)的总线18。
系统存储器28可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)30和/或高速缓存存储器32。计算机系统/服务器12可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统34可以用于读写不可移动的、非易失性磁介质。尽管图1中未示出,还可以提供磁盘驱动器以及光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。存储器28可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。
具有一组(至少一个)程序模块42的程序/实用工具40,可以存储在例如存储器28中,这样的程序模块42包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42通常执行本发明所描述的实施例中的功能和/或方法。
计算机系统/服务器12也可以与一个或多个外部设备14(例如键盘、指向设备、显示器24等)通信,还可与一个或者多个使得用户能与该计算机系统/服务器12交互的设备通信,和/或与使得该计算机系统/服务器12能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口22进行。并且,计算机系统/服务器12还可以通过网络适配器20与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器20通过总线18与计算机系统/服务器12的其它模块通信。应当明白,尽管图中未示出,可以结合计算机系统/服务器12使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
如前所述,不同的云平台对于函数规范的定义可能不同。这不利于开发人员所开发的代码的跨多平台部署和调用。
作为可用的多种云平台中的一种类型,亚马逊公司提供的AWS平台的示例云函数(lambda)具有表1所示的示例性java规范:
表1
作为可用的多种云平台中的另一种类型,阿里云的云函数(Function Compute)具有如表2所示的示例性java规范:
表2
作为可用的多种云平台中的另一种类型,腾讯云的云函数(Serverless CloudFunction,SCF)具有如表3所示的示例性java规范:
表3
作为可用的多种云平台中的另一种类型,华为云的云函数工作流(FunctionGraph)具有如表4所示的示例性java规范:
表4
作为可用的多种云平台中的另一种类型,谷歌云的云函数(gcp)具有如表5所示的示例性java规范:
表5
除了上述列举的多种云平台之外,还可能存在其他类型的云平台。此外,每个云平台的函数规范也可能随时间而变化。
在一些场景中,开发人员可能期望将所编写的处理逻辑应用于多种云平台。然而,各种云平台的函数规范的不同将增加导致开发人员的工作量和复杂度。例如,在跨云平台进行函数开发时,开发人员需要针对不同的云平台进行不同的开发处理,增加了开发人员的工作量和复杂度。如果需要针对不同的云平台进行不同的部署处理,则这也可能会增加开发人员的工作量和学习成本。如果没有一个统一的框架来支持跨云平台和多种编程语言的函数开发,可能需要开发人员针对不同的云平台和编程语言进行不同的开发和管理,从而增加工作量和复杂度。为此,本公开旨在提供一种用于跨多个云平台部署用户的方法、设备、计算机系统和介质。
图2示出了根据本公开的实施例的用于跨多个云平台部署用户的方法200的流程图。该方法200例如由图1所述的计算机系统/服务器12执行。
方法200开始于步骤202。在步骤202中,在编译用户类的过程中,计算机系统可以被配置为识别用户类中定义的一个或多个目标方法。
用户类可以是由用户定义的类(class)。用户类可以包括一个或多个字段以及一个或多个用户方法。目标方法可以是用户期望将要跨多个平台部署的用户方法。在编写用户类时,目标方法可以具有通用形式。该通用形式可以不特定于多个云平台中的每个云平台的封装规范。换句话说,开发人员可以不必采用特定云平台的封装规范来封装目标方法。这使得开发人员不必针对多个云平台中的每个云平台来重复地定义目标方法。开发人员甚至不必了解每个云平台的封装规范。这于是减轻了开发人员的工作量和学习成本。
在一些实施例中,用户类可以使用java语言来编写。然而,本领域技术人员可以理解,用户类可以使用任何合适的语言来编写,包括但不限于java、python、C#、NodeJS、golang。
在一些实施例中,用户类可以继承抽象处理类。用户类可以是该抽象处理类的子类。该抽象处理类可以包含用于多个云平台中的每个云平台的规范方法封装。该抽象处理类可以被用于为用户提供一个统一的入口点。例如,该抽象处理类可以包括被实现用于多个云平台中的每个云平台的规范方法封装的相应方法。通过使得用户类继承该抽象处理类,计算机系统可以调用抽象处理类中的相应方法来自动转换用户类中的一个或多个用户方法,使之适配于多个云平台中的目标云平台。该抽象处理类可以被多个用户类继承。开发人员不必为每个用户类编写转换方法,而是只需从该公共的抽象处理类继承这些方法。
在一些实施例中,可以通过用户代码中的特定注解字段来标识期望被跨多个平台部署的用户方法。所识别的用户方法可以被作为目标方法。例如,在用户代码中,该特定注解字段可以是位于用户方法的方法名前的特殊字符串。替代地,该特定注解字段也可以位于与用户方法相关联且能够标识该用户方法的任何其他指定位置。在编写用户代码时,开发人员只需将特定注解字段放置在目标方法相关联的指定位置。在编译用户类的过程中,计算机系统可以通过扫描用户类的代码以识别标记有特定注解字段的用户方法,作为一个或多个目标方法。
然后,方法200可以继续到步骤204。在步骤204中,计算机系统可以被配置为将该一个或多个目标方法中的每个目标方法的方法名、参数列表以及用户类的类名记录到第一数据文件中,作为该目标方法的目标方法定义。
具体而言,计算机系统可以解析具有通用形式的目标方法的代码,并从代码中解析目标方法的方法名和参数列表。在一些实施例中,参数列表包括可以包括参数名和参数类型。参数类型可以是各种数据类型中的任何数据类型,包括但不限于byte、short、int、long、float、double、boolean、char。在一些实施例中,参数类型可以包括其他类。
在一些实施例中,第一数据文件可以是JSON(JavaScript Object Notation,JS对象简谱)文件。JSON是一种数据交换语言,其采用完全独立于编程语言的文本格式来存储和表示数据。JSON文件易于机器解析和生成,能够有效地提升网络传输效率。例如,第一数据文件可以被命名为function.json。在其他实施例中,第一数据文件可以采用任何其他合适的数据交换语言。
在一些实施例中,计算机系统可以被配置为生成第二数据文件。第二数据文件记录与一个或多个用户目标方法中的每个目标方法对应的相应API信息。相应的API信息可以包括HTTP(Hypertext Transfer Protocol,超文本传输协议)方法类型、HTTP请求路径和所述目标方法的方法标识符。在一些实施例中,第二数据文件可以是JSON文件。例如,第二数据文件可以被命名为interface.json。在其他实施例中,第二数据文件可以采用任何其他合适的数据交换语言。
在一些实施例中,可以通过各种合适的方法来生成方法标识符。该方法标识符可以唯一地识别该方法。例如,每个目标方法的方法标识符可以是基于该目标方法的方法名和参数列表而生成的唯一标识符。优选地,可以将预定散列函数应用于目标方法的方法名和参数列表。相应地,每个目标方法的方法标识符是基于该目标方法的方法名和参数列表而生成的散列值。可以使用其他任何合适的方法来基于目标方法的属性生成其方法标识符。
在一些实施例中,第一数据文件和第二数据文件中的任一者可以被包含在编译用户类所生成的编译文件中。在另一些实施例中,第一数据文件和第二数据文件中的二者都可以被包含在编译用户类所生成的编译文件中。例如,在使用Java语言的实施例中,编译用户类所生成的编译文件可以是jar包文件。
然后,方法200可以继续到步骤206。在步骤206中,计算机系统可以被配置为生成该一个或多个用户目标方法中的每个目标方法的方法标识符,并将该方法标识符记录在第一数据文件中。优选地,每个目标方法的方法标识符可以与该目标方法的目标方法定义相关联的存储。
然后,方法200可以继续到步骤208。在步骤208中,计算机系统可以被配置为在多个云平台中的特定云平台处,将入口函数设置为与该特定云平台对应的特定入口函数。该特定入口函数具有用户类的类名作为参数。在一些实施例中,所述多个云平台包括以下各项中的一个或多个:亚马逊AWS Lambda平台、阿里云Function Compute平台、微软AzureFunction App平台、腾讯云SCF平台、华为云Function Graph平台。特定云平台可以是这些云平台中的任意云平台。
然后,方法200可以继续到步骤210。在步骤210中,计算机系统可以被配置为基于在特定云平台处接收到的HTTP请求。响应接收到该HTTP请求,计算机系统可以从第一数据文件检索特定目标方法定义。图3示出了根据本公开的实施例的基于来自用户的HTTP请求从第一数据文件检索特定目标方法定义的方法300的流程图。在步骤302处,计算机系统可以被配置为基于与HTTP请求相关联的HTTP方法类型和HTTP请求路径,从第二数据文件中识别特定API信息。然后,在步骤304处,计算机系统可以被配置为基于所识别的特定API信息中的方法标识符,从第一数据文件检索匹配的目标方法定义,作为特定目标方法定义。
现在返回图2。方法200可以继续到步骤212。在步骤212中,计算机系统可以被配置为基于特定目标方法定义,调用一个或多个目标方法中的特定目标方法以服务HTTP请求。图4示出了根据本公开的实施例的基于特定目标方法定义调用特定目标方法的方法400的流程图。在步骤402处,计算机系统可以被配置为基于特定目标方法定义中的特定方法名和特定参数列表,检索特定用户目标方法。然后,在步骤404处,计算机系统可以被配置为将特定入口函数的参数转换为特定参数列表的参数。然后,在步骤406处,计算机系统可以被配置为通过反射机制调用特定目标方法以服务HTTP请求。
应当理解,方法200的步骤和执行顺序是示例性而非限制性的。本领域技术人员可以理解,方法200的步骤中的一些步骤可以被拆分为多个子步骤,或者可以被合并为一个步骤。方法200的步骤中的一些步骤可以顺序地执行,也可以并行执行。方法200还可以包括本公开中描述的一个或多个其他方面。
下面针对可用的多种云平台中的一些示例性云平台,描述执行本公开的跨多个云平台部署用户方法的方法的示例性过程。
针对AWS云的Lambda函数,计算机系统可以将入口函数设置为{类名}::handleRequest。作为示例,可以将环境变量USER_METHOD_FLAG设置为目标方法的唯一方法标识符UserMethodID。当目标方法被调用时,计算机系统首先调用AWS官方规范入口方法String handleRequest(Map<String,String>event,Context context)。计算机系统根据第一数据文件function.json中的目标方法的定义列表和UserMethodID找出当前目标方法定义。计算机系统通过基于方法名和参数列表(包括参数名和参数类型)得到的方法标识符来找到特定的目标方法。然后,计算机系统将Lambda的入口参数转换成对应类型的方法参数。于是,计算机系统通过Java反射机制来调用目标方法。
针对阿里云函数,计算机系统可以将入口函数设置为{类名}::handleRequest。作为示例,计算机系统可以将环境变量USER_METHOD_FLAG设置为目标方法的唯一方法标识符UserMethodID。当目标方法被调用时,计算机系统首先调用阿里云函数计算规范入口方法SimpleResponse handleRequest(SimpleRequest request,Context context)。计算机系统根据function.json中的目标用户方法定义列表和UserMethodID找出当前目标用户方法定义。计算机系统通过基于方法名和参数列表(包括参数名和参数类型)得到的方法标识符来找到特定的目标方法。然后,计算机系统将入口参数转换成对应类型的方法参数。于是,计算机系统通过Java反射机制来调用目标方法。
针对微软的Azure云函数,计算机系统通过@FunctionName()注解中的名称识别到入口函数。作为示例,计算机系统可以将环境变量USER_METHOD_FLAG设置为唯一方法标识符UserMethodID。当目标方法被调用时,计算机系统首先进入到Azure入口方法。计算机系统根据function.json中的目标用户方法定义列表和UserMethodID找出当前目标用户方法定义。计算机系统通过基于方法名和参数列表(包括参数名和参数类型)得到的方法标识符来找到特定的目标方法。然后,计算机系统将方法计算的入口参数转换成对应类型的方法参数。于是,计算机系统通过Java反射机制来调用用户方法。
针对腾讯云的SCF函数,计算机系统将入口函数设置为{类名}::mainHandler。作为示例,计算机系统可以将环境变量USER_METHOD_FLAG设置为唯一方法标识符UserMethodID。当目标方法被调用时,计算机系统首先调用腾讯SCF计算规范入口方法mainHandler()。计算机系统根据function.json中的目标用户方法定义列表和UserMethodID找出当前目标用户方法定义。计算机系统通过基于方法名和参数列表(包括参数名和参数类型)得到的方法标识符来找到特定的目标方法。然后,计算机系统将方法计算的入口参数转换成对应类型的方法参数。于是,计算机系统通过Java反射机制来调用用户方法。
针对华为云函数,计算机系统将入口函数设置为{类名}::{方法名}。作为示例,计算机系统可以将环境变量USER_METHOD_FLAG设置为唯一方法标识符UserMethodID。当目标方法被调用时,计算机系统首先调用华为云函数工作流计算规范入口方法APIGTriggerResponse functionGraph(APIGTriggerEvent event,Context context)。计算机系统根据function.json中的目标用户方法定义列表和UserMethodID找出当前目标用户方法定义。计算机系统通过基于方法名和参数列表(包括参数名和参数类型)得到的方法标识符来找到特定的目标方法。然后,计算机系统将方法计算的入口参数转换成对应类型的方法参数。于是,计算机系统通过Java反射机制来调用用户方法。
针对谷歌云函数,计算机系统将入口函数设置为{类名}::accept。作为示例,计算机系统将环境变量USER_METHOD_FLAG设置为唯一方法标识符UserMethodID。当目标方法被调用时,计算机系统首先调用谷歌云函数计算规范入口方法void accept(CloudEventevent)。计算机系统根据function.json中的目标用户方法定义列表和UserMethodID找出当前目标用户方法定义。计算机系统通过基于方法名和参数列表(包括参数名和参数类型)得到的方法标识符来找到特定的目标方法。然后,计算机系统将方法计算的入口参数转换成对应类型的方法参数。于是,计算机系统通过Java反射机制来调用用户方法。
应当理解,尽管前面关于示例性云平台描述了执行本公开的跨多个云平台部署用户方法的方法的示例性过程,但本公开的方法可以也用于其他云平台而不脱离本公开的范围。此外,尽管前面关于java语言描述了该示例性过程,但本公开的方法也可以应用于其他语言(诸如python、C#、NodeJS、golang)而不脱离本公开的范围。
表6示出了根据本公开的实施例的定义抽象处理类的示例性代码部分。该代码部分定义了NepheleRequestHandler。作为示例,NepheleRequestHandler中针对阿里云和AWS云分别定义了规范封装。在其他实施例中,NepheleRequestHandler中也可以定义关于其他云平台的方法的规范封装。应当注意,抽象处理类的具体实现对于开发人员可以是透明的。抽象处理类可以被定义一次,然后被开发人员所定义的用户类继承。出于清楚的目的,表6中所示的代码部分是不完整的,仅显示与本公开最为相关的部分。
表6
表7示出了根据本公开的实施例的定义用户类的示例性代码部分。用户类继承了抽象处理类NepheleRequestHandler。出于清楚的目的,表7中所示的代码部分是不完整的,仅显示与本公开最为相关的部分。
表7
表8示出了定义根据本公开的实施例的第一数据文件function.json的示例性内容。该json文件记录了目标方法相关联的一个或多个信息,包括方法所在的类名、方法对接的业务事件类型、方法id、方法参数列表等等。
表8
表9示出了定义根据本公开的实施例的第二数据文件interface.json的示例性内容。
表9
在部署方法前,计算机系统可以设置环境变量(例如,NEPHELE_DEPLOY_PROVIDER),用于标记将使用的对应云平的台信息。
在方法的部署过程中,计算机系统根据function.json中每个函数的className将入口参数设置为{className}:handleRequest。计算机系统根据interface.json中每个api的httpMethod和urlPath设置api的请求类型和请求路径。计算机系统还根据interface.json中每个api对应的function_id设置api对应的处理函数。
在运行过程中,计算机系统将function.json和interface.json中信息读取到内存中。在接收到http请求时,计算机系统可以根据请求类型httpMethod和请求路径urlPath找到对应的API以及API对应的方法,根据方法的类名className,方法名methodName,以及参数信息methodArgsList对用户方法进行反射调用。
应当注意,第一数据文件function.json是根据每个开发人员的用户代码在本地生成的,因此不会有写入冲突问题。在每个开发人员本地运行时,每个开发人员都会生成自己的function.json和interface.json。其中,每个人的function组和API组是根据每个人的MAC进行独立区分的,互相不影响。在生产发布时,使用规定的一套发布流程,并且利用了terraform的能力将已经部署过的资源状态存在服务器中。因此,哪怕多次发布也会进行状态比对,不会造成重复的问题。
本公开的实施例提供了用于跨多个云平台部署用户方法的方法。本公开的实施例支持多个云平台和多种编程语言。例如,本公开的实施例可以同时支持阿里云函数计算、AWS Lambda、华为云函数、腾讯云函数、谷歌云函数等多个云平台。并且,本公开的实施例可以支持多种编程语言,如Java、Python、C#、Node.js、golang等。本公开的实施例能够统一多个云的函数调用。通过使用本公开的框架,可以在不同的云平台上实现同样的函数调用方式,从而实现跨云平台函数规范化处理。本公开的实施例能够增强函数调用效率。通过在代码编译时扫描有注解的目标方法,并将所有目标用户方法保存至function.json中,一起编译到jar包中,使得函数调用时可以直接定位到特定的用户函数,从而增强函数调用效率。本公开的实施例能够方便函数部署和管理。本公开的框架可以使函数部署和管理更加简单和方便,使得开发人员可以专注于函数的业务逻辑,而不必担心不同云平台的兼容性问题。
本公开的实施例可以被实现为方法、系统、设备和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。
根据本公开的一些实施例,提供了一种用于跨多个云平台部署用户方法的方法,包括:在编译用户类的过程中:识别用户类中定义的一个或多个目标方法;将一个或多个目标方法中的每个目标方法的方法名、参数列表以及用户类的类名记录到第一数据文件中,作为目标方法的目标方法定义;生成一个或多个用户目标方法中的每个目标方法的方法标识符,并将方法标识符记录在第一数据文件中;在多个云平台中的特定云平台处,将入口函数设置为与特定云平台对应的特定入口函数,特定入口函数具有用户类的类名作为参数;基于在特定云平台处接收到的HTTP请求,从第一数据文件检索特定目标方法定义;基于特定目标方法定义,调用一个或多个目标方法中的特定目标方法以服务HTTP请求。
根据本发明的一些实施例,提供了一种计算机系统,该计算机系统包括一个或多个处理器和与一个或多个处理器耦接的存储器。存储器存储计算机可读程序指令,指令在被一个或多个处理器执行时执行:识别用户类中定义的一个或多个目标方法;将一个或多个目标方法中的每个目标方法的方法名、参数列表以及用户类的类名记录到第一数据文件中,作为目标方法的目标方法定义;生成一个或多个用户目标方法中的每个目标方法的方法标识符,并将方法标识符记录在第一数据文件中;在多个云平台中的特定云平台处,将入口函数设置为与特定云平台对应的特定入口函数,特定入口函数具有用户类的类名作为参数;基于在特定云平台处接收到的HTTP请求,从第一数据文件检索特定目标方法定义;基于特定目标方法定义,调用一个或多个目标方法中的特定目标方法以服务HTTP请求。
根据本发明的另一个实施例,提供了一种计算机可读存储介质,其上存储计算机可读程序指令,指令在被处理器执行时执行:识别用户类中定义的一个或多个目标方法;将一个或多个目标方法中的每个目标方法的方法名、参数列表以及用户类的类名记录到第一数据文件中,作为目标方法的目标方法定义;生成一个或多个用户目标方法中的每个目标方法的方法标识符,并将方法标识符记录在第一数据文件中;在多个云平台中的特定云平台处,将入口函数设置为与特定云平台对应的特定入口函数,特定入口函数具有用户类的类名作为参数;基于在特定云平台处接收到的HTTP请求,从第一数据文件检索特定目标方法定义;基于特定目标方法定义,调用一个或多个目标方法中的特定目标方法以服务HTTP请求。
根据本发明的另一个实施例,提供了一种用于调度定时任务的设备,包括用于以下操作中的每一个操作及其子操作的装置:识别用户类中定义的一个或多个目标方法;将一个或多个目标方法中的每个目标方法的方法名、参数列表以及用户类的类名记录到第一数据文件中,作为目标方法的目标方法定义;生成一个或多个用户目标方法中的每个目标方法的方法标识符,并将方法标识符记录在第一数据文件中;在多个云平台中的特定云平台处,将入口函数设置为与特定云平台对应的特定入口函数,特定入口函数具有用户类的类名作为参数;基于在特定云平台处接收到的HTTP请求,从第一数据文件检索特定目标方法定义;基于特定目标方法定义,调用一个或多个目标方法中的特定目标方法以服务HTTP请求。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本发明操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本发明的各个方面。
这里参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。

Claims (16)

1.一种用于跨多个云平台部署用户方法的方法,包括:
在编译用户类的过程中:
识别用户类中定义的一个或多个目标方法;
将所述一个或多个目标方法中的每个目标方法的方法名、参数列表以及所述用户类的类名记录到第一数据文件中,作为所述目标方法的目标方法定义;
生成所述一个或多个用户目标方法中的每个目标方法的方法标识符,并将所述方法标识符记录在所述第一数据文件中;
在所述多个云平台中的特定云平台处,将入口函数设置为与所述特定云平台对应的特定入口函数,所述特定入口函数具有所述用户类的类名作为参数;
基于在所述特定云平台处接收到的HTTP请求,从所述第一数据文件检索特定目标方法定义;
基于所述特定目标方法定义,调用所述一个或多个目标方法中的特定目标方法以服务所述HTTP请求。
2.如权利要求1所述的方法,其中,所述一个或多个目标方法的封装不特定于所述多个云平台中的每个云平台的封装规范。
3.如权利要求1所述的方法,其中,所述参数列表包括参数名和参数类型。
4.如权利要求1所述的方法,其中,识别用户类中定义的一个或多个目标方法包括:
扫描所述用户类的代码以识别标记有特定注解字段的一个或多个目标方法。
5.如权利要求1所述的方法,其中,所述方法还包括:
生成第二数据文件,所述第二数据文件记录与所述一个或多个用户目标方法中的每个目标方法对应的相应API信息,所述相应的API信息包括:HTTP方法类型、HTTP请求路径和所述目标方法的方法标识符。
6.如权利要求5所述的方法,其中,从所述第一数据文件检索特定目标方法定义包括:
基于与所述HTTP请求相关联的HTTP方法类型和HTTP请求路径,从第二数据文件中识别特定API信息;
基于所识别的特定API信息中的方法标识符,从所述第一数据文件检索匹配的目标方法定义,作为所述特定目标方法定义。
7.如权利要求1所述的方法,其中,基于所述特定目标方法定义调用所述特定目标方法包括:
基于所述特定目标方法定义中的特定方法名和特定参数列表,检索所述特定用户目标方法;
将所述特定入口函数的参数转换为所述特定参数列表的参数;以及
通过反射机制调用所述特定目标方法以服务所述HTTP请求。
8.如权利要求5所述的方法,其中,所述第一数据文件是第一JSON文件,所述第二数据文件是第二JSON文件,所述第一JSON文件和所述第二JSON文件被包含在编译所述用户类所生成的编译文件中。
9.如权利要求1所述的方法,其中,所述方法还包括:
定义抽象处理类,所述抽象处理类实现用于所述多个云平台中的每个云平台的规范方法封装;
其中,所述用户类继承所述抽象处理类。
10.如权利要求1所述的方法,其中,每个目标方法的方法标识符是基于该目标方法的方法名和参数列表而生成的唯一标识符。
11.如权利要求10所述的方法,其中,每个目标方法的方法标识符是基于该目标方法的方法名和参数列表而生成的散列值。
12.如权利要求1所述的方法,其中,所述多个云平台包括以下各项中的一个或多个:亚马逊AWS Lambda平台、阿里云Function Compute平台、微软Azure Function App平台、腾讯云SCF平台、华为云Function Graph平台。
13.如权利要求1所述的方法,其中,所述用户类是以以下各项中的一种编写的:java、python、C#、NodeJS、golang。
14.一种计算机系统,所述计算机系统包括一个或多个处理器和与一个或多个处理器耦接的存储器,所述存储器存储计算机可读程序指令,所述指令在被所述一个或多个处理器执行时使得执行如权利要求1-13中任一项所述的方法。
15.一种计算机可读存储介质,其上存储计算机可读程序指令,所述指令在被一个或多个处理器执行时使得执行如权利要求1-13中任一项所述的方法。
16.一种计算机设备,包括用于执行如权利要求1-13中任一项所述的方法的装置。
CN202310919528.8A 2023-07-25 2023-07-25 用于跨多个云平台部署用户方法的方法和系统 Active CN117118962B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310919528.8A CN117118962B (zh) 2023-07-25 2023-07-25 用于跨多个云平台部署用户方法的方法和系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310919528.8A CN117118962B (zh) 2023-07-25 2023-07-25 用于跨多个云平台部署用户方法的方法和系统

Publications (2)

Publication Number Publication Date
CN117118962A true CN117118962A (zh) 2023-11-24
CN117118962B CN117118962B (zh) 2024-03-22

Family

ID=88797451

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310919528.8A Active CN117118962B (zh) 2023-07-25 2023-07-25 用于跨多个云平台部署用户方法的方法和系统

Country Status (1)

Country Link
CN (1) CN117118962B (zh)

Citations (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080120590A1 (en) * 2006-11-22 2008-05-22 Cheng Wang Automatic function call in multithreaded application
US20170041189A1 (en) * 2015-08-03 2017-02-09 Wipro Limited System and Method for Provisioning and Deployment of Application Environment on Hybrid Cloud Platform
CN109684188A (zh) * 2017-10-19 2019-04-26 北京京东尚科信息技术有限公司 测试方法和装置
CN109857404A (zh) * 2019-01-11 2019-06-07 平安科技(深圳)有限公司 Sdk接口的封装方法及装置、存储介质、电子设备
CN110609678A (zh) * 2019-08-26 2019-12-24 珠海格力电器股份有限公司 一种函数编程方法、装置及组态软件系统
CN110659028A (zh) * 2019-09-30 2020-01-07 北京达佳互联信息技术有限公司 数据处理系统、方法、装置、电子设备及存储介质
CN111078559A (zh) * 2019-12-18 2020-04-28 广州品唯软件有限公司 java代码中函数调用的提取方法、装置、介质及计算机设备
US10671360B1 (en) * 2017-11-03 2020-06-02 EMC IP Holding Company LLC Resource-aware compiler for multi-cloud function-as-a-service environment
CN111610974A (zh) * 2019-02-26 2020-09-01 中国科学院沈阳自动化研究所 一种面向边缘计算的跨系统平台编译方法
CN112130837A (zh) * 2020-09-25 2020-12-25 腾讯科技(深圳)有限公司 一种代码处理方法、装置及存储介质
CN112199079A (zh) * 2020-12-07 2021-01-08 震坤行网络技术(南京)有限公司 系统对接方法、计算设备和存储介质
CN114035804A (zh) * 2021-11-16 2022-02-11 北京字节跳动网络技术有限公司 代码转换方法、装置、介质和电子设备
CN114579107A (zh) * 2022-03-11 2022-06-03 北京字跳网络技术有限公司 数据的处理方法、装置、设备及介质
CN115309562A (zh) * 2021-05-07 2022-11-08 北京三快在线科技有限公司 算子调用系统、算子生成方法,电子设备
US20220360504A1 (en) * 2021-05-05 2022-11-10 International Business Machines Corporation Adapting microservices to multi-platform deployments
CN115827116A (zh) * 2022-11-17 2023-03-21 深圳市汇川技术股份有限公司 函数调用方法、装置、设备及计算机可读存储介质
US20230094887A1 (en) * 2021-09-29 2023-03-30 International Business Machines Corporation Translating clusters of a monolith application to microservices
CN116028028A (zh) * 2022-11-10 2023-04-28 北京百度网讯科技有限公司 请求函数生成方法、装置、设备及存储介质

Patent Citations (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080120590A1 (en) * 2006-11-22 2008-05-22 Cheng Wang Automatic function call in multithreaded application
US20170041189A1 (en) * 2015-08-03 2017-02-09 Wipro Limited System and Method for Provisioning and Deployment of Application Environment on Hybrid Cloud Platform
CN109684188A (zh) * 2017-10-19 2019-04-26 北京京东尚科信息技术有限公司 测试方法和装置
US10671360B1 (en) * 2017-11-03 2020-06-02 EMC IP Holding Company LLC Resource-aware compiler for multi-cloud function-as-a-service environment
CN109857404A (zh) * 2019-01-11 2019-06-07 平安科技(深圳)有限公司 Sdk接口的封装方法及装置、存储介质、电子设备
CN111610974A (zh) * 2019-02-26 2020-09-01 中国科学院沈阳自动化研究所 一种面向边缘计算的跨系统平台编译方法
CN110609678A (zh) * 2019-08-26 2019-12-24 珠海格力电器股份有限公司 一种函数编程方法、装置及组态软件系统
CN110659028A (zh) * 2019-09-30 2020-01-07 北京达佳互联信息技术有限公司 数据处理系统、方法、装置、电子设备及存储介质
CN111078559A (zh) * 2019-12-18 2020-04-28 广州品唯软件有限公司 java代码中函数调用的提取方法、装置、介质及计算机设备
CN112130837A (zh) * 2020-09-25 2020-12-25 腾讯科技(深圳)有限公司 一种代码处理方法、装置及存储介质
CN112199079A (zh) * 2020-12-07 2021-01-08 震坤行网络技术(南京)有限公司 系统对接方法、计算设备和存储介质
US20220360504A1 (en) * 2021-05-05 2022-11-10 International Business Machines Corporation Adapting microservices to multi-platform deployments
CN115309562A (zh) * 2021-05-07 2022-11-08 北京三快在线科技有限公司 算子调用系统、算子生成方法,电子设备
US20230094887A1 (en) * 2021-09-29 2023-03-30 International Business Machines Corporation Translating clusters of a monolith application to microservices
CN114035804A (zh) * 2021-11-16 2022-02-11 北京字节跳动网络技术有限公司 代码转换方法、装置、介质和电子设备
CN114579107A (zh) * 2022-03-11 2022-06-03 北京字跳网络技术有限公司 数据的处理方法、装置、设备及介质
CN116028028A (zh) * 2022-11-10 2023-04-28 北京百度网讯科技有限公司 请求函数生成方法、装置、设备及存储介质
CN115827116A (zh) * 2022-11-17 2023-03-21 深圳市汇川技术股份有限公司 函数调用方法、装置、设备及计算机可读存储介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
王一盟;: "异构私有云管平台通用适配器的研究与实现", 智能计算机与应用, no. 03, 26 June 2018 (2018-06-26) *

Also Published As

Publication number Publication date
CN117118962B (zh) 2024-03-22

Similar Documents

Publication Publication Date Title
US9363195B2 (en) Configuring cloud resources
US9934005B2 (en) Dynamically building locale objects or subsections of locale objects based on historical data
CN109062563B (zh) 用于生成页面的方法和装置
US11667033B2 (en) Systems and methods for robotic process automation
CN108829467B (zh) 第三方平台对接实现方法、装置、设备及存储介质
CN110688096B (zh) 包含插件的应用程序的构建方法、装置、介质及电子设备
WO2018177032A1 (zh) 处理响应数据的方法、设备、客户端设备和电子设备
US11934287B2 (en) Method, electronic device and computer program product for processing data
US8495664B2 (en) System, method and program product for invoking a remote method
US11061739B2 (en) Dynamic infrastructure management and processing
US11100233B2 (en) Optimizing operating system vulnerability analysis
US20170168787A1 (en) Optimized compiling of a template function
WO2024001240A1 (zh) 多种技术栈的任务集成方法及装置
CN117118962B (zh) 用于跨多个云平台部署用户方法的方法和系统
US8280950B2 (en) Automatic client-server code generator
US20060265407A1 (en) Generic symbol referencing mechanism
CN117111904B (zh) 用于将Web应用自动转换成无服务器函数的方法和系统
US7917893B2 (en) Using a system of annotations to generate views and adapters
CN112068814A (zh) 可执行文件的生成方法、装置、系统及介质
CN113342633B (zh) 一种性能测试方法和装置
WO2021249118A1 (zh) 生成、注册ui服务包、以及加载ui服务的方法及装置
CN115563183B (zh) 查询方法、装置及程序产品
CN115086441B (zh) 信息传输方法、装置、电子设备及存储介质
US8620856B2 (en) Method and system for providing a data exchange service provider interface
CN117111904A (zh) 用于将Web应用自动转换成无服务器函数的方法和系统

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