CN114650279B - 实例处理方法及系统 - Google Patents
实例处理方法及系统 Download PDFInfo
- Publication number
- CN114650279B CN114650279B CN202210301617.1A CN202210301617A CN114650279B CN 114650279 B CN114650279 B CN 114650279B CN 202210301617 A CN202210301617 A CN 202210301617A CN 114650279 B CN114650279 B CN 114650279B
- Authority
- CN
- China
- Prior art keywords
- instance
- server
- request
- login
- module
- 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
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1004—Server selection for load balancing
- H04L67/1023—Server selection for load balancing based on a hash applied to IP addresses or costs
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/10—Network architectures or network communication protocols for network security for controlling access to devices or network resources
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/14—Session management
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computer And Data Communications (AREA)
Abstract
本说明书实施例提供实例处理方法及系统,该方法包括路由模块在接收到客户端发送的实例登录请求的情况下,根据实例登录请求中携带的实例参数,向调度模块发送实例信息获取请求,接收调度模块根据实例信息获取请求返回的服务器IP地址,根据服务器IP地址与服务器建立链接,并向服务器发送实例登录请求;服务器根据实例登录请求中携带的实例参数,确定实例对应的目标容器,并建立目标容器中实例与客户端之间的登录链路。该方法通过在Serverless平台上透出实例的概念,通过路由模块、调度模块以及服务器等使得用户可以登录实例,调试自身代码,并且拥有自身应用的完整控制权,提升用户对Serverless平台的信任感以及安全感。
Description
技术领域
本说明书实施例涉及计算机技术领域,特别涉及一种实例处理方法。
背景技术
Server less无服务器是一种云原生开发模型,可使开发人员专注构建和运行应用,而无需管理服务器,可以给用户带来更少的运维代价、更强的稳定性和更快的弹性能力。
但是Server less平台的此种免运维特性也在一定程度上削减了用户对自身应用的控制权力。而在很多场景中,用户也需要掌握自己应用的实际运行情况,例如当应用出现问题时,可以快速确认是自身问题还是Server less平台的问题。
目前的Server less平台是无法实现,让用户拥有对自身应用的掌控力,当应用出现问题时,会造成用户对Server less平台的不信任,极大降低了Server less平台对于用户的安全感。
发明内容
有鉴于此,本说明书实施例提供了一种实例处理方法。本说明书一个或者多个实施例同时涉及一种实例处理系统,一种计算设备,一种计算机可读存储介质以及一种计算机程序,以解决现有技术中存在的技术缺陷。
根据本说明书实施例的第一方面,提供了一种实例处理方法,应用于实例处理系统,所述系统包括路由模块、调度模块以及服务器,其中,所述方法包括:
所述路由模块,在接收到客户端发送的实例登录请求的情况下,根据所述实例登录请求中携带的实例参数,向所述调度模块发送实例信息获取请求,
接收所述调度模块,根据所述实例信息获取请求返回的实例信息,其中,所述实例信息中携带有所述实例对应的服务器IP地址,
根据所述服务器IP地址与所述服务器建立链接,并向所述服务器发送所述实例登录请求;
所述服务器,根据所述实例登录请求中携带的实例参数,确定所述实例对应的目标容器,并建立所述目标容器中实例与所述客户端之间的登录链路。
根据本说明书实施例的第二方面,提供了一种实例处理系统,包括路由模块、调度模块以及服务器,其中,
所述路由模块,被配置为在接收到客户端发送的实例登录请求的情况下,根据所述实例登录请求中携带的实例参数,向所述调度模块发送实例信息获取请求,
接收所述调度模块,根据所述实例信息获取请求返回的实例信息,其中,所述实例信息中携带有所述实例对应的服务器IP地址,
根据所述服务器IP地址与所述服务器建立链接,并向所述服务器发送所述实例登录请求;
所述服务器,被配置为根据所述实例登录请求中携带的实例参数,确定所述实例对应的目标容器,并建立所述目标容器中实例与所述客户端之间的登录链路。
根据本说明书实施例的第三方面,提供了一种计算设备,包括:
存储器和处理器;
所述存储器用于存储计算机可执行指令,所述处理器用于执行所述计算机可执行指令,该计算机可执行指令被处理器执行时实现上述实例处理方法的步骤。
根据本说明书实施例的第四方面,提供了一种计算机可读存储介质,其存储有计算机可执行指令,该指令被处理器执行时实现上述实例处理方法的步骤。
根据本说明书实施例的第五方面,提供了一种计算机程序,其中,当所述计算机程序在计算机中执行时,令计算机执行上述实例处理方法的步骤。
本说明书一个实施例实现了实例处理方法及系统,所述方法应用于实例处理系统,所述系统包括路由模块、调度模块以及服务器,其中,所述方法包括:所述路由模块,在接收到客户端发送的实例登录请求的情况下,根据所述实例登录请求中携带的实例参数,向所述调度模块发送实例信息获取请求,接收所述调度模块,根据所述实例信息获取请求返回的实例信息,其中,所述实例信息中携带有所述实例对应的服务器IP地址,根据所述服务器IP地址与所述服务器建立链接,并向所述服务器发送所述实例登录请求;所述服务器,根据所述实例登录请求中携带的实例参数,确定所述实例对应的目标容器,并建立所述目标容器中实例与所述客户端之间的登录链路。具体的,该实例处理方法通过在Server less平台上透出实例的概念,通过路由模块、调度模块以及服务器等使得用户可以登录实例,调试自身代码,并且拥有自身应用的完整控制权,提升用户对Server less平台的信任感以及安全感。
附图说明
图1是本说明书一个实施例提供的一种实例处理系统的具体应用场景示意图;
图2是本说明书一个实施例提供的一种实例处理方法的流程图;
图3是本说明书一个实施例提供的一种实例处理方法中实例的状态示意图;
图4是本说明书一个实施例提供的一种实例处理方法中四层转发代理以及七层转发代理的结构示意图;
图5是本说明书一个实施例提供的一种实例处理系统的结构示意图;
图6是本说明书一个实施例提供的一种计算设备的结构框图。
具体实施方式
在下面的描述中阐述了很多具体细节以便于充分理解本说明书。但是本说明书能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本说明书内涵的情况下做类似推广,因此本说明书不受下面公开的具体实施的限制。
在本说明书一个或多个实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本说明书一个或多个实施例中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本说明书一个或多个实施例中可能采用术语第一、第二等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一也可以被称为第二,类似地,第二也可以被称为第一。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
首先,对本说明书一个或多个实施例涉及的名词术语进行解释。
WSS:Web Socket Secure,WS是HTML5一种新的协议,它实现了浏览器与服务器全双工(full-duplex)通信,能更好地节省服务器资源和带宽并达到实时通讯,WSS是WS的加密版本。
ALB:函数计算负载均衡模块。
SLB:Server Load Balancer,服务器负载均衡,是指把用户访问的流量,通过负载均衡器,根据某种转发的策略,均匀的分发到后端多台服务器上。
API Server:函数计算网关模块。
Execution Engine(EEAgent):函数计算请求的执行引擎,在每个计算节点上的代理Agent,负责管理计算节点。
调度模块:函数计算请求调度模块,负责将请求路由到具体的实例上。
L4 Proxy:四层负载均衡。
L7 Proxy:七层负载均衡。
WebSocket:是一种在单个TCP连接上进行全双工通信的协议。
Sentinel:是面向分布式服务架构的高可用流量防护组件,主要以流量为切入点,从限流、流量整形、熔断降级、系统负载保护、热点防护等多个维度来帮助开发者保障微服务的稳定性。
RAM:身份认证模块。
Docker:是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何操作系统的机器上,也可以实现虚拟化。
HTTP/2:是由SPDY协议衍生而来,没有改动HTTP的应用语义。HTTP方法、状态代码、URI和标头字段等核心概念一如往常。不过,HTTP/2修改了数据格式化(分帧)以及在客户端与服务器间传输的方式。
SPDY:基于TCP的会话层协议,用以最小化网络延迟,提升网络速度,优化用户的网络使用体验。
gRPC Stream:基于HTTP/2的协议。
Rapis:是一个中间层,用来对接不同语言的Runtime(运行时)。
Stream transporter:协议转换器。
全托管的Server less计算平台能给用户带来更少的运维代价、更强的稳定性和更快的弹性能力,但是在Server less计算平台落地的过程中,遇到的一个很大的挑战是Server less计算平台如何给予开发者足够的安全感。让开发者们无负担地使用并信任Server less计算平台。
Server less计算平台的全托管初衷是为了减少开发者的使用和运维复杂度,但这一定程度上削减了用户(开发者)对自身服务(应用)的控制权力。比如在很多场景中,用户会想知道,如何能够掌握自己应用的实际运行情况;应用出现问题时如何能快速确认是自身问题还是云平台问题;如果是云平台的问题,如何能快速恢复服务,及时止损;这些问题的根本原因,都是用户对云平台无法做到完全的信任,这也进一步阻碍了用户迁移应用和扩展项目场景。
并且,目前的Server less计算平台没有透出实例的概念,如果不通过登录实例的方式进行调试,主要会存在以下问题:无法实时观察用户代码的执行环境的变化,即用户项目代码执行的时候,会依赖运行环境相关的配置,包含环境变量信息、操作系统配置等,由于在Server less计算平台,没有透出实例的概念,所以用户如果需要感知运行环境相关的信息,需要通过修改代码的形式来透出信息,操作十分繁琐;并且用户无法感知运行环境的变化,用户代码运行时,可能由于运行环境或者自身逻辑导致CPU、内存、网络等资源表现异常,Server less计算平台的用户无法及时感知运行环境的变化,更不能根据运行环境的变化做出更改。
同时,用户难以掌控自己项目代码的运行情况,Server less计算平台负责完全托管和调度用户的项目代码,用户失去了对自己项目代码的掌控。
基于此,在本说明书中,提供了一种实例处理方法,本说明书同时涉及一种实例处理系统,一种计算设备,以及一种计算机可读存储介质,在下面的实施例中逐一进行详细说明。
参见图1,图1示出了根据本说明书一个实施例提供的一种实例处理系统的具体应用场景示意图。
图1的实例处理系统包括第一客户端102、函数计算负载均衡模块104、函数计算网关模块106、调度模块108、第一实例服务器110、第二实例服务器112、第二客户端114;其中,函数计算网关模块106采用L4Proxy机制。
具体实施时,第一客户端102、函数计算负载均衡模块104、函数计算网关模块106、调度模块108、第一实例服务器110、第二实例服务器112、第二客户端114之间的交互步骤如下所述:
步骤一:第一客户端102向函数计算负载均衡模块104发起WSS InstanceExec调用(即加密的基于WebSocket通信协议的实例登录请求)。
步骤二:函数计算负载均衡模块104根据与其连接的多个函数计算网关模块106的当前负载情况,将该实例登录请求转发至合适的函数计算网关模块106。
步骤三:函数计算网关模块106调用Sentinel防护对该实例登录请求进行防护处理,当该实例登录请求具有DOS攻击的情况下,可以屏蔽该实例登录请求。
步骤四:函数计算网关模块106接收Sentinel防护返回的、针对该实例登录请求的处理结果。
步骤五:函数计算网关模块106在根据接收Sentinel防护返回的、针对该实例登录请求的处理结果,确定该实例登录请求安全的情况下,调用RAM对发送该实例登录请求的第一客户端102的身份进行验证。
步骤六:函数计算网关模块106在确定身份验证成功的情况下,根据该实例登录请求中携带的instance ID,向调度模块108发起指定instance ID(实例标识)的申请实例请求。
步骤七:调度模块108接收函数计算网关模块106发送的、携带有instance ID的申请实例请求,根据instanceID查找并向函数计算网关模块106返回对应的实例信息,其中,该实例信息包括但不限于该实例所在的Execution Engine(执行引擎)地址等。
其中,该Execution Engine地址对应第一实例服务器110或第二实例服务器112。
具体的,调度模块108在接收函数计算网关模块106发送的、携带有instance ID的申请实例请求,返回该instance ID对应的实例信息的同时,也会标记该实例的Exec(登录)请求,以实现对该实例的状态进行管理。例如Ldle(空闲)状态、Busy(忙碌,即实例正在对外提供服务,表示有登录到该实例的请求调度到这个实例上)状态、Dead(销毁,即没有用户的请求调度到这个实例上,这个实例已经用完被回收掉了)状态等。
步骤八:函数计算网关模块106根据调度模块108返回的Execution Engine地址,确定与第一实例服务器110或者第二实例服务器112建立websocket链接,并将该实例登录请求发送至Execution Engine地址对应的实例服务器的websocket server(根据websocket协议的服务)。
为了便于理解,以下均以Execution Engine地址对应第一实例服务器110为例,进行具体介绍。
步骤九:第一实例服务器110的websocket server,根据接收到的该实例登录请求中携带的实例名称,从内存中确定对应的实例,并在内存的Containers Map(容器组)中标记该实例(即标记容器当前的状态是解冻还是冻结),且对该实例执行包括UnFreeze(重新运行)等操作。
步骤十:第一实例服务器110的websocket server,调用实例所在的Docker容器的Exec API(登录接口),对接收的函数计算网关模块106发送的、第一客户端102的WebsocketStream流(基于Websocket协议的登录流)进行协议转换,实现第一客户端102和该容器建立起Exec Stream(登录流)。
同时,第一实例服务器110的ExecutionEngion管理了每个实例登录请求的Websocket Stream与容器Exec Stream的一一映射关系,并且负责这两条Stream中进行数据转换传输。即在进行数据传输时,通过图1中的Stream transporter实现websocket和spdy协议之间相互转换,实现一个七层代理功能。
步骤十一:实现第一客户端102和实例成功建立Websocket链接。
至此,管控流websocket链路已经建立成功,即用户登录实例成功,此时用户便可以在该链路上交互式执行命令。而函数计算网关模块106在此中的作用除了首次建立websocket实例登录请求时的一些动作,此后就单纯作为一个四层代理转发websocket链路上的数据。
步骤十二:第一客户端102开始在该链路上传递WSS信息。
而在链接超时或者用户提前断开链接时,第一实例服务器110的ExecutionEngion会探测链接断开并执行一些清理动作,例如执行实例Freeze(挂起)、返回计费信息等操作。
实际应用中,在管控流websocket链路建立成功后,用户则可以根据该链路登录实例,查看实例的运行环境,调试自身代码等。
此外,第二实例服务器112可以看做内部服务器,第一客户端102对其内部实例进行登录时,与第一实例服务器112中的实例登录步骤基本相同,区别仅在于内部websocketserver进行流协议转换时,调用的接口不同(因为实例所在的容器不同,所以其容器接口也不同)。
并且,在第二客户端114作为第二实例服务器112的内部用户时,第二客户端114则可以直接向第二实例服务器112发送实例登录请求,第二实例服务器112中的websocketserver会根据上述同样的操作步骤,实现第二客户端114与第二实例服务器112中实例的websocket链接;其中,该实例登录请求中可以直接携带有第二实例服务器112的ExecutionEngion地址。
本说明书实施例中,针对上述Server less计算平台存在的调试困难,用户缺少对自身服务的控制权,对平台的不信任等情况,本说明实施例提供的实例处理系统,在Serverless平台上透出“实例”的概念,用户可以登录实例,调试自身代码,并且拥有自身服务的完整控制权,提升用户使用体验。同时,本说明书实施例提供的实例处理系统本着多环境适用的设计原则,可以在多个实例服务器适用。
参见图2,图2示出了根据本说明书一个实施例提供的一种实例处理方法的流程图,所述实例处理方法应用于实例处理系统,所述系统包括路由模块、调度模块以及服务器,其中,所述方法的具体操作步骤如下所述:
步骤202:所述路由模块,在接收到客户端发送的实例登录请求的情况下,根据所述实例登录请求中携带的实例参数,向所述调度模块发送实例信息获取请求,接收所述调度模块,根据所述实例信息获取请求返回的实例信息,其中,所述实例信息中携带有所述实例对应的服务器IP地址,根据所述服务器IP地址与所述服务器建立链接,并向所述服务器发送所述实例登录请求。
其中,路由模块可以理解为上述实施例的函数计算网关模块106,调度模块可以理解为上述实施例的调度模块108,服务器可以理解为上述实施例的第一实例服务器110或第二实例服务器112,客户端可以理解为上述实施例的第一客户端102。
此外,实例登录请求可以理解为针对某个实例的登录请求,且实例登录请求中携带的实例参数包括但不限于实例名称、实例ID、函数名称等。
那么,在实例参数包括实例名称、实例ID、函数名称的情况下,所述路由模块,在接收到客户端发送的实例登录请求的情况下,根据所述实例登录请求中携带的实例参数,向所述调度模块发送实例信息获取请求;可以理解为,路由模块,在接收到客户端发送的实例登录请求的情况下,根据实例登录请求中携带的实例名称、实例ID、函数名称,向调度模块发送实例信息获取请求。
具体的,为了保证路由模块的负载均衡,避免某个路由模块处理的请求较多,负载量较大的情况,可以在该实例处理系统中添加负载均衡模块,处理所有客户端发送的请求,并将所有客户端发送的请求根据路由模块的当时负载量,分配到合适的路由模块中。具体实现方式如下所述:
所述实例处理系统,还包括负载均衡模块;
相应地,所述路由模块,在接收到客户端发送的实例登录请求的情况下,根据所述实例登录请求中携带的实例参数,向所述调度模块发送实例信息获取请求之前,还包括:
所述负载均衡模块,接收客户端发送的、根据目标通信协议生成的实例登录请求,并确定关联的路由模块;
根据所述关联的路由模块的当前负载状态,确定目标路由模块,并将所述实例登录请求发送至所述目标路由模块。
其中,负载均衡模块可以理解为上述实施例的函数计算负载均衡模块104;路由模块可以理解为一个前端机组,里面包含多个采用L4 Proxy机制的机器。
实际应用中,登录实例操作是一种交互的功能,支持实现交互功能的协议存在多种,例如websocket、HTTP/2、SPDY、gRPC Stream等协议。但是,由于在前端浏览器场景中,websocket协议是双向全双工通信较为标准的协议规范,并且若该实例登录请求基于全链路websocket协议实现,网关模块(即路由模块)仅需要作四层转发,需要关心链路以及传输的数据等操作,均由ExecutionEngine处理。本说明书实施例中,均以目标通信协议为websocket协议为例进行具体介绍。
具体的,客户端发送的实例登录请求均会先发送至负载均衡模块,负载均衡模块在接收到客户端发送的实例登录请求之后,根据路由模块的当前负载状态,将该实例登录请求发送至合适的路由模块中。
本说明书实施例中,为了保证路由模块的负载均衡,提高实例处理系统的处理能力以及吞吐量,可以在实例处理系统的路由模块之前设置负载均衡模块,那么客户端在发送实例登录请求后,会先经过负载均衡模块,负载均衡模块会根据路由模块的当前负载情况,为其分配合理的路由模块,以提高网络的灵活性和可用性。并且该实例登录请求采用websocket协议生成,后续路由模块仅可采用L4 Proxy机制,即可实现整条实例登录链路的打通,节省处理消耗。此外,为了更好的节省服务器资源和带宽,并达到实时通讯的目的,可以采用WSS实现该实例登录请求的传输。
而路由模块在接收到负载均衡模块发送的、客户端的实例登录请求之后,为了保证该实例登录请求的安全性,可以调用流量防护模块对该实例登录请求的安全性进行验证。具体实现方式如下所述:
所述根据所述实例登录请求中携带的实例参数,向所述调度模块发送实例信息获取请求之前,还包括:
所述路由模块,调用流量防护模块的接口,根据所述流量防护模块对所述实例登录请求进行安全验证。
其中,流量防护模块包括但不限于上述实施例的Sentinel防护模块。
具体实施时,路由模块在接收到负载均衡模块发送的、客户端的实例登录请求之后,调用Sentinel防护模块对该实例登录请求进行安全验证,以避免该实例登录请求中携带有DOS攻击等安全隐患。
此外,为了进一步的保证该实例登录请求的安全性,也可以从发送该实例登录请求的客户端维度进行验证,从而进一步的确定该实例登录请求的安全性。具体实现方式如下所述:
所述根据所述实例登录请求中携带的实例参数,向所述调度模块发送实例信息获取请求之前,还包括:
所述路由模块,调用身份验证模块的接口,根据所述身份验证模块对发送所述实例登录请求的客户端进行安全验证。
其中,身份验证模块可以理解为上述实施例的RAM。
本说明书实施例中,路由模块在接收到负载均衡模块发送的、客户端的实例登录请求之后,调用Sentinel防护模块对该实例登录请求进行安全验证;在该安全验证通过后,再调用RAM模块的接口,通过RAM的身份验证功能对发送该实例登录请求的客户端的身份进行验证,从而进一步的确认该实例登录请求的安全性,避免网络攻击。
在进行了上述两次安全验证之后,路由模块根据该实例登录请求中携带的实例参数,向调度模块发送实例信息获取请求。
而调度模块在接收到该实例信息获取请求之后,则会根据该实例信息获取请求中携带的实例参数(如实例ID)确定该实例ID对应的服务器IP地址,再将该服务器IP地址反馈给路由模块,又路由模块实现与服务器进行链接的建立。具体实现方式如下所述:
所述向所述调度模块发送实例信息获取请求之后,还包括:
所述调度模块,根据接收的所述实例信息获取请求中携带的实例参数,确定所述实例对应的实例信息;
标记所述实例的登录状态,并将所述实例信息返回至所述路由模块。
其中,实例信息包括但不限于该实例对应的服务器IP地址。
具体的,调度模块在接收到路由模块发送的实例信息获取请求之后,会根据该实例信息获取请求中携带的实例ID,获取与该实例ID对应的服务器IP地址,并将该服务器IP地址返回至路由模块;同时,为了避免在登录实例的情况下,实例被调用后删除,调度模块在将与该实例ID对应的服务器IP地址返回给路由模块的同时,会标记该实例的登录状态,例如将实例的登录状态标记为Busy状态。
参见图3,图3示出了根据本说明书一个实施例提供的一种实例处理方法中实例的状态示意图。
图3中包括实例的三种状态,分别为Ldle(空闲)状态、Busy(忙碌,即实例正在对外提供服务,表示有登录到该实例的请求调度到这个实例上)状态、Dead(销毁,即没有用户的请求调度到这个实例上,这个实例已经用完被回收掉了)状态。
实际应用中,若某个实例在当前没有任何函数调用以及登录调用,已经被回收的情况下,则调度模块可以将其状态设置为Dead状态;若实例在当前不存在函数调用和登录调用,但是未被销毁,则调度模块可以将其状态设置为Ldle状态;若该实例在当前存在登录调用或函数调用,则调度模块可以将其状态设置为Busy状态。
具体的,Busy状态是指实例正在处理用户请求,如果用户函数并发度为1,此刻可以处理用户登录实例请求,但是没有办法处理用户的函数调用请求;若函数并发度为10,此时正在处理的用户的函数调用请求有5个,那么此刻,该实例容器还可以处理用户的函数调用请求以及登录实例请求,即使正在处理的用户的函数调用请求有10个,该实例容器也是可以处理登录实例请求,即登录实例请求不占用并发度。
具体实施时,调度模块在将与实例登录请求中的实例对应的服务器IP地址,返回至路由模块之后,路由模块则根据该服务器IP地址与对应的服务器建立链接,并向该服务器发送实例登录请求,以便在该服务器中找到该实例登录请求中的实例,并与其建立登录链接。
具体的,路由模块到服务器通过四层代理的方式建立链接,路由模块在转发每条websocket消息的时候不需要进行消息的编解码,使得在路由模块的性能消耗也大幅降低,具体实现方式如下所述:
所述根据所述服务器IP地址与所述服务器建立链接,并向所述服务器发送所述实例登录请求,包括:
所述路由模块,根据所述服务器IP地址,通过四层代理与所述服务器建立链接,并向所述服务器发送所述实例登录请求。
其中,四层代理可以理解为上述的L4 Proxy。
步骤204:所述服务器,根据所述实例登录请求中携带的实例参数,确定所述实例对应的目标容器,并建立所述目标容器中实例与所述客户端之间的登录链路。
其中,实例登录请求中携带有实例参数,如实例名称。
具体的,服务器在接收到该实例登录请求之后,根据该实例登录请求中携带的实例名称,查找到该实例对应的目标容器,并建立该目标容器中实例与该客户端之间的登录链路,实现用户针对实例的登录。
而在实例登录之后,用户即可在实例中调试自身项目代码,并且拥有自身服务的完整控制权。具体实现方式如下所述:
所述方法应用于Server less平台的实例处理系统;
相应地,所述建立所述目标容器中实例与所述客户端之间的登录链路之后,还包括:
确定登录所述实例,以及确定所述实例的当前执行环境;
根据所述实例,对所述当前执行环境的项目代码进行操作。
其中,当前执行环境可以为任意语言的执行环境。
实际应用中,用户的项目代码执行的时候,会依赖执行环境相关的配置,例如环境变量信息、操作系统配置信息等;在其他平台没有透出实例的概率,用户若需要感知执行环境相关的信息,需要修改代码的形式来透出信息,操作十分繁琐,并且用户也无法感知执行环境的变化,更不能掌控自身项目代码的运行情况;而本说明书实施例中,用户则可以登录实例,确定自身的项目代码在实例的当前执行环境,并可根据该实例,对当前执行环境的项目代码进行调试、编辑等操作,提升用户体验。
即当登录实例后,用户可以根据该实例实时观察自身代码的执行环境的变化,可以修改自身代码的执行环境,也可以根据执行环境的变化做出及时响应;具体的,用户项目代码执行的时候,会依赖运行环境相关的配置,包含环境变量信息、操作系统配置等,本说明书实施例透出实例的概念,实例在不同的环境对应不同的实体,可以是docker容器,也可以是安全容器;所以用户可以登录实例感知环境相关的信息,并且可以更具自己的需求,对项目代码运行环境做出合适的变更;此外,用户可以感知运行环境的变化,用户代码运行时,可能由于运行环境或者自身逻辑导致cpu、内存、网络等资源表现异常,本说明书实施例中,用户可以及时感知运行环境的变化,并且能够根据环境变化,及时对运行环境进行调整;并且用户可以根据运行环境的变化来对自己的逻辑代码进行微调,以实现对项目代码的优化。同时,用户可以掌控自己项目代码的运行情况,通过登录到实例中,完全掌握项目代码的运行情况,包括进程状态,提高资源利用率等。
具体实施时,由于服务器中目标容器采用的网络协议,与客户端采用的网络协议不同,服务器在接收到该实例登录请求后,无法识别该实例登录请求中的信息,进而无法根据该实例登录请求中的实例名称确定该实例对应的目标容器。为了解决此问题,服务器中会设置一个目标通信协议服务,该服务可以将该实例登录请求进行协议转换,以识别出该实例登录请求中的实例名称,从而根据该实例名称确定该实例对应的目标容器,以实现目标容器中实例与该客户端之间的登录链路的建立。具体实现方式如下所述:
所述服务器,根据所述实例登录请求中携带的实例参数,确定所述实例对应的目标容器,并建立所述目标容器中实例与所述客户端之间的登录链路,包括:
所述服务器的目标通信协议服务,接收所述实例登录请求,根据所述实例登录请求中携带的实例参数,确定所述实例对应的目标容器;
调用所述目标容器对应的容器接口,建立所述目标容器中实例与所述客户端之间的登录链路。
其中,目标通信协议服务可以理解为上述实施例的websocket server。
实际应用中,服务器的websocket server接收该实例登录请求后,根据该实例登录请求中携带的实例名称,确定该实例对应的目标容器,若目标容器当前未运行,则在该目标容器中重新运行该实例,若该目标容器当前正在运行中,则可以直接确定该目标容器;同时调用目标容器对应的容器接口,建立目标容器中实例与客户端之间的登录链路。
此外,登录实例需要支持用户自定义stdin(是否支持用户输入数据),stdout(是否支持向用户返回实例的标准输出),stderr(是否向用户返回标准的错误输出),TTY(是否向实例提供终端设备)等参数。InstanceExec API在同一个websocket链接上对输出流的stdout和stderr进行了区分:在每次返回的消息体部头字节,会使用一个字节位表示本次传输的消息类型,用户可以通过头字节是1或者2来区分stdout和stderr流,或者是服务端错误serverErr。
本说明书实施例提供的该实例处理方法通过在Server less平台上透出实例的概念,通过路由模块、调度模块以及服务器等使得用户可以登录实例,调试自身代码,并且拥有自身应用的完整控制权,提升用户对Server less平台的信任感以及安全感。
此外,本说明书实施例中,登录实例请求的特殊之处在于它相当于是一次不占用并发度的调用实例函数请求。具体的,不能占用并发度是因为登录实例对用户来说是在运维管控链路,所以登录实例不应当阻塞或者影响数据链路的调用实例函数请求。比如在单实例请求的情况下,需要允许调用实例函数和登录实例同时执行。并且登录实例操作的本质就是在容器上新开一个登录进程,它会占用容器的计算、内存和带宽等资源,并可能对实例上正在执行的调用实例函数的请求造成影响,对于函数计算来说,这和一次调用实例函数操作并没有任何区别。在实例登录请求执行前需要对实例执行unFreeze操作对容器进行“解冻”;当实例登录请求结束后需要对实例执行Freeze进行“冻结”,确保实例在没有任何请求执行的时候不占用实例的资源。如果实例上没有实例登录请求,那么实例的状态仍然被看做是活跃状态,函数计算也同样对实例登录的活跃实例收费。
而为了保证调用实例函数与实例登录有一致的表现,在总体链路的实现上,保证了调用实例函数的链路与实例登录的链路主体逻辑保持一致,但是在各个模块,又增加了对实例登录的特殊处理逻辑。
具体的,调用实例函数的链路建立的实现方式如下所述:
所述方法,还包括:
所述路由模块,在接收到客户端发送的实例函数调用请求的情况下,根据所述实例函数调用请求中携带的实例参数,向所述调度模块发送实例信息获取请求,
接收所述调度模块,根据所述实例信息获取请求返回的实例信息,其中,所述实例信息中携带有所述实例对应的服务器IP地址,
根据所述服务器IP地址与所述服务器建立链接,并向所述服务器发送所述实例函数调用请求;
所述服务器,根据所述实例函数调用请求中携带的实例参数确定所述实例,将所述实例函数调用请求转发所述实例,并向所述客户端返回所述实例执行所述实例函数调用请求的调用结果。
并且,每个实例可被调用数量与实例的并发度相关,若当前实例函数调用请求大于实例的并发度,那么该实例则不对该实例函数调用请求进行处理。具体实现方式如下所述:
所述向所述调度模块发送实例信息获取请求之后,还包括:
所述调度模块,根据接收的所述实例信息获取请求中携带的实例参数,确定所述实例的并发度以及当前被调用数量;
在所述当前被调用数量小于所述并发度的情况下,根据所述实例信息获取请求向所述路由模块返回实例信息。
具体的,调度模块,在接收到路由模块发送的实例信息获取请求后,根据接收的该实例信息获取请求中携带的实例参数确定该实例,获取该实例的并发度以及当前被调用数量;若当前被调用数量小于该并发度的情况下,则确定可以处理该实例函数调用请求,此时,则可以根据该实例信息获取请求向路由模块返回实例信息;而在该当前被调用数量等于该并发度的情况下,则无法处理该实例函数调用请求。
但是,本说明书实施例中,对于实例登录请求而言,并不受该实例并发度的限制,及时在该实例的当前被调用数量等于该并发度,也可以继续进行实例登录请求的处理。
具体实施时,API-Server先向调度模块申请一个实例执行具体的请求;API-Server和这个实例所在的Execution Engion建立链接,发送InvokeFunction请求;Execution Engion将InvokeFunction请求转发给具体的函数实例,执行请求结束后返回。
登录链路基本一致,可实现链路复用。区别仅在于,实例函数调用链路,是API-Server到Execution Engion是通过grpc协议,并且Execution Engion通过HTTP协议与CA交互;而实例登录链路是API-Server到Execution Engion是通过四层代理,ExecutionEngion通过docker api(容器接口)与实例容器进行交互。
因此,在确定了实例函数调用链路的情况下,在接收到实例登录请求的情况下,可以服用该实例函数调用链路。具体实现方式如下所述:
所述向所述客户端返回所述实例执行所述实例函数调用请求的调用结果之后,还包括:
所述路由模块,获取与所述调度模块以及所述服务器连接,执行所述实例函数调用请求的实例函数调用链路;
在接收到所述客户端发送的实例登录请求的情况下,复用所述实例函数调用链路。
实际应用中,进行实例函数调用链路的复用,仅是复用实例函数调用链路的主体逻辑,具体的链路实现方式存在区别。
此外,在各个模块对实例登录的特殊处理逻辑如下所述:
在调度模块,每次实例登录链接建立前,实例处理系统需要先通知调度模块,让调度模块知道在某指定实例上即将执行实例登录,在该实例登录的websocket链接断开时会再通知调度模块本次请求结束,继而调度模块会Idle该实例。
调度模块由此可以完成实例状态的维护,保证登录实例和调用实例函数一致的体验:指定一个Idle或者Busy的实例执行登录实例操作,有登录实例执行时,该实例状态标记为Busy;登录实例执行结果后,如果该实例上没有其他请求,则将该实例状态标记为Idle;而在该实例上既没有调用实例函数的请求,也没有登录实例的请求时,闲置一段时间后就会被回收销毁,此时则将该实例状态标记为Dead。
在网关模块(即路由模块),实例登录中网关模块也仅作为一个四层转发代理,因为路由模块在使用上对用户是透明的,没必要知道链路上传输的具体数据,仅需要维护一条可靠的TCP链接;同时,使用四层代理模式,网关模块在转发每条websocket消息的时候不需要进行消息的编解码,使得在网关模块的性能消耗也大幅降低。
参见图4,图4示出了根据本说明书一个实施例提供的一种实例处理方法中四层转发代理以及七层转发代理的结构示意图。
图4中a部分为四层转发代理的结构示意图,图4中b部分为七层转发代理的结构示意图。
通过图4中a部分进行数据传输时,客户端在WebSocket握手的过程中,将websocket握手信息封装成HTTP请求,然后将HTTP请求封装成TLS数据包,再封装成TCP数据包传输给api-server(即前端机),api-server解析TCP数据包,然后对TLS数据包解密之后,将解密之后的数据封装成TCP数据包传给EEAgent(即执行引擎),EEAgent解析TCP数据包得到HTTP数据包,然后再解析HTTP数据包中的websocket握手请求。
客户端在传输数据的过程中,将数据封装到websocket协议中,然后将websocket数据包封装成TLS数据包,再封装成TCP数据包传输给api-server,api-server解析TCP数据包,然后对TLS数据包解密之后,将解密之后的数据封装成TCP数据包传给EEAgent,EEAgent解析TCP数据,得到websocket数据。
通过图4中b部分的WebSocket握手的过程以及传输数据的过程,与a部分基本一致,仅在api-server中多上升了两个WS层。
在执行引擎,为了实现真正的按需计费,在实例上没有请求执行的时候,会对实例进行冻结(Pause),新的请求到来的时候会进行解冻(Unpause)。
在函数计算平台,执行引擎会直接操作containerd(容器运行时)接口,每次请求的调用链路都操作containerd接口会带来很大的延迟和性能问题,在一些环境中使用安全容器产品隔离不同的函数实例,每个安全容器对应一个KVM虚机(rund进程),ExcutionEngine直接操作KVM虚拟机的Freezer,会大大提高性能。
这样的实现,带给实例登录的问题是,维护实例的请求状态与执行冻结和解冻的动作不在一起,不会被同一个锁保护,在执行登录请求时会带来时序问题:
例如在T0时刻发起了调用请求0,此刻,通过执行引擎内存的request map发现没有登录请求,则发送给rapis(垫片)的invokeFunction with DisablePause=false,即函数调用结束的时候,实例不会暂停;
在T1时刻发起了调用请求1,并且同时在执行登录请求,此刻通过执行引擎内存的request map发现没有登录请求,则发送给rapis的invokeFunction with DisablePause=true,即函数调用结束的时候,实例暂停;
在T2时刻R1结束不会Puase;在T3时刻R0结束,会执行Pause,由此会中断Exec请求。
为了解决上述问题,执行引擎里面的FCRuntime层的Rapis组件会提供一个单独的接口,并且会在Rapis中维护一个状态变量,表示当前请求结束时,能否Pause实例。每次登录接口前,会先调用该接口设置禁止Rapis进程调用Pause,结束后则设置回能够进行Pause动作。
此外,若客户端为服务器的内部用户的情况下,客户端则可以直接发送实例登录请求,进行实例登录。具体实现方式如下所述:
所述服务器,接收客户端发送的实例登录请求;
根据所述实例登录请求中携带的实例参数,确定所述实例对应的目标容器,并建立所述目标容器中实例与所述客户端之间的登录链路。
具体的,服务器可以直接接收客户端发送的实例登录请求,并根据该实例登录请求中携带的实例参数,确定实例对应的目标容器,从而建立目标容器中实例与客户端之间的登录链路。
实际应用中,服务器可以直接接收客户端发送的实例登录请求,并根据该实例登录请求中携带的实例参数,确定实例对应的目标容器,从而建立目标容器中实例与客户端之间的登录链路的具体实现方式,与上述实施例中相同,在此不再赘述。
此外,本说明书实施例提供的实例处理方法中,不仅可以登录实例,还可以在实例中执行命令,比如实例登录后,可以在实例中执行日志查看命令、文件查看命令等;即实例登录之后,即可在实例执行cat命令查看文本,登录实例比较适合一次需要执行多条命令的场景,即在实例登录的整个生命周期均可以执行各种命令。
与上述方法实施例相对应,本说明书还提供了实例处理系统实施例,图5示出了本说明书一个实施例提供的一种实例处理系统的结构示意图。如图5所示,该系统包括路由模块502、调度模块504以及服务器506:
所述路由模块502,被配置为在接收到客户端发送的实例登录请求的情况下,根据所述实例登录请求中携带的实例参数,向所述调度模块504发送实例信息获取请求,
接收所述调度模块504,根据所述实例信息获取请求返回的实例信息,其中,所述实例信息中携带有所述实例对应的服务器IP地址,
根据所述服务器IP地址与所述服务器506建立链接,并向所述服务器506发送所述实例登录请求;
所述服务器506,被配置为根据所述实例登录请求中携带的实例参数,确定所述实例对应的目标容器,并建立所述目标容器中实例与所述客户端之间的登录链路。
可选地,所述实例处理系统,还包括负载均衡模块;
相应地,所述负载均衡模块,接收客户端发送的、根据目标通信协议生成的实例登录请求,并确定关联的路由模块;
根据所述关联的路由模块的当前负载状态,确定目标路由模块,并将所述实例登录请求发送至所述目标路由模块。
可选地,所述根据所述实例登录请求中携带的实例参数,向所述调度模块504发送实例信息获取请求之前,还包括:
所述路由模块502,调用流量防护模块的接口,根据所述流量防护模块对所述实例登录请求进行安全验证。
可选地,所述路由模块502,调用身份验证模块的接口,根据所述身份验证模块对发送所述实例登录请求的客户端进行安全验证。
可选地,所述调度模块504,根据接收的所述实例信息获取请求中携带的实例参数,确定所述实例对应的实例信息;
标记所述实例的登录状态,并将所述实例信息返回至所述路由模块502。
可选地,所述路由模块502,根据所述服务器IP地址,通过四层代理与所述服务器建立链接,并向所述服务器发送所述实例登录请求。
可选地,所述服务器506的目标通信协议服务,接收所述实例登录请求,根据所述实例登录请求中携带的实例参数,确定所述实例对应的目标容器;
调用所述目标容器对应的容器接口,建立所述目标容器中实例与所述客户端之间的登录链路。
可选地,所述路由模块502,在接收到客户端发送的实例函数调用请求的情况下,根据所述实例函数调用请求中携带的实例参数,向所述调度模块504发送实例信息获取请求,
接收所述调度模块504,根据所述实例信息获取请求返回的实例信息,其中,所述实例信息中携带有所述实例对应的服务器IP地址,
根据所述服务器IP地址与所述服务器506建立链接,并向所述服务器506发送所述实例函数调用请求;
所述服务器506,根据所述实例函数调用请求中携带的实例参数确定所述实例,将所述实例函数调用请求转发所述实例,并向所述客户端返回所述实例执行所述实例函数调用请求的调用结果。
可选地,所述调度模块504,根据接收的所述实例信息获取请求中携带的实例参数,确定所述实例的并发度以及当前被调用数量;
在所述当前被调用数量小于所述并发度的情况下,根据所述实例信息获取请求向所述路由模块返回实例信息。
可选地,所述路由模块502,获取与所述调度模块以及所述服务器连接,执行所述实例函数调用请求的实例函数调用链路;
在接收到所述客户端发送的实例登录请求的情况下,复用所述实例函数调用链路。
可选地,所述服务器506,接收客户端发送的实例登录请求;
根据所述实例登录请求中携带的实例参数,确定所述实例对应的目标容器,并建立所述目标容器中实例与所述客户端之间的登录链路。
可选地,所述方法应用于Server less平台的实例处理系统;
相应地,所述服务器506,确定登录所述实例,以及确定所述实例的当前执行环境;
根据所述实例,对所述当前执行环境的项目代码进行操作。
本说明书实施例提供的该实例处理系统通过在Server less平台上透出实例的概念,通过路由模块、调度模块以及服务器等使得用户可以登录实例,调试自身代码,并且拥有自身应用的完整控制权,提升用户对Server less平台的信任感以及安全感。
上述为本实施例的一种实例处理系统的示意性方案。需要说明的是,该实例处理系统的技术方案与上述的实例处理方法的技术方案属于同一构思,实例处理系统的技术方案未详细描述的细节内容,均可以参见上述实例处理方法的技术方案的描述。
图6示出了根据本说明书一个实施例提供的一种计算设备600的结构框图。该计算设备600的部件包括但不限于存储器610和处理器620。处理器620与存储器610通过总线630相连接,数据库650用于保存数据。
计算设备600还包括接入设备640,接入设备640使得计算设备600能够经由一个或多个网络660通信。这些网络的示例包括公用交换电话网(PSTN)、局域网(LAN)、广域网(WAN)、个域网(PAN)或诸如因特网的通信网络的组合。接入设备640可以包括有线或无线的任何类型的网络接口(例如,网络接口卡(NIC))中的一个或多个,诸如IEEE802.11无线局域网(WLAN)无线接口、全球微波互联接入(Wi-MAX)接口、以太网接口、通用串行总线(USB)接口、蜂窝网络接口、蓝牙接口、近场通信(NFC)接口,等等。
在本说明书的一个实施例中,计算设备600的上述部件以及图6中未示出的其他部件也可以彼此相连接,例如通过总线。应当理解,图6所示的计算设备结构框图仅仅是出于示例的目的,而不是对本说明书范围的限制。本领域技术人员可以根据需要,增添或替换其他部件。
计算设备600可以是任何类型的静止或移动计算设备,包括移动计算机或移动计算设备(例如,平板计算机、个人数字助理、膝上型计算机、笔记本计算机、上网本等)、移动电话(例如,智能手机)、可佩戴的计算设备(例如,智能手表、智能眼镜等)或其他类型的移动设备,或者诸如台式计算机或PC的静止计算设备。计算设备600还可以是移动式或静止式的服务器。
其中,处理器620用于执行如下计算机可执行指令,该计算机可执行指令被处理器执行时实现上述实例处理方法的步骤。
上述为本实施例的一种计算设备的示意性方案。需要说明的是,该计算设备的技术方案与上述的实例处理方法的技术方案属于同一构思,计算设备的技术方案未详细描述的细节内容,均可以参见上述实例处理方法的技术方案的描述。
本说明书一实施例还提供一种计算机可读存储介质,其存储有计算机可执行指令,该计算机可执行指令被处理器执行时实现上述实例处理方法的步骤。
上述为本实施例的一种计算机可读存储介质的示意性方案。需要说明的是,该存储介质的技术方案与上述的实例处理方法的技术方案属于同一构思,存储介质的技术方案未详细描述的细节内容,均可以参见上述实例处理方法的技术方案的描述。
本说明书一实施例还提供一种计算机程序,其中,当所述计算机程序在计算机中执行时,令计算机执行上述实例处理方法的步骤。
上述为本实施例的一种计算机程序的示意性方案。需要说明的是,该计算机程序的技术方案与上述的实例处理方法的技术方案属于同一构思,计算机程序的技术方案未详细描述的细节内容,均可以参见上述实例处理方法的技术方案的描述。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
所述计算机指令包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本说明书实施例并不受所描述的动作顺序的限制,因为依据本说明书实施例,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本说明书实施例所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。
以上公开的本说明书优选实施例只是用于帮助阐述本说明书。可选实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式。显然,根据本说明书实施例的内容,可作很多的修改和变化。本说明书选取并具体描述这些实施例,是为了更好地解释本说明书实施例的原理和实际应用,从而使所属技术领域技术人员能很好地理解和利用本说明书。本说明书仅受权利要求书及其全部范围和等效物的限制。
Claims (14)
1.一种实例处理方法,应用于实例处理系统,所述系统包括路由模块、调度模块以及服务器,其中,所述方法包括:
所述路由模块,在接收到客户端发送的实例登录请求的情况下,根据所述实例登录请求中携带的实例参数,向所述调度模块发送实例信息获取请求,
接收所述调度模块,根据所述实例信息获取请求返回的实例信息,其中,所述实例信息中携带有所述实例对应的服务器IP地址,
根据所述服务器I P地址与所述服务器建立链接,并向所述服务器发送所述实例登录请求;
所述服务器,根据所述实例登录请求中携带的实例参数,确定所述实例对应的目标容器,并建立所述目标容器中实例与所述客户端之间的登录链路。
2.根据权利要求1所述的实例处理方法,所述实例处理系统,还包括负载均衡模块;
相应地,所述路由模块,在接收到客户端发送的实例登录请求的情况下,根据所述实例登录请求中携带的实例参数,向所述调度模块发送实例信息获取请求之前,还包括:
所述负载均衡模块,接收客户端发送的、根据目标通信协议生成的实例登录请求,并确定关联的路由模块;
根据所述关联的路由模块的当前负载状态,确定目标路由模块,并将所述实例登录请求发送至所述目标路由模块。
3.根据权利要求1所述的实例处理方法,所述根据所述实例登录请求中携带的实例参数,向所述调度模块发送实例信息获取请求之前,还包括:
所述路由模块,调用流量防护模块的接口,根据所述流量防护模块对所述实例登录请求进行安全验证。
4.根据权利要求1所述的实例处理方法,所述根据所述实例登录请求中携带的实例参数,向所述调度模块发送实例信息获取请求之前,还包括:
所述路由模块,调用身份验证模块的接口,根据所述身份验证模块对发送所述实例登录请求的客户端进行安全验证。
5.根据权利要求1所述的实例处理方法,所述向所述调度模块发送实例信息获取请求之后,还包括:
所述调度模块,根据接收的所述实例信息获取请求中携带的实例参数,确定所述实例对应的实例信息;
标记所述实例的登录状态,并将所述实例信息返回至所述路由模块。
6.根据权利要求1所述的实例处理方法,所述根据所述服务器IP地址与所述服务器建立链接,并向所述服务器发送所述实例登录请求,包括:
所述路由模块,根据所述服务器IP地址,通过四层代理与所述服务器建立链接,并向所述服务器发送所述实例登录请求。
7.根据权利要求1或6所述的实例处理方法,所述服务器,根据所述实例登录请求中携带的实例参数,确定所述实例对应的目标容器,并建立所述目标容器中实例与所述客户端之间的登录链路,包括:
所述服务器的目标通信协议服务,接收所述实例登录请求,根据所述实例登录请求中携带的实例参数,确定所述实例对应的目标容器;
调用所述目标容器对应的容器接口,建立所述目标容器中实例与所述客户端之间的登录链路。
8.根据权利要求1所述的实例处理方法,所述方法,还包括:
所述路由模块,在接收到客户端发送的实例函数调用请求的情况下,根据所述实例函数调用请求中携带的实例参数,向所述调度模块发送实例信息获取请求,
接收所述调度模块,根据所述实例信息获取请求返回的实例信息,其中,所述实例信息中携带有所述实例对应的服务器IP地址,
根据所述服务器IP地址与所述服务器建立链接,并向所述服务器发送所述实例函数调用请求;
所述服务器,根据所述实例函数调用请求中携带的实例参数确定所述实例,将所述实例函数调用请求转发所述实例,并向所述客户端返回所述实例执行所述实例函数调用请求的调用结果。
9.根据权利要求8所述的实例处理方法,所述向所述调度模块发送实例信息获取请求之后,还包括:
所述调度模块,根据接收的所述实例信息获取请求中携带的实例参数,确定所述实例的并发度以及当前被调用数量;
在所述当前被调用数量小于所述并发度的情况下,根据所述实例信息获取请求向所述路由模块返回实例信息。
10.根据权利要求8所述的实例处理方法,所述向所述客户端返回所述实例执行所述实例函数调用请求的调用结果之后,还包括:
所述路由模块,获取与所述调度模块以及所述服务器连接,执行所述实例函数调用请求的实例函数调用链路;
在接收到所述客户端发送的实例登录请求的情况下,复用所述实例函数调用链路。
11.根据权利要求1所述的实例处理方法,所述方法,还包括:
所述服务器,接收客户端发送的实例登录请求;
根据所述实例登录请求中携带的实例参数,确定所述实例对应的目标容器,并建立所述目标容器中实例与所述客户端之间的登录链路。
12.根据权利要求1所述的实例处理方法,所述方法应用于Serverless平台的实例处理系统;
相应地,所述建立所述目标容器中实例与所述客户端之间的登录链路之后,还包括:
所述服务器,确定登录所述实例,以及确定所述实例的当前执行环境;
根据所述实例,对所述当前执行环境的项目代码进行操作。
13.一种实例处理系统,包括路由模块、调度模块以及服务器,其中,
所述路由模块,被配置为在接收到客户端发送的实例登录请求的情况下,根据所述实例登录请求中携带的实例参数,向所述调度模块发送实例信息获取请求,
接收所述调度模块,根据所述实例信息获取请求返回的实例信息,其中,所述实例信息中携带有所述实例对应的服务器IP地址,
根据所述服务器I P地址与所述服务器建立链接,并向所述服务器发送所述实例登录请求;
所述服务器,被配置为根据所述实例登录请求中携带的实例参数,确定所述实例对应的目标容器,并建立所述目标容器中实例与所述客户端之间的登录链路。
14.一种计算设备,包括:
存储器和处理器;
所述存储器用于存储计算机可执行指令,所述处理器用于执行所述计算机可执行指令,该计算机可执行指令被处理器执行时实现权利要求1至11任意一项所述实例处理方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210301617.1A CN114650279B (zh) | 2022-03-25 | 2022-03-25 | 实例处理方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210301617.1A CN114650279B (zh) | 2022-03-25 | 2022-03-25 | 实例处理方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114650279A CN114650279A (zh) | 2022-06-21 |
CN114650279B true CN114650279B (zh) | 2023-10-03 |
Family
ID=81995388
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210301617.1A Active CN114650279B (zh) | 2022-03-25 | 2022-03-25 | 实例处理方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114650279B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110247897A (zh) * | 2019-05-20 | 2019-09-17 | 中国平安财产保险股份有限公司 | 一种系统登录方法、设备、网关及计算机可读存储介质 |
CN110612705A (zh) * | 2017-11-08 | 2019-12-24 | 华为技术有限公司 | 一种无服务器架构下业务部署的方法和函数管理平台 |
US11038847B1 (en) * | 2018-06-05 | 2021-06-15 | Amazon Technologies, Inc. | Facilitation of secure communications between a client and computing instance |
CN113296750A (zh) * | 2021-05-12 | 2021-08-24 | 阿里巴巴新加坡控股有限公司 | 函数创建方法及系统、函数调用方法及系统 |
CN113595968A (zh) * | 2020-04-30 | 2021-11-02 | 华为技术有限公司 | 一种基于云应用实例的登录方法、系统及相关设备 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9032488B2 (en) * | 2012-04-17 | 2015-05-12 | Salesforce.Com, Inc. | Cross instance user authentication architecture |
WO2019068033A1 (en) * | 2017-09-30 | 2019-04-04 | Oracle International Corporation | OPERATION OF MICROSERVICE CONTAINERS TO PROVIDE TENANT INSULATION IN A MULTI-TENANT API BRIDGE |
US11044173B1 (en) * | 2020-01-13 | 2021-06-22 | Cisco Technology, Inc. | Management of serverless function deployments in computing networks |
-
2022
- 2022-03-25 CN CN202210301617.1A patent/CN114650279B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110612705A (zh) * | 2017-11-08 | 2019-12-24 | 华为技术有限公司 | 一种无服务器架构下业务部署的方法和函数管理平台 |
US11038847B1 (en) * | 2018-06-05 | 2021-06-15 | Amazon Technologies, Inc. | Facilitation of secure communications between a client and computing instance |
CN110247897A (zh) * | 2019-05-20 | 2019-09-17 | 中国平安财产保险股份有限公司 | 一种系统登录方法、设备、网关及计算机可读存储介质 |
CN113595968A (zh) * | 2020-04-30 | 2021-11-02 | 华为技术有限公司 | 一种基于云应用实例的登录方法、系统及相关设备 |
WO2021219042A1 (zh) * | 2020-04-30 | 2021-11-04 | 华为技术有限公司 | 基于云应用实例的支付方法、系统及相关设备 |
CN113296750A (zh) * | 2021-05-12 | 2021-08-24 | 阿里巴巴新加坡控股有限公司 | 函数创建方法及系统、函数调用方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN114650279A (zh) | 2022-06-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9794304B2 (en) | Enterprise client-server system and methods of providing web application support through distributed emulation of websocket communications | |
US10868767B2 (en) | Data transmission method and apparatus in optoelectronic hybrid network | |
CN108270732B (zh) | 一种流媒体处理方法及系统 | |
CN106034084B (zh) | 一种数据传输方法及装置 | |
US10999405B2 (en) | Method for processing access requests and web browser | |
CN102638582B (zh) | 数据通信方法及通信端 | |
US20230291808A1 (en) | Data processing method and apparatus, device and medium | |
CN112631788B (zh) | 数据传输方法及数据传输服务器 | |
CN107528891B (zh) | 一种基于WebSocket的自动集群方法及其系统 | |
CN109547162B (zh) | 基于两套单向边界的数据通信方法 | |
CN110708338A (zh) | 一种基于三层网络架构的内外网数据交互系统及其方法 | |
CN113568711B (zh) | 一种K8S中使用的基于eBPF架构的负载均衡方法及装置 | |
US11843642B1 (en) | Serverless signaling in peer-to-peer session initialization | |
WO2023151264A1 (zh) | 负载均衡方法、装置、节点及存储介质 | |
CN106464596A (zh) | 开放流通信方法、系统、控制器和业务网关 | |
CN112929210B (zh) | 在WebFlux框架搭建的网关路由应用插件的方法、系统及其应用 | |
CN103002049A (zh) | 一种大数据量数据的网络传输系统 | |
CN114124929A (zh) | 跨网络的数据处理方法和装置 | |
CN111885004A (zh) | 一种应用层消息传输方法及通信接口平台 | |
CN112202795A (zh) | 一种数据处理方法、网关设备及介质 | |
US10645184B2 (en) | Information transmission method, gateway, and controller | |
CN110995829A (zh) | 实例调用方法、装置及计算机存储介质 | |
CN114650279B (zh) | 实例处理方法及系统 | |
WO2024103943A1 (zh) | 一种业务处理方法、装置、存储介质及设备 | |
KR20010082938A (ko) | 차세대 이동통신 시스템에서 원격 프로세스 호를 이용한운용 보전 방법 |
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 |