掌桥专利:专业的专利平台
掌桥专利
首页

放置由网络流量触发的容器工作负载以在网络边缘设备处进行高效计算

文献发布时间:2023-06-19 10:40:10



本申请作为PCT国际专利申请在2019年9月23日提交,并要求享有在2018年10月4日提交的序列号为16/152,267的美国非临时专利申请的优先权权益,其全部公开内容通过引用而被整体合并。

技术领域

本公开的一个技术领域是计算机网络中的虚拟化容器的配置。另一个技术领域是网络互连设备的管理。又一个技术领域是虚拟计算系统中的工作负载管理。

背景技术

本节中描述的方法是可以采用的方法,但不一定是先前已经设想或采用的方法。因此,除非另有说明,否则不应仅由于将本节中描述的任何方法包括在本节中而认为这些方法有资格作为现有技术。

可以使用大量的网络互连设备和计算实例来部署虚拟计算系统、云计算服务和云网络。因此,正在为特定最终用户执行应用程序的计算机可能在物理上或逻辑上相对于该最终用户的计算机位于遥远的位置,从而导致机器响应的明显时延。网络架构师的典型目标是将应用程序定位在离最终用户最近的网络设备处,诸如物理上或逻辑上位于网络边缘的计算设备中。每个边缘节点可包括多个计算设备的站点或群集,并且所有边缘节点可被联合,但是由于所有应用或服务中的高需求,边缘节点中的可用CPU资源可能是稀缺的。因此,在边缘计算上下文中放置执行工作负载仅当有用户机器利用它们时才应当尽可能靠近用户机器放置。在确定微服务的放置时也出现相同的问题。

发明内容

所附权利要求可以用作本发明的发明内容。

附图说明

在附图中:

图1示出了可以在其中实现一实施例的示例联网的分布式计算机系统。

图2示出了一个实施例中的图1的元件之间的示例数据处理流程。

图3示出了可以被编程为实现一实施例的示例处理流程。

图4A示出了涉及使用Kubernetes容器虚拟化的TCP会话的实现示例。

图4B示出了服务网格架构中的涉及HTTP请求的实现示例。

图5示出了一个实施例中的可以利用其实现一些元件的计算机系统。

具体实施方式

在以下描述中,出于说明的目的,阐述了许多具体细节以便提供对本发明的透彻理解。然而,将显而易见的是,可以在没有这些具体细节的情况下实践本发明。在其他情况下,以框图形式示出了公知的结构和设备,以避免不必要地使本发明模糊。根据以下概述在各节中描述了实施例:

1.总体概述

2.结构和功能概述

3.实施示例—硬件概述

4.各种实施例的益处

1.总体概述

在独立权利要求中陈述了本发明的各方面,并在从属权利要求中陈述了优选特征。一方面的特征可以单独应用于每个方面,或与其他方面结合地应用于每个方面。

在一个实施例中,使用编程的计算设备来解决在背景技术中概述的一个或多个技术问题,这些计算设备被布置和配置为按如下进行操作。应用作者为指定种类的客户端请求指定与工作负载执行的期望位置有关的策略。客户端发送分组,该分组发起适合于映射到工作负载的会话或任务,并且在被配置为将该分组转发到工作负载编排器的第一网络元件处接收该分组。响应于接收到该分组,工作负载编排器选择被定位为尽可能靠近在策略中指定的位置的计算设备或其他网络元件来运行工作负载。选定的网络元件可能通过发信号通知工作负载编排系统在本地启动工作负载来启动工作负载以消耗会话。此后,第一网络元件将会话的所有流量转发到计算设备处的工作负载。在一个实施例中,网络元件可以在等待工作负载变得可用的同时存储和转发会话流量。

在一个实施例中,可以响应于一个或多个预定义条件或条件的组合而终止工作负载。例如,可以在工作负载的一个或多个会话结束之后终止工作负载,或者在工作负载启动后的设定时段之后终止工作负载,或者在空闲时间的设定时段之后终止工作负载。每个工作负载终止可以由工作负载本身发起,从而导致自终止,或者由工作负载编排器发起。

在一个实施例中,一种方法包括:响应于接收到与发起客户端-服务器会话相关联的分组,向工作负载编排器发送工作负载请求;工作负载编排器从网络边缘计算节点中的多个可用的地理上或逻辑上分布的服务器中选择选定服务器,以处理该客户端-服务器会话;工作负载编排器向选定服务器发送请求以创建工作负载来处理该客户端-服务器会话;从工作负载编排器接收标识选定服务器的数据;将与同一客户端-服务器会话相关联的一个或多个其他分组转发到选定服务器;其中,该方法由一个或多个计算设备执行。

