CN112005217B - 服务于请求的独立线程api调用 - Google Patents
服务于请求的独立线程api调用 Download PDFInfo
- Publication number
- CN112005217B CN112005217B CN201980026243.3A CN201980026243A CN112005217B CN 112005217 B CN112005217 B CN 112005217B CN 201980026243 A CN201980026243 A CN 201980026243A CN 112005217 B CN112005217 B CN 112005217B
- Authority
- CN
- China
- Prior art keywords
- api
- api call
- workflow
- calls
- result
- 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.)
- Active
Links
- 230000004044 response Effects 0.000 claims abstract description 47
- 238000012545 processing Methods 0.000 claims description 65
- 238000000034 method Methods 0.000 claims description 22
- 230000001419 dependent effect Effects 0.000 claims description 8
- 230000002776 aggregation Effects 0.000 claims description 5
- 238000004220 aggregation Methods 0.000 claims description 5
- 238000004891 communication Methods 0.000 description 18
- 230000006870 function Effects 0.000 description 15
- 238000010586 diagram Methods 0.000 description 9
- 230000007246 mechanism Effects 0.000 description 6
- 230000003287 optical effect Effects 0.000 description 6
- 239000000654 additive Substances 0.000 description 5
- 230000000996 additive effect Effects 0.000 description 5
- 230000001934 delay Effects 0.000 description 4
- 230000002093 peripheral effect Effects 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 230000001413 cellular effect Effects 0.000 description 3
- 238000013500 data storage Methods 0.000 description 3
- 230000003993 interaction Effects 0.000 description 3
- 230000006855 networking Effects 0.000 description 3
- 230000004931 aggregating effect Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 210000003850 cellular structure Anatomy 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000008520 organization Effects 0.000 description 2
- 238000011176 pooling Methods 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 210000003813 thumb Anatomy 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 101000822695 Clostridium perfringens (strain 13 / Type A) Small, acid-soluble spore protein C1 Proteins 0.000 description 1
- 101000655262 Clostridium perfringens (strain 13 / Type A) Small, acid-soluble spore protein C2 Proteins 0.000 description 1
- 101000655256 Paraclostridium bifermentans Small, acid-soluble spore protein alpha Proteins 0.000 description 1
- 101000655264 Paraclostridium bifermentans Small, acid-soluble spore protein beta Proteins 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 210000004027 cell Anatomy 0.000 description 1
- 230000010267 cellular communication Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 210000003811 finger Anatomy 0.000 description 1
- 230000005484 gravity Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 230000008439 repair process Effects 0.000 description 1
- 238000010963 scalable process Methods 0.000 description 1
- 230000007723 transport mechanism Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
一种异步引擎识别要做出的API调用以完成所接收到的服务请求。所述异步引擎保护用于做出每个API调用的独立计算线程的安全,并且在所述独立计算线程上生成所述API调用。响应于所述服务调用而执行的工作流与所述异步引擎交互,以从所述API调用获得结果。
Description
背景技术
计算***目前得到了广泛使用。一些计算***托管服务,所述服务对来自其他计算***(诸如客户端计算***)的服务请求做出响应。
在一些示例中,为了服务于请求,服务计算***通过自己执行在服务计算***上执行的操作来执行工作流(被称为执行进程中代码)。这些能够常常被相对快速地执行。然而,在一些情况下,为了服务于请求,服务计算***需要向其他外部***(或者API端点)做出应用编程接口(API)调用。有时,对外部端点的API调用会比执行进程中代码中的逻辑单元慢几个数量级。因此,做出API调用所涉及的延迟会构成在完成服务请求过程中的延迟的绝大部分。在顺序地(基于执行进行中工作流的次序或者出于其他原因)做出API调用的情况下,则与每个API调用相关联的延迟在对服务请求做出响应时是累加性的。
提供以上论述仅仅是为了提供一般性的背景信息,而并非意图被用作确定所主张保护的主题范围的辅助。
发明内容
一种异步引擎识别要做出的API调用以便完成所接收到的服务请求。所述异步引擎保护用于做出每个API调用的独立计算线程的安全,并且在独立计算线程上生成API调用。响应于服务调用而执行的工作流与异步引擎进行交互,以从API调用获得结果。
提供本发明内容是为了以简化形式介绍一系列概念,在下文的具体实施方式中进一步描述这些概念。本发明内容并非意图标识所要求保护的主题的关键特征或基本特征,也并不意图用作确定要求保护的主题的范围的辅助手段。要求保护的主题不限于解决背景技术中指出的任何或全部缺点的实施方式。
附图说明
图1是服务计算***架构的一个示例的框图。
图2是更详细地示出了请求处理***的一个示例的框图。
图3A和图3B(在本文中被统称为图3)示出了流程图,其图示了请求处理***响应于服务请求的操作的一个示例。
图4是示出了部署在云计算架构中的在图1中所图示的架构的框图。
图5-7示出了能够被用在先前各图中所示的架构中的移动设备的示例。
图8是框图,其示出了能够被用在先前各图中所示的架构中的计算环境的一个示例。
具体实施方式
图1是示出了计算***架构100的一个示例的框图。架构100示出了服务计算***102,服务计算***102被连接到多个不同的客户端计算***104-106并且被连接到多个不同的应用编程接口(API)端点计算***108-110。服务计算***102、客户端计算***104-106以及API端点计算***108-110被图示为通过网络112连接。因此,网络112能够是广域网、局域网、近场通信网、蜂窝通信网或各种网络中的任意网络或者各网络的组合。客户端计算***104-106例示性地向服务计算***102生成请求,服务计算***102服务于那些请求。在服务于那些请求时,***102可以在服务计算***102自身上执行工作流,和/或向一个或多个API端点计算***108-110生成API调用。
图1还示出了,每个客户端计算***104-106例示性地生成一个或多个用户界面114-116,分别供用户118-120交互。例如,用户118与用户界面114交互,以便控制和操纵客户端计算***104,以及服务计算***102的一些部分。类似地,用户120例示性地与用户界面116交互,以便控制和操纵客户端计算***106,以及服务计算***102的一些部分。
客户端计算***104和106能够是相似的或不同的。出于本公开的目的,将假设其是相似的,从而将仅更详细地描述客户端计算***104。这仅仅是举例。
在图1中所示的示例中,客户端计算***104例示性地包括一个或多个处理器或服务器122、数据储存器124、服务客户端组件126、用户界面逻辑单元128、通信***130,并且其能够包括很宽范围的其他客户端计算***逻辑单元或功能132。服务客户端组件126能够是服务计算***102的客户端组件,其使得客户端计算***104能够与服务计算***102交互。将指出的是,并非始终需要组件126,并且客户端计算***104也能够直接与***102交互,而不需要客户端组件126。
通信***130例示性地允许客户端计算***104通过网络112与其他项目交互。因此,通信***130被例示性地配置为允许客户端计算***104通过任意类型的被用作网络112的一个或多个网络而通信。
用户界面逻辑单元128例示性地生成用户界面114并且检测与用户界面114的用户交互。其能够提供对客户端计算***104上的其他项目的那些用户交互的指示,或者通过网络112对图1中的其他项目的那些用户交互的指示。
在图1中所示的示例中,服务计算***102例示性地包括一个或多个处理器或服务器134(其能够包括一个或多个中央处理单元(CPU)内核135)、数据储存器136、请求处理***138、线程调度组件140,并且其能够包括很宽范围的其他计算***功能142。请求处理***138能够包括初始化逻辑单元144、请求处理工作流逻辑单元146、异步API调用引擎148,并且其能够包括很宽范围的其他请求处理功能150。在更详细地描述架构100的总体操作之前,将首先提供对服务计算***102上的项目中的一些项目以及其操作的简要描述。
请求处理***138从一个或多个客户端计算***104-106接收请求并且执行完成那些请求所需的任何处理,并且然后生成响应并且将其返回到请求***。出于举例的目的,假设客户端计算***104生成请求,所述请求要由服务计算***102中的请求处理***138来处理或服务。例如,可能的是,用户118正在尝试设置用户设备(诸如台式计算机、移动设备等)上的服务客户端组件126,以与用户的电子邮件***进行交互。在那种情况下,用户118可以提供他的或她的电子邮件地址连同针对配置信息的请求,这将允许电子邮件服务器与用户设备进行通信。可以通过网络112将该请求发送到请求处理***138。
为了对该请求做出响应,可能的是,请求处理***138需要通过在服务计算***102上的请求处理***138中执行操作来执行一个或多个工作流。然而,另外,可能的是,请求处理***138也需要对各个不同的API端点计算***108-110做出一个或多个API调用。那些API调用中的每个API调用将具有自己的与其相关联的延迟范围。例如,其在发送API调用和接收对该调用的响应的过程中将具有与网络112相关联的网络延迟。得到响应的API调用中的每个API调用将在对其做出响应的特定端点之内具有延迟。
因此,根据一个示例,初始化逻辑单元144接收请求并且识别要执行的一组工作流以及要对不同API端点计算***做出的一组API调用,以便服务于所述请求。在那种情况下,逻辑单元144向异步API调用引擎148提供信号,所述信号指示需要做出该API调用。异步API调用引擎148然后与线程调度组件140进行交互,以获得针对所述API调用中的每个API调用的独立计算线程,并且在那些独立计算线程上做出对调用所指向的各API端点计算***108-110的API调用。这能够使用批量线程(bulk threading)、多处理或多线程或其他技术来完成。在使用多个CPU内核135的一个示例中,分配独立的CPU内核以执行用于做出每个API调用的处理任务。在另一示例中,由单个CPU内核135,但是每个在独立线程上做出API调用。也能够使用其他技术。
同时,初始化逻辑单元144向请求处理工作流逻辑单元146提供信号,以启动并且执行对请求做出响应所需的各工作流。以这种方式,异步地,并且彼此并且与工作流的执行同时地(或并行地)向各API端点计算***做出API调用。因此,与那些API调用中的每个API调用相关联的任何延迟就不再是累加性的。类似地,请求处理工作流逻辑单元146能够开始执行在服务于请求时要执行的工作流中的各个操作,允许在处理其他调用的同时一些工作流等待对API调用的响应。
继续上文所论述的示例,假设客户端计算***104已经向请求处理***138发送电子邮件地址,使请求处理***138获得并且返回配置信息,使得用户的电子邮件***能够被适当地配置成与用户设备交互。在那种情况下,异步API调用引擎148可能需要调用不同的API端点计算***108-110,诸如电子邮件地址的已知词典、诸如与军用电子邮件地址相对应的数据库、诸如与各种消费/零售领域相对应的数据库、通过域名服务(DNS)的查找等。异步API调用引擎148然后与线程调度组件140(其可以是计算***102中的操作***的部分或独立组件)进行交互,并且保护针对每个API调用的独立计算线程,并且在适当的API端点计算***108-110上做出那些调用。如果所述端点中的一个端点识别出电子邮件地址属于该端点,并且其能够为其提供对应的配置信息,那么该API端点计算***利用适当的配置信息做出响应,使得用户的电子邮件***能够被适当配置以与服务计算***102进行交互。
在一些现有***中,将顺序地做出这些API调用。这意味着与每个API调用相关联的延迟被累加到对在来自客户端计算***104的请求做出响应过程中的总体延迟。相反,对于本说明书而言,初始化逻辑单元144向异步API调用引擎148指示在接收到请求时要做出API调用,并且引擎148能够异步地或者同时地在不同计算线程上做出API调用,使得与每个调用相关联的延迟不是累加性的。请求处理工作流逻辑单元146还开始执行为了对请求做出响应而运行的工作流。取决于API调用结果的任何工作流将等待引擎148当在其对应计算线程上接收到该结果时返回该结果。同时,其他工作流能够继续执行。
图2是更详细地示出请求处理***138的一个示例的框图。图2中所示的一些项目类似于图1中所示的那些项目,并且其被相似地编号。
图2示出了,请求处理工作流逻辑单元146能够在对请求168做出响应时运行多个不同的工作负载170、172和174。逻辑单元146还例示性地包括结果聚合逻辑单元176,其聚合(aggregate)来自各个工作流的结果,以生成一组工作流结果并且将其提供给响应逻辑单元178。响应逻辑单元178例示性地响应于从客户端计算***104接收的请求168而生成响应180。请求处理工作流逻辑单元146也能够包括各种其他功能或项目182。
图2还示出了,在一个示例中,异步API调用引擎148包括一组引擎配置标准184、线程保护逻辑单元186以及一组(或若干不同实例的)API调用逻辑单元188-190。其也能够包括各种其他功能或项目192。
作为概览,在操作中,初始化逻辑单元144识别要运行的工作流以及在对请求168做出响应时要做出的API调用。其向引擎148指出,为了对请求168做出响应,将需要做出若干API调用。异步API调用引擎148然后访问引擎配置标准184,以确定如何处理那些API调用。所述标准能够指示由引擎148在做出API调用时能够使用的很宽范围的不同类型的方案。配置标准184能够由用户、管理员用户来设置,其能够被***自身设置为默认值,或者其能够以其他方式被设置。
例如,引擎配置标准184可以指示该引擎148仅应当在第一次接收到请求168时做出第一API调用。然而,如果该API调用未对请求168做出充分地响应,使得第二次接收到该请求168,那么配置标准184可以指示在第二次接收到所述请求时,要由引擎148做出与该请求相对应的所有API调用。这仅仅是配置标准184可以如何影响异步API调用引擎148在做出API调用时的操作的一个示例,并且引擎配置标准184还能够指示很宽范围的其他情形或配置。
例如,假设该引擎配置标准184指示引擎148要做出与请求168相对应的所有API调用。例如,可能的是,工作流170取决于第一API调用的结果,并且工作流172取决于第二API调用的结果。在该示例中,线程保护逻辑单元186然后与线程调度组件140交互以保护针对要做出的每个API调用的独立计算线程。其然后控制API调用逻辑单元188在第一线程上做出对API端点计算***的第一API调用。所述API调用由框194指示。其也控制API调用逻辑单元190以在其自己的线程上对第二API端点计算***做出第二API调用。该调用由框196指示。以这种方式,API调用逻辑单元188和API调用逻辑单元190的实例两者能够同时地在其相应的计算线程上做出调用,并且等待API端点计算***返回调用。
因为异步API调用引擎148已经被调用,工作流170将从引擎148请求API调用194的结果198,而不是尝试自己做出API调用194。因此,一旦API调用逻辑单元188接收到对API调用194的响应,其就向已经请求其的工作流170提供API调用结果198。
类似地,工作流172现在将从引擎148请求第二API调用196的结果200,而不是尝试自己做出API调用196。一旦API调用逻辑单元190已经接收到对API调用196的响应,其就向工作流172发送API调用结果200。因为与API调用194和API调用196相关联的延迟是基本同时(或同时)发生的,所以该延迟不是累加性的。因此,与现有***相比,使用异步API调用引擎148彼此同时地并且与工作流170-174的执行同时地做出API调用,能够在对请求168做出响应时快得多地执行总体工作流,在现有***中,在执行工作流170-174时,由工作流170-174顺序地做出那些API调用。
图3A和图3B(在本文中被统称为图3)示出了流程图,其例示了请求处理***138在处理要为其做出多个不同API调用的请求168以便对其服务时的操作的一个示例。首先假设异步API调用引擎148已经接收到引擎配置信息,其指示在对***138接收到的请求做出响应时如何处理各种API调用。同样地,能够自动地从管理员、另一用户接收配置信息,所述配置信息能够被设置为默认值,等等。由图3的流程图中的框210指示了接收引擎配置信息。请求处理***138然后接收请求168。由图3的流程图中的框212指示了接收所述请求。
初始化逻辑单元144然后识别将在对请求168做出响应时执行的工作流和API调用。初始化逻辑单元144例示性地识别要做出一个或多个无状态(例如,独立)API调用,以便完成请求168。这由框214指示。例如,初始化逻辑单元144通过运行多个不同的工作流170-174来将请求168识别为将完成的请求。初始化逻辑单元144还识别出,为了完成请求168而需要运行的那些工作流是取决于一个或多个不同API调用的结果的工作流。初始化逻辑单元144因此向异步API调用引擎148提供信号,指示将做出不同的API调用以便完成请求168。
异步API调用引擎148然后控制API调用逻辑单元188-190的实例以做出API调用,从而获得结果以供工作流170-174完成请求168。这由框216来指示。在一个示例中,其访问引擎配置信息184以便这样做。这由框218来指示。其然后对用于做出API调用的API调用逻辑单元188-190的实例进行实例化,或者以其他方式将其启动。这由框220来指示。其也能够以其他方式对API调用逻辑单元188-190进行实例化,或者将其启动,或者将其发起。这由框222来指示。
引擎148使用线程保护逻辑单元186与线程调度组件140交互,以保护针对每组API调用逻辑单元188-190的独立计算线程,使得API调用均能够在独立线程上做出。保护针对每组API调用逻辑单元的独立计算线程由图3的流程图中的框224来指示。这能够使用利用单个CPU内核135的多线程221,使用独立CPU内核135的多处理223或者多个不同内核135上的多线程或者以其他方式225来完成。
引擎148然后控制API调用逻辑单元188-190的实例以相对于彼此并且相对于不取决于API调用结果的工作流170-174的部分的执行同时地并且异步地做出所有API调用(每个在独立线程上)。这是由图3的流程图中的框226指示的。同样地,这样做的方式(诸如一开始做出的API调用数量等)能够基于引擎配置信息,如框228所指示的。引擎148还能够控制API调用逻辑单元188-190的实例以通过其他方式做出API调用194-196,并且这由框230来指示。
在引擎148正在做出那些API调用时,请求处理工作流逻辑单元148开始执行为了对请求168做出响应而要执行的工作负载170-174。执行能够完全执行而无需等待API调用结果的任何工作流,并且那些工作流根本不需要导致任何延迟,所述延迟本来会来自已经做出API调用的其他工作流。确实取决于API调用结果的工作流(诸如工作流170-172)能够一直执行到需要那些结果的时候,并且然后,向引擎148指示其正在等待API调用结果。由图3的流程图中的框232指示了执行工作流以完成请求168。
在某个点处,如果工作流正在等待API调用结果(例如,如果工作流170需要等待API调用结果198),那么工作流调用引擎148以获得API调用结果198。由框234指示确定工作流是否取决于API调用结果,并且由框236指示使工作流调用引擎148以获得API调用结果(而不是自己做出调用)。使用API调用结果198的特定工作流(诸如工作流170)(其中,API调用194具有较长延迟)会等待引擎148返回该API调用结果198,但是这将不影响执行中的任何其他工作流172-174。等待API调用结果198(如果其尚未返回)由框238指示。所述工作流还能够以其他方式从引擎148获得API调用结果,并且这由框240指示。
一旦已经执行了所有工作流170-174(对请求168做出响应所需的),然后结果聚合逻辑单元176将工作流的结果聚合成对请求168的响应。响应逻辑单元178向发送请求168的调用***返回响应180。将所述结果聚合成响应由框242来指示,并且将该响应返回到请求***由框244来指示。
在一个示例中,并非工作流170-174的所有结果都需要被聚合成响应。相反,替代地,可能的是,将各工作流的结果返回到请求***。例如,如果彼此独立地执行工作流170-174中的每个工作流以找到与作为请求168的一部分而提交的电子邮件地址相对应的配置信息的位置,那么无论哪个工作流170-174找到该配置信息,都将是提供了用于对请求168做出响应的结果的工作流。在那种情况下,结果聚合逻辑单元176简单地将响应结果识别为(而不是将所有结果聚合在一起)包含需要在响应180中发送的信息。响应逻辑单元178然后仅发送该信息。
该描述实现了计算***102自身的操作中的显著改善。例如,假设在工作流170正在等待API调用结果198的时间期间,API调用逻辑单元190已经接收到API调用结果200并且将其提供给工作流172。因此,并非等待API调用结果198被返回工作流170,并且那时才发起第二API调用196,而是通过恰好在初始化逻辑单元144接收到请求168之后的点处对调用进行批量线程、多线程或多处理来做出两个API调用194和196。引擎148然后开始做出API调用的过程,如配置标准配置其那样做一样。在一个示例中,其能够在过程的开始时做出所有调用。因此,在做出那些调用中的延迟开始于对请求168做出响应的过程的开始时。这提供了计算***102自身的操作中的显著优点。其将对请求168做出响应时的延迟从(所有API调用的)累加性延迟减小到最大延迟(亦即,具有最大延迟的API调用)。线程保护逻辑单元186还利用了***102中可能使用的多个CPU内核,并且其创建高度可缩放的过程,其能够适应可能在将来添加的慢API调用。此外,引擎配置标准184使得能够根据需要以不同方式配置和修改异步API调用引擎148的操作。引擎148也能够非常容易地在对现有代码的改变最小化的情况下在现有代码基础上实施。例如,可以修改各工作流170-174以从异步API调用引擎148请求API调用结果,而不是做出API调用自身。除此之外,基本不需要改变现有代码。
将指出的是,以上论述已经描述了多种不同的***、组件和/或逻辑单元。将意识到,这样的***、组件和/或逻辑单元能够包括执行与那些***、组件和/或逻辑单元相关联的功能的硬件项(例如,处理器和相关联的存储器,或其他处理组件,下文描述的其中的一些)。另外,如下所述,所述***、组件和/或逻辑单元能够包括被加载到存储器中并且随后由处理器或服务器或其他计算组件执行的软件。所述***、组件和/或逻辑单元也能够包括硬件、软件、固件等的不同组合,下文描述了其一些示例。这些仅仅是能够被用于形成上文所述的***、组件和/或逻辑单元的不同结构的一些示例。也能够使用其他结构。
本论述提到了处理器和服务器。在一个实施例中,所述处理器和服务器包括具有相关联的存储器和计时电路(未独立示出)的计算机处理器。其是其所属***或设备的功能部分,并且由那些***中的其他组件或项目的功能激活,并且促进所述功能。
同样地,已经论述了若干用户界面显示。其能够采取各种不同形式,并且能够具有设置于其上的各种不同用户可致动的输入机制。例如,用户可致动的输入机制能够是文本框、复选框、图标、链接、下拉菜单、搜索框等。其还能够以各种不同方式被致动。例如,能够使用定点和点击设备(诸如跟踪球或鼠标)来对其进行致动。能够使用硬件按钮、开关、操纵杆或键盘、拇指开关或拇指垫等来对其进行致动。也能够使用虚拟键盘或其他虚拟致动器来对其进行致动。另外,在显示其的屏幕是触敏屏幕的情况下,能够使用触摸手势对其进行致动。同样地,在显示其的设备具有语音识别组件的情况下,能够使用语音命令对其进行致动。
已经论述了若干数据储存器。将指出的是,其均能够被分解成多个数据储存器。所有数据储存器都能够在访问其的***本地,所有数据储存器都能够在远程,或者一些能够在本地而其他在远程。所有这些配置都在本文中被设想到。
同样地,附图示出了若干块,其中每个块具有归属其的功能。将指出的是,能够使用更少的块,从而由更少的组件来执行所述功能。同样地,能够使用更多块,其中使功能分布在更多组件之间。
图4是图1中所示的架构100的框图,只是其元件被设置在云计算架构500中。云计算提供计算、软件、数据访问和存储服务,其不需要最终用户了解提供服务的***的物理位置或配置。在各实施例中,云计算通过诸如因特网的广域网使用适当的协议来递送服务。例如,云计算提供商通过广域网递送应用,并且能够通过web浏览器或者任何其他计算组件来访问应用。架构100的软件或组件,以及对应数据,能够被存储在远程位置处的服务器上。云计算环境中的计算资源能够在远程数据中心位置处被合并,或者其能够被分散开。云计算基础设施能够通过共享数据中心来递送服务,即使针对用户其看起来像是单个接入点。因此,能够从位于远程位置处的服务提供商使用云计算架构提供在本文中所描述的组件和功能。或者,其能够从常规服务器来提供,或者其能够被直接安装在客户端设备上,或者通过其他方式来提供。
说明书意在包括公共云计算和私有云计算两者。云计算(公共的和私有的两者)提供了基本无缝的资源池化(pooling),以及对管理和配置底层硬件基础设施的降低的需求。
公共云由供应商来管理并且通常支持多个消费者使用相同基础设施。同样地,与私有云相反,公共云能够将最终用户从管理硬件方面解放出来。私有云可以由组织自身来管理,并且基础设施通常不与其他组织共享。所述组织仍然在某种程度上维护硬件,诸如安装和维修等。
在图4中所示的示例中,一些项目类似于在图1中所示的那些项目,其被类似地编号。图4具体示出了服务计算***102和API端点计算***108-110能够位于云502中(其能够是公共的、私有的或组合的,其中,一些部分为公共而其他为私有的)。因此,用户118和120使用用户设备504和506通过云502来访问那些***。
图4还描绘了云架构的另一示例。图4示出了,还设想到了能够将计算***102的一些元件设置在云502中,而其他元件不这样设置。例如,数据储存器136能够被设置在云502的外部,并且通过云502来访问。在另一示例中,请求处理***138(或其他项目)能够在云502的外部。无论其位于哪里,其都能够由设备504和506通过网络(广域网或局域网)对其进行访问,其能够由服务来托管在远程场所处,或者其能够通过云被作为服务而提供,或者通过驻留在云中的连接服务来访问。所有这些架构都在本文中被设想到了。
还将指出的是,架构100或其部分能够被设置于很宽范围的不同设备上。那些设备中的一些设备包括服务器、台式计算机、膝上型计算机、平板计算机或其他移动设备,诸如掌上计算机、蜂窝电话、智能电话、多媒体播放器、个人数字助理等。
图5是手持式或移动计算设备的一个例示性示例的简化框图,其能够被用作用户的或客户端的手持设备16,其中,能够部署本***(或其部分)。图6-7是手持式或移动设备的示例。
图5提供了能够运行组件计算设备102或者用户设备504或506、或者与架构100交互、或者这两者的客户端设备16的组件的一般性框图。在设备16中,提供了通信链路13,其允许手持设备与其他计算设备通信,并且在一些实施例中提供信道,其用于诸如通过扫描来自动地接收信息。通信链路13的示例包括红外端口、串行/USB端口、电缆网络端口,诸如以太网端口,以及允许通过一种或多种通信协议通信的无线网络端口,所述通信协议包括通用分组无线电服务(GPRS)、LTE、HSPA、HSPA+以及其他3G和4G无线电协议、1Xrtt和短消息服务(其是用于提供对网络的蜂窝接入的无线服务),以及Wi-Fi协议,以及蓝牙协议,其提供与网络的本地无线连接。
在其他示例中,应用或***是在被连接到SD卡接口15的可移除安全数字(SD)卡上接收到的。SD卡接口15和通信链路13沿着总线19与处理器17(从其他图可知,其也能够包含处理器或服务器)通信,总线19也被连接到存储器21和输入/输出(I/O)组件23,以及时钟25和定位***27。
在一个示例中,提供I/O组件23以方便输入和输出操作。用于设备16的各示例的I/O组件23能够包括:输入组件,诸如按钮、触摸传感器、多点触摸传感器、光学或视频传感器、语音传感器、触摸屏、接近传感器、麦克风、倾斜传感器和重力开关;以及输出组件,诸如显示设备、扬声器和/或打印机端口。也能够使用其他I/O组件23。
时钟25例示性地包括输出时间和日期的实时时钟组件。其还能够例示性地为处理器17提供计时功能。
定位***27例示性地包括输出设备16的当前地理位置的组件。这能够包括,例如全球定位***(GPS)接收器、LORAN***、航位推算***、蜂窝三角测量***或其他定位***。其还能够包括例如生成期望地图、导航路线和其他地理功能的绘图软件或导航软件。
存储器21存储操作***29、网络设置31、应用程序33、应用程序配置设置35、数据储存器37、通信驱动程序39和通信配置设置41。存储器21能够包括所有类型的有形易失性和非易失性计算机可读存储设备。其还能够包括计算机存储介质(下文所描述的)。存储器21存储计算机可读指令,所述计算机可读指令当由处理器17执行时,使得处理器根据所述指令执行计算机实现的步骤或功能。类似地,设备16能够具有客户端***24,客户端***24能够运行各种应用程序或者体现架构100的部分或全部。处理器17能够由其他组件来激活,以促成其功能。
网络设置31的示例包括诸如代理信息、因特网连接信息和映射等内容。应用程序配置设置35包括针对特定企业或用户定制应用程序的设置。通信配置设置41提供用于与其他计算机通信的参数,并且包括诸如GPRS参数、SMS参数、连接用户名和口令的项目。
应用程序33能够是先前已经存储在设备16上的应用程序或者在使用期间安装的应用程序,尽管这些应用程序能够是操作***29的部分或托管于设备16外部。
图6示出了其中设备16为平板计算机600的一个示例。在图6中,计算机600被示为具有用户界面显示屏602。屏幕602能够是触摸屏(因此能够使用来自用户手指的触摸手势与应用程序交互)或者从笔或触针接收输入的笔使能的接口。其也能够使用屏幕上的虚拟键盘。当然,其也可以通过适当的附接机构被附接到键盘或其他用户输入设备,附接机构诸如是无线链路或USB端口。计算机600也能够例示性地接收语音输入。
图7示出了,设备能够是智能电话71。智能电话71具有触敏显示器73,其显示图标或标题或者其他用户输入机构75。机构75能够由用户用于运行应用程序、拨打电话、执行数据传输操作等。通常,智能电话71被构建在移动操作***上,并且提供比非智能电话更高级的计算能力和连接。
需要注意的是,其他形式的设备16也是可能的。
图8是能够部署架构100或其部分(例如)的计算环境的一个示例。参考图8,用于实施一些实施例的示例性***包括形式为计算机810的通用计算设备。计算机810的组件可以包括,但不限于:处理单元820(其能够包括来自先前附图的处理器或服务器)、***存储器830以及将包括***存储器的各种传统组件耦合到处理单元820的***总线821。***总线821可以是若干类型的总线结构中的任意总线结构,包括存储器总线或存储器控制器、***总线、以及使用多种总线架构中的任意总线结构的局域总线。例如,但并非限制,这样的架构包括行业标准架构(ISA)总线、微通道架构(MCA)总线、增强ISA(EISA)总线、视频电子标准关联(VESA)局部总线和***组件互连(PCI)总线(也被称为Mezzanine总线)。能够在图8的对应部分中部署参考图1所描述的存储器和程序。
计算机810通常包括各种计算机可读介质。计算机可读介质能够是能够由计算机810访问的任何可用介质,并且包括易失性和非易失性介质、可移除和不可移除性介质。例如,但并非限制,计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质不同于并且不包括经调制的数据信号或载波。其包括硬件存储介质,包括在用于存储诸如计算机可读指令、数据结构、程序模块或其他数据的信息的任何方法或技术中实现的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于:RAM、ROM、EEPROM、闪存存储器或其他存储技术、CD-ROM、数字通用盘(DVD)或其他光学盘存储设备、磁带盒、磁带、磁盘存储器或其他磁性存储设备,或者可以用于存储所需信息并且可以由计算机810访问的任何其他介质。通信介质通常体现计算机可读指令、数据结构、程序模块或传输机制中的其他数据,并且包括任何信息递送介质。术语“经调制的数据信号”意指具有以信号编码信息的方式来设置或改变其一个或多个特性的信号。例如但并非限制,通信介质包括有线介质和无线介质,有线介质例如是有线网络或直接线路连接,无线介质例如是声学、RF、红外和其他无线介质。任何上述内容的组合也应当包括在计算机可读介质的范围内。
***存储器830包括形式为易失性和/或非易失性存储器,诸如只读存储器(ROM)831和随机存取存储器(RAM)832的计算机存储介质。包含基本例程的基本输入/输出***833(BIOS)通常存储在ROM 831中,基本例程帮助在计算机810之内的元件之间,诸如在启动期间传输信息。RAM 832通常包含能由处理单元820立即访问和/或当前由其操作的数据和/或程序模块。例如,但并非限制,图8示出了操作***834、应用程序835、其他程序模块836和程序数据837。
计算机810还可以包括其他可移除/不可移除易失性/非易失性计算机存储介质。仅仅作为示例,图8示出了硬盘驱动器841和光盘驱动器855,硬盘驱动器从不可移除非易失性磁性介质读取或者向其写入,光盘驱动器从可移除非易失性光盘856(诸如CD ROM或其他光学介质)读取或者向其写入。在示范性操作环境中可以使用的其他可移除/不可移除、易失性/非易失性计算机存储介质包括,但不限于:磁带盒、闪存存储器卡、数字通用盘、数字视频磁带、固态RAM、固态ROM等。硬盘驱动器841通常通过不可移除存储器接口(例如,接口840)连接到***总线821,光盘驱动器855通常通过可移除存储器接口(例如,接口850)连接到***总线821。
或者,或者另外,在本文中所描述的功能能够至少部分地由一个或多个硬件逻辑单元组件来执行。例如,但并非限制,能够使用的例示类型的硬件逻辑单元组件包括现场可编程门阵列(FPGA)、程序特有集成电路(ASIC)、程序特有标准产品(ASSP)、片上******(SOC)、复杂可编程逻辑单元器件(CPLD)等。
上文论述并且在图8中例示的驱动器以及其相关联的计算机存储介质为计算机810提供计算机可读指令、数据结构、程序模块和其他数据的非易失性存储。在图8中,例如,硬盘驱动器841被例示为存储操作***844、应用程序845、其他程序模块846和程序数据847。需注意,这些组件可以与操作***834、应用程序835、其他程序模块836和程序数据837相同或不同。操作***844、应用程序845、其他程序模块846和程序数据847在此被赋予不同的数字,以例示至少其是不同的副本。
用户可以通过输入设备向计算机810中输入命令和信息,输入设备例如是键盘862、麦克风863、以及定点设备861,诸如是鼠标、轨迹球或触摸板。其他输入设备(未示出)可以包括操纵杆、游戏板、卫星盘、扫描仪等。这些和其他输入设备常常通过被耦合到***总线的用户输入接口860连接到处理单元820,但是可以由其他接口和总线结构连接,诸如并行端口、游戏端口或通用串行总线(USB)。视觉显示器891或其他类型的显示设备也经由接口,诸如视频接口890,被连接到***总线821。除了监视器之外,计算机还可以包括其他***输入设备,诸如扬声器897和打印机896,其可以通过输出***接口895连接。
在联网环境中,使用通往一个或多个远程计算机,诸如远程计算机880的逻辑单元连接,来操作计算机810。远程计算机880可以是个人计算机、手持设备、服务器、路由器、网络PC、对等设备或者其他公共网络节点,通常包括上文结合计算机810所描述的很多或所有元件。图8中所示的逻辑单元连接包括局域网(LAN)871和广域网(WAN)873,但是也可以包括其他网络。这样的联网环境在办公室、企业范围计算机网络、内联网和因特网中是常见的。
当被用在LAN联网环境中时,计算机810通过网络接口或适配器870被连接到LAN871。当被用在WAN联网环境中时,计算机810通常包括调制解调器872或用于通过诸如因特网的WAN 873建立通信的其他模块。调制解调器872(可以是内部或外部的)可以经由用户输入接口860或其他适当机构被连接到***总线821。在联网环境中,相对于计算机810绘示的程序模块或其部分可以被存储在远程存储设备中。例如,但并非限制,图8示出远程应用程序885驻留在远程计算机880上。将意识到,所图示的网络连接是示范性的,可以使用在计算机之间建立通信链路的其他手段。
还应当指出的是,可以通过不同方式组合在本文中所描述的不同示例。亦即,可以将一个或多个示例的部分与一个或多个其他示例的部分组合。本文中设想了所有这些情况。
示例1是一种计算***,包括:
初始化逻辑单元,所述初始化逻辑单元接收服务请求,并且响应于所述服务请求来识别要执行的一组工作流以及要做出的一组应用编程接口(API)调用,并且生成指示所述一组工作流和所述一组API调用的初始化输出信号;
API调用引擎,所述API调用引擎基于所述初始化输出信号来彼此同时地做出所述一组API调用,并且接收API调用结果;
请求处理工作流逻辑单元,所述请求处理工作流逻辑单元执行所述一组工作流以获得工作流结果、对所述服务请求做出响应,所述结果处理工作流逻辑单元与API调用引擎做出所述一组API调用同时地、并且相对于API调用引擎做出所述一组API调用异步地执行所述一组工作流,其中,所述一组工作流中的给定工作流的结果取决于所述一组API调用中的一个API调用的API调用结果,其中,所述给定工作流被配置为访问来自API调用引擎的所述API调用结果;以及
响应逻辑单元,所述响应逻辑单元基于所述工作流结果来生成对所述服务请求的响应。
示例2是任何或所有前述示例的计算***,其中,通过执行一组对应的处理任务来做出每个API调用,并且还包括:
多个中央处理单元(CPU)内核,其中,所述API调用引擎被配置为通过在多个不同CPU内核之间分配与所述一组API调用中的不同API调用相对应的处理任务组来执行多处理。
示例3是任何或全部先前示例所述的计算***,并且还包括:
线程保护逻辑单元,所述线程保护逻辑单元被配置为在所述多个CPU内核中的独立一个CPU内核上保护与所述一组API调用中的每个API调用相对应的独立计算线程,从而在独立线程上做出与每个API调用相对应的所述一组处理任务。
示例4是任何或全部先前示例所述的计算***,其中,所述API调用引擎包括:
与所述一组API调用中的每个API调用相对应的API调用逻辑单元的独立实例,其中,所述API调用逻辑单元被配置为控制API调用逻辑单元的所述独立实例以做出对应的API调用。
示例5是任何或全部先前示例所述的计算***,其中,所述一组工作流包括:
第一工作流,所述第一工作流生成取决于所述一组API调用中的第一API调用的结果的第一工作流结果;以及
第二工作流,所述第二工作流生成取决于所述一组API调用中的第二API调用的结果的第二工作流结果。
示例6是任何或全部先前示例所述的计算***,其中,所述线程保护逻辑单元保护API调用逻辑单元的第一实例做出所述第一API调用所在的第一线程以及API调用逻辑单元的第二实例做出所述第二API调用所在的第二线程,其中,所述API调用逻辑单元的所述第一实例和所述第二实例被配置为相对于彼此同时地并且异步地做出所述第一API调用和所述第二API调用。
示例7是任何或全部先前示例所述的计算***,并且还包括:
结果聚合逻辑单元,所述结果聚合逻辑单元被配置为聚合所述第一工作流结果和所述第二工作流结果以获得聚合结果并且将所述聚合结果提供给所述响应逻辑单元以用于所述响应的生成。
示例8是任何或全部先前示例所述的计算***,其中,所述API调用引擎被配置为:访问引擎配置标准并且基于所述引擎配置标准来识别要做出所述一组API调用中的哪个API调用,并且控制API调用逻辑单元的实例以仅做出所识别的API调用。
示例9是任何或全部先前示例所述的计算***,其中,所述API调用引擎被配置为将所述API调用识别为所述一组API调用的子集。
示例10是一种计算机实现的方法,包括:
在服务计算***处接收服务请求;
识别在对所述服务请求做出响应时要执行的一组工作流以及要做出的一组应用编程接口(API)调用;
生成指示所述一组工作流和所述一组API调用的初始化输出信号;
基于所述初始化输出信号来彼此同时地做出所述一组API调用;
接收API调用结果;
相对于做出所述一组API调用来异步地执行所述一组工作流,以获得工作流结果、对服务请求做出响应,其中,给定工作流的结果取决于所述一组API调用中的至少一个API调用的API调用结果;以及
基于所述工作流结果来生成对所述服务请求的响应。
示例11是任何或全部先前示例所述的计算机实现的方法,其中,彼此同时地做出所述API调用包括:
执行与每个API调用相对应的一组处理步骤,以做出所述一组API调用中的每个API调用。
示例12是任何或全部先前示例所述的计算机实现的方法,其中,做出所述一组API调用包括:
将每组处理步骤分配到不同的计算***线程。
示例13是任何或全部先前示例所述的计算机实现的方法,其中,所述一组API调用是由具有多个不同中央处理单元(CPU)内核的计算***做出的,并且其中,做出所述一组API调用包括:
将每组处理步骤分配到多个不同CPU内核中的不同CPU内核。
示例14是任何或全部先前示例所述的计算机实现的方法,其中,与执行所述一组工作流同时地、并且相对于执行所述一组工作流异步地做出所述一组API调用。
示例15是任何或全部先前示例所述的计算机实现的方法,其中,做出所述组API调用包括:
控制与所述一组API调用中的每个API调用的API调用逻辑单元的独立实例以做出对应的API调用。
示例16是任何或全部先前示例所述的计算机实现的方法,其中,识别要执行的所述一组API调用包括:
识别所述一组工作流中的第一工作流,所述第一工作流生成取决于所述一组API调用中的第一API调用的结果的第一工作流结果;以及
识别所述一组工作流中的第二工作流,所述第二工作流生成取决于所述一组API调用中的第二API调用的结果的第二工作流结果。
示例17是任何或全部先前示例所述的计算机实现的方法,其中,将每组处理步骤分配到不同CPU内核包括:
将与所述第一API调用相对应的第一组处理步骤分配到所述多个CPU内核中的第一CPU内核;以及
将与所述第二API调用相对应的第二组处理步骤分配到所述多个CPU内核中的第二CPU内核,所述第一CPU内核和所述第二CPU内核彼此异步地分别执行所述第一组处理步骤和所述第二组处理步骤。
示例18是任何或全部先前示例所述的计算机实现的方法,其中,做出所述一组API调用包括:
访问引擎配置标准;以及
基于所述引擎配置标准来识别要做出所述一组API调用中的哪个API调用;以及
仅做出所识别的API调用。
示例19是一种计算***,包括:
多个中央处理单元内核;
初始化逻辑单元,所述初始化逻辑单元接收服务请求,并且响应于所述服务请求来识别要执行的一组工作流以及要做出的一组应用编程接口(API)调用,并且生成指示所述一组工作流和所述一组API调用的初始化输出信号;
API调用引擎,所述API调用引擎基于所述初始化输出信号,使用所述多个不同CPU内核的独立CPU内核并且彼此同时地做出所述一组API调用中的每个API调用,所述API调用引擎接收API调用结果;
请求处理工作流逻辑单元,所述请求处理工作流逻辑单元执行所述一组工作流以获得工作流结果、对服务请求做出响应,所述结果处理工作流逻辑单元与API调用引擎做出所述一组API调用同时地、并且相对于API调用引擎做出所述一组API调用异步地执行所述一组工作流,其中,所述一组工作流中的给定工作流的结果取决于所述一组API调用中的一个API调用的API调用结果,其中,给定工作流被配置为访问来自API调用引擎的API调用结果;以及
响应逻辑单元,所述响应逻辑单元基于所述工作流结果来生成对所述服务请求的响应。
示例20是任何或全部先前示例所述的计算***,其中,所述API调用引擎被配置为访问引擎配置标准并且基于引擎配置标准识别要做出所述一组API调用中的哪个API调用,并且仅做出所识别的API调用。
尽管以特定于结构特征和/或方法行为的语言对主题进行了描述,但是应当理解,随附的权利要求中限定的主题并不一定限于上述特定特征或行为。相反,公开了特定特征和动作作为实施权利要求的示例形式。
Claims (15)
1.一种计算***,包括:
初始化逻辑单元,所述初始化逻辑单元接收服务请求,并且响应于所述服务请求来识别要执行的一组工作流以及要做出的一组应用编程接口(API)调用,并且生成指示所述一组工作流和所述一组API调用的初始化输出信号;
API调用引擎,所述API调用引擎基于所述初始化输出信号彼此同时地做出所述一组API调用,并且接收API调用结果;
请求处理工作流逻辑单元,所述请求处理工作流逻辑单元执行所述一组工作流以获得工作流结果、对所述服务请求做出响应,所述请求处理工作流逻辑单元与所述API调用引擎做出所述一组API调用同时地、并且相对于所述API调用引擎做出所述一组API调用异步地执行所述一组工作流,其中,所述一组工作流中的给定工作流的结果取决于所述一组API调用中的一个API调用的所述API调用结果,其中,所述给定工作流被配置为访问来自所述API调用引擎的所述API调用结果;以及
响应逻辑单元,所述响应逻辑单元基于所述工作流结果来生成对所述服务请求的响应。
2.根据权利要求1所述的计算***,其中,每个API调用是通过执行一组对应的处理任务来做出的,并且所述计算***还包括:
多个中央处理单元(CPU)内核,其中,所述API调用引擎被配置为通过在多个不同CPU内核之间分配与所述一组API调用中的不同API调用相对应的处理任务组来执行多处理。
3.根据权利要求2所述的计算***,并且还包括:
线程保护逻辑单元,所述线程保护逻辑单元被配置为在所述多个CPU内核中的独立CPU内核上保护与所述一组API调用中的每个API调用相对应的独立计算线程,从而在独立线程上做出与每个API调用相对应的处理任务组。
4.根据权利要求3所述的计算***,其中,所述API调用引擎包括:
与所述一组API调用中的每个API调用相对应的API调用逻辑单元的独立实例,其中,所述API调用引擎被配置为控制API调用逻辑单元的所述独立实例以做出对应的API调用。
5.根据权利要求4所述的计算***,其中,所述一组工作流包括:
第一工作流,所述第一工作流生成取决于所述一组API调用中的第一API调用的结果的第一工作流结果;以及
第二工作流,所述第二工作流生成取决于所述一组API调用中的第二API调用的结果的第二工作流结果。
6.根据权利要求5所述的计算***,其中,所述线程保护逻辑单元保护API调用逻辑单元的第一实例做出所述第一API调用所在的第一线程以及API调用逻辑单元的第二实例做出所述第二API调用所在的第二线程,其中,所述API调用逻辑单元的所述第一实例和所述第二实例被配置为相对于彼此同时地并且异步地做出所述第一API调用和所述第二API调用。
7.根据权利要求6所述的计算***,并且还包括:
结果聚合逻辑单元,所述结果聚合逻辑单元被配置为聚合所述第一工作流结果和所述第二工作流结果以获得聚合结果并且将所述聚合结果提供给所述响应逻辑单元以用于所述响应的生成。
8.根据权利要求4所述的计算***,其中,所述API调用引擎被配置为:访问引擎配置标准并且基于所述引擎配置标准来识别要做出所述一组API调用中的哪个API调用,并且控制API调用逻辑单元的实例以仅做出所识别的API调用。
9.根据权利要求8所述的计算***,其中,所述API调用引擎被配置为将所述API调用识别为所述一组API调用的子集。
10.一种计算机实现的方法,包括:
在服务计算***处接收服务请求;
识别在对所述服务请求做出响应时要执行的一组工作流以及要做出的一组应用编程接口(API)调用;
生成指示所述一组工作流和所述一组API调用的初始化输出信号;
基于所述初始化输出信号彼此同时地做出所述一组API调用;
接收API调用结果;
相对于做出所述一组API调用异步地执行所述一组工作流,以获得工作流结果、对所述服务请求做出响应,其中,给定工作流的结果取决于所述一组API调用中的至少一个API调用的API调用结果;以及
基于所述工作流结果来生成对所述服务请求的响应。
11.根据权利要求10所述的计算机实现的方法,其中,彼此同时地做出所述API调用包括:
执行与每个API调用相对应的一组处理步骤,以做出所述一组API调用中的每个API调用。
12.根据权利要求11所述的计算机实现的方法,其中,做出所述一组API调用包括:
将每组处理步骤分配到不同的计算***线程。
13.根据权利要求11所述的计算机实现的方法,其中,做出所述一组API调用是由具有多个不同中央处理单元(CPU)内核的计算***来执行的,并且其中,做出所述一组API调用包括:
将每组处理步骤分配到所述多个不同CPU内核中的不同CPU内核。
14.根据权利要求10所述的计算机实现的方法,其中,做出所述一组API调用是与执行所述一组工作流同时地、并且相对于执行所述一组工作流异步地执行的。
15.一种计算***,包括:
多个中央处理单元内核;
初始化逻辑单元,所述初始化逻辑单元接收服务请求,并且响应于所述服务请求来识别要执行的一组工作流以及要做出的一组应用编程接口(API)调用,并且生成指示所述一组工作流和所述一组API调用的初始化输出信号;
API调用引擎,所述API调用引擎基于所述初始化输出信号来使用多个不同CPU内核中的独立CPU内核并且彼此同时地做出所述一组API调用中的每个API调用,所述API调用引擎接收API调用结果;
请求处理工作流逻辑单元,所述请求处理工作流逻辑单元执行所述一组工作流以获得工作流结果、对所述服务请求做出响应,所述请求处理工作流逻辑单元与所述API调用引擎做出所述一组API调用同时地、并且相对于所述API调用引擎做出所述一组API调用异步地执行所述一组工作流,其中,所述一组工作流中的给定工作流的结果取决于所述一组API调用中的一个API调用的所述API调用结果,其中,所述给定工作流被配置为访问来自所述API调用引擎的所述API调用结果;以及
响应逻辑单元,所述响应逻辑单元基于所述工作流结果来生成对所述服务请求的响应。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/953,834 | 2018-04-16 | ||
US15/953,834 US10437634B1 (en) | 2018-04-16 | 2018-04-16 | Independently threading API calls to service a request |
PCT/US2019/025087 WO2019204010A1 (en) | 2018-04-16 | 2019-04-01 | Independently threading api calls to service a request |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112005217A CN112005217A (zh) | 2020-11-27 |
CN112005217B true CN112005217B (zh) | 2024-04-02 |
Family
ID=66182654
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980026243.3A Active CN112005217B (zh) | 2018-04-16 | 2019-04-01 | 服务于请求的独立线程api调用 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10437634B1 (zh) |
EP (1) | EP3782027B1 (zh) |
CN (1) | CN112005217B (zh) |
WO (1) | WO2019204010A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10970048B2 (en) * | 2018-09-17 | 2021-04-06 | Servicenow, Inc. | System and method for workflow application programming interfaces (APIS) |
US11366660B1 (en) * | 2019-06-20 | 2022-06-21 | Amazon Technologies, Inc. | Interface latency estimation based on platform subcomponent parameters |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104067216A (zh) * | 2011-06-27 | 2014-09-24 | 亚马逊科技公司 | 用于实施可扩展数据存储服务的***和方法 |
CN107743616A (zh) * | 2015-04-08 | 2018-02-27 | 亚马逊技术有限公司 | 提供应用编程接口代理服务的端点管理*** |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050080930A1 (en) | 2003-10-14 | 2005-04-14 | International Business Machines Corporation | Method and apparatus for processing service requests in a service-oriented architecture |
US9244730B2 (en) * | 2009-02-11 | 2016-01-26 | International Business Machines Corporation | Application workflow integration subsystem |
US8713060B2 (en) * | 2009-03-31 | 2014-04-29 | Amazon Technologies, Inc. | Control service for relational data management |
US8701128B2 (en) * | 2011-02-14 | 2014-04-15 | General Electric Company | Method, system and computer program product for a client application programming interface (API) in a service oriented architecture |
US9531805B1 (en) | 2012-06-19 | 2016-12-27 | Google Inc. | Systems and methods for run time migration |
US9300759B1 (en) | 2013-01-03 | 2016-03-29 | Amazon Technologies, Inc. | API calls with dependencies |
US9818127B2 (en) * | 2013-03-15 | 2017-11-14 | International Business Machines Corporation | Implementing comparison of cloud service provider package offerings |
CN103345420B (zh) | 2013-06-03 | 2017-12-22 | 百度在线网络技术(北京)有限公司 | 批量调用api接口的方法、***和装置 |
US20150106116A1 (en) * | 2013-10-14 | 2015-04-16 | Medidata Solutions, Inc. | System and method for obtaining and utilizing audits from disparate sources |
US9542391B1 (en) | 2013-11-11 | 2017-01-10 | Amazon Technologies, Inc. | Processing service requests for non-transactional databases |
US10063537B2 (en) | 2014-12-19 | 2018-08-28 | Microsoft Technology Licensing, Llc | Permission architecture for remote management and capacity instances |
US10089146B2 (en) | 2016-03-31 | 2018-10-02 | International Business Machines Corporation | Workload balancing for storlet infrastructure |
US10135837B2 (en) * | 2016-05-17 | 2018-11-20 | Amazon Technologies, Inc. | Versatile autoscaling for containers |
-
2018
- 2018-04-16 US US15/953,834 patent/US10437634B1/en active Active
-
2019
- 2019-04-01 EP EP19718013.6A patent/EP3782027B1/en active Active
- 2019-04-01 CN CN201980026243.3A patent/CN112005217B/zh active Active
- 2019-04-01 WO PCT/US2019/025087 patent/WO2019204010A1/en unknown
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104067216A (zh) * | 2011-06-27 | 2014-09-24 | 亚马逊科技公司 | 用于实施可扩展数据存储服务的***和方法 |
CN107743616A (zh) * | 2015-04-08 | 2018-02-27 | 亚马逊技术有限公司 | 提供应用编程接口代理服务的端点管理*** |
Non-Patent Citations (2)
Title |
---|
Location-aware workflow scheduling in supply chains based on multi-agent systems;Fu-Shiung Hsieh;《2015 Conference on Technologies and Applications of Artificial Intelligence (TAAI)》;20160215;全文 * |
基于Web服务的异步工作流***;黎薇等;《微型电脑应用》;20050113;全文 * |
Also Published As
Publication number | Publication date |
---|---|
EP3782027A1 (en) | 2021-02-24 |
WO2019204010A1 (en) | 2019-10-24 |
US10437634B1 (en) | 2019-10-08 |
US20190317801A1 (en) | 2019-10-17 |
CN112005217A (zh) | 2020-11-27 |
EP3782027B1 (en) | 2024-03-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10379818B2 (en) | Multi-tenant, tenant-specific applications | |
CN110678844B (zh) | 基于租户排名来控制租户服务 | |
CN108431763B (zh) | 通过网络服务管理多个云存储装置 | |
CN106537346B (zh) | 针对实时供应的动态更新流 | |
CN106302571B (zh) | 用于对服务器连接进行维护和高速缓存的***和方法 | |
CN112005217B (zh) | 服务于请求的独立线程api调用 | |
WO2016178924A1 (en) | Isolating data to be moved across boundaries | |
US20180351832A1 (en) | Fast provisioning of tenants on a hosted service | |
EP3114550A1 (en) | Context aware commands | |
US20170085443A1 (en) | External process user interface isolation and monitoring | |
WO2024021031A1 (en) | Sending dns traffic to service-specific dns server | |
US9753788B2 (en) | Extensibility of engines in computing systems | |
EP4315048A1 (en) | Bundling data packages based on usage patterns for download control | |
US20180189290A1 (en) | Content object indexing and resolution system | |
CN118414818A (zh) | 将dns业务直接从终端用户设备发送到服务特定dns服务器 | |
WO2016182637A1 (en) | Maintaining and caching server connections |
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 |