CN112424746A - 服务网格内的原位触发的功能即服务 - Google Patents
服务网格内的原位触发的功能即服务 Download PDFInfo
- Publication number
- CN112424746A CN112424746A CN201980047591.9A CN201980047591A CN112424746A CN 112424746 A CN112424746 A CN 112424746A CN 201980047591 A CN201980047591 A CN 201980047591A CN 112424746 A CN112424746 A CN 112424746A
- Authority
- CN
- China
- Prior art keywords
- code
- service
- code segment
- listening
- function
- 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
Images
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/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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/02—Capturing of monitoring data
- H04L43/028—Capturing of monitoring data by filtering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/443—Optimisation
- G06F8/4441—Reducing the execution time required by the program code
-
- 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/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer And Data Communications (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Stored Programmes (AREA)
Abstract
本技术涉及一种用于自动触发与具有优选执行顺序的一系列代码段或功能代码相对应的相关代码段的系统和方法。自动触发动作是基于侦听由于先前代码段的执行而生成的响应的。可通过指示诸如Envoy之类的网络代理来侦听正在转发到客户端实体的响应分组的统一资源标识符(URI)字段,来获得有关优选执行顺序中的下一代码段的信息。以这种方式,网络代理可以在接收到相应的客户端请求之前,抢先性地产生并实例化(由所侦听的统一资源标识符所指向的)后续功能代码。这样,在接收到针对该后续功能代码的客户端请求时,该代码准备好执行。
Description
相关申请的交叉引用
本申请要求于2018年8月13日递交的、名称为“IN SITU TRIGGERED FUNCTION ASA SERVICE WITHIN A SERVICE MESH(服务网格内的原位触发功能即服务)”的美国非临时专利申请No.16/102,395的权益和优先权,该申请的整体通过引用明确结合于此。
技术领域
本技术涉及无服务器(Serverless)计算。更具体地说,本技术旨在改进服务网格环境中的无服务器架构的性能。
背景技术
基于微服务的架构的现实世界实施方式必须能够在微服务级别上实现中央总线(即,面向服务的架构实施方式中所使用的企业服务总线)所支持的大多数功能。因此,尽管解决了相同的基本问题集,但这些基本问题是通过微服务在不同维度上解决的。例如,通过利用架构的内置功能来构建在服务间通信期间有用的虚拟/复合服务和功能(例如,断路器、超时和服务发现等),可以利用企业服务总线架构来容易地处理涉及以弹性方式调用多个下游服务以及将功能展现为另一(复合)服务的场景。然而,在基于微服务的架构中实施同一场景必须使用一组(复合和原子的)微服务来实现,并且不能受益于企业服务总线的集中集成层。因此,在基于微服务的架构中,所有所需的功能必须在微服务级上实现。
微服务包括实现一个或多个功能、服务组合/集成逻辑,或执行计算的业务逻辑片段。除了业务逻辑片段外,微服务还包括网络功能,以促进服务间通信机制(并且通过给定协议、应用弹性和稳定性模式、服务发现等来启用基本服务调用)。这些网络功能可构建在底层操作系统级别的网络堆栈之上。在这样的基于微服务的架构中,从头开始实现与服务到服务通信有关的功能将非常复杂。必须花费大量的时间/精力/资源来构建服务到服务通信功能,而非实现业务逻辑。如果使用了多种技术来构建微服务(例如,多种编程语言),则情况将变得更糟,因为必须在不同的语言之间重复花费相同的时间和精力。因此,实现微服务架构的最复杂的挑战不是构建服务本身,而是构建服务之间的通信。由于大多数服务间通信要求在所有微服务实施方式中都非常通用,因此一种补救解决方案可涉及将所有此类任务卸载到不同的层,以便可以保持服务代码独立。这可以利用服务网格来实现。
简而言之,服务网格是一种服务间通信基础设施,用于使服务到服务通信安全、可靠、可观察且可配置。在服务网格环境中,给定的微服务不直接与其他微服务通信,而是所有的服务到服务通信都将在称为服务网格的软件组件的基础上进行。服务网格还可以提供对一些网络功能(例如,容错(弹性)和服务发现)的内置支持。
与无服务器计算相关联的功能即服务(FaaS)的概念与基于微服务的架构紧密相关。软件开发人员可以利用这种方法将单个功能(可以表示为单个或一系列的一个或多个微服务)、动作、或业务逻辑片段直接部署到云网络中。这些功能当被调用时预期在几毫秒内启动,并在该过程结束之后处理各个请求。功能即服务框架实现了远离开发人员的服务器的完全抽象,从而产生例如基于消耗和执行的计费系统以及事件驱动和即时可缩放的服务。功能即服务可特别适合大批量事务。例如,当事务或代码片段被每秒执行数百次时,将相应的逻辑隔离到可易于缩放的功能将是非常有益的。功能可能有许多潜在用途,例如,它们提供了高效的模型来执行调度的任务(根据预定义调度来运行特定的代码片段)或在必要时人工运行代码片段。另一种合适的使用情况可涉及处理网络请求和/或队列消息。
弹性和可缩放性是任何应用架构的基本属性。利用功能即服务模型提供了一种灵活的方法来为应用架构增加可缩放性和弹性。由于资源是根据应用的需求来分配的,因此还可以降低成本。功能即服务架构是可自动缩放的,当流量或负载增加时,自动标量(Auto-scalar)添加资源以处置额外的活动,并且在流量或负载降低时移除资源以助于降低成本。还消除了对管理云上的服务器的需求,并通过广泛使用功能计算资源来代替云上服务器。
在无服务器架构中,短期功能在每次请求时被调用,并且提供商可针对运行每个单独的功能或业务逻辑而向客户收费(因此名称为功能即服务或FaaS)。无服务器架构或功能即服务架构中的功能是可被表示为单个或一系列的一个或多个微服务操作的较小的、分立并且可再次使用的代码块。这些功能也可被链接在一起。例如,网络请求可对队列进行写入,其然后由不同的功能提取。
附图说明
为了描述可以获得本公开的上述和其他优点和特征的方式,将通过参考在附图中示出的特定实施例来对以上简要描述的原理进行更具体的描述。应理解,这些附图仅描绘了本公开的示例性实施例,因此不应被认为是对其范围的限制,通过使用附图,以附加的特征和细节来描述和解释本文的原理,其中:
图1示出了标准服务网格环境中的无服务器计算的基本操作流程图。
图2示出了根据本技术的实施例的基于服务代码的原位触发以改善服务网格响应时间的增强无服务器框架的操作流程图。
图3示出了根据本技术的实施例的用于基于服务代码的原位触发在服务网格环境中实现无服务器计算的基本操作步骤。
图4示出了根据本技术的实施例的用于在服务网格环境中实现基于云的无服务器计算的系统概述。
具体实施方式
在独立权利要求中陈述了本发明的各方面,并且在从属权利要求中陈述了优选的特征。一个方面的特征可以单独地或与其他方面结合地应用于每个方面。
本公开的附加特征和优点将在下面的描述中阐述,并且部分地根据该描述将是显而易见的,或者可以通过实践本文公开的原理来获悉。本公开的特征和优点可以通过所附权利要求中特别指出的手段和组合来实现和获得。本公开的这些和其他特征根据以下描述和所附权利要求将变得更加显而易见,或者可以通过实践本文阐述的原理来获悉。
概览
公开了系统、方法和设备,这些系统、方法和设备涉及在无服务器架构中自动调用相关功能代码或微服务实例。除了响应于诸如初始客户端请求之类的触发而促进功能代码的调用和执行以及将相应的(一个或多个)响应分组转发回客户端实体之外,控制器实体或网络代理程序还可以对转发/路由的分组执行附加操作。例如,可以侦听(snoop)(一个或多个)客户端指定的响应分组,以揭示有关可能作为后续客户端请求/查询的目标的任何功能代码的信息。侦听返回流量可以包括检查关于标识、位置和相关访问/通信协议、以及与下一(微)服务或代码段相关联的其他相关细节的任何信息的统一资源标识符字段。如本技术的一些实施例所公开的,基于所侦听的信息,诸如Envoy之类的网络代理可以在接收到相应的客户端请求之前,抢先性地产生并实例化(由所侦听的统一资源标识符所指向的)后续功能代码。触发事件可以是针对服务链中的实现所需功能的初始功能代码的客户端请求。本技术的各方面还涉及实现在(由初始事件触发)调用和执行具有优选执行顺序的多个(微)服务代码中的第一个的(微)服务代码之后,自动实例化/调用后续的(微)服务代码。
示例实施例
公开了用于自动触发与服务链相关联的功能代码的系统、方法和非暂态计算机可读存储介质。本技术的实施例还涉及实现具有增强功能的网络代理,使得改善基础服务网格架构的响应时间。像ENVOY这样的网络代理可以被配置为检查响应于客户端请求而生成的数据流量。该检查旨在发现可能要求客户端发起的下一个动作或下一组动作。如果所发现的动作涉及执行诸如功能或(微)服务实例之类的代码片段,则网络代理将促进所侦听的功能代码的设置和实例化,以便准备好在接收到来自客户端实体的相应请求时进行执行。下面详细讨论本公开的各种实施例。虽然讨论了具体的实施方式,但是应该理解,这仅是出于说明目的。相关领域的技术人员将认识到,在不脱离本公开的精神和范围的情况下,可以使用其他组件和配置。
服务是具有唯一名称的应用单元,其他服务使用该名称来指代所调用的功能。服务实例可以是实现服务的pod/VM/容器。从无服务器计算的角度来看,功能是服务的抽象版本,可能没有任何与之关联的计算资源。功能可以由主机设备上的编码某些功能或业务逻辑的代码片段表示。响应于诸如特定事件的发生之类的触发,功能代码可以由外部实体调用和执行。
无服务器计算允许在不分配任何计算资源的情况下将服务代码实现为功能。当前,功能即服务(FaaS)更多地基于需求来工作,使得每当有触发(例如,感兴趣的分组或对特定功能的请求)时,相关联的控制器或网络代理将执行相应的软件代码。对执行代码的触发还可涉及例如调度任务、超文本终端协议(HTTP)请求、对队列消息进行响应、或在必要时人工调用代码片段。从终端用户的角度来看,可能不需要与管理基于服务器的服务相关联的专用计算资源。替代地,成本更低的是将应用相关功能或业务逻辑片段实现为由外部实体(如计算服务,例如AWS Lambda)执行的一组功能(服务的抽象版本,没有关联的计算资源)。外部实体将监视某些触发,并响应于某些触发事件来调用和执行功能代码。在执行之后,功能可被关闭。此特性操作是基于服务器的架构和无服务器(功能即服务)架构之间的区别特征。
在服务网格环境中的无服务器模型的标准实施方式中,需要触发事件(例如,客户端请求/查询)来生成相应功能代码的实例,然后可以执行该代码以生成响应,然后该响应被转发到客户端。在所请求的功能需要依次调用多个功能代码的情况下,必须由针对该(微)服务的定向客户端请求来单独地触发所需的功能代码。每个功能的执行都生成可被转发到客户端的响应。该响应还可以包括关于下一个客户端请求将定向到的后续功能代码的信息。下面提供了与服务网格环境中的功能即服务的标准实施方式有关的示例。
在无服务器架构中实现的网络服务应用可被划分为多个功能。例如,前端功能可处置传入网络请求(即http请求),并且后端功能可处置诸如用户身份验证和访问认证之类的过程。在这种情况下,传入客户端http请求将指向前端功能。在接收到http请求后,外部实体(例如,AWS Lambda网络代理)将执行前端功能并将结果转发到客户端。然而,如果存在与网络服务应用相关联的后端认证功能,则发出请求的用户必须先建立适当的凭据,然后才能被授予对所请求的网站的访问权限。为了适当地识别用户,前端功能可包括适当的统一资源标识符以及用户在其对客户端的http请求的响应中所提供的所需详细信息(例如,对用户名和密码的请求)。
统一资源标识符是为了明确标识资源而设计的字符串,并用于使用特定协议通过网络与所述资源的表示进行交互。在上述示例的情况下,由网络服务/应用的前端功能发送回客户端的统一资源标识符可指向应用的后端功能(即认证服务)。因此,来自客户端的下一组分组或下一流量流将基于统一资源标识符而指向完全不同的服务,并且下一轮协商实质上将在客户端与不得不在被客户端请求触发时冷启动的认证功能之间发生。
当在服务网格中实现功能即服务(FaaS)模型时,每个功能可具有对应于一个或多个代码片段的一个或多个(微)服务,每个代码段都需要在被诸如定向客户端请求之类的事件触发时被冷启动(实例化/初始化)和执行。在无服务器平台中冷启动功能可花费相当长的时间来加载,可以在大约几毫秒到几分钟的范围内。此外,此操作将需要在其被启动之前等待定向客户端请求。当前,无法在接收到相应的触发(即客户端请求)之前在到客户端的返回流量(其是作为执行先前的功能代码的结果而产生的)中实例化所指向的代码段。因此,与相关联技术的标准操作相关联的所描述的方案导致操作延迟,该操作延迟对应于由客户端的每个服务代码请求所生成的请求(微)服务或功能代码的产生和实例化。
本技术的一些实施例旨在改善与实现基于微服务的架构的标准方案相关联的等待时间和延迟。为了这个目的,本技术的实施例公开了一种数据平面触发的方法,用于在服务网格内在初始触发之后自动识别并且实例化相关的功能代码。即使当根据功能即服务模型实现服务网格时,本技术的实施例也提供操作响应时间的改善。
图1示出了示例场景,其中示出了与基于无服务器的服务网格环境相关联的固有操作等待时间和响应时间延迟。
图1示出了基于服务网格的无服务器实施方式100,其中在服务网格环境中实现了功能即服务模型。如图1所示,功能102被实现为一系列三个(微)服务104、106和108。参考图1,响应于检测到来自客户端实体的初始查询/请求110,触发(微)服务104(其在该系列中为第一个)。(微)服务104对应于当被执行时执行一些操作的代码段或业务逻辑片段。在接收到初始请求110时,对应于(微)服务104的代码段被实例化/初始化。该过程引起延迟112,之后在114处,代码段准备好被执行。该执行还可引起延迟116,之后在118处,生成响应120并将其转发到客户端实体。响应120可以包括关于(微)服务106的细节,以便指示客户端实体向(微)服务106发送下一请求/查询124。
在接收到请求/查询124时,对应于(微)服务106的代码段被实例化/初始化。同样地,该过程引起延迟126,之后在128处,代码段准备好被执行。该执行还可引起延迟130,之后在132处,生成响应134并将其转发到客户端实体。与前一阶段响应120相似,响应134可包括有关下一(微)服务(在客户端响应134的情况下为108)的详细信息,该详细信息指示客户端实体向(微)服务108发送下一请求/查询138。
在接收到请求/查询138后,对应于(微)服务108的代码段被实例化/初始化。该过程产生延迟140,之后在142处,代码段准备好被执行。该执行还可引起延迟144,之后在146处,生成响应148并将其转发到客户端实体,此时功能102的操作完成。
如图1所示,在标准方案中,必须将针对每个代码段的客户端请求定向到每个代码段,以便实例化/初始化以及执行该代码段。本技术的一些实施例旨在改善与实现参考图1示出和描述的基于微服务的架构的标准方案相关联的等待时间和延迟。为了这个目的,本技术的实施例公开了一种数据平面触发的方法,用于在服务网格内在初始触发之后自动识别并实例化相关的功能代码。即使当根据功能即服务模型实现服务网格时,本技术的实施例也提供操作响应时间的改善。根据一些实施例,这可以通过使初始请求(即前述示例中的http请求)触发另一组相关的功能,使得相关的功能代码在接收到指向特定代码段的客户端请求时被实例化并且准备好执行来实现。
如上所述,当事件(例如,http请求)触发相关联的服务功能(由功能代码表达)时,将与功能代码的执行结果相对应的返回流量发送回客户端。(一个或多个)响应分组将携带所有相关的信息(例如,下一服务功能的统一资源标识符)以及任何相关的描述,以及客户端所需的相关cookie细节,以便携带与下一服务的调用和执行相关联的附加细节。
根据本技术的一些实施例,除了所需的第7层路由和转发响应消息(即http响应)返回到客户端之外,网络通信代理(例如,服务网格的数据平面部分,即Envoy)还可以执行附加功能。根据一些实施例,由网络通信代理(即Envoy)执行的附加功能包括侦听去往客户端的响应流量。例如,Envoy将侦听分组(即查看http分组的有效载荷)以发现在分组内是否存在统一资源标识符,并且如果存在,则识别并定位所述统一资源标识符。
如果所请求的网页是不需要认证的简单网页(或者如果由于进行请求的用户的性质而避免了认证要求),则可能不需要调用后端认证功能。因此,在这些情况下,可能没有返回响应所指向的下一服务功能,并且因此,响应流量将不包含统一资源标识符。然而,根据一些实施例,如果相关联的网络代理(即Envoy)在侦听返回流量时在响应分组中发现了统一资源标识符,则它将识别所发现的URI的相关联的服务功能,并且根据一些实施例,可以在接收到来自客户端的相应请求之前发送通知传入客户端请求的适当服务以促进相关的功能代码的实例化/初始化的服务调用。
在根据本技术的一些实施例实现的无服务器架构中,可以通过执行先前的功能代码来触发对初始功能代码之后的所有功能代码的实例化。在一些实施例中,这可以如下实现:侦听由执行先前的功能代码而生成的到客户端的响应流量,从而检查和分析在响应流量的有效载荷中可能存在的统一资源标识符(URI)。通过检查统一资源标识符,可以识别和定位链中的下一功能代码。因此,诸如Envoy之类的本地通信管理实体可以在将来自先前的功能代码的响应转发到客户端时,适当地触发对一个或多个后续功能代码的实例化。以这种方式,在从客户端接收到针对所述后续功能代码的相应请求/查询时,该功能代码准备好被执行,因此可以避免或至少减少与建立(实例化/初始化)初始功能代码(系列中的第一个)之后的所有功能代码相关联的任何延迟。
图2示出了根据本技术的一些实施例实现的与服务网格架构的无服务器计算相对应的示例性实施方式200。在无服务器计算实施方式200中,功能202被适当地表示为一系列三个(微)服务204、206和208(以与图1中的功能102相同的方式)。初始功能代码或(微)服务204的处理以与图1所示的功能102的初始功能代码104的处理类似的方式进行。该过程涉及由检测到源自客户端实体的初始查询/请求210而触发的初始功能代码204的实例化和执行。
参考图2中的示例200,时间跨度212对应于与功能代码204相关的实例化过程的持续时间,并且时间跨度216对应于与功能代码204相关的执行操作的持续时间。在218处的执行操作完成时,生成客户端响应220并将其通过诸如Envoy之类的本地通信控制器或网络代理转发到客户端。然而,除了执行所需的第7层路由和转发操作之外,示例性实施方式200中的本地网络代理或通信控制器还对去往客户端的返回流量220执行诸如侦听操作222之类的附加动作,以便检测是否需要针对功能202实例化附加的功能代码。根据一些实施例,侦听操作检索被包括在(一个或多个)返回分组的统一资源标识符字段中的信息,从而确定与必须作为功能202的一部分而调用和执行的下一代码段(或功能代码)相对应的标识、位置和相关联协议、以及其他相关信息。
回到图2,网络代理基于从去往客户端的返回流量220侦听到的统一资源标识符信息来识别、定位和触发后续功能代码206的实例化。与响应流量220的适当路由和转发相结合或附加地执行该功能。因此,在从客户端接收到对功能代码206的请求之前,触发对该功能代码206的实例化。在图2的操作流程图所示的示例性情况下,在接收到针对(如由从返回流量220侦听到的统一资源标识符所指向的)功能代码206的客户端请求224时,已经经过了与功能代码206的实例化相关联的延迟226(实例化操作完成),并且功能代码已准备好执行(如图2中的阶段228所示)。改善的响应时间部分可归因于,与实施方式100中的相应的功能代码106相比,实施方式200中的功能代码206被较早调用(基于侦听由先前的功能代码204生成的返回流量220)。因此,示例性实施例200中的与功能代码206相关联的执行准备阶段228发生在实施方式100中的与功能代码106相关联的相应执行准备阶段128之前。这是由于在实施方式200中部署了基于侦听的触发机制。
再次返回图2,在与功能代码206的执行相关联的延迟时间段230之后,在234处,(一个或多个)响应分组232由相关联的代理服务生成并被转发到客户端。除了生成响应流量232并将其转发到客户端之外,在步骤234,还指示网络代理对所述响应流量执行侦听操作236。侦听操作可涉及检查统一资源标识符字段以检索有关下一客户端查询应定向到的后续功能代码的信息。参考图2,(一个或多个)返回分组232的统一资源标识符字段指向功能代码208,该功能代码208在系列中是功能202的下一功能代码。基于从侦听到的统一资源标识符检索到的信息,网络代理在接收到相应的客户端请求235之前识别、定位并调用功能代码208。在接收到针对功能代码208的客户端请求235时,已经经过了实例化时间段238,并且功能代码准备好执行。在执行时间段240期满之后,在244处,生成最终客户端响应242并将其转发到客户端。由于功能代码或(微)服务208构成功能202的最后一部分,因此在侦听响应流量242后未返回统一资源标识符,并且功能202的执行完成。
在一些实施例中,上述无服务器架构是在服务网格环境中实现的。在上述服务网格环境中,数据平面功能可以由诸如Envoy之类的网络通信代理提供,该代理可以执行与将请求和消息转发到(微)服务或功能代码、从(微)服务或功能代码转发请求和消息、以及在(微)服务或功能代码之间转发请求和消息有关的所有操作。Envoy可被表征为独立进程,其被设计为与每个应用服务器一起运行。所有Envoy形成透明通信网格,其中每个应用向本地主机发送消息以及从本地主机接收消息,并且不知道网络拓扑。本质上,Envoy调解和控制服务网格中的服务之间的所有网络通信。根据一些实施例,除了请求/响应分组的路由/转发之外,Envoy还可以被配置为对正被转发的分组执行一组动作,例如,侦听/嗅探(sniffing)操作。
本技术的一些实施例利用Envoy从初始功能代码实例和所有后续功能代码监听返回分组,从而检测对于给定功能是否需要实例化任何其他代码。根据一些实施例,这可涉及动态更新Envoy使用的路由规则(RouteRule)。路由规则提供有关如何在不同(微)服务之间转发消息(例如,http请求)的指令,并促进服务网格中的不同服务之间的通信。根据一些实施例,除了第7层路由和转发(一个或多个)响应分组之外,路由规则还可被静态地或动态地配置为对(一个或多个)回复分组实施侦听以及执行附加活动,例如,触发对例如服务链中的、所侦听的(一个或多个)回复分组的统一资源标识符字段中指向的后续功能的实例化。
一旦侦听到统一资源标识符字段,则网络通信代理(即Envoy)可使用本地映射表来识别所侦听的统一资源标识符是指向可执行代码片段还是标准容器/虚拟机。如果所侦听的统一资源标识符指向可执行功能代码或(微)服务,并且如果所述功能代码或(微)服务连接到同一Envoy或Pod,则本地Envoy实例(附接(sidecar)代理)可以使用内部信令来触发对功能代码的实例化。如果所识别的功能代码连接到不同/远程Envoy或Pod,则本地Envoy实例可使用带内机制(即iOAM)来发送信号以触发对功能代码的实例化。因此,当接收到针对所述功能代码的后续客户端请求时,该功能代码已被调出、实例化并准备好被执行。然后可以再次更新Envoy路由规则,以确保该系列中的后续功能代码已预先准备好执行,依此类推。
根据本技术的一些实施例,图3示出的流程图300提供了用于在服务网格环境中实现相关代码段的自动实例化的操作步骤的基本序列。在302,客户端生成对服务的请求。该请求通过互联网被发出,并被路由到适当的基于云的计算/通信服务。在304,当适当的计算/通信服务接收到客户端请求时,它定位并实例化相应的功能代码。在306,计算/通信服务将执行功能代码并生成对客户端请求的响应。在308,将生成的响应转发到客户端。除了将生成的响应转发到客户端(308)之外,在310,计算/通信服务还对生成的响应执行侦听动作。在步骤310执行的侦听动作旨在识别在对客户端请求的服务中可能需要的后续功能代码。如果通过侦听操作在生成的客户端响应中发现了对另一功能代码的引用,则在接收到针对所引用的功能代码的实际客户端请求之前,在312,抢先性地生成该所引用的功能代码的实例。以这种方式,当在步骤314客户端生成并分发针对所引用的功能代码的请求时,该所引用的功能代码已被实例化并准备好执行。因此,在接收到定向客户端请求时,在316,执行从先前的客户端响应侦听的目标功能代码,并生成响应。然后在318,将生成的响应转发到客户端。
在316生成的响应除了被转发到客户端(318)之外,还被侦听以获得对后续服务代码的引用,如指回到步骤310的箭头319所指示的。如果对在316生成的返回流量的侦听动作揭示对另一服务代码的引用,则重复步骤312至318。否则,该过程可以在步骤318完成之后终止,因为它将构成完成在302生成的客户端请求的最终响应。
图4示出了根据本技术的一些实施例的示例性的基于服务网格的无服务器计算系统400。在无服务器计算系统400中,上传到服务提供商云网络403中的各个功能(功能代码)402可分别与本地代理实例404相配对。这将实现不同的(微)服务/功能之间的通信,并促进其他服务网格数据平面功能。
参考图4,客户端408生成针对特定服务的请求(即用于访问网站的http请求)。该请求通过互联网被路由到适当的服务提供商云网络403的入口/传入点410,并被路由到基于服务网格的计算平台412上。如果所请求的服务代码(功能)尚未被上传到计算/执行模块414上,则该服务代码(功能)可以从存储服务416中定位和访问、被封装到适当的运行时环境418(即容器、虚拟机等)中,并然后使用计算/执行模块414来执行。然后,所生成的响应420可以由服务网格数据平面421转发通过出口点422并到达客户端。
然而,除了转发操作之外,根据本技术的一些实施例实现的示例性系统400还可以对所生成的响应执行附加动作。返回参考图4,去往出口点422的所生成的响应420被服务网格数据平面控制器或代理软件421侦听(424),以获取相关信息。例如,可以侦听所生成的响应(返回流量)420中的统一资源标识符字段的内容,以获取与需要作为完成客户端请求的下一阶段而被调用和执行的下一功能代码425有关的信息。一旦与客户端请求有关并由所侦听的返回响应420指向的后续功能代码425被系统识别并定位,则在定向客户端请求之前提醒适当的服务,以发起准备和建立所侦听的统一资源标识符中引用的功能代码425。
根据一些实施例,在侦听操作之后可以跟随由一组侦听规则定义的一个或多个动作。例如,侦听规则可以指示网络代理或通信控制器(例如,Envoy)来对所侦听的统一资源标识符执行一组规定的操作。例如,侦听规则可以指示Envoy来生成服务调用,并将其转发到所侦听的统一资源标识符中指定的服务代码。作为响应,Envoy可查看路由规则以识别与所侦听的服务代码实例相关联的本地Envoy实例或附接代理,此时它将向适当的软件组件发送服务调用,通知客户端请求是针对与所侦听的统一资源标识符相关联的功能代码的,从而调出适当的功能代码。
总而言之,本技术的实施例涉及一种用于自动触发与具有优选执行顺序的一系列代码段或功能代码相对应的相关代码段的系统和方法。自动触发动作基于侦听由于先前代码段的执行而生成的响应。可通过指示诸如Envoy之类的网络代理来侦听正在转发到客户端实体的响应分组的统一资源标识符(URI)字段,来获得有关优选执行顺序中的下一代码段的信息。以这种方式,网络代理可以在接收到相应的客户端请求之前,抢先性地产生并实例化(由所侦听的统一资源标识符指向的)后续功能代码。这样,在接收到针对该后续功能代码的客户端请求时,该代码准备好执行。
为了解释清楚起见,在一些情况下,本技术可以被呈现为包括单独的功能块,这些单独的功能块包括具有以软件、或硬件和软件的组合体现的设备、设备组件、方法步骤或例程的功能块。
在一些实施例中,计算机可读存储设备、介质和存储器可以包括包含比特流等的电缆或无线信号。然而,当提及时,非暂态计算机可读存储介质明确地排除诸如能量、载波信号、电磁波和信号本身之类的介质。
可以使用存储在计算机可读介质中或以其他方式从计算机可读介质中可获得的计算机可执行指令来实现根据上述示例的方法。这样的指令可以包括例如使得或以其他方式配置通用计算机、专用计算机或专用处理设备来执行特定功能或功能组的指令和数据。可以通过网络访问所使用的各部分计算机资源。计算机可执行指令可以是例如二进制中间格式指令,例如,汇编语言、固件或源代码。可用于存储指令、所使用的信息、和/或在根据所述示例的方法期间创建的信息的计算机可读介质的示例包括磁盘或光盘、闪存、配备有非易失性存储器的USB设备、网络存储设备等。
实现根据这些公开的方法的设备可以包括硬件、固件和/或软件,并且可以采用多种形式因子中的任何一种。这样的形式因子的典型示例包括膝上型计算机、智能电话、小形式因子个人计算机、个人数字助理等。本文描述的功能还可以体现在外围设备或附加卡中。作为进一步的示例,这样的功能还可以在不同的芯片之间在电路板上实现,或者在单个设备中在不同的过程上实现。
指令、用于传达这样的指令的介质、用于执行指令的计算资源、以及用于支持这样的计算资源的其他结构是用于提供这些公开中描述的功能的装置。
尽管使用了各种示例和其他信息来解释所附权利要求的范围内的各个方面,但是不应基于此类示例中的特定功能或布置来暗示对权利要求的限制,因为本领域普通技术人员将能够使用这些权利要求示例以导出各种实施方式。此外,尽管可能以特定于结构特征和/或方法步骤的示例的语言描述了一些主题,但是应该理解,所附权利要求中限定的主题不一定限于这些所描述的特征或动作。例如,这种功能可以在除本文所标识的组件之外的组件中不同地分布或执行。相比之下,所描述的特征和步骤被公开为所附权利要求的范围内的系统和方法的组件的示例。
Claims (23)
1.一种用于在服务网格环境中实现相关代码段的自动实例化的方法,包括:
侦听通过执行具有优选执行序列的多个代码段中的代码段而生成的一个或多个响应分组;
实例化通过侦听所述一个或多个响应分组而识别的代码段,来作为所述优选执行序列中的下一代码段,其中,
所述多个代码段中的初始代码段响应于触发而被实例化。
2.根据权利要求1所述的方法,其中,与优选执行序列相关联的所述多个代码段与执行宏任务所涉及的多个微任务相对应。
3.根据权利要求1或2所述的方法,其中,所述触发包括针对所述初始代码段的指定请求。
4.根据权利要求1至3中任一项所述的方法,其中,所述触发对应于感兴趣的分组或对特定功能的请求。
5.根据权利要求1至4中任一项所述的方法,其中,所述触发对应于调度任务、网络请求、队列消息或人工调用。
6.根据权利要求1至5中任一项所述的方法,其中,侦听所述一个或多个响应分组包括侦听所述一个或多个响应分组的统一资源标识符字段。
7.根据权利要求1至6中任一项所述的方法,其中,每个代码段对应于服务,并且具有优选执行顺序的所述多个代码段对应于服务链。
8.根据权利要求1至7中任一项所述的方法,其中,多个代码段中的每个代码段对应于无服务器计算架构中的功能。
9.根据权利要求8所述的方法,其中,所述无服务器计算架构是在服务网格内实现的。
10.一种用于改善服务网格的响应时间的方法,包括:
实例化基于侦听由于执行先前代码段而生成的一个或多个响应分组而识别的代码段;以及
对于具有优选执行序列的多个代码段,在初始代码段的触发执行之后,针对每个代码段重复所述侦听和实例化操作。
11.根据权利要求10所述的方法,其中,侦听所述一个或多个响应分组包括侦听所述一个或多个响应分组的统一资源标识符字段。
12.根据权利要求10或11所述的方法,其中,每个代码段对应于服务代码,并且具有优选执行序列的所述多个代码段对应于服务链。
13.根据权利要求12所述的方法,其中,所述服务链是根据无服务器模型来实现的。
14.根据权利要求10至13中任一项所述的方法,其中,所述初始代码段的触发执行是由对所述初始代码段的指定请求引起的。
15.根据权利要求10至14中任一项所述的方法,其中,所述初始代码段的触发执行是由对感兴趣的分组的检测或对特定功能的请求引起的。
16.根据权利要求10至15中任一项所述的方法,其中,所述初始代码段的触发执行是由调度任务、网络请求、队列消息或人工调用中的任何一项引起的。
17.一种非暂态计算机可读介质,包括存储在其上的计算机可执行指令,所述指令当被执行时能够使计算机执行以下操作:
侦听通过执行具有优选执行序列的多个代码段中的代码段而生成的一个或多个响应分组;
实例化通过侦听所述一个或多个响应分组而识别的代码段,来作为所述优选执行序列中的下一代码段,其中,
所述多个代码段中的初始代码段响应于触发而被实例化。
18.根据权利要求17所述的非暂态计算机可读介质,其中,侦听所述一个或多个响应分组包括侦听所述一个或多个响应分组的统一资源标识符字段。
19.根据权利要求17或18所述的非暂态计算机可读介质,其中,每个代码段对应于服务代码,并且具有优选执行序列的所述多个代码段对应于服务链。
20.根据权利要求17至19中任一项所述的非暂态计算机可读介质,其中,所述触发包括下列项中的任一项:对所述初始代码段的指定请求、检测到感兴趣的分组、检测到对特定功能的请求、调度任务、网络请求、队列消息、以及人工调用。
21.一种用于在服务网格环境中实现相关代码段的自动实例化的设备,包括:
用于侦听通过执行具有优选执行序列的多个代码段中的代码段而生成的一个或多个响应分组的装置;
用于下述操作的装置:实例化通过侦听所述一个或多个响应分组而识别的代码段,来作为所述优选执行序列中的下一代码段,其中,
所述多个代码段中的初始代码段响应于触发而被实例化。
22.根据权利要求21所述的设备,还包括:用于实现根据权利要求2至16中任一项所述的方法的装置。
23.一种计算机程序、计算机程序产品或计算机可读介质,包括指令,所述指令当被计算机执行时使所述计算机执行权利要求1至16中任一项所述的方法的步骤。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/102,395 | 2018-08-13 | ||
US16/102,395 US11716264B2 (en) | 2018-08-13 | 2018-08-13 | In situ triggered function as a service within a service mesh |
PCT/US2019/046179 WO2020036879A1 (en) | 2018-08-13 | 2019-08-12 | In situ triggered function as a service within a service mesh |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112424746A true CN112424746A (zh) | 2021-02-26 |
Family
ID=67766392
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980047591.9A Pending CN112424746A (zh) | 2018-08-13 | 2019-08-12 | 服务网格内的原位触发的功能即服务 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11716264B2 (zh) |
EP (1) | EP3837604B1 (zh) |
CN (1) | CN112424746A (zh) |
WO (1) | WO2020036879A1 (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10805213B2 (en) * | 2018-11-19 | 2020-10-13 | International Business Machines Corporation | Controlling data communication between microservices |
US11416274B2 (en) * | 2018-12-07 | 2022-08-16 | International Business Machines Corporation | Bridging a connection to a service by way of a container to virtually provide the service |
WO2020124901A1 (en) * | 2018-12-21 | 2020-06-25 | Huawei Technologies Co., Ltd. | Mechanism to reduce serverless function startup latency |
US10983768B2 (en) * | 2019-08-09 | 2021-04-20 | Vijay Madisetti | Method and system for persistent helpers for functions as a service (FAAS) in cloud computing environments |
US11240045B2 (en) * | 2019-10-30 | 2022-02-01 | Red Hat, Inc. | Detection and prevention of unauthorized execution of severless functions |
US11310057B2 (en) * | 2019-11-13 | 2022-04-19 | Red Hat, Inc. | Preventing exploitation of serverless-function flows |
JP7434560B2 (ja) * | 2019-12-13 | 2024-02-20 | ライブパーソン, インコーポレイテッド | 双方向通信システムのためのサービスとしての機能クラウドチャットボット |
US11522951B2 (en) | 2020-08-28 | 2022-12-06 | Microsoft Technology Licensing, Llc | Configuring service mesh networking resources for dynamically discovered peers or network functions |
US11645055B2 (en) * | 2021-04-29 | 2023-05-09 | Sap Se | Custom integration flow step for integration service |
Family Cites Families (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3203701B2 (ja) | 1990-11-01 | 2001-08-27 | インターナショナル・ビジネス・マシーンズ・コーポレーション | コードセグメントのリンク方法とそのシステム及びコードセグメントのダイナミックリンク方法 |
US6438621B1 (en) | 1994-11-14 | 2002-08-20 | Microsoft Corporation | In-memory modification of computer programs |
US7055146B1 (en) | 2001-03-08 | 2006-05-30 | Microsoft Corporation | Method and system for dynamically inserting modifications for identified programs |
US6934943B2 (en) | 2001-10-18 | 2005-08-23 | Hewlett-Packard Development Company | Optimization of control transfers to dynamically loaded modules |
US7089425B2 (en) | 2003-03-18 | 2006-08-08 | Ci4 Technologies, Inc. | Remote access authorization of local content |
US20070191101A1 (en) | 2006-02-16 | 2007-08-16 | Microsoft Corporation | Quickly providing good matchups |
EP2641143B1 (en) * | 2010-11-18 | 2023-06-21 | Google LLC | Delayed shut down of computer |
US20120137201A1 (en) * | 2010-11-30 | 2012-05-31 | Alcatel-Lucent Usa Inc. | Enabling predictive web browsing |
US8832690B1 (en) | 2011-06-21 | 2014-09-09 | Google Inc. | Multi-threaded virtual machine processing on a web page |
US9917745B2 (en) | 2013-09-27 | 2018-03-13 | Futurewei Technologies, Inc. | Validation of chained network services |
US10304349B1 (en) * | 2014-06-18 | 2019-05-28 | Amazon Technologies, Inc. | Test environment |
US20160112502A1 (en) | 2014-10-20 | 2016-04-21 | Cisco Technology, Inc. | Distributed computing based on deep packet inspection by network devices along network path to computing device |
WO2016065080A1 (en) * | 2014-10-21 | 2016-04-28 | Twilio, Inc. | System and method for providing a miro-services communication platform |
GB2534849A (en) * | 2015-01-28 | 2016-08-10 | Canon Kk | Client-driven push of resources by a server device |
US10193696B2 (en) * | 2015-06-02 | 2019-01-29 | ALTR Solutions, Inc. | Using a tree structure to segment and distribute records across one or more decentralized, acylic graphs of cryptographic hash pointers |
US9881176B2 (en) * | 2015-06-02 | 2018-01-30 | ALTR Solutions, Inc. | Fragmenting data for the purposes of persistent storage across multiple immutable data structures |
US9910651B2 (en) * | 2015-08-31 | 2018-03-06 | Verizon Patent And Licensing Inc. | System for developing, testing, deploying, and managing applications in real-time |
US9992056B2 (en) | 2015-10-20 | 2018-06-05 | Cisco Technology, Inc. | Triggered in-band operations, administration, and maintenance in a network environment |
CN106874315B (zh) * | 2015-12-14 | 2021-01-15 | 伊姆西Ip控股有限责任公司 | 用于提供对内容资源的访问的方法和装置 |
US9838376B1 (en) | 2016-05-11 | 2017-12-05 | Oracle International Corporation | Microservices based multi-tenant identity and data security management cloud service |
JP6805765B2 (ja) * | 2016-10-21 | 2020-12-23 | 富士通株式会社 | ソフトウェアサービスの実行のためのシステム、方法、及びプログラム |
US10587580B2 (en) * | 2016-10-26 | 2020-03-10 | Ping Identity Corporation | Methods and systems for API deception environment and API traffic control and security |
US10666617B2 (en) * | 2016-12-31 | 2020-05-26 | ShieldX Networks, Inc. | Intercepting network traffic routed by virtual switches for selective security processing |
US10574736B2 (en) | 2017-01-09 | 2020-02-25 | International Business Machines Corporation | Local microservice development for remote deployment |
WO2018144060A1 (en) * | 2017-02-05 | 2018-08-09 | Intel Corporation | Microservice provision and management |
US10372362B2 (en) * | 2017-03-30 | 2019-08-06 | Intel Corporation | Dynamically composable computing system, a data center, and method for dynamically composing a computing system |
US11323534B2 (en) * | 2017-04-12 | 2022-05-03 | International Business Machines Corporation | Concurrency reduction through publish-subscribe patterns |
US11088926B2 (en) * | 2017-09-01 | 2021-08-10 | Futurewei Technologies, Inc. | Instantiation of cloud-hosted functions based on call to function graph |
US10685034B2 (en) * | 2017-10-17 | 2020-06-16 | Salesforce.Com, Inc. | Systems, methods, and apparatuses for implementing concurrent dataflow execution with write conflict protection within a cloud based computing environment |
US10684790B2 (en) * | 2018-04-27 | 2020-06-16 | EMC IP Holding Company LLC | Serverless solution for continuous data protection |
US20190377604A1 (en) * | 2018-06-11 | 2019-12-12 | Nuweba Labs Ltd. | Scalable function as a service platform |
-
2018
- 2018-08-13 US US16/102,395 patent/US11716264B2/en active Active
-
2019
- 2019-08-12 CN CN201980047591.9A patent/CN112424746A/zh active Pending
- 2019-08-12 EP EP19759227.2A patent/EP3837604B1/en active Active
- 2019-08-12 WO PCT/US2019/046179 patent/WO2020036879A1/en unknown
Also Published As
Publication number | Publication date |
---|---|
EP3837604A1 (en) | 2021-06-23 |
US11716264B2 (en) | 2023-08-01 |
EP3837604B1 (en) | 2023-10-04 |
US20200052982A1 (en) | 2020-02-13 |
WO2020036879A1 (en) | 2020-02-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112424746A (zh) | 服务网格内的原位触发的功能即服务 | |
US11159411B2 (en) | Distributed testing service | |
US9201644B2 (en) | Distributed update service | |
RU2670794C9 (ru) | Способ и система формирования гибкого узла на локальных или распределенных вычислительных системах | |
CN110958281B (zh) | 基于物联网的数据传输方法及通信装置 | |
CN110602254A (zh) | 一种实现负载均衡的方法、装置及系统 | |
JP2006107500A (ja) | ソフトウェアの実行中にソフトウェアを更新すること | |
US10033790B2 (en) | Method for a connector providing transactional interoperability to multiple messaging providers to multiple application servers using the same implementation | |
KR20160013884A (ko) | 온라인 스토어를 통해 소프트웨어 컴포넌트를 업데이트하는 기법 | |
CN111258723B (zh) | 分布式系统的事务处理方法、装置、系统、介质及设备 | |
CN110058894B (zh) | 在混合云中执行应用的方法、设备和计算机程序产品 | |
CN109104368B (zh) | 一种请求连接方法、装置、服务器及计算机可读存储介质 | |
CN110677475A (zh) | 一种微服务处理方法、装置、设备及存储介质 | |
US10721260B1 (en) | Distributed execution of a network vulnerability scan | |
CN113162802A (zh) | 基于InfiniBand的通信方法、设备及存储介质 | |
CN112104679B (zh) | 处理超文本传输协议请求的方法、装置、设备和介质 | |
US10846156B2 (en) | Methods, devices and computer program products for managing software function | |
CN113268254A (zh) | 一种集群系统安装方法、装置、电子设备及存储介质 | |
US20230138867A1 (en) | Methods for application deployment across multiple computing domains and devices thereof | |
CN114979286B (zh) | 容器服务的访问控制方法、装置、设备及计算机存储介质 | |
US9537931B2 (en) | Dynamic object oriented remote instantiation | |
US9130881B2 (en) | Direct return to source (DRS) routing of customer information control systems (CICS) transactions | |
US11861386B1 (en) | Application gateways in an on-demand network code execution system | |
US20130205031A1 (en) | Method, Computer Readable Medium And System For Scaling Medical Applications In A Public Cloud Data Center | |
CN110557428A (zh) | 一种基于Kubernetes的脚本解释型服务代理方法和系统 |
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 |