发布信息

在内容递送网络的边缘处管理共享应用程序的制作方法

作者:admin      2022-08-31 11:17:33     839



计算;推算;计数设备的制造及其应用技术在内容递送网络的边缘处管理共享应用程序1.相关申请2.本技术特此要求享有2019年11月6日提交的、题为“managing shared applications at the edge of a content delivery network”的第62/931,465号美国临时专利申请的权益和优先权,并且该美国临时专利申请特此通过引用整体并入。背景技术:3.内容递送网络已经演进为不仅仅在边缘(edge)处提供高速缓存内容。相反,许多内容递送网络现在代表它们的客户提供分布式拒绝服务(ddos)保护、安全防护、负载平衡、视频流、内容优化和其他服务。此外,它们的客户现在能够在边缘处运行他们自己的应用程序代码,以便以定制的方式处理传入的请求。4.允许客户应用程序在边缘处运行呈现了关于隔离的若干挑战。当一个应用程序未有效地与另一个隔离时,可能出现许多问题。例如,一个客户的应用程序可能干扰同一服务器上的另一个客户的应用程序。在另一示例中,一个应用程序可能能够访问它不应该访问的数据。一个应用程序的故障也可能同时使其他应用程序——或甚至整个服务器停机。5.已经尝试了各种解决方案来在边缘处隔离应用程序。在一个中,每个客户被赋予一个在其中运行其应用程序的虚拟机。此方法将一个客户的应用程序与另一个的隔离,但是未能隔离对该客户的自己的请求的处理。因此,客户的处理一个请求的应用程序代码的一个实例可能干扰处理另一个、不同的请求的代码的另一个实例。6.概述7.本文公开了用于在内容递送网络的边缘处管理和部署共享应用程序的技术。在一实施方式中,内容递送网络中的高速缓存节点识别对应用程序的请求,其中该应用程序在多个客户之间被共享。该高速缓存节点还确定与该请求相关联的客户被准许执行该应用程序,并且响应于确定该客户被准许执行该应用程序,启动该应用程序作为用于该请求的一个隔离实例。一旦该应用程序被完成,该高速缓存节点就可以将控制返回到与该请求相关联的操作。附图说明8.下面的描述和相关联的附图教导了本发明的最佳模式。出于教导发明原理的目的,可以简化或省略该最佳模式的一些常规方面。下面的权利要求指定本发明的范围。注意到,该最佳模式的一些方面不能够落入如由权利要求指定的本发明的范围内。因此,本领域技术人员将理解落入本发明的范围内的来自该最佳模式的变化。本领域技术人员将理解,下文所描述的特征可以各种方式组合以形成本发明的多个变化。作为结果,本发明不限于下文所描述的具体示例,而是仅由权利要求及其等同物限定。9.图1例示了根据一实施方式的用于在内容递送网络的边缘处实施共享应用程序的通信系统。10.图2例示了根据一实施方式的高速缓存服务器向客户提供共享应用程序的操作。11.图3例示了根据一实施方式的在边缘高速缓存节点处启动应用程序的时序图。12.图4例示了根据一实施方式的管理高速缓存节点上的应用程序许可的数据结构。13.图5例示了根据一实施方式的在内容递送网络中启动应用程序的计算环境高速缓存。14.图6例示了根据一实施方式的一个隔离实例的时序图。15.图7例示了根据一实施方式的生成将被部署在内容递送网络中的应用程序的操作场景。16.图8例示了根据一实施方式的高速缓存节点计算系统。具体实施方式17.本文公开了用于在边缘处隔离应用程序的技术。在一高度简化的示例中,内容递送网络充当最终用户和客户源(customer origin)之间的中介。内容递送网络中的典型服务器或高速缓存节点接收来自最终用户应用程序和网络浏览器的对内容的请求。由网络运营商管理的服务器上的软件层将该内容从其高速缓存提供给最终用户,或如果该内容不在该高速缓存中或是陈旧的,从客户源检索该内容。此软件层可以包括varnish配置语言(varnish configuration language,vcl)服务、apache流量服务器服务(apache traffic server service)、或某个其他超文本传输协议(http)加速服务。18.除了由该网络运营商的软件处理之外,该请求还可以被传递到由客户管理的应用程序代码。该客户应用程序代码可以执行关于该请求或该内容的各种各样的功能中的任何一个,诸如调整图像大小、转换应用程序编程接口(api)请求、或将单个请求分解为多个请求。19.在一些示例中,对于待要与其他请求和其他应用程序隔离地由一个给定的客户应用程序安全地处理的请求,提供隔离运行时间环境。该隔离运行时间环境从保留的一组隔离资源选择一个隔离资源以支持该请求并且建立可用于该请求的上下文(context)。(在一些场景中,隔离资源可以被称为虚拟机或虚拟节点。)该上下文包括例如地址指针或一系列地址,该一系列地址对应于被分配以供客户应用程序的本地代码使用的隔离资源。该隔离运行时间然后调用该本地代码并且将该上下文传递到它。该本地代码开始执行,并且在这样做时,可以尝试访问不曾接收所需数据的副本的存储器位置。这导致故障,隔离运行时间通过将数据从与该应用程序相关联的工件(artifact)复制到该存储器位置来处理该故障。该本地代码然后能够恢复执行,并且例如,读取和处理现在存储在该存储器位置处的数据。一旦完成该本地代码的执行,该隔离运行时间进程可以将对该进程的控制返回到由网络运营商管理的软件层。20.在一些实施方式中,在将应用程序部署到高速缓存节点时,客户可以第一编程语言(c、c++、rust等)编写该应用程序。一旦被编写,该应用程序就被编译成汇编代码,并且然后被编译成本地代码用于在诸如高速缓存节点的边缘系统上执行。编译器在编译程序时施行隔离运行时间参数(存储器要求、变量要求、执行约束等),并且为应用程序产生工件。该工件包括用以执行该应用程序的本地代码并且还包括元数据,其中该元数据可以包括由该应用程序使用的全局变量、该应用程序的配置要求、该应用程序的执行约束等。然后,该工件可以被部署到并且被加载在跨内容递送网络分布的高速缓存节点中的各种隔离运行时间环境中。21.在此,在内容递送网络的边缘高速缓存节点处提供各种应用程序时,应用程序可以是可由该内容递送网络的多个客户执行的。这些应用程序可以被用来为请求内容的最终用户识别广告、生成与来自最终用户的请求相关联的安全参数、识别与请求用户相关联的属性、优化待被供应给请求用户的成像数据或视频、或某个其他操作。为了启动共享应用程序,http加速服务或另一个应用程序可以生成对应用程序的请求。响应于该请求,高速缓存节点可以基于与该请求相关联的客户来确定该请求是否被准许。在一些示例中,高速缓存节点可以维护至少一个数据结构以确定定义哪些客户(网站、新闻提供商、社交网络等)被提供对共享应用程序中的每个的访问。如果客户被准许访问应用程序,高速缓存节点可以分配一个隔离资源以支持该请求并且启动对应的应用程序的执行。相反,如果应用程序不被准许,该请求可以被阻止。另外,高速缓存节点可以生成日志条目、终止对高速缓存节点的请求、生成管理员的通知、或提供与该请求相关联的某个其他动作。22.图1例示了根据一实施方式的用于在内容递送网络的边缘处实施共享应用程序的通信系统100。通信系统100包括用户设备102、内容递送网络105和源服务器105。内容递送网络105可以包括多个高速缓存节点,所述高速缓存节点的一示例被表示为高速缓存节点110。高速缓存节点110还包括请求处理程序(handler)进程120、数据高速缓存122、访问操作150、具有应用程序130-333的客户应用程序125、以及具有应用程序140-143的共享应用程序126。23.在操作中,内容递送网络105部署高速缓存节点——诸如高速缓存节点110——以高速缓存内容并且通过互联网向请求用户提供内容。具体地,当通过互联网从用户设备生成请求时,域名服务可以将该请求引导到内容递送网络105中的高速缓存节点。作为结果,不是来自最终用户设备的每个请求被引导到源服务器104中的一个源服务器,而是内容递送网络中的高速缓存节点可以高速缓存来自源服务器的内容并且将该内容供应给请求最终用户设备。24.在本实施方式中,当从用户设备102生成请求时,该请求被引导到高速缓存节点110。当接收到请求时,可以使用请求处理程序进程120来处理该请求,其中请求处理程序进程120可以包括vcl服务、apache流量服务器服务、或某个其他http加速服务。请求处理程序进程120可以确定如何处理请求以及如何给出对内容请求的响应。在一些实施方式中,请求处理程序进程可以被组织成在不同的时间执行的子例程,并且常常包括被用来实施用于各种内容请求的管理员定义的规则的if-then语句。在此,请求处理程序进程120可以识别来自用户设备102的内容请求对应于客户应用程序125或共享应用程序126中的应用程序,其中客户应用程序125可以各自对内容递送网络105的客户是唯一的,并且其中共享应用程序126可以在内容递送网络105的多个客户之间被共享。应用程序可以被用来为请求内容的最终用户识别广告、生成与来自最终用户的请求相关联的安全参数、识别与请求用户相关联的属性、优化待被供应给请求用户的成像数据或视频、或某个其他操作。应用程序可以被用来从源服务器104获得数据、识别数据高速缓存122中的相关数据、修改数据高速缓存122中的数据、或提供关于内容请求的某个其他操作。25.在一些示例中,当被用户设备由内容请求调用时,应用程序中的每个能够作为一个隔离实例来操作。为了实施一个隔离实例,每个应用程序可以包括工件,该工件包括用以实施该应用程序的本地代码,并且还包括代表变量、故障数据结构、配置信息、或与该应用程序相关的一些其他类似的信息的元数据。当需要一个应用程序实例时,可以选择存储器空间以隔离应用程序的执行实例。一旦被选择,代码就可以被执行并且使用分配给应用程序的实例的存储空间。在一些示例中,运行时间进程可以监测运行时间代码的执行中的故障,并且使用作为工件的一部分存储的元数据来对该故障进行响应。尽管这些是提供隔离资源的一示例,但是应理解,高速缓存节点可以采用虚拟机或容器来支持应用程序请求。26.图2例示了根据一实施方式的节点服务器向客户提供共享应用程序的操作200。操作200的过程在以下参考图1的通信系统100的系统和元件的段落中被附带说明地引用。操作200提供了从另一个应用程序内启动共享应用程序的一示例,然而,在一些示例中可从请求处理程序进程请求共享应用程序。27.如所描绘的,高速缓存节点实施操作200以识别(201)对与内容递送网络的客户相关联的第一应用程序的请求。例如,用户设备102可以生成由高速缓存节点110接收的内容请求,其中该内容请求可以对应于使用内容递送网络110高速缓存内容的视频服务提供商。响应于接收到该请求,高速缓存节点110可以启动请求处理程序进程120以确定如何处理该内容请求。在至少一示例中,来自用户设备102的内容请求可以要求一个应用程序的启动,其中该应用程序可以提供关于该内容请求的各种操作。这些操作可以包括优化图像或视频、为最终用户识别相关广告、或提供关于该内容请求的某个其他操作。操作可以被用来添加、修改、或识别用于数据高速缓存122的相关内容,或可以被用来识别与内容请求相关联的相关属性。28.一旦识别了对应用程序的请求,操作200可以启动(202)该第一应用程序的执行,其中该第一应用程序可以与内容递送网络的一个特定客户相关联。在一些实施方式中,当一个应用程序被请求时,高速缓存节点110可以咨询一个或多个数据结构以确定该客户是否与所请求的应用程序相关联。一旦被确定,就可以启动该应用程序以支持该请求。在一些实施方式中,该应用程序可以包括容器或虚拟机。在其他实施方式中,该应用程序可以作为一个隔离实例来执行,该隔离实例被分配其自己的存储器空间。具体地,应用程序可以包括可执行代码和元数据。当请求被识别以启动该应用程序时,该请求可以被分配存储器,并且代该码可以根据在元数据中定义的约束来执行,如在图5-图7中进一步描述的。29.一旦该第一应用程序被启动,该第一应用程序可以识别(203)对第二应用程序的请求并且启动该第二应用程序的执行,其中该第二应用程序可以包括由内容递送网络中的多个客户共享的应用程序。在一些实施方式中,当该第二应用程序由该第一应用程序调用时,可以要求高速缓存节点来确定与该第一应用程序相关联的客户是否具有访问该第二应用程序的许可。例如,为了支持来自用户设备102的内容请求,请求处理程序进程120可以启动应用程序130。在应用程序130的执行期间,可以生成对应于共享应用程序126中的应用程序140的应用程序请求。当请求共享应用程序时,高速缓存节点110可以咨询访问操作150——该访问操作可以包括一个或多个数据结构,以确定该第二应用程序对于与该请求相关联的客户是否是可用的。如果访问操作150指示该应用程序对于该客户是可用的,则该应用程序可以被启动作为如本文所描述的隔离资源。30.在一些示例中,在确定与客户中的每个相关联的许可时,客户可以选择或订阅不同的应用程序。这些应用程序可以由客户、由其他客户、由第三方开发者、由内容递送网络105的提供商、或由某个其他实体生成。一旦生成应用程序,内容递送网络中的控制器或管理系统就可以将该应用程序分布到该内容递送网络中的一个或多个高速缓存节点。在一些示例中,应用程序可以被部署到每一个高速缓存节点,然而,应理解,应用程序可以被部署到高速缓存节点的一个子集。可以基于地理位置、由高速缓存节点高速缓存的内容的类型、或某个其他标准来选择此子集。31.在启动该第二应用程序之后,高速缓存节点110可以等待直到该第二应用程序的完成。响应于完成该第二应用程序,操作200可以将控制返回(204)到该第一应用程序。另外,响应于完成该第一应用程序,操作200可以将控制(205)返回到与对该第一应用程序的请求相关联的进程或操作。在一些示例中,当完成应用程序中的每个时,信息可以被提供给请求操作(http加速服务或其他应用程序)。该信息可以指示该应用程序是否是成功的、用于数据高速缓存122中的任何存储的数据的存储器位置、为对应的用户识别的任何信息、或与该应用程序的操作相关的一些其他信息。作为结果,用于该应用程序的请求操作可以使用从执行的应用程序得出的数据来向用户设备102提供所请求的内容。32.图3例示了根据一实施方式的在边缘高速缓存节点处启动应用程序的时序图300。时序图300包括处理程序进程120、应用程序130、访问操作150、应用程序140、以及应用程序141-143。33.如所描绘的,请求处理程序进程120可以识别对应用程序130的请求,其中应用程序130可以与内容递送网络的一个客户相关联。在一些实施方式中,对应用程序的请求可以与http加速器服务相关联的格式出现,诸如以来自if-then语句的命令的形式。当该请求被识别时,请求处理程序进程120可以启动应用程序130,其中在一些示例中,应用程序130可以被启动作为一个隔离实例。在至少一实施方式中,提供给高速缓存节点的应用程序中的每个可以包括可执行代码以及代表变量、故障数据结构、配置信息、或与该应用程序相关的一些其他类似的信息的元数据。当需要应用程序的实例时,可以调用运行时间操作或进程,其中该运行时间进程可以将存储器空间分配给隔离实例并且启动应用程序代码的执行。在应用程序代码的执行期间,运行时间进程可以监测该运行时间代码的执行中的故障并且使用该元数据来对该故障进行响应。这些响应可以包括识别错误、将数据移动到存储器位置中、或提供与应用程序的执行相关联的某个其他动作。有利地,存储器空间可以仅在它被需要时由应用程序使用,从而限制对存储器的写入的量以提供该应用程序的功能。关于图5-图7提供了关于对应用程序的隔离实例的执行的进一步描述。34.在启动应用程序130作为一个隔离实例之后,应用程序130可以包括启动第二应用程序的请求。在一些示例中,高速缓存节点可以识别该请求并且将该请求转发给访问操作150,其中访问操作150可以被用来识别与和内容请求相关联的客户相关联的许可。在一些实施方式中,访问操作150可以维护可以将内容递送网络客户与可用的应用程序相关联的一个或多个数据结构。客户可以基于对应用程序的订阅、基于对内容递送网络的支付等级、或基于某个其他因素与应用程序相关联。作为一示例,客户之间的共享应用程序可以被用来识别将作为内容请求的一部分提供的相关广告图像。客户可以基于与该请求相关联的域名、与请求相关联的令牌、或基于该请求中所指示的并且可由高速缓存节点识别的一些其他属性来识别。35.在此,响应于对第二应用程序的请求,高速缓存节点确定该客户能够访问应用程序140(第二应用程序)并且启动该第二应用程序。在一些示例中,该第二应用程序可以使用与关于应用程序130所描述的隔离技术类似的隔离技术来作为隔离实例来执行。一旦被启动,应用程序140就可以执行到完成,并且可以向应用程序130提供指示该应用程序的完成的通知。另外,在完成应用程序130之后,可以向请求处理程序进程120提供完成通知。基于来自应用程序130和应用程序140的操作,处理程序进程120可以向请求用户设备提供内容。36.在一些实施方式中,应用程序130和140可以将信息返回到对应的请求进程。此信息可以指示该应用程序是否成功地提供期望的任务、用于内容的存储位置或地址、或一些其他信息。作为一示例,应用程序130可以负责识别高速缓存在数据高速缓存——诸如图1的数据高速缓存122——中的图像(内容)。一旦该图像被识别,应用程序130就可以调用应用程序140以优化该图像以对该请求进行响应。在优化该图像之后,应用程序140可以指示与该图像相关联的高速缓存存储地址、可以指示操作的成功、或可以向应用程序130提供某个其他指示。然后,应用程序130可以将指示与感兴趣的图像相关联的存储位置的通知返回到请求处理程序进程120。37.尽管被展示为从另一个应用程序请求共享应用程序,但是应理解,请求处理程序进程120可以生成对该共享应用程序的请求。例如,http加速服务可以启动对共享应用程序126中的应用程序142的请求。响应于该请求,访问操作150可以确定客户是否能够访问所请求的应用程序,并且可以在该客户被准许执行该应用程序时执行该应用程序。38.在一些实施方式中,除了或代替基于与所提供的内容相关联的客户来准许应用程序,访问操作150可以使用最终用户标识符来确定是否应向最终用户提供边缘应用程序。例如,客户可以为客户中的每个分配不同的等级或服务质量,其中第一等级可以准许从边缘获得内容,而另一个等级可以要求从源服务器获得内容。在另一示例中,可以识别可以使用高速缓存服务器本地的应用程序来提供增加的安全性(例如,加密)的客户的第一等级,而客户的第二等级可以不被提供对同一应用程序的访问。当接收到请求时,高速缓存节点110可以识别对应用程序的请求。响应于该请求,高速缓存节点110可以识别与该请求相关联的客户和与该请求相关联的最终用户,其中该用户可以经由来源ip地址、令牌、或关于该请求的来源的一些其他信息来识别。一旦客户和用户被识别,高速缓存节点110就可以确定该应用程序对该客户和用户是否是可用的,并且如果该应用程序是可用的,启动隔离实例。如果该应用程序是不可用的,则请求处理程序进程120或另一个应用程序可以执行一个或多个其他动作以对该请求进行响应。这些操作可以包括向请求用户设备提供错误、识别用于请求的其他内容、或提供某个其他操作。39.图4例示了根据一实施方式的管理高速缓存节点上的应用程序许可的数据结构400。数据结构400代表可以由高速缓存节点实施以确定对内容请求可用的应用程序的数据结构。数据结构400包括具有应用程序411-413的应用程序标识符(id)列410和具有客户430-436的客户列420-423。40.在操作中,应用程序被分布在内容递送网络中,所述应用程序准许客户在该递送网络的边缘处提供各种内容功能。操作可以包括图像优化、广告管理、安全性、或某个其他操作。当应用程序被提供给高速缓存节点时,所述应用程序中的每个应用程序可以与被准许访问该应用程序的一个或多个客户相关联。具体地,当识别对该应用程序的请求时,高速缓存节点可以咨询数据结构400以确定客户是否与特定应用程序相关联或是否具有对客户可用的应用程序。可以使用与客户相关联的域、使用与内容相关联的令牌或cookie来识别客户、或以某个其他方式来识别客户。41.作为一示例,应用程序可以被用来基于请求内容的设备的类型来为最终用户设备提供视频优化。当接收到请求时,高速缓存节点可以识别对应用程序的请求并且确定客户是否可以执行该应用程序。如果被准许,则该高速缓存节点可以使用隔离节点或实例来执行该应用程序以支持该请求。因此,如果客户430生成对应用程序411的请求,该高速缓存节点可以执行该应用程序,而通过客户435的请求,该高速缓存节点可以防止该应用程序的执行、生成指示不恰当的请求的日志文件、生成对管理员的通知、或提供某个其他功能,包括其组合。42.在一些示例中,除了或代替向各种客户提供许可,高速缓存节点还可以监测或跟踪由客户使用的应用程序中的每个的量。此信息可以被用来向应用程序的开发者提供反馈、向使用应用程序的客户开账单、向内容递送网络提供使用统计、或提供某个其他功能。在一些实施方式中,高速缓存节点可以生成可以被报告回用于内容递送网络的管理系统的日志条目。根据所述日志条目,该管理系统可以被用来向使用各种应用程序的客户开账单、为应用程序中的一个或多个生成使用统计模型、或提供关于在内容递送网络中的高速缓存节点中的一个或多个处应用程序的使用的某个其他反馈。43.尽管在图4的示例中被展示为基于与请求相关联的客户(例如,网站、新闻提供商等)来提供许可,但是应理解,可以基于请求用户来确定所述许可中的至少一部分。在一些示例中,所述许可可以基于与用户相关联的ip地址、由用户提供的令牌、或与用户相关联的某个其他凭证或标识符。该标识符可以被用来向各种最终用户提供不同的服务质量,其中来自第一最终用户的请求可以执行识别第一广告的第一应用程序,而第二最终用户可以执行第二应用程序(或不执行应用程序)以响应于内容请求而提供广告。这仅是可以响应于用户请求而提供的不同的操作的一示例,然而,高速缓存节点可以提供任何数目的其他操作。44.图5例示了根据一实施方式的具有能够在内容递送网络中启动应用程序的高速缓存节点的计算环境500。计算环境500包括请求处理程序进程520和应用程序空间510,该请求处理程序进程和应用程序空间可以被实施在一个或多个高速缓存节点或其他边缘计算系统中。应用程序空间510代表为应用程序提供沙箱化执行实例的元件。应用程序空间510包括运行时间进程540、具有元数据552和代码554的应用程序工件550、以及应用程序节点530-533。应用程序节点530-533代表可以为应用程序的每次迭代提供沙箱化或隔离平台的隔离资源。45.如本文所描述的,内容递送网络的内容提供商或客户可能期望在高速缓存节点或其他边缘设备处实施一个或多个应用程序,使得可以更靠近请求用户来处理内容。在处理来自最终用户设备的请求时,请求处理程序进程520——其可以包括vcl操作、apache流量服务器操作、或某个其他http加速服务——可以确定如何处理请求以及如何对内容请求给出响应。在一些实施方式中,请求处理程序进程可以被组织成在不同的时间执行的子例程,并且常常包括多个if-then语句,所述多个if-then语句被用来实施用于各种内容请求的管理员定义的规则。在一些实施方式中,请求处理程序进程520可以包括被用来触发可以提供图像处理、视频处理、或某个其他操作的应用程序的操作。例如,部署在高速缓存节点处的应用程序可以为请求设备和浏览器提供图像优化。46.在此,当应用程序被请求处理程序进程520识别时,请求处理程序进程520可以与和该应用程序相关联的运行时间进程540通信。运行时间进程540被用来使用代码554启动应用程序的执行、在应用程序节点530-533中的一个中为应用程序分配包括元数据552的所需资源、以及管理在该代码的执行期间识别的故障。在至少一示例中,运行时间进程540可以从应用程序节点530-533识别或选择一个应用程序节点。一旦被选择,运行时间进程540就可以启动代码554的执行,其中代码554被传递以上下文,该上下文至少包括寻址信息或指向应用程序的执行实例的应用程序节点的指针。在一些实施方式中,应用程序节点530-533代表可以被用来将第一执行实例与同一应用程序的一个或多个其他执行实例隔离的存储器空间。在启动代码554的执行并且提供对分配给该请求的应用程序节点的访问之后,代码554可以生成用以从所分配的应用程序节点的存储器位置获得数据的请求。例如,如果一个执行实例被分配给应用程序节点530,代码554可以启动用以从应用程序节点530中的存储器位置读取数据的请求。响应于该请求,当数据尚未被写入该应用程序节点中的存储器位置时,可能发生故障。为了提供所需的数据,运行时间进程540可以监测故障何时发生并且确定如何对所述故障进行响应。因此,如果代码554请求了尚未被复制到用于应用程序节点530的存储器空间中的变量,运行时间进程540可以识别元数据552内的该变量并且将该变量复制到应用程序节点530的对应的位置中。一旦被复制,代码554就可以访问用于将来操作的所需的数据。有利地,当需要数据时,可以将该数据复制到应用程序节点中的每个中,从而限制应用程序的每个隔离执行所需的资源的量。47.尽管在图5的示例中被展示为具有单个应用程序,但是应理解,可以在边缘系统中部署任何数目的应用程序以提供各种操作。在部署应用程序时,应用程序中的每个可以被分布作为具有特定于该应用程序的元数据和本地代码的应用程序工件。另外,应用程序中的每个可以实施它们自己的运行时间进程或共享一个运行时间进程,以响应于请求而提供分配和配置操作。一个或多个运行时间进程可以使用相同的应用程序节点或不同的应用程序节点。此外,应用程序中的每个48.图6例示了根据一实施方式的在边缘计算系统中执行应用程序的时序图600。时序图600包括来自图5的计算环境500的系统和元件。尽管被展示为分配与应用程序节点530相关联的存储器空间以支持请求,但是应理解,可以分配任何可用节点(例如,未分配给另一个应用程序执行实例的节点)以支持对应用的请求。49.如所描绘的,运行时间进程540识别用以启动与应用程序空间510相关联的应用程序的请求。为了支持在边缘计算系统中执行应用程序,生成应用程序工件550,该应用程序工件包括用于在计算系统上执行的本地代码554和被用来支持该执行的元数据552。该元数据可以包括关于在应用程序的执行中使用的全局变量的信息,当在本地代码的执行中发生故障时将使用的故障数据结构、资源分配要求、或用以支持执行本地代码的一些其他类似的信息。50.在一些实施方式中,为了生成应用程序工件,管理系统——诸如管理系统——可以将以第一语言编写的应用程序编译成第二语言(webassembly)。一旦被编译,该管理系统就可以确定该第二语言的应用程序是否符合用于边缘部署计算系统(诸如高速缓存节点)的约束。这些约束可以包括存储器使用、安全性、循环、竞争条件、或一些其他类似的约束。在一些实施方式中,如果应用程序未能满足所述约束,可以防止应用程序部署到边缘计算系统,然而,在其他实施方式中,可以生成陷阱数据结构,该陷阱数据结构将从约束识别的应用程序的可能问题与错误代码或故障处理操作相关联。这些操作可以包括为与应用程序的创建相关联的用户生成通知、停止应用程序的执行、或提供某个其他故障响应。故障操作可以由应用程序的开发者来定义、可以由管理系统基于威胁的类型来定义、或可以任何其他方式来定义。在一些示例中,可以将webassembly代码与一个或多个数据结构中的信息进行比较,以确定webassembly代码何时符合一个或多个约束。一旦从webassembly代码识别约束,就可以生成具有元数据552和代码554的应用程序工件550,其中代码554对应于可由边缘服务执行的本地代码。51.响应于识别用以执行应用程序的请求,运行时间进程540可以识别并且分配可用以支持该请求的应用程序节点530。此应用程序节点可以包括可用以存储与该应用程序相关联的元数据552的至少一部分的存储器空间。一旦分配应用程序节点以支持该请求,运行时间进程540就可以启动代码554的执行并且将代码554元数据传递到代码554,其中元数据可以被用来至少访问与应用程序节点530相关联的存储器空间(例如,指向应用程序节点530的存储器指针)。52.在启动代码554之后,代码554可以要求访问应用程序节点530以获得与应用程序相关联的变量和其他数据。然而,如果数据尚未被存储在应用程序节点554中,可能发生故障。作为结果,运行时间进程540可以监测将要发生的故障并且可以确定如何对所述故障进行响应。使用数据访问请求示例,运行时间进程540可以确定代码554需要变量来提供操作,并且可以将该变量(诸如全局变量)复制到应用程序节点530中的所需的存储器位置中。一旦被复制,代码554就可以访问来自与应用程序节点530相关联的存储器空间的数据。53.在执行代码之后,运行时间进程540可以向请求处理程序进程提供指示所需的操作被完成的结果。例如,如果代码554针对请求执行了图像优化,使用运行时间进程540的代码554可以生成或识别所需的优化图像并且生成可以被提供给请求处理程序进程的通知。一旦通知被提供给请求处理程序进程,则请求处理程序进程可以被用来通过提供相关联的优化图像来响应请求。54.在一些实施方式中,元数据可以包括对应用程序的执行实例唯一的变量。具体地,当应用程序节点530被识别以支持请求时,运行时间进程540可以启动在代码554需要变量时将来自元数据的一个或多个变量写入应用程序节点530内的操作。以此方式,变量可以不干扰在计算系统上执行的一个或多个其他应用程序实例的操作。相反,当代码554需要变量时,代码554可以使用由运行时间进程540提供的对应于应用程序节点530的寻址指针,并且从应用程序节点530获得所需的变量。因此,用于应用程序的每个实例的变量可以被分成由应用程序节点530-533定义的寻址空间。应用程序节点存储器空间中的每个的大小和格式化也可以由元数据来定义,其中该元数据可以识别存储器空间的初始大小要求、用于应用程序的最大存储器大小(例如当在执行期间添加新的变量时)、或与应用程序的配置要求有关的一些其他信息。55.在一些实施方式中,元数据552可以包括指示在执行期间对应用程序的约束的陷阱数据结构。这些约束可以包括在应用程序的执行期间可能遇到的故障、存储器使用、安全性、循环、竞争条件、或某个其他类似的约束。在至少一示例中,当识别到可以通过监测linux操作“userfaultfd”来确定的故障时,陷阱数据结构可以定义如何对故障进行响应。该响应可以在创建应用程序工件时由管理系统来确定、可以针对约束中的一个或多个由用户来确定、或可以任何其他方式来确定。该响应可以包括将数据写入到用于应用程序节点的存储器空间——诸如当识别到作为元数据的一部分存储的对变量的请求时的情况下,可以包括向生成内容请求的用户返回错误信息、停止或重新开始应用程序的执行、向生成应用程序的内容提供商提供错误信息、或提供某个其他操作。例如,代码554可能遇到执行不恰当的数学运算(例如除以零)的操作。不是导致计算系统崩溃,运行时间进程540可以监测故障并且使用元数据552确定如何对故障进行响应。56.在一些示例中,高速缓存节点上的应用程序对特定的客户或内容提供商可以是唯一的。在其他示例中,该应用程序可以由多个客户共享,并且该高速缓存节点可以管理客户对该应用程序的访问许可。57.图7例示了根据一实施方式的生成待要被部署在内容递送网络中的应用程序的操作场景700。操作场景700包括操作710-712、应用程序720和虚拟节点730。58.在操作中,内容提供商(例如网站提供商)使用第一编程语言生成应用程序720。一旦由用于内容递送网络的管理系统生成并且识别,在操作710处,该管理系统将该应用程序编译成webassembly代码。一旦被编译或转换成webassembly代码,该管理系统就执行操作711以识别该应用程序是否符合用于该内容递送网络的高速缓存节点的约束。在一些实施方式中,在确定该应用程序是否符合约束时,该应用程序可以在模拟环境中操作以确定该应用程序是否符合用于网络的高速缓存节点的定义的约束。这些可以包括处理约束、存储器约束、循环和竞争条件、或一些其他类似的约束。在许多实施方式中,约束可以由该内容递送网络的管理员来定义,然而,应理解,约束可以基于高速缓存节点中可用的资源或识别该内容递送网络中的物理高速缓存节点的约束的某种其他类似的方法来确定。如果应用程序不满足约束,则可以向与该应用程序相关联的管理员提供指示不能够部署处于其当前状态的应用程序的通知。相比之下,如果该应用程序确实满足约束,则该应用程序可以移动到操作712。59.具体地,当该应用程序满足约束时,操作712将为该内容递送网络的高速缓存节点生成本地机器语言(诸如x86代码),并且将应用程序720部署为该内容递送网络内的至少一个虚拟节点。此虚拟节点可以包括容器或可以包括虚拟机。60.在一些实施方式中,一旦该应用程序被部署在高速缓存节点中,则该应用程序可以与也在该高速缓存节点中执行用于服务提供商的一个或多个其他虚拟节点一起工作。作为一示例,内容服务提供商可以将其自己的http加速的配置部署为虚拟节点,该虚拟节点为与该服务提供商相关联的内容请求提供特定的操作。为了辅助http加速虚拟节点的操作,该http加速虚拟节点可以生成函数调用以启动和实施应用程序节点。例如,当内容请求包括对当前未被高速缓存在高速缓存节点中的视频的视频请求时,http加速服务可以生成对应用程序的调用,以在将内容提供给最终用户之前优化从源服务器获得的视频。以此方式,被部署用于服务提供商的应用程序可以与加速服务结合地工作,以提供对被提供给最终用户的内容的期望的操作。61.在一些实施方式中,在与服务器上的应用程序交互时,该应用程序可以使用api来在虚拟节点外部进行通信。这些api命令可以包括诸如put(print)、get_request、send_response的命令,以及用以提供期望的操作的其他类似的命令。通过为api提供有限数目的功能,可以限制应用程序中的每个的通信。因此,当内容将由应用程序处理时,该应用程序可以使用第一命令来(从本地高速缓存或源)获得数据、根据该应用程序来处理该数据、以及将经处理的内容提供到期望的位置。62.在一些示例中,当该应用程序被部署时,该应用程序可以被部署为可以在内容递送网络的各种高速缓存节点上被启动的容器或虚拟机图像。因此,一旦确定该应用程序符合网络的约束,并且为该应用程序生成本地机器语言,该应用程序就可以被部署为跨该内容递送网络中的多个高速缓存节点的虚拟节点图像。63.在一些实施方式中,可以基于应用程序的要求来在内容递送网络中将应用程序分布到高速缓存节点。可以基于应用程序的硬件要求、在高速缓存节点处高速缓存的数据、高速缓存节点的地理位置、或基于某个其他因素来分布应用程序。例如,应用程序开发者可以生成将被用于特定国家中的广告的应用程序。当在内容递送网络中分布应用程序时,管理服务可以识别网络内的对应于感兴趣的国家的高速缓存节点,并且将应用程序提供给对应的高速缓存节点。一旦被分布,客户和/或用户可以被分配准许内容请求访问特定应用程序的许可。这可以包括从http加速服务或高速缓存节点上的另一个应用程序启动应用程序。64.图8例示了根据一实施方式的高速缓存节点计算系统800。计算系统800代表任何一个或多个计算系统,使用所述计算系统可以实施本文所公开的用于管理系统的各种操作体系结构、进程、场景和序列。计算系统800是图1的高速缓存节点110的一示例,但是可以存在其他示例。计算系统800包括通信接口801、用户接口802和处理系统803。处理系统803链接到通信接口801和用户接口802。处理系统803包括处理电路系统805和存储操作软件807的存储器设备806。计算系统800可以包括其他众所周知的部件,诸如为了清楚起见未示出的电池和外壳。计算系统800可以包括一个或多个服务器计算系统、台式计算系统、膝上型计算系统、或任何其他计算系统,包括其组合。65.通信接口801包括在通信链路上通信的部件,诸如网卡、端口、射频(rf)、处理电路系统和软件、或一些其他通信设备。通信接口801可以被配置为通过金属链路、无线链路或光学链路进行通信。通信接口801可以被配置为使用时分复用(tdm)、因特网协议(ip)、以太网、光学网络、无线协议、通信信令、或某种其他通信格式——包括其组合。具体地,通信接口801被配置为与内容递送网络的高速缓存节点通信,以配置具有http加速服务和应用程序的高速缓存节点。66.用户接口802包括与用户交互以接收用户输入并且呈现媒体和/或信息的部件。用户接口802可以包括扬声器、麦克风、按钮、灯、显示屏、触摸屏、触摸板、滚轮、通信端口、或某种其他用户输入/输出装置——包括其组合。在一些示例中可以省略用户接口802。67.处理电路系统805包括微处理器以及从存储器设备806检索和执行操作软件807的其他电路系统。存储器设备806包括非暂时性存储介质,诸如磁盘驱动器、闪存驱动器、数据存储电路系统、或某种其他存储器装置。处理电路系统805通常安装在电路板上,该电路板还可以保持存储器设备806以及通信接口801和用户接口802的部分。操作软件807包括计算机程序、固件或、某种其他形式的机器可读处理指令。操作软件807包括请求模块808、许可模块809和平台模块810,但是任何数目的软件模块可以提供相同的操作。操作软件807还可以包括操作系统、实用程序、驱动程序、网络接口、应用程序、或某种其他类型的软件。当由处理电路系统805执行时,操作软件807引导处理系统803如本文所描述的那样操作计算系统800。68.在至少一实施方式中,请求模块808引导处理系统803识别对高速缓存节点上的应用程序的请求,其中该应用程序可以由内容递送网络的多个客户共享。响应于该请求,许可模块809可以引导处理系统803确定与该请求相关联的客户是否被准许访问该应用程序。在一些示例中,计算系统800可以维护指示对内容递送网络的各个客户可用的应用程序的一个或多个数据结构。当识别来自http加速服务或另一个应用程序的对应用程序的请求时,许可模块809可以确定是否准许客户使用所述一个或多个数据结构来执行该应用程序。69.一旦准许对应用程序的请求,平台模块810就可以启动一个隔离实例以支持该应用程序。在一些示例中,该隔离实例可以包括虚拟机或容器。在其他示例中,该隔离实例可以包括可以被用来存储用于应用实例的数据的存储器空间。具体地,该应用程序可以包括用于该应用程序的可执行代码和元数据。当执行该应用程序时,该可执行代码和该元数据的组合可以被用来确定如何将用于应用程序实例的数据存储在内容高速缓存中或分配给该应用程序的存储器空间中。70.在一些示例中,该应用程序可以由该内容递送网络的客户、该内容递送网络本身、第三方应用程序开发者、或某个其他应用程序开发者生成。当被开发时,该内容递送网络可以确定该应用程序是否满足与该内容递送网络相关联的任何约束或规则,并且可以将该应用程序分布到该网络的高速缓存节点。可以基于与该应用程序相关联的客户、基于地理约束、基于处理资源约束、或基于某个其他因素来分布该应用程序。在一些示例中,该应用程序可以从分布71.返回到图1的元件,高速缓存节点110和源服务器104可以各自包括通信接口、网络接口、处理系统、计算机系统、微处理器、存储系统、存储介质、或一些其他处理设备或软件系统,并且可以被分布在多个设备之间。高速缓存节点110和源服务器104的示例可以包括软件,诸如操作系统、日志、数据库、实用程序、驱动程序、高速缓存软件、联网软件和存储在计算机可读介质上的其他软件。在一些示例中,高速缓存节点110和源服务器104可以各自包括一个或多个服务器计算系统、台式计算系统、膝上型计算系统、或任何其他计算系统,包括其组合。72.用户设备102可以是用户设备、订户装备、客户装备、接入终端、智能电话、个人数字助理(pda)、计算机、平板计算设备、电子书、因特网家电、媒体播放器、游戏控制台、或某种其他用户通信装置,包括其组合。用户设备102可以包括通信接口、网络接口、处理系统、计算机系统、微处理器、存储系统、存储介质、或一些其他处理设备或软件系统。73.通信系统100的元件之间的通信链路可以使用金属、玻璃、光学、空气、空间、或某种其他材料作为传送介质。通信链路可以各自使用各种通信协议,诸如时分复用(tdm)、异步传输模式(atm)、因特网协议(ip)、以太网、同步光网络(sonet)、混合光纤同轴(hfc)、电路交换、通信信令、无线通信、或某种其他通信格式,包括其组合、改进或变化。通信链路可以各自是直接链路,或可以包括中间网络、系统或设备,并且可以包括在多个物理链路上传送的逻辑网络链路。尽管在用户设备102和高速缓存节点110之间以及在高速缓存节点110和源服务器104之间例示了一个主链路,但是应理解,所述链路仅仅是例示性的以示出通信模式或访问路径。在其他示例中,可以示出另外的链路,其中另外的链路的部分被共享并且被用于不同的通信会话或不同的内容类型以及其他配置。通信链路可以各自包括共享相同的相关联的链路的许多不同的信号,如由图1中的相关联的线所代表的,包括资源块、接入信道、寻呼信道、通知信道、前向链路、反向链路、用户通信、通信会话、架空(overhead)通信、载波频率、其他信道、时隙、扩频码、传送端口、逻辑传送链路、网络套接字(network socket)、分组、或通信方向。74.所包括的说明书和附图描绘了具体实施方式,以教导本领域技术人员如何制作和使用最佳模式。出于教导发明原理的目的,已经简化或省略了一些常规方面。本领域技术人员将理解落入在本发明的范围内的来自这些实施方式的变化。本领域技术人员还将理解,上文所描述的特征可以各种方式组合以形成多个实施方式。作为结果,本发明不限于上文所描述的具体实施方式,而是仅由权利要求及其等同物限定。









图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!




内容声明:本文中引用的各种信息及资料(包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主体(包括但不限于公司、媒体、协会等机构)的官方网站或公开发表的信息。部分内容参考包括:(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供参考使用,不准确地方联系删除处理!本站为非盈利性质站点,发布内容不收取任何费用也不接任何广告!




免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理,本文部分文字与图片资源来自于网络,部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理!的,若有来源标注错误或侵犯了您的合法权益,请立即通知我们,情况属实,我们会第一时间予以删除,并同时向您表示歉意,谢谢!

相关内容 查看全部