在另一个实施例中,一种在网络边缘计算节点的网络基础设施元件中执行的方法包括:响应于接收到与发起客户端-服务器会话相关联的分组,从多个网络边缘计算节点中的多个可用的地理上或逻辑上分布的服务器中选择选定服务器,以处理该客户端-服务器会话;向选定服务器发送请求以创建工作负载来处理该客户端-服务器会话;将与同一客户端-服务器会话相关联的一个或多个其他分组转发到选定服务器;其中,该方法由一个或多个计算设备执行。

各种实施例可以基于客户端网络会话使用不同的技术来发起工作负载。在一种称为严格触发的方法中,客户端网络会话可以直接触发工作负载网络的本地创建;尽管该方法预计提供较低的时延,但是其可能是效率更低的,因为工作负载网络可能是稀少使用的。在称为惰性触发的另一种方法中,客户端网络会话可以级联的方式触发工作负载网络的本地创建。例如,第一工作负载可以向第二工作负载发送会话发起分组,从而导致第二工作负载被产生。该方法预计产生更高的时延,但将是效率更高的,因为仅根据需要产生网络中的工作负载。利用这些技术,使检测会话并在边缘网络设备处产生工作负载的网络元件本地化允许客户端会话以高度分布式、可伸缩且高效的方式指示在何处和何时放置工作负载。

还描述了用于实现本文描述的方法的系统和装置,包括用于实现这些方法的网络节点、计算机程序、计算机程序产品、计算机可读介质以及在有形介质上编码的逻辑。

2.结构和功能概述

2.1具有边缘计算节点的分布式网络

图1示出了可以在其中实现一实施例的示例联网的分布式计算机系统。出于示出清楚示例的目的,图1示出了有限数量的功能元件,但是实际实施例可以使用任意数量的此类元件。

在图1的示例中,网络云100包括在逻辑上和/或地理上分布在全云各处的多个计算节点102、104、106、108、110、112,包括在逻辑上和/或物理上靠近客户端计算设备120的一些计算节点以及遥远或远程的其他计算节点。计算节点102、104、106、108、110、112可以经由在图1中表示为箭头的链路而通信地耦合;在各种实施例中,可以使用不同的连接拓扑,包括部分网格、全网格或其他。

网络云100还包括工作负载编排器130,其可被实现为独立的计算机或虚拟计算实例,或被实现为在云中的路由器、交换机、其他网络互连元件或其他计算机中执行的过程、守护程序或代理。在各种实施例中,工作负载编排器130可以驻留或可以不驻留在网络互连元件上。在一些实施例中,可以使用循环方法、在本地计算的一致散列、随机值选择或不需要从网络互连设备发送请求来确定在何处放置工作负载的其他方法来实现编排。工作负载编排器130的示例功能在本文的其他节中描述。

如在图1中针对作为示例的节点110示出,计算节点102、104、106、108、110、112中的每一个包括至少一个网络元件122。网络元件122可包括路由器、交换机、防火墙、网关或其他网络互连元件,其被编程为从客户端计算设备120接收分组或流并根据这些分组或流的属性对分组或流进行转发、路由、分类或处理,包括选择性地转发到其他计算节点和/或工作负载编排器130。在一个实施例中,计算节点102、104、106、108、110、112中的每一个还包括零个或更多个服务器124,每个服务器124可被实现为计算机、进程、微服务或者使用虚拟化容器化或没有使用虚拟化容器化的虚拟计算实例。云100中的计算节点102、104、106、108、110、112中的至少一个具有至少一个服务器124。云100中的每个服务器124被编程为实现应用、服务和/或微服务,包括接收来自客户端计算设备120的请求,执行数据处理服务、转换或计算,以及对这些请求做出响应。

网络云100还可具有到诸如计算机、网络、管理或分析系统之类的外部元件140、150的连接。示例包括第三方web服务,这些第三方web服务支持由服务器124提供给客户端计算设备120的服务。

2.2功能示例

图2示出了一个实施例中的图1的元件之间的示例数据处理流程。出于示出清楚示例的目的,图2仅示出了客户端计算设备120、工作负载编排器130、网络元件122和服务器124。图3示出了可以被编程为实现一实施例的示例处理流程。出于示出清楚示例的目的,将结合图2的结构和数据流来描述图3。

