发明内容
本公开实施例至少提供一种任务访问方法、装置、设备及存储介质。
本公开实施例提供了一种任务访问方法,所述方法包括:
运行第一容器,所述第一容器中运行有第一目标任务和第一远程调用服务;
建立所述第一容器和与所述第一容器进行远程联调的第二容器之间的通信连接;
响应于通过所述通信连接发起的联调访问请求,基于所述第一远程调用服务、所述第二容器运行的第二远程调用服务,以及所述联调访问请求指示的、所述第一目标任务与所述第二容器运行的第二目标任务之间的端口访问映射配置信息,生成所述第一目标任务和所述第二目标任务之间的联调访问链路。
一种可选的实施方式中,在生成所述第一目标任务和所述第二目标任务之间的联调访问链路之后,还包括:
存储所述端口访问映射配置信息、所述第一目标任务的任务信息和所述第二目标任务的任务信息;
在所述第二容器断开连接并与所述第一容器再次建立通信连接后,基于所述端口访问映射配置信息、所述第一目标任务的任务信息和所述第二目标任务的任务信息,以及所述第一远程调用服务和所述第二远程调用服务,更新所述第一目标任务和所述第二目标任务之间的联调访问链路。
一种可选的实施方式中,所述在所述第二容器断开连接后通过以下步骤与所述第一容器再次建立通信连接,包括:
基于所述第二目标任务的任务信息,从数据库中查询所述第二容器的第二访问端口;
基于所述第二访问端口,控制所述第一容器和所述第二容器再次建立通信连接。
一种可选的实施方式中,所述运行第一容器,所述第一容器中运行有第一目标任务和第一远程调用服务,包括:
启动第一容器,并在所述第一容器中启动第一远程调用服务;
生成所述第一远程调用服务的第一访问端口和针对所述第一访问端口进行连接的第一连接秘钥,以在将所述第一连接秘钥和所述第一访问端口暴露后,供集成开发环境IDE中除所述第一容器之外的其它容器通过所述第一连接秘钥和所述第一访问端口与所述第一容器连接;
在所述第一容器中运行至少一个第一任务,所述至少一个第一任务包括所述第一目标任务;
生成所述第一访问端口和各个第一任务的任务端口之间的第一连接映射,以供与所述第一容器连接的其它容器通过所述第一访问端口和所述第一连接映射查询和/或连接任一第一任务。
一种可选的实施方式中,所述响应于通过所述通信连接发起的联调访问请求,基于所述第一远程调用服务、所述第二容器运行的第二远程调用服务,以及所述联调访问请求指示的、所述第一目标任务与所述第二容器运行的第二目标任务之间的端口访问映射配置信息,生成所述第一目标任务和所述第二目标任务之间的联调访问链路,包括:
响应于通过所述通信连接发起的联调访问请求,获取所述第二容器运行的第二远程调用服务对应的第二连接映射,所述第二连接映射包括各个第二任务的任务端口与所述第二远程调用服务的第二访问端口之间的映射关系;
基于所述第一远程调用服务对应的所述第一连接映射和所述第二连接映射,建立所述第一容器和所述第二容器之间的联调通道,所述联调通道表示各个第一任务与各个第二任务之间的双向映射;
通过所述联调通道和所述联调访问请求指示的、所述第一目标任务与所述第二容器运行的第二目标任务之间的端口访问映射配置信息,生成所述第一目标任务和所述第二目标任务之间的联调访问链路。
一种可选的实施方式中,所述建立所述第一容器和与所述第一容器进行远程联调的第二容器之间的通信连接:
从数据库中查询所述第二容器中第二远程调用服务的第二访问端口和针对所述第二访问端口进行连接的第二连接秘钥;
基于所述第二访问端口和所述第二连接秘钥,控制所述第一容器和与所述第一容器进行远程联调的第二容器建立通信连接。
一种可选的实施方式中,在建立所述第一容器和与所述第一容器进行远程联调的第二容器之间的通信连接之后,通过以下步骤确定所述第二目标任务:
基于所述第二访问端口和所述第二连接秘钥,获取所述第二容器中运行的至少一个活跃端口,并将所述至少一个活跃端口显示给用户,所述活跃端口为所述第二容器中处于运行状态的第二任务的任务端口;
响应于所述用户针对所述至少一个活跃端口中目标端口的预设操作,确定目标端口对应的第二任务为待访问的第二目标任务。
一种可选的实施方式中,通过以下步骤确定所述第二目标任务:
响应于所述用户的输入操作,确定所述用户输入的输入容器和输入端口,所述输入端口对应的第二任务包括处于运行状态的任务和处于非运行状态的任务;
将所述输入容器确定为与所述第一容器进行远程联调的第二容器,将所述输入端口对应的第二任务确定为待访问的第二目标任务。
一种可选的实施方式中,在所述第二目标任务为处于非运行状态的任务的情况下,所述基于所述第一远程调用服务、所述第二容器运行的第二远程调用服务,以及所述联调访问请求指示的、所述第一目标任务与所述第二容器运行的第二目标任务之间的端口访问映射配置信息,生成所述第一目标任务和所述第二目标任务之间的联调访问链路,包括:
在所述第二目标任务运行的情况下,基于所述第一远程调用服务、所述第二容器运行的第二远程调用服务,以及所述联调访问请求指示的、所述第一目标任务与所述第二容器运行的第二目标任务之间的端口访问映射配置信息,生成所述第一目标任务和所述第二目标任务之间的联调访问链路。
本公开实施例还提供一种任务访问装置,所述装置包括:
容器运行模块,用于运行第一容器,所述第一容器中运行有第一目标任务和第一远程调用服务;
连接建立模块,用于建立所述第一容器和与所述第一容器进行远程联调的第二容器之间的通信连接;
第一链路生成模块,用于响应于通过所述通信连接发起的联调访问请求,基于所述第一远程调用服务、所述第二容器运行的第二远程调用服务,以及所述联调访问请求指示的、所述第一目标任务与所述第二容器运行的第二目标任务之间的端口访问映射配置信息,生成所述第一目标任务和所述第二目标任务之间的联调访问链路。
一种可选的实施方式中,所述装置还包括第二链路生成模块,所述第二链路生成模块用于:
存储所述端口访问映射配置信息、所述第一目标任务的任务信息和所述第二目标任务的任务信息;
在所述第二容器断开连接并与所述第一容器再次建立通信连接后,基于所述端口访问映射配置信息、所述第一目标任务的任务信息和所述第二目标任务的任务信息,以及所述第一远程调用服务和所述第二远程调用服务,更新所述第一目标任务和所述第二目标任务之间的联调访问链路。
一种可选的实施方式中,所述第二链路生成模块在用于在所述第二容器断开连接后与所述第一容器再次建立通信连接时,具体用于:
基于所述第二目标任务的任务信息,从数据库中查询所述第二容器的第二访问端口;
基于所述第二访问端口,控制所述第一容器和所述第二容器再次建立通信连接。
一种可选的实施方式中,所述容器运行模块具体用于:
启动第一容器,并在所述第一容器中启动第一远程调用服务;
生成所述第一远程调用服务的第一访问端口和针对所述第一访问端口进行连接的第一连接秘钥,以在将所述第一连接秘钥和所述第一访问端口暴露后,供集成开发环境IDE中除所述第一容器之外的其它容器通过所述第一连接秘钥和所述第一访问端口与所述第一容器连接;
在所述第一容器中运行至少一个第一任务,所述至少一个第一任务包括所述第一目标任务;
生成所述第一访问端口和各个第一任务的任务端口之间的第一连接映射,以供与所述第一容器连接的其它容器通过所述第一访问端口和所述第一连接映射查询和/或连接任一第一任务。
一种可选的实施方式中,所述第一链路生成模块具体用于:
响应于通过所述通信连接发起的联调访问请求,获取所述第二容器运行的第二远程调用服务对应的第二连接映射,所述第二连接映射包括各个第二任务的任务端口与所述第二远程调用服务的第二访问端口之间的映射关系;
基于所述第一远程调用服务对应的所述第一连接映射和所述第二连接映射,建立所述第一容器和所述第二容器之间的联调通道,所述联调通道表示各个第一任务与各个第二任务之间的双向映射;
通过所述联调通道和所述联调访问请求指示的、所述第一目标任务与所述第二容器运行的第二目标任务之间的端口访问映射配置信息,生成所述第一目标任务和所述第二目标任务之间的联调访问链路。
一种可选的实施方式中,所述连接建立模块具体用于:
从数据库中查询所述第二容器中第二远程调用服务的第二访问端口和针对所述第二访问端口进行连接的第二连接秘钥;
基于所述第二访问端口和所述第二连接秘钥,控制所述第一容器和与所述第一容器进行远程联调的第二容器建立通信连接。
一种可选的实施方式中,所述装置还包括任务确定模块,所述任务确定模块用于:
基于所述第二访问端口和所述第二连接秘钥,获取所述第二容器中运行的至少一个活跃端口,并将所述至少一个活跃端口显示给用户,所述活跃端口为所述第二容器中处于运行状态的第二任务的任务端口;
响应于所述用户针对所述至少一个活跃端口中目标端口的预设操作,确定目标端口对应的第二任务为待访问的第二目标任务。
一种可选的实施方式中,所述任务确定模块具体用于:
响应于所述用户的输入操作,确定所述用户输入的输入容器和输入端口,所述输入端口对应的第二任务包括处于运行状态的任务和处于非运行状态的任务;
将所述输入容器确定为与所述第一容器进行远程联调的第二容器,将所述输入端口对应的第二任务确定为待访问的第二目标任务。
一种可选的实施方式中,在所述第二目标任务为处于非运行状态的任务的情况下,所述第一链路生成模块在用于所述基于所述第一远程调用服务、所述第二容器运行的第二远程调用服务,以及所述联调访问请求指示的、所述第一目标任务与所述第二容器运行的第二目标任务之间的端口访问映射配置信息,生成所述第一目标任务和所述第二目标任务之间的联调访问链路时,具体用于:
在所述第二目标任务运行的情况下,基于所述第一远程调用服务、所述第二容器运行的第二远程调用服务,以及所述联调访问请求指示的、所述第一目标任务与所述第二容器运行的第二目标任务之间的端口访问映射配置信息,生成所述第一目标任务和所述第二目标任务之间的联调访问链路。
本公开实施例还提供一种电子设备,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述处理器与所述存储器之间通过总线通信,所述机器可读指令被所述处理器执行时执行上述任务访问方法的步骤。
本公开实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述任务访问方法的步骤。
本公开实施例提供的任务访问方法、装置、设备及存储介质,在容器启动后,在容器中运行远程调用服务,以生成远程调用服务的访问端口,从而实现访问端口与容器中运行的各个任务对应的任务端口之间的映射关系,在两个容器建立通信连接后,任意一个容器中的任务可以通过通信连接向另一个容器中的任务发起联调访问请求,从而基于每个容器中运行的远程调用服务以及联调访问请求指示的两个任务之间的端口访问映射配置信息,生成两个任务之间的联调访问链路,以实现任务之间的访问和调用,可以快速实现不同容器中的任务之间的访问,操作简便,节省时间,普适性强,有助于提高用户的使用便利度。
进一步的,在由于容器刷新或重新启动等导致两个容器之间的通信连接中断的情况下,基于存储的任务信息可以重新实现容器之间的通信连接,进而更新两个任务之间的联调访问链路,方便快捷,无需用户重新确定当前的任务信息,减少代码修改的工作量,提高用户开发速度。
为使本公开的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,而非限制本公开的技术方案。
具体实施方式
为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例中附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本公开实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本公开的实施例的详细描述并非旨在限制要求保护的本公开的范围,而是仅仅表示本公开的选定实施例。基于本公开的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
本文中术语“和/或”,仅仅是描述一种关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中术语“至少一种”表示多种中的任意一种或多种中的至少两种的任意组合,例如,包括A、B、C中的至少一种,可以表示包括从A、B和C构成的集合中选择的任意一个或多个元素。
在应用开发过程中,现如今业界存在的对于容器中的任务进行访问和联调的实现方法,常用方式是在本地进行操作,只需要选择并指定本地的端口号即可实现联调。但在应用开发比较复杂时,大多需要多人团队协作进行,此时就会面临跨区域的远程调用,例如前端和后端之间的相互调用。为了访问容器中的任务,在该容器启动后需要用户反复查找容器、任务等对应的容器地址以及端口号等信息,才能实现访问配置,工作量大,开发成本高,此外,当容器刷新或重新启动后,容器中的任务对应的相关信息有可能发生变化,导致用户需要重新确定当前容器中的任务对应的当前任务信息,操作复杂,针对变化的任务信息,用户还需要对底层代码进行相应的调整修改,耗费大量时间,影响用户的开发速度。
基于此,本公开实施例提供了一种任务访问方法,在容器启动后,在容器中运行远程调用服务,以生成远程调用服务的访问端口,从而实现访问端口与容器中运行的各个任务对应的任务端口之间的映射关系,在两个容器建立通信连接后,任意一个容器中的任务可以通过通信连接向另一个容器中的任务发起联调访问请求,从而基于每个容器中运行的远程调用服务以及联调访问请求指示的两个任务之间的端口访问映射配置信息,生成两个任务之间的联调访问链路,以实现任务之间的访问和调用,可以快速实现不同容器中的任务之间的访问,操作简便,节省时间,普适性强,有助于提高用户的使用便利度。
进一步的,在由于容器刷新或重新启动等导致两个容器之间的通信连接中断的情况下,基于存储的任务信息可以重新实现容器之间的通信连接,进而更新两个任务之间的联调访问链路,方便快捷,无需用户重新确定当前的任务信息,减少代码修改的工作量,提高用户开发速度。
针对以上方案所存在的缺陷以及所提出的解决方案,均是发明人在经过实践并仔细研究后得出的结果,因此,上述问题的发现过程以及下文中本公开针对上述问题所提出的解决方案,都应该是发明人在本公开过程中对本公开做出的贡献。
为便于对本实施例进行理解,首先对本公开实施例所公开的一种任务访问方法进行详细介绍,本公开实施例所提供的任务访问方法的执行主体可以是任务访问装置,例如,任务访问方法可以由终端设备或服务器或其它处理设备执行,其中,终端设备可以为用户设备(User Equipment,UE)、移动设备、用户终端、终端、计算设备等。在一些可能的实现方式中,该任务访问方法可以通过处理器调用存储器中存储的计算机可读指令的方式来实现。
下面对本公开实施例提供的一种任务访问方法加以说明。
请参阅图1,图1为本公开实施例提供的一种任务访问方法的场景示意图。该场景主要为容器之间进行通信连接,针对建立连接通信后的两个容器,每个容器中的任务之间可以互相调用。如图1中所示,用户可以借助集成开发环境IDE进行容器的开发,所述IDE可以包括服务器和用户终端,可以理解,所述服务器和所述终端通信连接,需要说明的是,所述服务器中可以生成至少一个容器,所述用户终端中也可以生成至少一个容器,图中的3个容器仅为示例,每个容器中可以运行至少一个任务,每个容器中的任务对应各自的任务端口。
进一步的,用户在用户终端进行开发时,在容器启动后,容器中可以运行远程调用服务,进而生成远程调用服务的访问端口,从而可以将该访问端口暴露给其它容器,以供其它容器和该容器建立通信连接。此外,还可以生成访问端口和每个任务端口之间的映射关系。在两个容器建立通信连接的情况下,任意一个容器中的任务可以通过通信连接向另一个容器中的任务发起联调访问请求,从而实现任务之间的调用。
例如容器A和容器B建立通信连接后,在容器A中的任务a通过通信连接可以向容器B中的任务b发起联调访问请求,这里,联调访问请求中携带有具体的端口访问映射配置信息,此时,基于容器A运行的远程调用服务、容器B运行的远程调用服务、以及端口访问映射配置信息,就可以生成任务a和任务b之间的联调访问链路,从而实现任务a对任务b的访问调用。同理,容器B中的任务也可以通过通信连接向容器A中的任务发起联调访问请求。
本公开实施例可以通过在集成开发环境IDE内置插件等形式,使得用户开发的容器可以联通多个其它容器的指定端口,被联通的容器间均可将访问端口映射到本地主机端口,进而通过本地主机端口来访问其它容器,以此实现与本地完全一致的研发体验。
请参阅图2,图2为本公开实施例提供的一种任务访问方法的流程图,可以理解的是,图2所示出的方法可以应用于图1中的终端设备。如图2中所示,本公开实施例提供的任务访问方法包括:
S201:运行第一容器,所述第一容器中运行有第一目标任务和第一远程调用服务。
该步骤中,在检测到第一容器运行后,所述第一容器中可以运行有至少一个第一任务,这里,所述至少一个第一任务包括第一目标任务,所述第一目标任务为在后续向其它任务发起联调访问请求的第一任务,并且在所述第一容器中运行第一远程调用服务。
需要说明的是,每个容器在启动后,都可以运行各自的远程调用服务。远程调用(secure shell,shh)服务是安全外壳协议执行,专为远程登录会话和其他网络服务提供安全性的调用服务,可以有效防止传输过程中的数据被截取,保障数据安全。
具体的,在一些可能的实施方式中,所述运行第一容器,所述第一容器中运行有第一目标任务和第一远程调用服务,包括:
启动第一容器,并在所述第一容器中启动第一远程调用服务;
生成所述第一远程调用服务的第一访问端口和针对所述第一访问端口进行连接的第一连接秘钥,以在将所述第一连接秘钥和所述第一访问端口暴露后,供集成开发环境IDE中除所述第一容器之外的其它容器通过所述第一连接秘钥和所述第一访问端口与所述第一容器连接;
在所述第一容器中运行至少一个第一任务,所述至少一个第一任务包括所述第一目标任务;
生成所述第一访问端口和各个第一任务的任务端口之间的第一连接映射,以供与所述第一容器连接的其它容器通过所述第一访问端口和所述第一连接映射查询和/或连接任一第一任务。
该步骤中,在启动第一容器后,在所述第一容器中启动第一远程调用服务,此时可以生成所述第一远程调用服务的第一访问端口,同时可以生成针对所述第一访问端口进行连接的第一连接秘钥,进一步的,可以将所述第一连接秘钥和所述第一访问端口暴露,以供集成开发环境IDE中除所述第一容器之外的其它容器通过所述第一连接秘钥和所述第一访问端口与所述第一容器连接。
这里,所述第一连接秘钥可以是随机生成的,也可以是基于所述第一容器的容器特性生成的,也可以是所述第一容器的用户自行设置的,在此并不做任何限定。
可选地,可以将所述第一连接秘钥和所述第一访问端口上传到所述IDE中的云端的数据库和/或服务器的数据库中,以供其它容器的用户查找并使用。
在所述第一容器启动后,就可以在所述第一容器中拉起第一任务,可以理解,所述第一容器中运行至少一个第一任务,所述至少一个第一任务包括所述第一目标任务,并且可以生成所述第一访问端口和各个第一任务的任务端口之间的第一连接映射。对待与所述第一容器建立连接的其它容器而言,可以通过所述第一访问端口和所述第一连接映射查询和/或连接任一第一任务。
这里,基于所述第一远程调用服务对应的所述第一连接映射,可以将所述第一访问端口映射到所述第一容器的各个第一任务的任务端口,在后续通过所述第一访问端口进行第一任务的访问和调用时,可以实现与本地开发一致的开发过程,避免用户修改代码,操作简便,提升用户的开发便利度。
需要说明的是,为了便于后续的任务之间的调用访问,可以将所述第一任务的任务信息存储至数据库中,这里,所述第一任务的任务信息包括但不限于任务名称、任务标识、任务端口、用户名称、团队名称、代码仓库、第一容器所在节点等。
S202:建立所述第一容器和与所述第一容器进行远程联调的第二容器之间的通信连接。
在实际应用中,若某一容器中的某个任务待与另一容器中的任务进行联调,首先两个容器需要进行通信连接。
即若所述第一容器中的所述第一目标任务待与所述第二容器中的第二目标任务进行联调,则首先所述第一容器和所述第二容器需要建立通信连接。
可以理解,所述第一容器中运行有第一远程调用服务,可以生成所述第一远程调用服务的第一访问端口,所述第一访问端口可以暴露给除所述第一容器以外的容器,因此所述第一访问端口可以用于所述第一容器与除所述第一容器以外的容器建立通信连接,同样的,所述第二容器中运行有第二远程调用服务,可以生成所述第二远程调用服务的第二访问端口,所述第二访问端口可以暴露给除所述第二容器以外的容器,因此所述第二访问端口可以用于所述第二容器与除所述第二容器以外的容器建立通信连接。同时,所述第一容器和所述第二容器也分别具有原本存在的第一任务端口和第二任务端口,所述第一任务端口和所述第二任务端口也可以用于建立容器之间的通信连接。
因此,针对所述第一容器和所述第二容器建立通信连接的方法,可以是基于所述第一容器的所述第一访问端口和所述第二容器的所述第二访问端口进行建立,也可以是基于所述第一容器的所述第一访问端口和所述第二容器的所述第二任务端口进行建立,还可以是基于所述第一容器的所述第一任务端口和所述第二容器的所述第二访问端口进行建立,也可以是基于所述第一容器的所述第一任务端口和所述第二容器的所述第二任务端口进行建立。
相应地,针对基于所述第二容器的所述第二访问端口进行建立的方法,在一些可能的实施方式中,所述建立所述第一容器和与所述第一容器进行远程联调的第二容器之间的通信连接:
从数据库中查询所述第二容器中第二远程调用服务的第二访问端口和针对所述第二访问端口进行连接的第二连接秘钥;
基于所述第二访问端口和所述第二连接秘钥,控制所述第一容器和与所述第一容器进行远程联调的第二容器建立通信连接。
基于上述分析可知,每个容器在启动远程调用服务后,都会生成对应的访问端口和针对访问端口进行连接的连接秘钥,并且将访问端口和连接秘钥上传到数据库中进行存储。因此,针对待与所述第一容器进行远程联调的第二容器,可以从数据库中查询所述第二容器中第二远程调用服务的第二访问端口和第二连接秘钥,从而基于所述第二访问端口和所述第二连接秘钥,使用所述连接秘钥,将所述第二访问端口和所述第一容器的第一访问端口或第一任务端口进行连接,从而实现将所述第一容器和所述第二容器建立通信连接。
若所述第一容器中的所述第一目标任务待与所述第二容器中的第二目标任务进行联调,则首先所述第一容器和所述第二容器需要建立通信连接。在所述第一容器和所述第二容器建立通信连接后,所述第一容器中的第一目标任务可以通过所述通信连接向所述第二容器中的任一第二任务发起联调访问请求,为此,需要从至少一个第二任务中确定与所述第一目标任务进行联调的第二目标任务。
相应地,一些可能的实施方式中,在建立所述第一容器和与所述第一容器进行远程联调的第二容器之间的通信连接之后,通过以下步骤确定所述第二目标任务:
基于所述第二访问端口和所述第二连接秘钥,获取所述第二容器中运行的至少一个活跃端口,并将所述至少一个活跃端口显示给用户,所述活跃端口为所述第二容器中处于运行状态的第二任务的任务端口;
响应于所述用户针对所述至少一个活跃端口中目标端口的预设操作,确定目标端口对应的第二任务为待访问的第二目标任务。
该步骤中,基于所述第二访问端口和所述第二连接秘钥,可以连接到所述第二容器,进而可以获取所述第二容器中运行的至少一个活跃端口,这里,所述活跃端口为所述第二容器中处于运行状态的第二任务的任务端口,并将所述至少一个活跃端口显示给用户。
可选地,可以在用户终端上显示用户开发界面,在用户开发界面中列出至少一个活跃端口,以便用户从至少一个活跃端口中确定目标端口。
这里,为了便于用户确定目标端口,可以同时将每个活跃端口对应的第二任务的任务信息也一并显示。
然后,可以实时检测是否接收到所述用户针对所述至少一个活跃端口的预设操作,这里,所述预设操作可以是用户从所述至少一个活跃端口中选择目标端口,在确定接收到所述用户的预设操作的情况下,可以响应于所述预设操作,得到目标端口,从而将所述目标端口对应的第二任务确定为待访问的第二目标任务。
在本实施例中,是将所述第二容器中处于运行状态的第二任务的任务端口进行显示,并供用户从中选择出第二目标任务,在实际应用中,也存在待调用的第二目标任务为出于非运行状态的任务的情况,或者待调用的第二目标任务对应的任务端口未显示的情况,此时就需要用户自行手动增加第二目标任务。
需要说明的是,为了便于后续的任务之间的调用访问,可以将所述第二任务的任务信息存储至数据库中,这里,所述第二任务的任务信息包括但不限于任务名称、任务标识、任务端口、用户名称、团队名称、代码仓库、第二容器所在节点等。
相应地,一些可能的实施方式中,通过以下步骤确定所述第二目标任务:
响应于所述用户的输入操作,确定所述用户输入的输入容器和输入端口,所述输入端口对应的第二任务包括处于运行状态的任务和处于非运行状态的任务;
将所述输入容器确定为与所述第一容器进行远程联调的第二容器,将所述输入端口对应的第二任务确定为待访问的第二目标任务。
该步骤中,可以接收所述用户的输入操作,具体的,根据所述用户的输入操作,确定所述用户输入的输入容器和输入端口,这里,所述输入端口对应的第二任务包括处于运行状态的任务和处于非运行状态的任务,进而可以将所述输入容器确定为与所述第一容器进行远程联调的第二容器,将所述输入端口对应的第二任务确定为待访问的第二目标任务,以进行后续的所述第一目标任务和所述第二目标任务之间的联调。
S203:响应于通过所述通信连接发起的联调访问请求,基于所述第一远程调用服务、所述第二容器运行的第二远程调用服务,以及所述联调访问请求指示的、所述第一目标任务与所述第二容器运行的第二目标任务之间的端口访问映射配置信息,生成所述第一目标任务和所述第二目标任务之间的联调访问链路。
该步骤中,在所述第一容器和所述第二容器之间建立通信连接的情况下,所述第一容器运行的所述第一目标任务可以通过所述通信连接向所述第二容器运行的所述第二目标任务发起联调访问请求,所述第二目标任务也可以通过所述通信连接向所述第一目标任务发起联调访问请求,这里,为了明确本次联调访问请求的数据流向,所述联调访问请求中携带有所述第一目标任务与所述第二目标任务之间的端口访问映射配置信息,所述端口访问映射配置信息指示了本次联调访问请求的数据流向,从而可以基于所述第一远程调用服务、所述第二远程调用服务,以及所述联调访问请求指示的所述端口访问映射配置信息,生成所述第一目标任务和所述第二目标任务之间的联调访问链路。
可选地,所述端口访问映射配置信息可以是自动生成的,也可以是用户自行设置的,在此并不做任何限定。
示例性的,若所述端口访问映射配置信息是自动生成的,则所述端口访问映射配置信息可以是>portA:portA,表示将对方的portA端口映射到当前容器。若所述端口访问映射配置信息是用户自行设置的,则所述端口访问映射配置信息可以是>portA:portB,表示当前容器将通过portA端口访问对方容器的portB端口,所述端口访问映射配置信息还可以是<portA:portB,表示对方容器将通过portA端口访问当前容器的portB端口。
这里,由于所述第一容器已经运行了第一远程调用服务,生成了所述第一访问端口和所述第一目标任务的任务端口之间的第一连接映射,因此可以快速从所述第一容器中的至少一个第一任务中快速定位到所述第一目标任务,同理,所述第二容器也可以通过相同的方式得到所述第二访问端口和所述第二目标任务的任务端口之间的第二连接映射,进而形成所述第一目标任务和所述第二目标任务之间的双向映射。
具体的,一些可能的实施方式中,所述响应于通过所述通信连接发起的联调访问请求,基于所述第一远程调用服务、所述第二容器运行的第二远程调用服务,以及所述联调访问请求指示的、所述第一目标任务与所述第二容器运行的第二目标任务之间的端口访问映射配置信息,生成所述第一目标任务和所述第二目标任务之间的联调访问链路,包括:
响应于通过所述通信连接发起的联调访问请求,获取所述第二容器运行的第二远程调用服务对应的第二连接映射,所述第二连接映射包括各个第二任务的任务端口与所述第二远程调用服务的第二访问端口之间的映射关系;
基于所述第一远程调用服务对应的所述第一连接映射和所述第二连接映射,建立所述第一容器和所述第二容器之间的联调通道,所述联调通道表示各个第一任务与各个第二任务之间的双向映射;
通过所述联调通道和所述联调访问请求指示的、所述第一目标任务与所述第二容器运行的第二目标任务之间的端口访问映射配置信息,生成所述第一目标任务和所述第二目标任务之间的联调访问链路。
该步骤中,在接收到通过所述通信连接发起的联调访问请求后,可以获取所述第二容器运行的第二远程调用服务对应的第二连接映射,这里,所述第二连接映射包括各个第二任务的任务端口与所述第二远程调用服务的第二访问端口之间的映射关系,因此可以快速从所述第二容器中的至少一个第二任务中快速定位到所述第二目标任务,然后基于所述第一远程调用服务对应的所述第一连接映射和所述第二连接映射,建立所述第一容器和所述第二容器之间的联调通道,所述联调通道表示各个第一任务与各个第二任务之间的双向映射。
这里,基于所述第二远程调用服务对应的所述第二连接映射,可以将所述第二访问端口映射到所述第二容器的各个第二任务的任务端口,在后续通过所述第二访问端口进行第二任务的访问和调用时,可以实现与本地开发一致的开发过程,避免用户修改代码,操作简便,提升用户的开发便利度。
然后可以通过所述联调通道和所述联调访问请求指示的、所述第一目标任务与所述第二目标任务之间的端口访问映射配置信息,生成所述第一目标任务和所述第二目标任务之间的联调访问链路。
可以理解,所述联调通道是基于所述第一访问端口和所述第二访问端口建立的,因此,若之前的所述第一容器和所述第二容器之间的通信连接是基于所述第一访问端口和所述第二访问端口建立的,则在生成所述联调访问链路无需重复建立所述联调通道,只需要通过所述第一连接映射和所述第二连接映射确定所述第一目标任务和所述第二目标任务即可;若之前的所述第一容器和所述第二容器之间的通信连接是基于所述第一访问端口和所述第二访问端口建立的,则此时需要基于所述第一访问端口和所述第二访问端口建立生成所述联调通道,进而生成所述联调访问链路。
一些可能的实施方式中,在所述第二目标任务为处于非运行状态的任务的情况下,是无法生成所述第一目标任务和所述第二目标任务之间的联调访问链路,需要在所述第二目标任务运行的情况下,基于所述第一远程调用服务、所述第二容器运行的第二远程调用服务,以及所述联调访问请求指示的、所述第一目标任务与所述第二容器运行的第二目标任务之间的端口访问映射配置信息,生成所述第一目标任务和所述第二目标任务之间的联调访问链路。
本公开实施例提供的任务访问方法,在容器启动后,在容器中运行远程调用服务,以生成远程调用服务的访问端口,从而实现访问端口与容器中运行的各个任务对应的任务端口之间的映射关系,在两个容器建立通信连接后,任意一个容器中的任务可以通过通信连接向另一个容器中的任务发起联调访问请求,从而基于每个容器中运行的远程调用服务以及联调访问请求指示的两个任务之间的端口访问映射配置信息,生成两个任务之间的联调访问链路,以实现任务之间的访问和调用,可以快速实现不同容器中的任务之间的访问,操作简便,节省时间,普适性强,有助于提高用户的使用便利度。
请参阅图3,图3为本公开实施例提供的另一种任务访问方法的流程图。如图3中所示,本公开实施例提供的任务访问方法包括:
S301:运行第一容器,所述第一容器中运行有第一目标任务和第一远程调用服务。
S302:建立所述第一容器和与所述第一容器进行远程联调的第二容器之间的通信连接。
S303:响应于通过所述通信连接发起的联调访问请求,基于所述第一远程调用服务、所述第二容器运行的第二远程调用服务,以及所述联调访问请求指示的、所述第一目标任务与所述第二容器运行的第二目标任务之间的端口访问映射配置信息,生成所述第一目标任务和所述第二目标任务之间的联调访问链路。
其中,步骤S301至步骤S303的描述可以参照步骤S201至步骤S203的描述,并且可以达到相同的技术效果和解决相同的技术问题,在此不做赘述。
S304:存储所述端口访问映射配置信息、所述第一目标任务的任务信息和所述第二目标任务的任务信息。
该步骤中,在生成所述联调访问链路后,可以将所述联调访问请求指示的所述端口访问映射配置信息、以及所述联调访问链路对应的所述第一目标任务的任务信息和所述第二目标任务的任务信息上传至数据库中。
S305:在所述第二容器断开连接并与所述第一容器再次建立通信连接后,基于所述端口访问映射配置信息、所述第一目标任务的任务信息和所述第二目标任务的任务信息,以及所述第一远程调用服务和所述第二远程调用服务,更新所述第一目标任务和所述第二目标任务之间的联调访问链路。
该步骤中,当由于第一容器和/或第二容器重新启动或者刷新等,导致所述第一容器和所述第二容器断开连接后,为了保证任务访问的稳定性和完整性,所述第二容器可以与所述第一容器再次建立通信连接,进而基于所述端口访问映射配置信息、所述第一目标任务的任务信息和所述第二目标任务的任务信息,以及所述第一远程调用服务和所述第二远程调用服务,重新生成所述第一目标任务和所述第二目标任务之间的联调访问链路。
具体的,一些可能的实施方式中,所述在所述第二容器断开连接后通过以下步骤与所述第一容器再次建立通信连接:
基于所述第二目标任务的任务信息,从数据库中查询所述第二容器的第二访问端口;
基于所述第二访问端口,控制所述第一容器和所述第二容器再次建立通信连接。
基于上述分析可知,每个容器都会将各自容器的访问端口、以及容器中任务的任务信息上传到数据库中进行存储,因此,基于所述第二目标任务的任务信息,可以从数据库中查询所述第二容器的第二访问端口,进而基于所述第二访问端口,控制所述第一容器和所述第二容器再次建立通信连接。
示例性的,可以基于所述第二目标任务的任务信息指示的任务标识,从数据库中查询到所述第二容器的第二访问端口。
可以理解,在所述第二容器与所述第一容器再次建立通信连接后,基于所述第一远程调用服务对应的所述第一连接映射和所述第二连接映射,可以重新建立所述第一容器和所述第二容器之间的联调通道,进而通过重新建立的联调通道和存储的所述端口访问映射规则、所述第一目标任务的任务信息和所述第二目标任务的任务信息,更新所述第一目标任务和所述第二目标任务之间的联调访问链路。
本公开实施例提供的任务访问方法,可以在容器启动后,在容器中运行远程调用服务,以生成远程调用服务的访问端口,从而实现访问端口与容器中运行的各个任务对应的任务端口之间的映射关系,在两个容器建立通信连接后,任意一个容器中的任务可以通过通信连接向另一个容器中的任务发起联调访问请求,从而基于每个容器中运行的远程调用服务以及联调访问请求指示的两个任务之间的端口访问映射配置信息,生成两个任务之间的联调访问链路,以实现任务之间的访问和调用,可以快速实现不同容器中的任务之间的访问,操作简便,节省时间,普适性强,有助于提高用户的使用便利度。
进一步的,在由于容器刷新或重新启动等导致两个容器之间的通信连接中断的情况下,基于存储的任务信息可以重新实现容器之间的通信连接,进而更新两个任务之间的联调访问链路,方便快捷,无需用户重新确定当前的任务信息,减少代码修改的工作量,提高用户开发速度。
本领域技术人员可以理解,在具体实施方式的上述方法中,各步骤的撰写顺序并不意味着严格的执行顺序而对实施过程构成任何限定,各步骤的具体执行顺序应当以其功能和可能的内在逻辑确定。
基于同一发明构思,本公开实施例中还提供了与任务访问方法对应的任务访问装置,由于本公开实施例中的装置解决问题的原理与本公开实施例上述任务访问方法相似,因此装置的实施可以参见方法的实施,重复之处不再赘述。
请参阅图4和图5,图4为本公开实施例提供的一种任务访问装置的示意图之一,图5为本公开实施例提供的一种任务访问装置的示意图之二。
如图4中所示,本公开实施例提供的任务访问装置400包括:
容器运行模块410,用于运行第一容器,所述第一容器中运行有第一目标任务和第一远程调用服务;
连接建立模块420,用于建立所述第一容器和与所述第一容器进行远程联调的第二容器之间的通信连接;
第一链路生成模块430,用于响应于通过所述通信连接发起的联调访问请求,基于所述第一远程调用服务、所述第二容器运行的第二远程调用服务,以及所述联调访问请求指示的、所述第一目标任务与所述第二容器运行的第二目标任务之间的端口访问映射配置信息,生成所述第一目标任务和所述第二目标任务之间的联调访问链路。
一种可选的实施方式中,如图5中所示,所述装置还包括第二链路生成模块440,所述第二链路生成模块440用于:
存储所述端口访问映射配置信息、所述第一目标任务的任务信息和所述第二目标任务的任务信息;
在所述第二容器断开连接并与所述第一容器再次建立通信连接后,基于所述端口访问映射配置信息、所述第一任务的目标任务信息和所述第二目标任务的任务信息,以及所述第一远程调用服务和所述第二远程调用服务,更新所述第一目标任务和所述第二目标任务之间的联调访问链路。
一种可选的实施方式中,所述第二链路生成模块440在用于在所述第二容器断开连接后与所述第一容器再次建立通信连接时,具体用于:
基于所述第二目标任务的任务信息,从数据库中查询所述第二容器的第二访问端口;
基于所述第二访问端口,控制所述第一容器和所述第二容器再次建立通信连接。
一种可选的实施方式中,所述容器运行模块410具体用于:
启动第一容器,并在所述第一容器中启动第一远程调用服务;
生成所述第一远程调用服务的第一访问端口和针对所述第一访问端口进行连接的第一连接秘钥,以在将所述第一连接秘钥和所述第一访问端口暴露后,供集成开发环境IDE中除所述第一容器之外的其它容器通过所述第一连接秘钥和所述第一访问端口与所述第一容器连接;
在所述第一容器中运行至少一个第一任务,所述至少一个第一任务包括所述第一目标任务;
生成所述第一访问端口和各个第一任务的任务端口之间的第一连接映射,以供与所述第一容器连接的其它容器通过所述第一访问端口和所述第一连接映射查询和/或连接任一第一任务。
一种可选的实施方式中,所述第一链路生成模块430具体用于:
响应于通过所述通信连接发起的联调访问请求,获取所述第二容器运行的第二远程调用服务对应的第二连接映射,所述第二连接映射包括各个第二任务的任务端口与所述第二远程调用服务的第二访问端口之间的映射关系;
基于所述第一远程调用服务对应的所述第一连接映射和所述第二连接映射,建立所述第一容器和所述第二容器之间的联调通道,所述联调通道表示各个第一任务与各个第二任务之间的双向映射;
通过所述联调通道和所述联调访问请求指示的、所述第一目标任务与所述第二容器运行的第二目标任务之间的端口访问映射配置信息,生成所述第一目标任务和所述第二目标任务之间的联调访问链路。
一种可选的实施方式中,所述连接建立模块420具体用于:
从数据库中查询所述第二容器中第二远程调用服务的第二访问端口和针对所述第二访问端口进行连接的第二连接秘钥;
基于所述第二访问端口和所述第二连接秘钥,控制所述第一容器和与所述第一容器进行远程联调的第二容器建立通信连接。
一种可选的实施方式中,如图5中所示,所述装置还包括任务确定模块450,所述任务确定模块450用于:
基于所述第二访问端口和所述第二连接秘钥,获取所述第二容器中运行的至少一个活跃端口,并将所述至少一个活跃端口显示给用户,所述活跃端口为所述第二容器中处于运行状态的第二任务的任务端口;
响应于所述用户针对所述至少一个活跃端口中目标端口的预设操作,确定目标端口对应的第二任务为待访问的第二目标任务。
一种可选的实施方式中,所述任务确定模块450具体用于:
响应于所述用户的输入操作,确定所述用户输入的输入容器和输入端口,所述输入端口对应的第二任务包括处于运行状态的任务和处于非运行状态的任务;
将所述输入容器确定为与所述第一容器进行远程联调的第二容器,将所述输入端口对应的第二任务确定为待访问的第二目标任务。
一种可选的实施方式中,在所述第二目标任务为处于非运行状态的任务的情况下,所述第一链路生成模块430在用于所述基于所述第一远程调用服务、所述第二容器运行的第二远程调用服务,以及所述联调访问请求指示的、所述第一目标任务与所述第二容器运行的第二目标任务之间的端口访问映射配置信息,生成所述第一目标任务和所述第二目标任务之间的联调访问链路时,具体用于:
在所述第二目标任务运行的情况下,基于所述第一远程调用服务、所述第二容器运行的第二远程调用服务,以及所述联调访问请求指示的、所述第一目标任务与所述第二容器运行的第二目标任务之间的端口访问映射配置信息,生成所述第一目标任务和所述第二目标任务之间的联调访问链路。
关于装置中的各模块的处理流程、以及各模块之间的交互流程的描述可以参照上述方法实施例中的相关说明,这里不再详述。
本公开实施例提供的一种任务访问装置,在容器启动后,在容器中运行远程调用服务,以生成远程调用服务的访问端口,从而实现访问端口与容器中运行的各个任务对应的任务端口之间的映射关系,在两个容器建立通信连接后,任意一个容器中的任务可以通过通信连接向另一个容器中的任务发起联调访问请求,从而基于每个容器中运行的远程调用服务以及联调访问请求指示的两个任务之间的端口访问映射配置信息,生成两个任务之间的联调访问链路,以实现任务之间的访问和调用,可以快速实现不同容器中的任务之间的访问,操作简便,节省时间,普适性强,有助于提高用户的使用便利度。
进一步的,在由于容器刷新或重新启动等导致两个容器之间的通信连接中断的情况下,基于存储的任务信息可以重新实现容器之间的通信连接,进而更新两个任务之间的联调访问链路,方便快捷,无需用户重新确定当前的任务信息,减少代码修改的工作量,提高用户开发速度。
对应于图2和图3中的任务访问方法,本公开实施例还提供了一种电子设备600,如图6所示,为本公开实施例提供的电子设备600结构示意图,包括:
处理器610、存储器620、和总线630;存储器620用于存储执行指令,包括内存621和外部存储器622;这里的内存621也称内存储器,用于暂时存放处理器610中的运算数据,以及与硬盘等外部存储器622交换的数据,处理器610通过内存621与外部存储器622进行数据交换,当所述电子设备600运行时,所述处理器610与所述存储器620之间通过总线630通信,使得所述处理器610可以执行上述的任务访问方法的步骤。
本公开实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述方法实施例中所述的任务访问方法的步骤。其中,该存储介质可以是易失性或非易失的计算机可读取存储介质。
本公开实施例还提供一种计算机程序产品,该计算机程序产品包括有计算机指令,所述计算机指令被处理器执行时可以执行上述方法实施例中所述的任务访问方法的步骤,具体可参见上述方法实施例,在此不再赘述。
其中,上述计算机程序产品可以具体通过硬件、软件或其结合的方式实现。在一个可选实施例中,所述计算机程序产品具体体现为计算机存储介质,在另一个可选实施例中,计算机程序产品具体体现为软件产品,例如软件开发包(Software Development Kit,SDK)等等。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的设备和装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。在本公开所提供的几个实施例中,应该理解到,所揭露的设备、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本公开各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本公开各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上所述实施例,仅为本公开的具体实施方式,用以说明本公开的技术方案,而非对其限制,本公开的保护范围并不局限于此,尽管参照前述实施例对本公开进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本公开实施例技术方案的精神和范围,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应所述以权利要求的保护范围为准。