CN116802612A - 跨容器委派 - Google Patents
跨容器委派 Download PDFInfo
- Publication number
- CN116802612A CN116802612A CN202180086508.6A CN202180086508A CN116802612A CN 116802612 A CN116802612 A CN 116802612A CN 202180086508 A CN202180086508 A CN 202180086508A CN 116802612 A CN116802612 A CN 116802612A
- Authority
- CN
- China
- Prior art keywords
- container
- queue
- kernel
- service
- delegation
- 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
- 230000004044 response Effects 0.000 claims abstract description 33
- 238000000034 method Methods 0.000 claims description 169
- 230000008569 process Effects 0.000 claims description 144
- 230000006855 networking Effects 0.000 claims 1
- 239000008186 active pharmaceutical agent Substances 0.000 description 31
- 238000012545 processing Methods 0.000 description 16
- 238000004891 communication Methods 0.000 description 12
- 238000005516 engineering process Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 4
- 230000003068 static effect Effects 0.000 description 4
- 238000002955 isolation Methods 0.000 description 2
- 238000000926 separation method Methods 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
- 230000005540 biological transmission Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000012858 packaging process Methods 0.000 description 1
- 230000001902 propagating effect Effects 0.000 description 1
- 238000013515 script Methods 0.000 description 1
- 230000008054 signal transmission Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
一种计算系统在web服务器系统上的操作系统的用户模式中的第一容器与操作系统的用户模式中的第二容器之间委派请求。操作系统包括内核。第二容器中的服务在操作系统的内核中创建委派队列。该服务在内核中添加标识符作为委派队列的属性,其中该标识符跨第一容器和第二容器唯一。响应于添加操作,在第一容器中执行的路由器使用标识符打开内核中的委派队列。响应于打开操作,该请求经由内核中的委派队列被委派给在第二容器中执行的服务。
Description
背景技术
当在web服务器上执行web服务时,HTTP(超文本传输协议)请求由web服务器通过在web服务器上执行的TCP/IP(传输控制协议/因特网协议)堆栈从客户端系统接收。响应由web服务器生成,并且通过TCP/IP堆栈采用反向路径被传送到客户端系统。此外,通过在容器中执行一个或多个web服务的个体服务进程和/或微服务,可以使web服务器执行、开发、部署、配置和管理更加可靠、灵活和安全。容器是一个软件单元,其对用于运行应用代码、运行时代码、系统工具、系统库和设置的执行环境打包,该执行环境包括与其他容器和进程隔离并且其他容器和进程不可访问的所包含的命名空间。在一些实现中,HTTP请求的处理可以涉及多个HTTP请求,这些HTTP请求通过web服务器经由复杂的内部路由流动。
发明内容
所描述的技术提供了一种在web服务器系统上的操作系统的用户模式中的第一容器与操作系统的用户模式中的第二容器之间委派请求的计算机系统。操作系统包括内核。第二容器中的服务在操作系统的内核中创建委派队列。该服务在内核中添加标识符作为委派队列的属性,其中该标识符跨第一容器和第二容器唯一。响应于添加操作,在第一容器中执行的路由器使用标识符打开内核中的委派队列。响应于打开操作,该请求经由内核中的委派队列被委派给在第二容器中执行的服务。
提供本发明内容是为了以简化的形式介绍概念的选择,这些概念将在下面的“具体实施方式”中进一步描述。本发明内容不旨在确定所要求保护的主题的关键特征或基本特征,也不旨在用于限制所要求保护主题的范围。
本文中还描述和列举了其他实现。
附图说明
图1图示了支持请求的跨容器委派的示例web服务器。
图2图示了支持请求的跨容器委派的示例web服务器中流过网络堆栈的请求。
图3图示了支持请求的跨容器委派的示例web服务器中的请求委派。
图4图示了支持请求的跨容器委派的示例web服务器中流过网络堆栈的响应。
图5图示了用于在web服务器中跨容器委派请求的示例操作。
图6图示了可以在实现所描述的技术时有用的示例硬件和软件。
具体实施方式
使用容器将进程(例如,一个或多个主机进程、路由器进程、服务进程、微服务进程)打包在web服务器中提供进程隔离,进程隔离可以得到提高的可靠性、灵活性和安全性。例如,由于在web服务器上执行的不同web服务和/或web服务的不同子组件被维护(例如,修复、升级),其他web服务和/或子组件不需要受到影响。一个容器中的服务可以被终止、升级和重启,而另一容器中的服务可以保持不受干扰地执行。此外,在不同容器中运行的进程可以依赖于其自己的容器内的不同版本的平台、库等。然而,不同容器中的进程在用户模式中被彼此隔离,这使得高性能的跨容器通信成为一个挑战。
通过经由操作系统的内核中的委派队列来路由HTTP请求的跨容器委派,一个容器中的路由器进程可以在用户模式中评估传入的HTTP请求,并且将其委派给与在另一容器中执行的目的地服务进程相关联的委派队列。委派队列是或包括操作系统的内核中的请求队列,该请求队列被启用以用于委派给web服务器中的一个或多个用户模式进程。以这种方式,服务可以在另一容器中接收由路由器进程委派的所路由的HTTP请求,而无需多个内部HTTP请求的开销及其产生的开销(例如,打开套接字、处理时间)。
图1图示了支持请求的跨容器委派的示例web服务器100。客户端计算系统102经由web服务器100的通信网络104和网络接口106向web服务器100发送HTTP请求和从web服务器100接收HTTP响应。请求和响应通过web服务器的操作系统的内核108中的网络堆栈被传送,以用于由用户模式进程(诸如路由器进程、服务进程等)处理。
在用户模式中,在一个容器中执行的进程被与其他容器中的进程隔离。这样,在主机用户模式容器110中执行的路由器进程被与在服务进程用户模式容器112、服务进程用户模式容器114和服务进程用户模式容器116中执行的服务进程隔离。同样,这些容器中的每个容器中的进程被与来自所有其他容器的进程隔离。例如,不同容器中的进程在用户模式中不共享公共命名空间,并且一个容器中的数据对其他容器中的进程是不可访问的。命名空间是一个声明性区域,其向其内部的标识符(类型、函数、变量等的名称)提供范围。命名空间被用于将代码组织成逻辑组,并且防止可能发生的名称冲突,尤其是当代码库包括多个库时。命名空间范围内的标识符彼此可见,而无需限定。容器之间的隔离由位于图1中的每个容器之间的实心黑线图示。
图2图示了支持请求的跨容器委派的示例web服务器200中流过网络堆栈的请求。客户端计算系统202经由web服务器200的通信网络204和网络接口206(例如,“NIC”或“网络接口卡”)向web服务器200发送HTTP请求和从web服务器200接收HTTP响应。请求和响应通过web服务器的操作系统的内核208中的网络堆栈被传送,以用于由用户模式进程(诸如路由器进程、服务进程等)处理。
网络堆栈包括多个硬件和软件层,包括网络接口206、NIC驱动器210、网络驱动器接口212(例如,ndis.sys)和协议驱动器214(例如,TCP/IP协议驱动器,诸如tcpip.sys)。web服务器驱动器216(例如,http.sys)是在内核中在TCP/IP协议驱动器与用户模式路由器和服务进程(例如,web服务进程、HTTP服务进程、微服务进程、web服务器应用程序)之间运行的HTTP协议驱动器。
当web服务器200接收到请求时,该请求通过网络堆栈“向上”传送到web服务器驱动器216中的路由队列。通过API 222(应用程序编程接口),主机用户模式容器226中的路由器进程224评估web服务器驱动器216中的所接收的请求(例如,通过读取标头和/或寻址信息),以确定如何在web服务器200中路由请求。路由器进程224可以决定丢弃该请求(例如,在不进行进一步处理的情况下将其从队列中删除),发送回高速缓存的响应而不将该请求委派给另一容器,或者将该请求委派给web服务器驱动器216中的委派队列以便由另一容器中的进程处理该请求,等等。当路由器进程224将请求委派给另一容器中的进程时,路由器进程224指示web服务器驱动器216将请求从路由队列移动到适当的委派队列,以用于由服务进程用户模式容器220中的服务进程218访问。服务进程218经由API 228访问在内核模式中运行的web服务器驱动器216的委派队列中的请求。来自服务进程218的响应可以经由API228、web服务器驱动器216、协议驱动器214、网络驱动器接口212、NIC驱动器210和网络接口206被传送到客户端计算系统202,而无需队列或委派。
图3图示了支持请求的跨容器委派的示例web服务器300中的请求委派。客户端计算系统302经由web服务器300的通信网络304和网络接口306向web服务器300发送HTTP请求和从web服务器300接收HTTP响应。请求和响应通过web服务器的操作系统的内核308中的网络堆栈被传送,以用于由用户模式进程(诸如路由器进程、服务进程等)处理。
网络堆栈包括多个硬件和软件层,包括网络接口306、NIC驱动器310、网络驱动器接口312和协议驱动器314。web服务器驱动器316是在内核中在TCP/IP协议驱动器与用户模式路由器和web服务器进程(例如,web服务进程、微服务进程)之间运行的HTTP协议驱动器。web服务器驱动器316包括用于从网络堆栈接收服务请求的路由队列330。在一种实现中,路由队列330可以由路由器进程324经由API 322中的队列创建API来创建,尽管其他用户模式或内核进程可以创建路由队列330。路由队列330是或包括可以由路由器进程324访问的请求队列。路由器进程324在主机用户模式容器326中执行,并且可以使用示例队列创建API来创建路由队列:
(可选的)“Name”参数使用本地唯一的队列标识符(即,在主机用户模式容器326的命名空间中本地唯一)。如果NULL被传入作为Name参数,则队列没有名称并且无法由其他调用方打开。
web服务器驱动器316还包括委派队列332,该委派队列332由服务进程318经由API328使用队列创建API(例如,HttpCreateRequestQueue)在服务进程用户模式容器320中创建。(应当理解,web服务器300可以包括多个服务进程用户模式容器和服务进程,如参考图1所述。)“名称”参数使用本地唯一的队列标识符(即,在服务进程用户模式容器320的命名空间中本地唯一)。与其他服务进程和/或其他容器相对应的其他委派队列也可以驻留在web服务器驱动器316中。
服务进程318还经由API 328使用属性API将全局唯一名称设置为委派队列332的属性。全局唯一标识符可以是静态全局唯一标识符、本地唯一标识符和全局唯一标识符的某种组合、或某种其他全局唯一参数。服务进程318使用示例属性API将全局唯一名称设置为委派队列332的属性:
其中HTTP_SERVER_PROPERTY如下给出:
用于调用该示例属性API的示例代码如下所示:
其中ExternalId是或包括(例如,通过与其他数据的组合)服务进程318和/或服务进程用户模式容器320的委派队列的全局唯一标识符。
上述API调用提供了双调用过程,一个调用用于创建委派队列,另一调用用于创建全局唯一标识符属性。应当理解,备选实现可以在单个API调用中(或甚至在两个以上的API调用中)创建委派队列并且设置全局唯一标识符属性。
因为两个容器中的进程不共享公共命名空间,所以路由器进程324不会简单地使用由服务进程318在委派队列332被创建时使用的本地唯一队列标识符直接调用委派队列332。因此,路由器进程324获取由服务进程318用来设置委派队列332的属性的全局唯一标识符,并且使用该全局唯一标识符打开委派队列332以用于由路由器进程324在内核模式中访问。例如,在一种实现中,特定委派队列的全局唯一标识符被记录在配置数据存储库中(例如,由网络管理员)。因此,在一种实现中,路由器进程324从外部而不是从服务进程用户模式容器320获取全局唯一标识符。在备选实现中,路由器进程324根据外部标识符和在服务进程用户模式容器320中使用的本地唯一名称的组合来构造全局唯一标识符,这两者都是由路由器进程324从外部配置数据存储库提取的。
在一种实现中,执行打开请求队列的过程,以获取调用过程的该队列的句柄。例如,路由器进程324可以使用对web服务器驱动器316的API调用和全局唯一标识符来标识它想要访问的委派队列332,以打开委派队列332以用于由路由器进程324访问。web服务器驱动器316从路由器进程324接收委派队列332的全局唯一标识符,标识具有满足全局唯一标识符的属性的适当委派队列,并且将委派队列332的句柄返回给路由器进程324。此后,路由器进程324可以使用返回的句柄来访问和/或引用委派队列332。如前所述,全局唯一标识符可以是静态全局唯一标识符、本地唯一标识符和全局唯一标识符的某种组合、或某种其他全局唯一参数。
路由器进程324可以使用服务进程318的委派队列332的全局唯一标识符来打开委派队列332,以用于由路由器进程324经由API 322使用开放的现有队列API访问:
其中(可选的)Name参数可以是包含路由器进程324的主机用户模式容器326的命名空间中的本地唯一队列名称,并且Flags被设置以指定现有队列,该现有队列对应于要由路由器进程324在内核模式中被打开以用于访问的PropertyInfoSet(即,全局唯一标识符)。
用于调用该开放的现有队列API的示例代码如下所示:
当请求从网络堆栈被接收到时,该请求被存储在路由队列330中,路由队列330由路由器进程324从主机用户模式容器326可访问。路由器进程324经由API 322使用进程请求API评估路由队列330中的请求(如从路由器进程324到路由队列330的虚线箭头所示):
基于该评估,路由器进程324决定是处理请求本身(例如,如果路由器进程324可以处理来自高速缓存的请求或通过将请求转发给不同计算设备),还是使请求“失败”(例如,充当HTTP防火墙),还是将请求委派给相同或不同容器的委派队列。例如,基于请求中的数据(例如,目的地服务地址或标识符),路由器进程324确定请求要被路由到的进程和/或容器——在图3中,目标进程是服务进程318,目标容器是服务进程用户模式容器320,并且目标队列是委派队列332。
路由器进程324经由API 322使用委派API将请求委派给适当的委派队列:
HttpDelegateRequestEx API调用包括两个队列的句柄,一个队列是路由队列330(即,RequestQueueHandle),其中请求最初是从网络接收的,另一队列是路由器324确定请求应当被委派给的服务和容器的委派队列332(DelegateQueueHandle)。应当理解,委派队列可以(并且很可能)为web服务器300中的多个服务和/或容器而创建和打开——为了简单起见,在图3中示出了单个容器、服务和委派队列。委派操作将请求从所标识的路由队列移动到内核308的web服务器驱动器316内的所标识的委派队列。
当服务进程318准备好处理下一请求时,它经由API 328从委派队列332中选择下一请求,并且处理该请求。
在另一实现中,服务进程可以不被编程为使用委派队列中的全局唯一属性标识符来支持跨容器委派。在这种情况下,路由器进程324可以通过使用在服务进程用户模式容器320的命名空间内的全局唯一队列标识符来创建委派队列332来为服务进程提供附加支持。路由器进程324可以从诸如配置文件等外部源获取队列标识符,并且使用队列标识符创建委派队列332。服务进程318然后可以使用相同的队列标识符(在其容器的命名空间内)打开委派队列332以访问委派队列332。在又一实现中,服务进程320可以使用队列标识符创建委派队列,并且路由器进程324可以打开委派队列332以使用队列标识符进行访问。在这两种变体中,路由器进程324和服务进程318可以使用队列标识符来访问内核308中的委派队列332,该队列标识符跨这两个容器唯一。
图4图示了支持请求的跨容器委派的示例web服务器400中流过网络堆栈的响应。客户端计算系统402经由web服务器400的通信网络404和网络接口406向web服务器400发送HTTP请求和从web服务器400接收HTTP响应。请求和响应通过web服务器的操作系统的内核408中的网络堆栈被传送,以用于由用户模式进程(诸如路由器进程、服务进程等)处理。
网络堆栈包括多个硬件和软件层,包括网络接口406、NIC驱动器410、网络驱动器接口412和协议驱动器414。web服务器驱动器416是在内核中在TCP/IP协议驱动器与用户模式路由器和web服务器进程(例如,服务进程、微服务进程)之间运行的HTTP协议驱动器。路由器进程424在主机用户模式容器426中执行,以将传入请求路由到在web服务器400上执行的适当服务,但是,在至少一种实现中,路由器进程424不需要参与来自这样的服务的响应的传送。(应当理解,如参考图1所述,web服务器400可以包括多个服务进程用户模式容器和服务进程。)
一种这样的服务(即,服务进程用户模式容器420中的服务进程418)处理请求并且生成响应。服务进程418经由web服务器驱动器416、协议驱动器414、网络驱动器接口412、NIC驱动器410和网络接口406使用API 428向请求者(例如,客户端计算系统402)发送这样的响应。在处理响应时不需要使用队列委派。
图5图示了用于在web服务器中跨容器委派请求的示例操作500。队列创建操作502在操作系统的内核中创建委派队列。例如,服务进程容器中的服务经由API执行HttpCreateRequestQueue调用,以使用本地唯一标识符作为“Name”参数来创建委派队列。备选地,服务可以使用跨两个容器唯一的标识符作为“Name”参数来创建委派队列。命名操作504添加唯一标识符作为内核中的委派队列的属性。该唯一标识符可以是跨两个容器唯一的标识符、或某种其他唯一标识符。例如,服务进程容器中的服务经由API执行HttpSetRequestQueueProperty调用,以添加ExternalId作为委派队列的属性。ExternalId可以采取很多形式,包括本地唯一标识符和全局唯一标识符的组合、静态全局唯一标识符、或某种其他全局唯一参数。
队列打开操作506打开委派队列以用于由路由器进程访问。例如,主机用户模式容器中的路由器进程经由API执行HttpCreateRequestQueueEx调用,以打开内核中的委派队列,以用于由路由器进程使用全局唯一标识符(例如,ExternalId)来访问。如前所述,全局唯一标识符可以是静态全局唯一标识符、本地唯一标识符和全局唯一标识符的某种组合、或某种其他全局唯一参数。
委派操作508将请求从内核中的路由队列转发给内核中的委派队列,以用于由服务进程处理。委派操作508还可以包括以下中的一个或多个:经由内核中的网络堆栈在内核中的路由队列中接收请求;确定用于接收请求的适当的服务进程;将请求从路由队列移动到内核中的委派队列;在第二容器中的服务处接收来自内核中的委派队列的请求;以及在用户模式中由第二容器中的服务处理请求。
图6图示了用于实现所描述的技术的特征和操作的示例计算设备600。计算设备600可以体现遥控设备或物理受控设备,并且是示例网络连接和/或具有网络能力的设备,并且可以是客户端设备,诸如膝上型计算机、移动设备、台式机、平板计算机;服务器/云设备;物联网设备;电子配件;或另一电子设备。计算设备600包括一个或多个处理器602和存储器604。存储器604通常包括易失性存储器(例如,RAM)和非易失性存储器(例如,闪存)两者。操作系统610驻留在存储器604中并且由(多个)处理器602执行。
在示例计算设备600中,如图6中所示,一个或多个模块或段(诸如应用650、路由器进程、服务进程、web服务器驱动器、网络堆栈以及其他服务、工作负载和模块)被加载到存储器604和/或存储装置620上的操作系统610中,并且由(多个)处理器602执行。存储装置620可以包括一个或多个有形存储介质设备,并且可以存储本地和全局唯一标识符、请求、响应和其他数据,并且对于计算设备600是本地的,或者可以是远程的并且被通信地连接到计算设备600。
计算设备600包括电源616,电源616由一个或多个电池或其他电力源供电,并且向计算设备600的其他组件供电。电源616还可以被连接到外部电力源,该外部电力源对内置电池或其他电力源进行超控(override)或充电。
计算设备600可以包括一个或多个通信收发器630,通信收发器630可以被连接到一个或多个天线632,以向一个或多个其他服务器和/或客户端设备(例如,移动设备、台式计算机或膝上型计算机)提供网络连接(例如,手机网络、)。计算设备600还可以包括网络适配器636,网络适配器636是一种类型的计算设备。计算设备600可以使用适配器和任何其他类型的计算设备以用于通过广域网(WAN)或局域网(LAN)建立连接。应当理解,所示的网络连接是示例性的,并且用于在计算设备600与其他设备之间建立通信链路的其他计算设备和部件也可以被使用。
计算设备600可以包括一个或多个输入设备634(例如,键盘或鼠标),从而使得用户可以录入命令和信息。这些和其他输入设备可以通过一个或多个接口638被耦合到服务器,这些接口诸如是串行端口接口、并行端口或通用串行总线(USB)。计算设备600还可以包括显示器622,诸如触摸屏显示器。
计算设备600可以包括各种有形的处理器可读存储介质和无形的处理器可读通信信号。有形的处理器可读存储装置可以由计算设备600可以访问的任何可用介质体现,并且包括易失性和非易失性存储介质两者,可移动和不可移动存储介质两者。有形的处理器可读存储介质不包括通信信号(例如,信号本身),并且包括以用于存储诸如处理器可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术而被实现的易失性和非易失性的可移动和不可移动的存储介质。有形的处理器可读存储介质包括但不限于RAM、ROM、EEPROM、闪存或其他存储技术、CDROM、数字多功能盘(DVD)或其他光盘存储器、磁带盒、磁带、磁盘存储器或其他磁存储设备、或者可以被用于存储期望信息并且可以由计算设备600访问的任何其他有形介质。与有形的处理器可读存储介质相反,无形的处理器可读通信信号可以体现处理器可读指令、数据结构、程序模块或驻留在调制数据信号中的其他数据,诸如载波或其他信号传输机制。术语“调制数据信号”是指其一个或多个特性以在信号中对信息编码的方式被设置或改变的信号。作为示例而非限制,无形的通信信号包括通过诸如有线网络或直接有线连接等有线介质以及诸如声学、RF、红外和其他无线介质等无线介质传播的信号。
本文中描述的各种软件组件由一个或多个处理器可执行,这些处理器可以包括被配置为执行硬件或固件指令的逻辑机。例如,处理器可以被配置为执行作为一个或多个应用、服务、程序、例程、库、对象、组件、数据结构或其他逻辑构造的一部分的指令。这样的指令可以被实现以执行任务、实现数据类型、变换一个或多个组件的状态、实现技术效果或以其他方式获取期望结果。
处理器和存储装置的各方面可以被集成到一个或多个硬件逻辑组件中。例如,这样的硬件逻辑组件可以包括现场可编程门阵列(FPGA)、程序和应用特定的集成电路(PASIC/ASIC)、程序和应用特定的标准产品(PSSP/ASSP)、片上系统(SOC)以及复杂可编程逻辑器件(CPLD)。
术语“模块”、“程序”和“引擎”可以被用于描述被实现以执行特定功能的遥控设备和/或物理受控设备802的方面。可以理解,不同的模块、程序和/或引擎可以从同一应用、服务、代码块、对象、库、例程、API、函数等被实例化。同样,同一模块、程序和/或引擎可以由不同的应用、服务、代码块,对象、例程、API、函数等实例化。术语“模块”、“程序”和“引擎”可以涵盖可执行文件、数据文件、库、驱动程序、脚本、数据库记录等的个体或组。
应当理解,本文中使用的“服务”是跨一个或多个用户会话可执行的应用程序。服务可以对一个或多个系统组件、程序和/或其他服务是可用的。在一些实现中,服务可以在一个或多个服务器计算设备上运行。
提供了一种在web服务器系统上的操作系统的用户模式中的第一容器与操作系统的用户模式中的第二容器之间委派请求的示例方法。操作系统包括内核。方法包括由在第二容器中执行的服务在操作系统的内核中创建委派队列,由在第二容器中执行的服务在内核中添加标识符作为委派队列的属性,其中标识符跨第一容器和第二容器唯一,响应于添加操作,由在第一容器中执行的路由器使用标识符打开内核中的委派队列,以及响应于打开操作,经由内核中的委派队列将请求委派给在第二容器中执行的服务。
提供了任何前述方法的另一示例方法,其中创建操作包括使用第二容器本地的另一标识符创建委派队列。
提供了任何前述方法的另一示例方法,其中第一容器中的路由器从第二容器外部的数据存储库获取标识符。
提供了任何前述方法的另一示例方法,其中委派操作包括经由内核中的网络堆栈在内核中的路由队列中接收请求,将请求从路由队列移动到内核中的委派队列,在第二容器中的服务处接收来自内核中的委派队列的请求,以及在用户模式中由第二容器中的服务处理请求。
提供了任何前述方法的另一示例方法,其中第一容器的路由器和第二容器的服务在用户模式中在分离的命名空间中运行。
提供了任何前述方法的另一示例方法,其中第二容器的服务在用户模式中在第一容器的路由器不可访问的命名空间中运行。
提供了任何前述方法的另一示例方法,其中第一容器的路由器在用户模式中在第二容器的服务不可访问的命名空间中运行。
提供了一种用于在web服务器系统上的操作系统的用户模式中的第一容器与操作系统的用户模式中的第二容器之间委派请求的示例系统。操作系统包括内核。系统包括一个或多个硬件处理器和服务,服务被配置为在第二容器中的一个或多个硬件处理器上执行,在操作系统的内核中创建委派队列,并且响应于委派队列的创建而在内核中添加标识符作为委派列队的属性,其中标识符跨第一容器和第二容器唯一。系统还包括路由器,路由器被配置为在第一容器中的一个或多个硬件处理器上执行,响应于标识符到委派队列的添加而使用标识符打开内核中的委派队列,并且响应于路由器对委派队列的打开而经由内核中的委派队列将请求委派给在第二容器中执行的服务。
提供了任何先前系统的另一示例系统,其中服务被配置为使用第二容器本地的另一标识符创建委派队列。
提供了任何先前系统的另一示例系统,其中第一容器中的路由器从第二容器外部的数据存储库获取标识符。
提供了任何先前系统的另一示例系统,其中路由器还被配置为将经由网络堆栈在路由队列中接收的请求从路由队列移动到内核中的委派队列。
提供了任何先前系统的另一示例系统,其中服务还被配置为在用户模式中由第二容器中的服务处理请求,请求由服务从内核中的委派队列接收。
提供了任何先前系统的另一示例系统,其中第一容器的路由器和第二容器的服务在用户模式中在分离的命名空间中运行。
提供了任何先前系统的另一示例系统,其中第二容器的服务在用户模式中在第一容器的路由器不可访问的命名空间中运行,并且第一容器的路由器在用户模式中在第二容器的服务不可访问的命名空间中运行。
提供了一种或多种有形制品的示例有形处理器可读存储介质,介质对处理器可执行指令编码以用于在电子计算设备上执行在web服务器系统上的操作系统的用户模式中的第一容器与操作系统的用户模式中的第二容器之间委派请求的过程。操作系统包括内核。过程包括使用跨第一容器和第二容器唯一的队列标识符在操作系统的内核中创建委派队列,响应于创建操作,使用队列标识符打开内核中的委派队列,以及经由内核中的委派队列将请求委派给在第二容器中执行的服务。
任何先前介质的一个或多个其他示例有形处理器可读存储介质,其中委派操作包括经由内核中的网络堆栈在内核中的路由队列中接收请求,将请求从路由队列移动到内核中的委派队列,在第二容器中的服务处接收来自内核中的委派队列的请求,以及在用户模式中由第二容器中的服务处理请求。
任何先前介质的一个或多个其他示例有形处理器可读存储介质,其中移动操作由第一容器中的路由器执行。
任何先前介质的一个或多个其他示例有形处理器可读存储介质,其中第一容器的路由器和第二容器的服务在用户模式中在分离的命名空间中运行。
任何先前介质的一个或多个其他示例有形处理器可读存储介质,其中第二容器的服务在用户模式中在第一容器的路由器不可访问的命名空间中运行。
任何先前介质的一个或多个其他示例有形处理器可读存储介质,其中第一容器的路由器在用户模式中在第二容器的服务不可访问的命名空间中运行。
提供了一种在web服务器系统上的操作系统的用户模式中的第一容器与操作系统的用户模式中的第二容器之间委派请求的示例系统。操作系统包括内核。系统包括用于由在第二容器中执行的服务在操作系统的内核中创建委派队列的部件;用于由在第二容器中执行的服务在内核中添加标识符作为委派队列的属性的部件,其中标识符跨第一容器和第二容器唯一;用于响应于添加而由在第一容器中执行的路由器使用标识符打开内核中的委派队列的部件;以及用于响应于打开而经由内核中的委派队列将请求委派给在第二容器中执行的服务的部件。
提供了任何先前系统的另一示例系统,其中用于创建的部件包括使用第二容器本地的另一标识符创建委派队列。
提供了任何先前系统的另一示例系统,其中第一容器中的路由器从第二容器外部的数据存储库获取标识符。
提供了任何先前系统的另一示例系统,其中用于委派的部件包括用于经由内核中的网络堆栈在内核中的路由队列中接收请求的部件、用于将请求从路由队列移动到内核中的委派队列的部件、用于在第二容器中的服务处接收来自内核中的委派队列的请求的部件、以及用于在用户模式中由第二容器中的服务处理请求的部件。
提供了任何先前系统的另一示例系统,其中第一容器的路由器和第二容器的服务在用户模式中在分离的命名空间中运行。
提供了任何先前系统的另一示例系统,其中第二容器的服务在用户模式中在第一容器的路由器不可访问的命名空间中运行。
提供了任何先前系统的另一示例系统,其中第一容器的路由器在用户模式中在第二容器的服务不可访问的命名空间中运行。
虽然本说明书包含很多具体实现细节,但这些细节不应当被解释为对任何发明或可以要求保护的内容的范围的限制,而应当被理解为对所描述的特定技术的特定实施例的特定特征的描述。本说明书中在单独实施例的上下文中描述的某些特征也可以在单个实施例中组合实现。相反,在单个实施例的上下文中描述的各种特征也可以在多个实施例中单独地或以任何合适的子组合实现。此外,尽管特征在上文中可以被描述为以某些组合起作用,并且甚至在最初这样被要求保护,但在某些情况下,来自所要求保护的组合的一个或多个特征可以从该组合中排除,并且所要求保护的组合可以涉及子组合或子组合的变体。
类似地,虽然图中以特定顺序描绘操作,但这不应当被理解为要求以所示的特定顺序或按顺序执行这样的操作或要求执行所有所示的操作以获取期望结果。在某些情况下,多任务处理和并行处理可以是有利的。此外,上述实施例中的各种系统组件的分离不应当被理解为在所有实施例中都需要这样的分离,并且应当理解,所描述的程序组件和系统通常可以集成在单个软件产品中或者封装成多个软件产品。
因此,已经描述了主题的特定实施例。其他实施例在以下权利要求的范围内。在某些情况下,权利要求中所述的动作可以以不同顺序执行,并且仍然实现期望结果。此外,附图中描绘的过程不一定需要所示的特定顺序或按顺序来实现期望结果。在某些实现中,多任务处理和并行处理可以是有利的。
已经描述了所描述的技术的很多实现。然而,应当理解,在不脱离所述权利要求的精神和范围的情况下,可以进行各种修改。
Claims (15)
1.一种在web服务器系统上的操作系统的用户模式中的第一容器与所述操作系统的所述用户模式中的第二容器之间委派请求的方法,所述操作系统还包括内核,所述方法包括:
由在所述第二容器中执行的服务在所述操作系统的所述内核中创建委派队列;
由在所述第二容器中执行的所述服务在所述内核中添加标识符作为所述委派队列的属性,其中所述标识符跨所述第一容器和所述第二容器唯一;
响应于所述添加操作,由在所述第一容器中执行的路由器使用所述标识符打开所述内核中的所述委派队列;以及
响应于所述打开操作,经由所述内核中的所述委派队列将所述请求委派给在所述第二容器中执行的所述服务。
2.根据权利要求1所述的方法,其中所述创建操作包括:
使用所述第二容器本地的另一标识符创建所述委派队列。
3.根据权利要求2所述的方法,其中所述第一容器中的所述路由器从所述第二容器外部的数据存储库获取所述标识符。
4.根据权利要求1所述的方法,其中所述委派操作包括:
经由所述内核中的网络堆栈在所述内核中的路由队列中接收所述请求;
将所述请求从所述路由队列移动到所述内核中的所述委派队列;
在所述第二容器中的所述服务处接收来自所述内核中的所述委派队列的所述请求;以及
在所述用户模式中由所述第二容器中的所述服务处理所述请求。
5.根据权利要求1所述的方法,其中所述第一容器的所述路由器和所述第二容器的所述服务在所述用户模式中在分离的命名空间中运行。
6.根据权利要求1所述的方法,其中所述第二容器的所述服务在所述用户模式中在所述第一容器的所述路由器不可访问的命名空间中运行。
7.根据权利要求6所述的方法,其中所述第一容器的所述路由器在所述用户模式中在所述第二容器的所述服务不可访问的命名空间中运行。
8.一种用于在web服务器系统上的操作系统的用户模式中的第一容器与所述操作系统的所述用户模式中的第二容器之间委派请求的系统,所述操作系统还包括内核,所述系统包括:
一个或多个硬件处理器;
服务,被配置为在所述第二容器中的所述一个或多个硬件处理器上执行,在所述操作系统的所述内核中创建委派队列,以及响应于所述委派队列的创建而在所述内核中添加标识符作为所述委派列队的属性,其中所述标识符跨所述第一容器和所述第二容器唯一;以及
路由器,被配置为在所述第一容器中的所述一个或多个硬件处理器上执行,响应于所述标识符向所述委派队列的添加而使用所述标识符打开所述内核中的所述委派队列,以及响应于由所述路由器对所述委派队列的打开而经由所述内核中的所述委派队列将所述请求委派给在所述第二容器中执行的所述服务。
9.根据权利要求8所述的系统,其中所述服务被配置为使用所述第二容器本地的另一标识符创建所述委派队列。
10.根据权利要求8所述的系统,其中所述第一容器中的所述路由器从所述第二容器外部的数据存储库获取所述标识符。
11.根据权利要求8所述的系统,其中所述路由器还被配置为将经由联网堆栈在路由队列中接收的所述请求从所述路由队列移动到所述内核中的所述委派队列。
12.根据权利要求8所述的系统,其中所述服务还被配置为在所述用户模式中由所述第二容器中的所述服务处理所述请求,所述请求由所述服务从所述内核中的所述委派队列接收。
13.根据权利要求8所述的系统,其中所述第一容器的所述路由器和所述第二容器的所述服务在所述用户模式中在分离的命名空间中运行。
14.根据权利要求8所述的系统,其中所述第二容器的所述服务在所述用户模式中在所述第一容器的所述路由器不可访问的命名空间中运行,并且所述第一容器的所述路由器在所述用户模式中在所述第二容器的所述服务不可访问的命名空间中运行。
15.有形制品的一种或多种有形处理器可读存储介质,所述介质对处理器可执行指令编码以用于在电子计算设备上执行在web服务器系统上的操作系统的用户模式中的第一容器与所述操作系统的所述用户模式中的第二容器之间委派请求的过程,所述操作系统还包括内核,所述过程包括:
使用跨所述第一容器和所述第二容器唯一的队列标识符在所述操作系统的所述内核中创建委派队列;
响应于所述创建操作,使用所述队列标识符打开所述内核中的所述委派队列;以及
经由所述内核中的所述委派队列将所述请求委派给在所述第二容器中执行的服务。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US63/129,149 | 2020-12-22 | ||
US17/178,983 US20220197666A1 (en) | 2020-12-22 | 2021-02-18 | Cross-container delegation |
US17/178,983 | 2021-02-18 | ||
PCT/US2021/057489 WO2022139954A1 (en) | 2020-12-22 | 2021-11-01 | Cross-container delegation |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116802612A true CN116802612A (zh) | 2023-09-22 |
Family
ID=88034880
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202180086508.6A Pending CN116802612A (zh) | 2020-12-22 | 2021-11-01 | 跨容器委派 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116802612A (zh) |
-
2021
- 2021-11-01 CN CN202180086508.6A patent/CN116802612A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11157304B2 (en) | System for peering container clusters running on different container orchestration systems | |
JP7203444B2 (ja) | 代替サーバ名を使用する相互トランスポート層セキュリティを選択的に提供すること | |
CN110462589B (zh) | 本地装置协调器中的按需代码执行 | |
CN111614738B (zh) | 基于Kubernetes集群的服务访问方法、装置、设备及存储介质 | |
US9935829B1 (en) | Scalable packet processing service | |
CN115269184B (zh) | 函数即服务(faas)执行分配器 | |
CN110352401B (zh) | 具有按需代码执行能力的本地装置协调器 | |
US20190132276A1 (en) | Unified event processing for data/event exchanges with existing systems | |
US10152402B2 (en) | Supporting multiple streams for a redirected USB device | |
CN113301116A (zh) | 微服务应用跨网络通信方法、装置、系统及设备 | |
CN111124589B (zh) | 一种服务发现系统、方法、装置及设备 | |
US20200159555A1 (en) | Provider network service extensions | |
US10536559B2 (en) | Blocking an interface of a redirected USB composite device | |
CN114205342B (zh) | 服务调试的路由方法、电子设备及介质 | |
CN113467970B (zh) | 云计算系统中的跨安全区域的资源访问方法及电子设备 | |
CN109194589B (zh) | 一种mdc实现方法及装置 | |
CN115086166A (zh) | 计算系统、容器网络配置方法及存储介质 | |
CN113301004A (zh) | 数据处理方法、装置、通信方法和单网卡虚拟机 | |
CN113612643B (zh) | 云手机的网络配置方法、装置、设备以及存储介质 | |
CN116802612A (zh) | 跨容器委派 | |
JP7496870B2 (ja) | 統合システム内のアプリケーション・フローとの通信 | |
US20220197666A1 (en) | Cross-container delegation | |
US11140183B2 (en) | Determining criticality of identified enterprise assets using network session information | |
EP4268075A1 (en) | Cross-container delegation | |
US10498859B2 (en) | System and method for self-deploying and self-adapting contact center components |
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 |