图3和本文中的每个其他流程图示出了算法或计划,该算法或计划可以用作使用被认为适合于该任务的编程开发环境或编程语言来对图1、图2中的与在图中示出的功能有关的功能模块中的一个或多个进行编程的基础。因此,图3和本文中的每个其他流程图旨在作为功能级别上的图示,在该功能级别上,本公开所属领域的技术人员彼此通信以使用编程来描述和实现算法。流程图并非旨在示出对工作程序的每个方面进行编程所将需要的每个指令、方法对象或子步骤,而是被在高功能级别的图示处提供,该图示通常在本领域的高技术水平上用于交流开发工作程序的基础。

首先参考图3,在一个实施例中,可以首先在网络元件和工作负载编排器中将处理流程300编程为执行在该网络元件处从客户端计算机接收分组,如在框302处所见。在一个实施例中,在图2的步骤(1)处,客户端计算设备120向网络元件122发送数字数据分组,该数字数据分组包含协议标识符、请求标识符、有效载荷数据或其他值,这些值发信号通知网络元件发起与在网络云100中提供的服务或应用有关的会话。该上下文中的“数据”被广泛使用,并且可以包括表示语音或声音、视频或其他媒体的分组化数字数据。在网络元件122处接收到分组。可以经由如下分组来发生发起会话,这些分组包括经由HTTP传送的参数化URL,由请求标识符表示的另一协议中的请求,或足以向适当编程的网络元件通知会话被发起的其他数据。该上下文中的“会话”是指来自客户端的至少一个请求和来自服务器的至少一个响应,但是对于不同的服务或应用,任何数量的请求和响应都可能被涉及。

在框304处,过程300向工作负载编排器发送工作负载发起请求。例如,响应于接收到发信号通知会话开始的分组,在图2的步骤(2)处,网络元件122被编程为向工作负载编排器130发送工作负载请求。该工作负载请求可以以专用协议定义,或者可以经由HTTP在URL中传送。工作负载请求的效果是请求工作负载编排器130在能够为会话提供服务的服务器124中创建或实例化执行进程或工作负载202。工作负载请求可包括在网络元件122处接收到的用于发起会话的全部或部分分组的副本,但是不要求包括该分组。

在框306处,使用工作负载编排器,过程300选择可用、最接近和/或最佳的服务器实例来处理与客户端计算机的会话。例如,在图2的步骤(3)处,工作负载编排器130从位于不同位置的多个不同服务器中选择一个特定的服务器124。如图1的描述已经指示的,节点102、104、106、108、110、112可以分布在网络云100各处并且可能远离客户端计算设备120。因此,工作负载编排器130被编程有用于选择在逻辑上或物理上离客户端计算设备120最近且最适合使用的特定节点的指令。可以通过检查诸如客户端计算设备120的源网络地址之类的元数据并从数字存储的映射表中进行选择来确定接近度,该映射表将客户端地址的范围映射到节点102、104、106、108、110、112的对应地址或标识符。或者,可以通过检查将工作负载请求转发到工作负载编排器130的网络元件122的源地址并使用类似的映射表来确定接近度。使用映射表不是必需的,并且工作负载编排器可被编程为使用规则或其他逻辑来选择节点。

工作负载编排器130所选择的最佳节点102、104、106、108、110、112不需要是物理上或逻辑上最接近的节点。作为代替,工作负载编排器130可被编程为检查诸如CPU负载、存储装置使用、存储器可用性或会话数量之类的度量的值,并被编程为基于那些值来修改对节点102、104、106、108、110、112的选择。例如,工作负载编排器130可被编程为计算在逻辑上或物理上离客户端计算设备120最近的前N个节点的列表,然后使用度量的值在该列表中向下移动以达到最终选择。阈值跨越、加权混合或其他算法方法可用于检查度量的值以达到最终选择。或者,可以使用度量值的加权混合来对列表中的每个节点102、104、106、108、110、112进行评分,并且可以选择具有最高分数的节点。

当服务器实例已被选择时,在图3的框308处,该过程向所选择的服务器实例发送请求以创建用于为会话服务的工作负载。例如,响应于接收到工作负载请求,工作负载编排器130被编程为在服务器124上产生工作负载202,如图2的步骤(3)所指示。该上下文中的“工作负载”是指服务的实例、应用的实例、进程、代理或守护程序,其被编程或配置为为客户端计算设备120已发起的会话服务。

可选地,在框309处,该过程等待来自所选择的服务器实例的确认,该确认标明工作负载曾被创建并且正在运行;在一些实施例中,如果未接收到确认,则再次执行框306的选择步骤以导致选择不同的服务器。在一些实施例中,工作负载编排器可以将单个分组发送到服务器,以使服务器开始启动工作负载,以使得在完成以多个往返为特征的TCP或HTTP会话之后,工作负载准备就绪并且可用。该方法可以防止工作负载编排器成为系统中的瓶颈。

在框310处,该过程将标识所选择的服务器实例的数据发送到网络元件。框310可以涉及对网络元件的转发表进行重新编程,以使得在网络元件处从客户端计算设备接收到的同一会话的所有后来分组都被转发到所选择的服务器实例,如在框312处所见。因此,对于除会话发起分组以外的分组,工作负载编排器130被绕过,并且分组被从网络元件124转发到服务器124。

为了实现前述功能,诸如路由器或交换机之类的网络元件122可被编程有守护程序、代理或服务,被配置为应用或被配置为操作系统的单元,并具有能有效执行指定功能的指令。类似地,工作负载编排器130可被编程有如下指令,这些指令被配置为执行已经为其描述的功能。在一些实施例中,工作负载编排器130可以与网络元件122集成在一起,并且本文描述的工作负载编排的功能可以形成网络元件的操作系统或系统服务的一部分。

在一些实施例中,可以编程完全递归的方法,其中分组到达节点,单个分组触发被发送到另一个节点,在当前节点上执行工作,直到发生使其需要离开该节点的条件为止,然后单个分组触发被发送到另一个节点,从而递归地调用该过程。在一些实施例中,前述方法可被实现为修改的动态服务功能链,其中链链接是动态的,功能实例化是动态的并且是即时创建的,移动到链中的新节点的决定是基于计算基础设施的环境因素(诸如存储器用完或线程过多)而不是预先规定的,并且用单个触发分组来事先准备工作负载实例化,以使得在工作负载数据连接的握手已经完成之前,工作负载可能用在触发分组中传递的工作负载状态已经启动。对接下来要处理哪个节点的本地决定可以是复杂的,或是简单的。例如,工作负载可以决定处理整个请求,或随时将其传递下去,如果执行传递发生在工作负载的本地状态可以从其恢复的瞬间的话。工作负载处理的最小量为0,这意味着工作负载只是被传递给另一个节点。

2.3会话拆除或终止

可选地,过程300可包括用于在客户端-服务器会话完成时拆除或终止工作负载的步骤。在一些实现中,针对特定微服务、应用或服务器实例的服务器端代码可以实现检测客户端-服务器会话、事务或响应何时完成的指令,并且可以作为响应而自动拆除或终止会话或服务器实例。在其他实施例中,在框314处,网络元件可以从客户端计算机接收与完成会话相关联的服务器响应或分组。也就是说,在某些协议或请求-响应会话中,可能存在在报头或有效载荷中携带协议标识符、协议值或其他数据的分组,这些分组发信号通知会话的结束。响应于检测到这样的值,在框316处,该过程向工作负载编排器130发送工作负载终止请求。在框318处,使用工作负载编排器,指示所选择的服务器实例终止。

因此,工作负载可以在会话结束后终止。附加地或可替代地,过程300可以实现活动超时,其中工作负载在其启动之后的设定时间被终止。附加地或可替代地,过程300可以实现空闲超时,其中工作负载在其空闲之后的设定时段被终止。具体的工作负载终止技术可以由工作负载指定,由工作负载编排器指定,或者经由配置数据指定。在一个实施例中,过程300还包括执行以下操作之一:接收与完成同一客户端-服务器会话相关联的分组,确定在向所选择的服务器发送创建工作负载的请求之后已经经过了指定时间,或者确定在向所选择的服务器发送创建工作负载的请求之后已经经过了指定的空闲时间段,并且在该空闲时间段期间所选择的服务器一直处于空闲状态;以及响应于此,向工作负载编排器发送工作负载终止请求,然后工作负载编排器指示所选择的服务器终止。

或者,过程300还包括执行以下操作之一:接收与完成同一客户端-服务器会话相关联的分组,确定在向所选择的服务器发送创建工作负载的请求之后已经经过了指定时间,或者确定在向所选择的服务器发送创建工作负载的请求之后已经经过了指定的空闲时间段,并且在该空闲时间段期间所选择的服务器一直处于空闲状态;以及响应于此,指示所选择的服务器终止。

2.4TCP-KUBERNETES会话示例

图4A示出了涉及使用Kubernetes容器虚拟化的TCP会话的实现示例。在步骤(1)处,客户端计算设备120发送SYN分组,该SYN分组标识客户端地址、客户端端口号、服务地址和服务端口号。请求使用先前针对图2、图3描述的过程来经过云网络100,以到达Node1(其是计算节点)处的虚拟交换机(vSwitch)。作为响应,如果不存在另一可用的pod,则vSwitch导致生成被表示为Pod1的pod。客户端会话由该pod处理。

2.5HTTP服务网格示例

图4B示出了服务网格架构中的涉及HTTP请求的实现示例。在步骤(1)处,客户端计算设备120发送SYN分组,该SYN分组标识客户端地址、客户端端口号、服务地址和服务端口号。请求使用先前针对图2、图3描述的过程来经过云网络100,以到达Node1(其是计算节点)处的虚拟交换机(vSwitch)。作为响应,如果不存在另一可用的pod,则vSwitch导致生成被表示为Pod1的pod。客户端会话由该pod处理。另外,响应于会话的发起,在云网络100中的任何合适的位置处创建入口代理402。入口代理402然后代理随后的客户端分组或对Pod1的请求。

2.6创建工作负载的网络

到目前为止描述的技术已经指定了客户端网络会话可以直接触发用于处理该会话的工作负载的本地创建。附加地或可替代地,类似的技术也可用于客户端网络会话,以便以分层或级联的方式触发工作负载网络的本地创建。例如,已经以先前描述的方式响应于客户端-服务器流量而实例化的第一工作负载可以发送第二会话发起分组,第二会话发起分组触发创建用于处理第二会话的第二工作负载。第二工作负载可以在同一服务器上,或者在与第一工作负载不同的服务器上。

利用该方法,可以用如下指令来补充图3的过程,这些指令使得:响应于从工作负载接收到与发起第二客户端-服务器会话相关联的第二分组,从网络边缘计算节点中的多个可用的地理上或逻辑上分布的服务器中选择第二选定服务器,以处理第二客户端-服务器会话;向第二选定服务器发送请求以创建用于处理第二客户端-服务器会话的第二工作负载;将与同一第二客户端-服务器会话相关联的一个或多个其他分组转发到第二选定服务器。

或者,可以用如下指令来补充图3的过程,这些指令使得:响应于从工作负载接收到与发起第二客户端-服务器会话相关联的第二分组,向工作负载编排器发送第二工作负载请求;工作负载编排器从网络边缘计算节点中的多个可用的地理上或逻辑上分布的服务器中选择第二选定服务器,以处理第二客户端-服务器会话;工作负载编排器向第二选定服务器发送请求以创建用于处理第二客户端-服务器会话的第二工作负载;从工作负载编排器接收标识第二选定服务器的数据;将与同一第二客户端-服务器会话相关联的一个或多个其他分组转发到第二选定服务器。

3.实施示例—硬件概述

根据一个实施例,本文描述的技术由至少一个计算设备实现。可以使用至少一个服务器计算机和/或使用诸如分组数据网络之类的网络耦合的其他计算设备的组合来全部或部分地实施这些技术。计算设备可被硬连线以执行这些技术,或者可包括诸如至少一个专用集成电路(ASIC)或现场可编程门阵列(FPGA)之类的被永久编程为执行这些技术的数字电子设备,或者可包括至少一个通用硬件处理器,该通用硬件处理器被编程为根据固件、存储器、其他存储或组合中的程序指令来执行这些技术。这样的计算设备还可以将定制的硬连线逻辑、ASIC或FPGA与定制的编程相结合,以实现所描述的技术。计算设备可以是服务器计算机,工作站,个人计算机,便携式计算机系统,手持设备,移动计算设备,可穿戴设备,身体安装的设备或可植入设备,智能电话,智能电器,网络互连设备,诸如机器人或无人驾驶的地面车辆或飞行器之类的自主设备或半自主设备,结合用于实现所描述技术的硬连线和/或程序逻辑的任何其他电子设备,数据中心中的一个或多个虚拟计算机器或实例,和/或服务器计算机和/或个人计算机的网络。

图5是示出了可以利用其来实现一实施例的示例计算机系统的框图。在图5的示例中,在被本公开所属领域的普通技术人员用于传达计算机体系结构和计算机系统实现的相同细节级别,计算机系统500和用于以硬件、软件或硬件和软件的组合来实现所公开技术的指令被示意性地表示为例如方框和圆圈。

计算机系统500包括输入/输出(I/O)子系统502,I/O子系统502可包括总线和/或用于通过电子信号路径在计算机系统500的组件之间传送信息和/或指令的一个或多个其他通信机制。I/O子系统502可包括I/O控制器、存储器控制器和至少一个I/O端口。电子信号路径在附图中被示意性地表示为例如线、单向箭头或双向箭头。

至少一个硬件处理器504耦合到I/O子系统502以用于处理信息和指令。硬件处理器504可包括例如通用微处理器或微控制器和/或专用微处理器,诸如嵌入式系统或图形处理单元(GPU)或数字信号处理器或ARM处理器。处理器504可包括集成的算术逻辑单元(ALU),或者可被耦合到单独的ALU。

计算机系统500包括诸如主存储器之类的存储器506的一个或多个单元,其被耦合到I/O子系统502,以用于电气且数字地存储数据和要由处理器504执行的指令。存储器506可包括易失性存储器,诸如各种形式的随机存取存储器(RAM)或其他动态存储设备。存储器506还可用于在要由处理器504执行的指令的执行期间存储临时变量或其他中间信息。这样的指令当被存储在处理器504可访问的非暂时性计算机可读存储介质中时可以使计算机系统500成为定制为执行在这些指令中指定的操作的专用机器。

计算机系统500还包括非易失性存储器,诸如只读存储器(ROM)508或耦合到I/O子系统502以用于存储处理器504的信息和指令的其他静态存储设备。ROM 508可包括各种形式的可编程ROM(PROM),诸如可擦PROM(EPROM)或电可擦PROM(EEPROM)。永久性存储装置510的单元可包括各种形式的非易失性RAM(NVRAM),诸如闪速存储器或固态存储装置、磁盘或光盘(诸如CD-ROM或DVD-ROM),并且可被耦合到I/O子系统502以用于存储信息和指令。存储装置510是可以用于存储指令和数据的非暂时性计算机可读介质的示例,这些指令和数据当被处理器504执行时导致执行计算机实现的方法来执行本文的技术。

存储器506、ROM 508或存储装置510中的指令可包括一组或多组指令,这些指令被组织为模块、方法、对象、函数、例程或调用。指令可被组织为一个或多个计算机程序、操作系统服务或者包括移动应用在内的应用程序。指令可包括:操作系统和/或系统软件;一个或多个用于支持多媒体、编程或其他功能的库;用于实现TCP/IP、HTTP或其他通信协议的数据协议指令或堆栈;用于解析或呈现使用HTML、XML、JPEG、MPEG或PNG进行编码的文件的文件格式处理指令;用于呈现或解释图形用户界面(GUI)、命令行界面或文本用户界面的命令的用户界面指令;应用软件,诸如办公套件,因特网接入应用,设计和制造应用,图形应用,音频应用,软件工程应用,教育应用,游戏或杂项应用。指令可实现web服务器、web应用服务器或web客户端。指令可被组织为表示层、应用层和数据存储层,诸如使用结构化查询语言(SQL)或不使用SQL的关系数据库系统,对象存储,图形数据库,平面文件系统或其他数据存储。

计算机系统500可以经由I/O子系统502耦合到至少一个输出设备512。在一个实施例中,输出设备512是数字计算机显示器。可以在各种实施例中使用的显示器的示例包括触摸屏显示器或发光二极管(LED)显示器或液晶显示器(LCD)或电子纸显示器。可替代地或者除显示设备之外,计算机系统500可包括一种或多种其他类型的输出设备512。其他输出设备512的示例包括打印机,票务打印机,绘图仪,投影仪,声卡或视频卡,扬声器,蜂鸣器或压电设备或其他可听设备,灯或LED或LCD指示器,触觉设备,致动器或伺服器。

至少一个输入设备514耦合到I/O子系统502,以用于将信号、数据、命令选择或手势传送到处理器504。输入设备514的示例包括触摸屏,麦克风,静止和视频数字相机,字母数字和其他按键,小键盘,键盘,图形输入板,图像扫描仪,操纵杆,时钟,开关,按钮,转盘,滑轨,和/或诸如力传感器、运动传感器、热传感器、加速度计、陀螺仪和惯性测量单元(IMU)传感器之类的各种类型的传感器和/或诸如无线(诸如蜂窝或Wi-Fi)、射频(RF)或红外(IR)收发器和全球定位系统(GPS)收发器之类的各种类型的收发器。

另一种类型的输入设备是控制设备516,可替代地或除输入功能之外,控制设备516可执行光标控制或其他自动控制功能,诸如显示屏上的图形界面中的导航。控制设备516可以是用于将方向信息和命令选择传送到处理器504并用于控制显示器512上的光标移动的触摸板、鼠标、轨迹球或光标方向键。输入设备可具有两个轴(第一轴(例如,x)和第二轴(例如,y))上的至少两个自由度,这允许设备指定平面中的位置。另一种类型的输入设备是有线、无线或光学控制设备,诸如操纵杆,棒,控制台,方向盘,踏板,变速机构或其他类型的控制设备。输入设备514可包括诸如摄像机和深度传感器之类的多个不同输入设备的组合。

在另一个实施例中,计算机系统500可包括物联网(IoT)设备,其中输出设备512、输入设备514和控制设备516中的一个或多个被省略。或者,在这样的实施例中,输入设备514可包括一个或多个相机,运动检测器,温度计,麦克风,地震检测器,其他传感器或检测器,测量设备或编码器,并且输出设备512可包括诸如单行LED或LCD显示器之类的专用显示器,一个或多个指示器,显示面板,仪表,阀门,螺线管,致动器或伺服器。

当计算机系统500是移动计算设备时,输入设备514可以包括与GPS模块耦合的全球定位系统(GPS)接收器,该GPS模块能够对多个GPS卫星进行三角测量,确定并生成地理位置或位置数据,诸如计算机系统500的地球物理位置的纬度-经度值。输出设备512可包括用于生成位置报告分组、通知、脉冲或心跳信号或其他循环数据传输的硬件、软件、固件和界面,其他循环数据传输单独指定计算机系统500的位置或与其他针对主机524或服务器530的特定于应用的数据结合指定计算机系统500的位置。

计算机系统500可以使用定制的硬连线逻辑、至少一个ASIC或FPGA、固件和/或程序指令或逻辑来实现本文描述的技术,这些程序指令或逻辑当与计算机系统结合加载和使用或执行时导致该计算机系统作为专用机器运行或将该计算机系统编程为作为专用机器运行。根据一个实施例,计算机系统500响应于处理器504执行在主存储器506中包含的至少一个指令的至少一个序列而执行本文的技术。这样的指令可被从诸如存储装置510之类的另一存储介质读取到主存储器506中。执行在主存储器506中包含的指令序列使处理器504执行本文描述的处理步骤。在替代实施例中,可以使用硬连线电路来代替软件指令,或与软件指令结合使用硬连线电路。

本文所使用的术语“存储介质”是指存储使机器以特定方式运行的数据和/或指令的任何非暂时性介质。这样的存储介质可以包括非易失性介质和/或易失性介质。非易失性介质包括例如光盘或磁盘,诸如存储装置510。易失性介质包括动态存储器,诸如存储器506。存储介质的常见形式包括例如硬盘,固态驱动器,闪速驱动器,磁性数据存储介质,任何光学或物理数据存储介质,存储芯片,或类似物。

存储介质不同于传输介质,但是可以与传输介质结合使用。传输介质参与在存储介质之间传送信息。例如,传输介质包括同轴电缆、铜线和光纤,包括构成I/O子系统502的总线的导线。传输介质还可以采用声波或光波(诸如在无线电波和红外数据通信期间生成的那些)的形式。

各种形式的介质可参与将至少一个指令的至少一个序列传送到处理器504以供执行。例如,指令最初可被携带在远程计算机的磁盘或固态驱动器上。远程计算机可以将指令加载到其动态存储器中,并使用调制解调器通过诸如光纤或同轴电缆或电话线之类的通信链路来发送指令。计算机系统500本地的调制解调器或路由器可以在该通信链路上接收数据,并将数据转换为计算机系统500可以读取的格式。例如,诸如射频天线或红外检测器之类的接收器可以接收在无线或光学信号中携带的数据,并且适当的电路可以将数据提供给I/O子系统502,诸如将数据放置在总线上。I/O子系统502将数据传送到存储器506,处理器504从存储器506中取回并执行指令。由存储器506接收的指令可以可选地在由处理器504执行之前或在由处理器504执行之后存储在存储装置510上。

计算机系统500还包括与总线502耦合的通信接口518。通信接口518提供到一个或多个网络链路520的双向数据通信耦合,这一个或多个网络链路520直接或间接地连接到至少一个通信网络,诸如网络522或因特网上的公共或私有的云。例如,通信接口518可以是以太网联网接口,综合业务数字网(ISDN)卡,电缆调制解调器,卫星调制解调器,或用于向对应类型的通信线路(例如以太网电缆或任何种类的金属电缆或光纤线或电话线)提供数据通信连接的调制解调器。网络522广泛地表示局域网(LAN)、广域网(WAN)、校园网、互联网或其任意组合。通信接口518可包括:LAN卡,用于向兼容的LAN提供数据通信连接;或者蜂窝无线电话接口,其被布线为根据蜂窝无线电话无线联网标准来发送或接收蜂窝数据;或者卫星无线电接口,其被布线为根据卫星无线联网标准来发送或接收数字数据。在任何这样的实现中,通信接口518通过信号路径来发送和接收电信号、电磁信号或光信号,这些信号路径携带表示各种类型的信息的数字数据流。

网络链路520通常使用例如卫星、蜂窝、Wi-Fi或蓝牙技术直接或通过至少一个网络向其他数据设备提供电数据通信、电磁数据通信或光数据通信。例如,网络链路520可以提供通过网络522到主机计算机524的连接。

另外,网络链路520可以通过由因特网服务提供商(ISP)526运营的网络互连设备和/或计算机来提供通过网络522的连接或到其他计算设备的连接。ISP 526通过被表示为因特网528的环球分组数据通信网络来提供数据通信服务。服务器计算机530可被耦合到因特网528。服务器530广泛表示任何计算机,数据中心,具有或不具有管理程序的虚拟机或虚拟计算实例,或者执行诸如DOCKER或KUBERNETES之类的容器化程序系统的计算机。服务器530可表示电子数字服务,该电子数字服务是使用多于一个计算机或实例来实现的并且通过发送web服务请求、具有HTTP有效载荷中的参数的统一资源定位符(URL)字符串、API调用、应用服务调用或其他服务调用来进行访问和使用。计算机系统500和服务器530可以形成分布式计算系统的元素,该分布式计算系统包括协作执行任务或执行应用或服务的其他计算机、处理集群、服务器群或其他计算机组织。服务器530可包括一组或多组指令,这些指令被组织为模块、方法、对象、函数、例程或调用。指令可被组织为一个或多个计算机程序、操作系统服务或者包括移动应用在内的应用程序。指令可包括:操作系统和/或系统软件;一个或多个用于支持多媒体、编程或其他功能的库;用于实现TCP/IP、HTTP或其他通信协议的数据协议指令或堆栈;用于解析或呈现使用HTML、XML、JPEG、MPEG或PNG进行编码的文件的文件格式处理指令;用于呈现或解释图形用户界面(GUI)、命令行界面或文本用户界面的命令的用户界面指令;应用软件,诸如办公套件,因特网接入应用,设计和制造应用,图形应用,音频应用,软件工程应用,教育应用,游戏或杂项应用。服务器530可包括web应用服务器,该web应用服务器容宿表示层、应用层和数据存储层,诸如使用结构化查询语言(SQL)或不使用SQL的关系数据库系统,对象存储,图形数据库,平面文件系统或其他数据存储。

计算机系统500可以通过一个或多个网络、网络链路520和通信接口518来发送消息以及接收数据和指令,包括程序代码。在因特网示例中,服务器530可以通过因特网528、ISP 526、本地网络522和通信接口518来发送针对应用程序的请求代码。所接收的代码可以在其被接收时由处理器504执行,和/或存储在存储装置510或其他非易失性存储装置中以供以后执行。

如在本节中描述的指令的执行可以以正在执行并由程序代码及其当前活动组成的计算机程序的实例的形式来实现过程。根据操作系统(OS),一个进程可能由并发执行指令的多个执行线程组成。在该上下文中,计算机程序是指令的被动集合,而进程可以是那些指令的实际执行。多个进程可能与同一程序相关联;例如,打开同一程序的多个实例常常意味着多于一个进程正在执行。可以实现多任务以允许多个进程共享处理器504。虽然每个处理器504或处理器的核心一次执行单个任务,但是计算机系统500可被编程为实现多任务以允许每个处理器在正在执行的任务之间切换,而不必等待每个任务完成。在一个实施例中,可以在任务执行输入/输出操作时、在任务指示它可以被切换时、或在硬件中断时执行切换。可以实现分时以通过快速执行上下文切换来允许对交互式用户应用的快速响应,以同时提供多个进程的并发执行的出现。在一个实施例中,为了安全性和可靠性,操作系统可以防止独立进程之间的直接通信,从而提供严格介导且受控的进程间通信功能。

4.各种实施例的益处

与过去的方法相比,已经描述的实施例提供了许多技术益处。例如,使在边缘计算节点处检测会话并产生工作负载的网络元件本地化允许客户端会话的存在以高度分布式、可伸缩和高效的方式指示在何处以及何时放置工作负载。因此,所公开的方法可以通过将工作负载放置在逻辑上或物理上离需要服务的客户端计算设备最近的网络边缘节点处来减少对计算资源、存储装置、存储器和网络带宽的使用,并且因为不必启动或实例化虚拟服务器实例来服务从未实现的假设或预期级别的客户端负载。鉴于在公共云计算服务中临时使用虚拟计算实例和存储的当前成本高,减少所创建的虚拟服务器实例的数量也将减少企业实现服务的成本。

相关技术
  • 放置由网络流量触发的容器工作负载以在网络边缘设备处进行高效计算
  • 针对数据密集型工作负载进行跨云资源放置的系统和方法
技术分类

06120112636533