WO2020228449A1 - 一种节点选择方法和装置 - Google Patents

一种节点选择方法和装置 Download PDF

Info

Publication number
WO2020228449A1
WO2020228449A1 PCT/CN2020/083626 CN2020083626W WO2020228449A1 WO 2020228449 A1 WO2020228449 A1 WO 2020228449A1 CN 2020083626 W CN2020083626 W CN 2020083626W WO 2020228449 A1 WO2020228449 A1 WO 2020228449A1
Authority
WO
WIPO (PCT)
Prior art keywords
node
product
nodes
request message
target
Prior art date
Application number
PCT/CN2020/083626
Other languages
English (en)
French (fr)
Inventor
王亚伟
陈远峰
Original Assignee
华为技术有限公司
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by 华为技术有限公司 filed Critical 华为技术有限公司
Priority to EP20805391.8A priority Critical patent/EP3961381B1/en
Publication of WO2020228449A1 publication Critical patent/WO2020228449A1/zh
Priority to US17/526,402 priority patent/US11861341B2/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • G06F8/63Image based installation; Cloning; Build to order
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements

Definitions

  • Immutable construction infrastructure IBI can also be called standard construction infrastructure.
  • IBI may be a standard construction system that is used to perform the entire process of software development, that is, to implement the process from source code development to the generation of a binary product installation package.
  • the process includes: environment construction, generation of image files in the construction environment, deployment of nodes according to the image files, and nodes receiving and executing construction tasks.
  • each link in IBI cannot be changed, that is, it can only be modified through an external port application. Therefore, it cannot be changed in the IBI system, thus ensuring more security and stability when using IBI for DevOps.
  • the nodes include but are not limited to processors, chip units, logic circuits, etc.
  • the product code warehouse 5 is used to store the product source code.
  • the target node obtains the product source code from the product code warehouse 5, executes the product pipeline code in the pre-defined BIC, and finally obtains the binary Product installation package.
  • the node state table is stored in the cache memory 311.
  • this embodiment also discloses a dynamic build job distribution (Dynamic Build Job Dispatching) method, which can be applied to the installation of mass build products that need to be sent.
  • Dynamic Build Job Dispatching Dynamic Build Job Dispatching
  • package request messages because cloud services are characterized by being able to cope with the unpredictability of the request volume, when massive construction request messages are sent to the server in a short time, in order to improve the efficiency of construction job distribution and reduce the loss of request messages, Distribute mass build request messages in batches.
  • processing unit 702 is further configured to delete nodes in an offline state from the node state table.
  • the communication device may include a transceiver 801 and a processor 802; further, it may also include a memory 803, where the memory 803 may be used to store code or data.
  • the transceiver 801 may include components such as a receiver, a transmitter, and an antenna.
  • the communication device may also include more or fewer components, or a combination of certain components, or a different component arrangement, which is not limited in this application.
  • the present application also provides a computer storage medium, wherein the computer storage medium may store a program, and the program may include some or all of the steps in each embodiment of the message sending method and message receiving method provided in the present application.
  • the storage medium can be a magnetic disk, an optical disc, a read-only storage memory ROM, or a random storage memory RAM.
  • the computer program product includes one or more computer instructions, such as switching instructions.
  • the computer may be a general-purpose computer, a special-purpose computer, a computer network, or other programmable devices.

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Stored Programmes (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

一种节点选择方法和装置,所述方法包括:接收请求消息,所述请求消息用于请求提供用户所需产品的安装包,且请求消息中携带有唯一标识用户所需产品的产品信息(201);根据所述请求消息中的产品信息,在节点状态表中查找与所述产品信息对应的目标节点,该节点状态表中包括至少一个对应关系,每个对应关系为一个节点与一个产品信息之间的关系,且所述节点状态表中的每个节点的状态为空闲(202);将所述请求消息发送给所述目标节点,以使所述目标节点为所述用户所需产品构建对应的产品安装包(203)。本方法能够快速地找到能够提供服务的目标节点,并完成作业分发,提高了作业分发效率。

Description

一种节点选择方法和装置
本申请要求于2019年5月16日提交中国专利局、申请号为201910407397.9、发明名称为“一种节点选择方法和装置”的中国专利申请的优先权,其全部内容通过引用结合在本申请中。
技术领域
本申请涉及软件开发领域,尤其是在软件构建和开发过程中提供一种节点选择方法,以便在多种环境组成的资源池中能够快速地找到服务于请求消息的节点,从而提高作业分发的效率。
背景技术
目前,随着云技术发展和移动应用的流行,开发和运营(Development和Operations的组合,DevOps)已经逐渐替代敏捷开发成为实时的软件开发流程。其中DevOps可以是一组过程、方法与系统的统称,用于促进开发(应用程序/软件工程)、技术运营和质量保障(quality assurance,QA)部门之间的沟通、协作与整合,以便能够按时交付软件产品和提供服务。并且一些软件公司,例如微软、谷歌的云构建(Cloud Build)和亚马逊的代码构建(Code Build)等都积极地推崇DevOps,其中在使用DevOps进行软件开发的过程中,一个重要的环节是构建任务,所述构建任务包括系统根据用户需求或开发人员要求构建某一特定环境,比如软件开发工具包、编程语言及种类、依赖等,以便在该特定环境下配置一定的资源,该资源可以具备处理、运算和存储等功能,并且这些功能都可通过预先配置来完成。其中为了方便表示,将该资源也称为一个节点,且该节点用于服务某一特定环境的请求消息,并执行用户请求开发的相关的产品流水线得到该产品的安装包。
在云平台系统中全部特定环境下的所有资源组成一个资源池,在该资源池中包括多个节点,这些节点可服务于多种特定环境,比如资源池中存在一些节点专为产品A的环境1提供构建服务,另一些节点专为产品A的环境2提供构建服务,还有一些节点专为产品A的环境3提供构建服务。其中每个节点仅服务于一种特定环境,且为某一种特定环境服务的节点数量是有限的,在这种情况下,当云平台系统在某一时刻接收来到海量的请求消息时,并且这些请求消息需要的特定环境一般会较大程度不同,这将导致在资源池中选择提供服务的节点也各不相同,甚至可能云平台查找的某一节点由于处于忙碌或下线状态而无法立刻提供服务,所以在海量请求中,如何快速高效地查找到每个请求消息所对应的节点,使得这些节点能够及时地为各个请求消息所需的特定环境提供构建服务,是本领域人员亟需解决的技术问题。
发明内容
本发明实施例提供了一种节点选择方法和装置,用于提高在资源池中查找请求消息对应的节点的效率。
第一方面,本申请实施例提供了一种节点选择方法,所述方法包括:接收请求消 息,所述请求消息用于请求提供用户所需产品的安装包,且所述请求消息中携带有唯一标识用户所需产品的产品信息;根据所述请求消息中的产品信息,在节点状态表中查找与所述产品信息对应的目标节点,其中所述节点状态表中包括至少一个对应关系,每个所述对应关系为一个节点与一个产品信息之间的关系,且所述节点状态表中的每个节点的状态为空闲;将所述请求消息发送给所述目标节点,以使所述目标节点为所述用户所需产品构建对应的产品安装包。
本方面提供的方法,根据请求消息中的产品信息,以及节点状态表中包含的对应关系,能够快速地查找到该产品信息所对应的目标节点,并且该目标节点为空闲,从而将该请求消息发送给目标节点后,目标节点能够快速和有效地执行请求消息的产品构建任务,构建出产品的安装包,本方法提高资源池中目标节点的查找效率。
结合第一方面,在第一方面的一种可能的实现中,所述产品信息包括产品名称和所述产品名称对应的版本号,所述根据所述请求消息中的产品信息,在节点状态表中查找与所述产品信息对应的目标节点,包括:在所述节点状态表中查找与所述产品名称和所述版本号相同的产品信息,并作为目标产品信息;根据所述目标产品信息以及所述目标产品信息的对应关系,确定所述目标节点。
结合第一方面,在第一方面的另一种可能的实现中,所述接收请求消息之前,还包括:接收用户输入的配置参数,所述配置参数用于配置用户期望构建产品时所需的至少一个构建环境;根据所述配置参数生成至少一个构建环境代码,并运行每个所述构建环境代码得到与每个所述构建环境代码相对应的镜像文件;根据所述镜像文件生成至少一个节点,其中一个节点服务于一个镜像文件所对应的构建环境,且在所述构建环境下产生唯一的产品名称和版本号;根据每个所述节点和所述节点在所述构建环境下产生唯一的产品名称和版本号,建立所述至少一个对应关系;根据所述至少一个对应关系和每个节点的状态生成所述节点状态表。
结合第一方面,在第一方面的又一种可能的实现中,第一节点用于在第一环境下构建第一产品的安装包,所述目标节点为一个所述第一节点;所述将所述请求消息发送给所述目标节点之后,还包括:在所述节点状态表中标记所述目标节点的状态为忙碌;检测所述节点状态表中所有空闲状态的第一节点的数量是否小于第一阈值;如果小于所述第一阈值,则配置和增加所述第一节点的数量,使得增加后的第一节点的数量不小于所述第一阈值。
另外,还包括:在所述目标节点执行完所述请求消息的构建任务的情况下,标记所述目标节点的状态为空闲,并更新所述节点状态表;如果所述节点状态表中所有空闲状态的第一节点的数量超过第二阈值,则减少所述第一节点的数量,使得减少后的第一节点的数量不超过所述第二阈值。
结合第一方面,在第一方面的又一种可能的实现中,在接收的所述请求消息的数量为N的情况下,N为预设时间内获取的请求消息的数量,N≥2且为正整数,所述在节点状态表中查找与所述产品信息对应的目标节点,包括:在所述节点状态表中查找与每个请求消息携带的产品信息向对应的目标节点,得到N个目标节点;所述将所述请求消息发送给所述目标节点,包括:将所述N个请求消息发送给对应的N个目标节点。
第二方面,本申请实施例还提供了一种节点状态配置方法,所述方法包括:容器编辑器检测资源池中每个节点的状态,所述状态包括在线和下线,当检测到处于下线状态的节点时,标记该节点,以使得服务器将该节点从节点状态表中删除。
第三方面,本申请实施例还提供了一种生成构建环境代码BIC的方法,该方法包括:服务器获取外部环境参数,所述外部环境参数包括:编程语言种类及版本、软件开发工具包SDK及其版本、产品源代码仓库;服务器根据所述外部环境参数生成BIC,以及将所述BIC存储在BIC代码仓库中。
可选的,所述编程语言种类及版本包括编程语言运行时(language_runtime)。
其中,所述BIC包括产品流水线代码和运行环境代码。进一步地,服务器执行BIC中的运行环境代码可得到该运行环境下的镜像文件,镜像文件用于生成一个或多个节点;服务器执行BIC中的产品流水线代码时,需要先获取产品对应的源代码,根据所述产品对应的源代码在执行所述产品流水线代码后生成该产品的二进制包,所述二进制包可以包括二进制的产品安装包或应用程序包。
第四方面,本申请实施例还提供了一种节点确定装置,所述装置包括:该装置包括用于执行上述第一方面以及第一方面的各种实现方式中方法步骤的单元。具体地,该装置包括获取单元和处理单元,此外,还可以包括存储模块等其他模块或单元。
第五方面,本申请实施例还提供了一种通信设备,包括处理器和存储器,所述处理器与所述存储器耦合,所述存储器用于存储指令;所述处理器用于调用所述指令使得所述通信设备执行前述第一方面以及第一方面各种实现方式中的节点选择方法。
可选的,所述通信设备为服务器。
此外,所述通信设备还用于实现前述第二方面和第三方面所述的方法。
第六方面,本申请实施例还提供了一种计算机可读存储介质,所述存储介质中存储有指令,当所述指令在计算机或处理器上运行时,用于执行前述第一方面以及第一方面各种实现方式中的方法。
此外,当所述指令在计算机或处理器上运行时,用于执行前述第二方面或第三方面所述的方法。
第七方面,本申请实施例还提供了一种计算机程序产品,所述计算机程序产品包括计算机指令,当所述指令被计算机或处理器执行时,可实现前述第一方面和第一方面各种实现方式中的方法,或者,还可以实现前述第二方面或第三方面所述的方法。
本方面提供的方法,根据请求消息中的产品信息,以及节点状态表中包含的对应关系,能够快速地查找到该产品信息所对应的目标节点,并且该目标节点为空闲,从而将该请求消息发送给目标节点后,目标节点能够快速和有效地执行请求消息的产品构建任务,构建出产品的安装包,本方法提高资源池中目标节点的查找效率。
附图说明
图1为本申请实施例提供的一种IBI系统的结构示意图;
图2为本申请实施例提供的一种节点选择方法的流程图;
图3为本申请实施例提供的另一种IBI系统架构的结构示意图;
图4为本申请实施例提供的另一种节点选择方法的流程图;
图5为本申请实施例提供的一种节点的结构示意图;
图6为本申请实施例提供的一种智能应用验证平台的结构示意图;
图7为本申请实施例提供的一种节点选择装置的结构示意图;
图8为本申请实施例提供的一种通信设备的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请实施例中的技术方案,并使本申请实施例的上述目的、特征和优点能够更加明显易懂,下面结合附图对本申请实施例中的技术方案作进一步详细的说明。
首先,对本申请实施例中涉及的名称和概念进行介绍。
(1)不可变的构建基础设施(Immutable Build Infrastructure,IBI)
不可变的构建基础设施IBI,又可以称为标准构建基础设施。具体地,IBI可以是一种标准构建系统,该系统用于执行软件开发的全过程,即实现从源代码开发到生成二进制的产品安装包的过程。例如该过程包括:环境构建、在该构建环境下生成镜像文件、根据镜像文件部署节点,节点接收并执行构建任务等。在这一系列过程中,IBI中的各个环节不可更改,即只能通过外部端口申请来修改,所以基于IBI系统内是不可变更的,从而保证在利用IBI进行DevOps时更安全和稳定。
(2)构建环境代码(Build Infrastructure Code,BIC)
BIC即构建环境代码,该BIC可以包括两部分代码组成,一部分是产品流水线代码,另一部分是运行环境代码。其中,执行BIC中的运行环境代码可得到该运行环境下的镜像文件,镜像文件用于生成一个或多个节点;执行BIC中的产品流水线代码时,需要获取产品对应的源代码,从而可得到该产品的二进制包,比如二进制的产品安装包或应用程序包。
其中,运行环境代码为执行产品流水线代码时提供相关参数和信息。
进一步地,产品流水线代码中描述了各种软件开发工具包(software development kit,SDK)库和第三方依赖;而运行环境代码中描述了编程语言及运行环境(runtime)、数据包管理、项目管理和编译工具,以及所有的配置参数等。
(3)领域特定语言(Domain-Specific Language,DSL)
DSL指用于写某个应用程序的计算机语言,例如C语言,Java语言等,本申请实施例中,DSL特指写构建环境代码BIC所使用的计算机语言。
其次,对本申请技术方案的应用场景进行说明。
本申请的技术方案可应用于IBI系统,并利用IBI系统构建多个安全、稳定、合规的环境,并且在这些环境下能够为不同产品的需求提供构建服务,快速、有效地查找到每个请求消息所对应的目标节点,从而提高作业分发效率。
其中,本技术方案可应用于所有环境代码化和动态作业分发的场景,如开发环境,测试环境,运行环境等。另外,本技术方案还可以应用于任何需要双交付的应用场景,例如电商应用的业务场景,IBI系统或者云平台系统在向客户交付应用时,还同时交付全部云平台上的DevOps环境,从而达到基于统一DevOps环境,提升软件开发效率和快速响应的市场需求。
参见图1,为本申请实施例提供的一种IBI系统的结构示意图。该IBI系统包括:至少一个客户端(client)、前端仪表板(front-end server)1、反向代理(reverse  proxy)服务器2、服务集群(server cluster)3、BIC仓库(repository)4、产品代码仓库5、高速缓冲存储器(Cache)6和镜像仓库7。
具体地,所述客户端可以是一种终端设备,是指向用户提供服务和/或数据连通性的设备,具有无线连接功能的手持式设备、或连接到无线调制解调器的其他处理设备,例如无线终端。
进一步地,所述无线终端可以经无线接入网(radio access network,RAN)与一个或多个节点进行通信,所述无线终端可以是移动终端,如移动电话(或称为“蜂窝”电话)和具有移动终端的计算机,例如,可以是便携式、袖珍式、手持式、计算机内置的或者车载的移动装置,它们与无线接入网交换语言和/或数据。例如,个人通信业务(personal communication service,PCS)电话、无绳电话、会话发起协议(session initiation protocol,SIP)话机、无线本地环路(wireless local loop,WLL)站、个人数字助理(personal digital assistant,PDA)等设备。所述无线终端也可以为订户单元(subscriber unit)、订户站(subscriber station),移动站(mobile station)、移动台(mobile)、远程站(remote station)、接入点(access point)、远程终端(remote terminal)、接入终端(access terminal)、用户终端(user terminal)、用户代理(user agent)、用户设备(user device)或用户设备(user equipment,UE)等,本申请的实施例对终端设备所采用的具体技术和具体设备形态不做限定。
前端仪表板(front-end server)1或者简称仪表板,用于接收至少一个客户端输入的配置参数,所述配置参数用于配置用户需要的构建环境,生成BIC,以及根据该BIC启动构建作业流程。进一步地,所述配置参数包括但不限于:节点资源、操作系统、编程语言运行时、编译器及其配置、第三方依赖等。进一步地,节点资源包括比如4核CPU,16GB内存等,操作系统包括比如Ubuntu(linux)、IOS系统等,编程语言运行时包括比如JVM(java)等,第三方依赖可以是依赖于产品开源的某个组件模块等。
反向代理(reverse proxy)服务器2用于在仪表板配置完用户需要的各种构建环境,并构建了资源池,其中在资源池中部署了不同构建环境下至少一个节点时,接收请求消息,并根据该请求消息在资源池中查找目标节点,并向该目标节点下发请求消息,以使得该目标节点能够根据请求消息的内容完成产品安装包的构建任务。
服务集群3可以是由至少一个节点组成的资源池,用于接收来自反向代理的请求消息,并执行预先生成的BIC,即在特定运行环境下执行的产品流水线代码(BIC中的一部分代码)从而得到对应的产品安装包,完成构建任务。
其中所述节点包括但不限于处理器、芯片单元、逻辑电路等。
可选的,在服务集群3中还包括容器编排器(或者称基础设施服务器),用于设置和记录服务集群中各个节点的状态,所述各节点的状态包括上线(online)和下线(offline)状态。
另外,前端仪表板1和反向代理服务器2可以合设成一个设备,比如服务器;或者也可以分设,本实施例对此不作具体限制。
BIC仓库4用于存储前端仪表板1生成的BIC,以备服务集群3调用。
产品代码仓库5用于存储产品源代码,当被选择的目标节点执行构建作业时,该目标节点从产品代码仓库5中获取产品源代码,执行预先定义的BIC中的产品流水线代码,最终得到二进制的产品安装包。
高速缓冲存储器(Cache)6可用于存储“节点状态表”,节点状态表中包括至少一个对应关系,每个对应关系为一个节点与一个产品信息之间的关系,该产品信息包括产品名称和版本号,例如节点1、产品A和版本号0.0.1。另外每个对应关系还包括该节点的状态,所述状态包括空闲和忙碌,进一步地,空闲状态可用“1”表示,忙碌状态可用“0”表示。此外,每个对应关系中还可以包括更多信息,比如每个节点的IP地址和端口号等。
例如一种节点与产品信息之间的对应关系为:节点1、产品A-0.1.1-192.168.0.12-2315、0。可以解读为节点1的IP地址为192.168.0.12,端口号为2315,可以用于特定环境下执行产品A,版本号为0.1.1的构建任务,得到该产品A版本号为0.1.1的安装包,且当前节点1的状态为空闲,可以在接收到请求消息时立即执行构建任务。
镜像仓库7用于存储各个节点的镜像文件,所述镜像文件用于部署和生成各个节点。进一步地,该镜像文件是反向代理服务器2在执行BIC时生成。且镜像文件可以复制,所以可以通过复制镜像文件生成或者部署多个节点,这些节点可为同一环境构建相同产品的安装包。
下面对本申请实施例提供的方法进行介绍。
本实施例提供一种节点选择方法,该方法可由IBI系统中的服务器或处理器来执行,且该服务器或处理器具备上述仪表板和反向代理服务器的功能。进一步地,如图2所示,该方法包括:
步骤201:接收请求消息,所述请求消息用于请求提供用户所需产品的安装包,且所述请求消息中携带有唯一标识用户所需产品的产品信息。
其中,所述产品信息包括产品名称和该产品名称对应的版本号,或者还可以包括产品类型等。另外,所述请求消息可以来自外部系统或来自某一客户端。
步骤202:根据所述请求消息中的产品信息,在节点状态表中查找与所述产品信息对应的目标节点,其中所述节点状态表中包括至少一个对应关系,每个所述对应关系为一个节点与一个产品信息之间的关系,且所述节点状态表中的每个节点的状态为空闲。
具体地,步骤202包括:服务器在节点状态表中查找与所述产品名称和所述版本号相同的产品信息,并作为目标产品信息;然后服务器根据所述目标产品信息以及所述目标产品信息的对应关系,确定所述目标节点。节点状态表用于反应当前服务集群资源池中各个节点的状况,包括节点编号、每个节点可构建的产品名称(或产品类型)、版本号、节点的IP地址和节点状态等。
例如,当前请求消息中包括产品名称为微信,对应的版本号为10.0.1,若服务器在节点状态表中筛选出有3个节点都可以为该微信的请求消息提供构建服务,则按顺序选择第一个节点作为目标节点。
步骤203:将所述请求消息发送给所述目标节点,以使所述目标节点为所述用户 所需产品构建对应的产品安装包。
具体地,目标节点接收该请求消息之后,根据请求消息中携带的产品名称和版本号执行预先生成的BIC代码,得到对应产品的安装包。其中,所述预先生成的BIC代码用于为生成某一特定环境下的产品安装包提供基础。
另外,生成BIC代码的过程在上述步骤201之前,具体包括:服务器接收用户输入的配置参数,所述配置参数用于配置用户期望构建产品时所需的至少一个构建环境;根据所述配置参数生成至少一个构建环境代码BIC,并运行每个所述BIC得到与每个所述BIC相对应的镜像文件;然后服务器根据所述镜像文件生成至少一个节点,其中一个节点服务于一个镜像文件所对应的构建环境,且在所述构建环境下产生唯一的产品名称和版本号;以及根据每个所述节点和所述节点在所述构建环境下产生唯一的产品名称和版本号,建立所述至少一个对应关系,最后根据所述至少一个对应关系和每个节点的状态生成所述节点状态表。
本实施例中,通过配置参数生成BIC,并执行BIC生成多个镜像文件,根据这些镜像文件部署多个节点,形成服务集群资源池,已准备执行构建作业,完成产品安装包的构建。由于每一个节点可以针对一种构建环境执行构建作业,将这些所有节点的情况整合形成资源池的节点状态表,以为后续快速查找目标节点做准备。
本实施例提供的方法,根据请求消息中的产品信息,以及节点状态表中包含的对应关系,能够快速地查找到该产品信息所对应的目标节点,并且该目标节点为空闲,从而将该请求消息发送给目标节点后,目标节点能够快速和有效地执行请求消息的产品构建作业,构建出产品的安装包,本方法提高资源池中目标节点的查找效率。
另外,本方法还包括:动态地更新节点状态表中各个节点的状态。对某一类型的节点的数据做增加或减少处理,以保证集群中有预备数量的可用节点,随时为该类型的产品提供服务。
具体地,例如服务集群中有多个第一节点,第一节点用于在第一环境下构建第一产品的安装包,且上述目标节点为多个第一节点中的一个;在上述步骤203之后,还包括:服务器在所述节点状态表中标记该目标节点的状态为忙碌;检测所述节点状态表中所有空闲状态的第一节点的数量是否小于第一阈值;如果小于所述第一阈值,则配置和增加所述第一节点的数量,使得增加后的第一节点的数量不小于所述第一阈值。所述第一阈值可根据服务器启动并建立第一节点的速度来确定,由于根据镜像文件构建一个节点所需要的时间较长,所以提前预先部署和控制第一节点的数量,以便能够在再次接收到请求消息时,迅速地找到目标节点并提供服务。
同理地,在所述目标节点执行完所述请求消息的构建任务的情况下,标记所述目标节点的状态为空闲,并更新所述节点状态表;如果所述节点状态表中所有空闲状态的第一节点的数量超过第二阈值,则减少所述第一节点的数量,使得减少后的第一节点的数量不超过所述第二阈值。
在本申请的一个具体的实施例中,如图3所示,为另一种IBI系统架构的结构示意图。该图为上述图1系统的拓展,具体地,该系统中包括:服务器302、BIC仓库303、流水线304、镜像仓库305、服务集群(节点307/308/309)、容器编排器310、高速缓冲存储器311和产品代码仓库312等。此外在系统外部还包括至少一个客户端 301和外部系统306。其中,服务器302包括仪表板和反向代理服务器。
该系统用于执行图4所示的方法流程,实现对在某一特定环境下节点的快速、高效查找。具体地,如图4所示,该方法包括两部分流程,第一部分流程从步骤401至405,主要是服务器执行环境配置、BIC生成、节点部署的功能。第二部分流程从步骤406至412,主要是服务器执行确定目标节点,将请求消息分发给该目标节点的功能,以及目标节点根据请求消息完成构建任务。
具体地,在第一部分流程中,包括:
步骤401:服务器302接收用户输入的配置参数,根据该配置参数配置用户需要的构建环境。进一步地,所述配置参数包括但不限于:节点资源、操作系统、编程语言运行时、编译器及其配置、第三方依赖等。
具体地,软件开发、测试和运维人员通过服务器中的仪表板进行配置参数的输入。
步骤402和403:服务器302根据配置参数,以及模板修改已有的BIC生成构建环境代码BIC。若生成多个BIC,则每个BIC包括“产品流水线代码”和“运行环境代码”。
可选的,还包括:服务器302将一个或多个BIC存储在BIC仓库303中。
例如,本实施例中,如果生成多个BIC,则这些BIC之间的关系可以是:产品A(prodA)在构建环境1中生成BIC1;产品A在构建环境2中生成BIC2;产品A在构建环境3中生成BIC3,且BIC1、BIC2和BIC3存储在同一BIC仓库中,但是存储在该同一BIC仓库的三个分支上。
步骤404:在步骤403生成BIC的过程中“修改已有的BIC”时还包括,服务器302触发BIC流水线(比如获得基础镜像,安装各种编译工具和依赖)生成一个或多个镜像文件。具体地,服务器302执行BIC1中的产品流水线代码(简称“流水线”)生成BIC1对应的镜像文件1;同理地,执行BIC2中的“流水线”生成BIC2对应的镜像文件2;执行BIC3中的“流水线”生成BIC3对应的镜像文件3。
可选的,镜像文件1、镜像文件2和镜像文件3存储在镜像仓库305中。
步骤405:服务器302根据镜像仓库中存储的镜像文件(1/2/3)生成至少一个节点,比如生成节点1、节点2和节点3,这些节点形成服务集群资源池。例如,节点1用于为产品A(prodA)在构建环境1下提供服务;节点2用于为产品A(prodA)在构建环境2下提供服务;节点3用于为产品A(prodA)在构建环境3下提供服务。另外还可以包括不同类别的产品。
还包括:容器编排器310根据各个节点的状态(包括忙碌、空闲、在线三种状态),生成“节点状态表”,并且将该“节点状态表”存储在高速缓冲存储器311中。
具体地,构建节点状态表的过程包括构建至少一个对应关系,每个对应关系为一个缓存键和一个缓存值之间的对应关系,进一步地,缓存键包括:产品名称(Product Name)或产品类型(Product Type)和版本号(Version)、节点的IP地址和端口号(Port)等;缓存值用于指示节点状态,该节点状态包括“空闲”和“忙碌”,进一步地,“0”表示空闲,“1”表示忙碌。
进一步地,缓存值的确定过程包括:如图5所示,服务集群中的每个节点307(或308、309)包括三个模块,分别是超文本传输协议(Hyper Text Transport Protocol, HTTP)模块3011、监控模块3012和产品流水线模块3013,其中,HTTP模块3011用于接收服务器302发送的请求消息,在接收到请求消息后,利用产品流水线模块3013来执行所述请求消息所对应的构建作业,生成对应产品的安装包。此外HTTP模块3011还用于将请求消息转换成HTTP格式。监控模块3012用于监控所述构建作业是否完成,如果完成,则配置该节点的状态为空闲;如果未完成或正在执行构建作业,则配置其状态为忙碌。
可选的,HTTP模块3011还用于对节点307(或308、309)进行注册,例如节点启动构建作业后,会利用HTTP模块3011将节点的相关信息注册到高速缓冲存储器311中,所述节点的相关信息包括节点IP地址、端口号、执行构建作业的环境、产品类型和版本号等。例如,注册的缓存项包括缓存键和缓存值。
缓存键:产品类型-版本号-IP地址-端口号;
缓存值:0(默认)。
一般地,当节点未被分配请求消息时,HTTP模块3011设置自身的缓存值为“0”;当接收到请求消息时,设置自身的缓存值为“1”,且在忙碌状态下不再接收新的请求消息,直到节点完成当前构建任务时,将自身的状态设置为“0”。
参见表1示出了一种节点状态表,该节点状态表中包括至少一个构建节点的节点编号与缓存键、缓存值之间的对应关系。
Figure PCTCN2020083626-appb-000001
表1
另外,需要说明的是,表1中列出的所有节点均为在线(online),即能够为请求消息提供服务,构建相应产品的安装包。具体地,每个构建节点是否是处于在线状态,可以由容器编排器310来设置,并反映在节点状态表中。服务器302维护节点状态表中各个节点的在线情况,如果服务器302检测到某一节点下线(offline),则将该节点在节点状态表中删除,以避免该节点再接收和执行构建任务。
可选的,所述节点状态表存储在高速缓冲存储器311中。
下面对上述步骤403中生成的BIC的“产品流水线代码”和“运行环境代码”的结构和功能进行介绍。
在产品流水线代码中包括三个执行阶段,这三个执行阶段分别是:安装、构建、部署。其中,在安装阶段用于获取产品源代码,具体地,该产品源代码可从产品代码仓库312中获取;在构建阶段用于执行测试脚本,在部署阶段则生成镜像文件,以及 部署多个节点,形成服务集群。
其中,在执行上述产品流水线代码的三个执行阶段时,需要输入参数,或者提供相关信息,该相关信息可通过运行环境代码来提供,即在运行环境代码所定义的参数条件下,执行该产品流水线代码,能够得到服务于特定环境的节点。
例如,上述外部输入的配置参数包括:language_runtime(编程语言运行时)、sdk_version(SDK及版本)、repository(产品源代码仓库)等,为了方便识别配置参数,一般可以将需要输入的配置参数用符号“$”来标记,比如“$language_runtime”表示编程语言运行时的变量参数。
可选的,本实施例中例举一种运行环境代码的示例,该示例中描述了执行“产品流水线代码”所需的运行环境(参数)等。
Figure PCTCN2020083626-appb-000002
其中,在该运行环境代码中定义了两类服务对象,分别是构建者(builders)和供应方(provisioners)。在构建者部分包含执行构建作业的产品类型(type),节点访问权限(例如接入密钥access_key,秘密密钥secret_key),资源地区(region),比如服务器部署的节点位于华东、华北地区,镜像文件名称(image_name),基础镜像类型和地址(base_image),访问用户名(ssh_username),实例类型(instance_type)例如,实例类型是指4U8G表示一个具有4核CPU、8GB内存类型的节点。另外,还包括定义多个构建者,不同的构建者可以构建不同类别的运行环境,以便实现在多种环 节下不同类节点集成在一个服务集群中,比如通过两个构建者可以定义两种运行环境,并且对应的分别部署构建节点(build node)1和构建节点(build node)2来执行这两种运行环境下的构建作业。
在供应方部分可通过运行环境代码定义一个或多个单元,这些单元可用于安装或配置运行环境所依赖的工具软件。另外,还可以定义多个供应方,比如ansible-local和shell。变量(variables)部分用于输入外部参数,比如进入密钥、访问密钥、镜像地址等。此外在产品流水线代码中还需要一些数据,包括playbook_file、role_path、script_path等供应方的代码、构建脚本,各种配置管理工具组件及相关的扩展和依赖等都存储在产品代码仓312中。
下面示出了一种产品流水线代码:
Figure PCTCN2020083626-appb-000003
Figure PCTCN2020083626-appb-000004
本实施例中,服务器通过执行上述“运行环境代码”形成镜像文件,生成和部署至少一个节点,形成服务集群资源池,该资源池中的每个节点能够在其对应的运行环境下执行作业任务,节点建立和部署完成之后,当其中的一个或多个节点接收到请求消息或业务请求时,运行“产品流水线代码”,将产品代码仓库中的源代码生成对应产品的二进制包,以备后续安装使用。
需要说明的是,本实施例仅例举了一个BIC的“运行环境代码”和“产品流水线代码”,还可以包括其他更多或更少的内容,本实施例对此不予限制。
另外,上述BIC代码一旦生成就不可更改,即不支持用户或开发者直接在节点上对运行环境进行更改,若需要对某产品的运行环境代码做改变,则需要客户端提交BIC修改请求,服务器判断该修改请求,如果批准,则该请求允许被更改。修改是触发流水线执行BIC生成镜像文件。
本实施例公开的上述方法,服务器利用配置参数将不同环境代码化表示,基于已有的DSL语言,设计定制高效扩展和解释器,将构建环境(“运行环境代码”和“产品流水线代码”)以BIC的形式代码化,实现对目标构建环境的可复制、构建过程可重复、构建部署可检查巡视的有益效果,解决了构建环境黑盒化、手工化和不可重复等问题。
如图4所示,该方法还包括第二部分流程,具体地,
步骤406:用户通过客户端301向服务器发送请求消息;或者,步骤407:外部系统306向服务器发起请求消息。
其中,所述请求消息用于请求服务器构建用户所需的产品安装包。进一步地,请求消息中包括产品类型/产品名称和版本号。所述产品类型和版本号,或者产品名称和版本号用于唯一确定用户所需的一种产品。例如微信10.0.1。且该请求消息中携带的产品名称和版本号所需的构建环境为预先配置的环境中的一种,即用于生成产品名称“微信”,版本号“10.0.1”的安装包的构建环境已经预先在第一部分流程中预备好。
可选的,外部系统包括项目管理、开发集成环境(Integrated Development Environment,IDE)、代码托管、测试、发布、部署等,可以无缝集成到构建请求服务,实现全生命周期一站式全技术栈软件研发服务。
步骤408:服务器302接收来自客户端301或外部系统306请求消息,根据所述请求消息所携带的信息在“节点状态表”查找对应的目标节点。
步骤409:如果存在目标节点,则将请求消息或构建作业发送给该目标节点,其中所述构建作业是根据所述请求消息生成的。
如果不存在目标节点,则返回步骤405,执行构建镜像文件生成节点的操作。
步骤410:目标节点接收服务器发送的请求消息或构建作业之后,执行相应BIC中的产品流水线代码得到二进制的安装包。例如,目标节点为节点1,则节点1接收到请求消息或构建作业之后执行“产品A在构建环境1”的产品流水线代码,生成产品A的安装包。
另外,还包括:节点1将该产品A的安装包存储在产品仓库中。
此外,上述方法还包括:动态调整服务集群中空闲节点的数量。具体地,
步骤411:服务器302判断当前空闲节点的数量是否在预设范围内。例如当节点1执行构建作业变成忙碌状态时,检测当前空闲的节点1的数量是否在预设范围内。
步骤412:如果不在该预设范围内,则对这一类型的节点数目做增加或减少,使得增加或减少的节点数量在该预设范围内。
比如当用于构建微信10.0.1的空闲节点的数量小于预设最小值时,增加新的空闲节点使得增加后的空闲节点的数量达到预设范围的最小值。同理地,当节点1完成构建任务变成空闲状态时,此时空闲状态的节点1的数量可能超过预设范围的最大值,则适当的减少节点1的数量,使其控制在预设范围内。
同理的,对于每一类节点服务器302都控制一个数量范围,比如执行构建产品A的第一类节点(节点307)数量的预设范围[a1,b1],执行构建产品B的第二类节点(节点308)数量的预设范围[a2,b2],执行构建产品C的第三类节点(节点309)数量的预设范围[a3,b3],从而使得资源池中各类节点数量可以自由切换,达到充分利用资源池的目的,提高了构建产品的效率。
此外,为了提供请求消息的发送效率,避免丢失某一请求消息,本实施例中还公开了一种动态构建作业分发(Dynamic Build Job Dispatching)方法,该方法可应用于需要发送海量的构建产品安装包的请求消息的情况,因为云服务的特征是能够应对请求量的不可预测性,当短时间内有海量构建请求消息发送到服务器时,为了提高构建作业分发的效率,减少请求消息丢失,可以对海量的构建请求消息进行批量分发。
一种具体的实现方法是,服务器302在接收的所述请求消息的数量为N的情况下,N为预设时间内获取的请求消息的数量,N≥2且为正整数,在所述节点状态表中查找与每个请求消息携带的产品信息向对应的目标节点,得到N个目标节点;然后将这N个请求消息发送给对应的N个目标节点。其中,预设时间内获取的N个请求消息可通过缓存技术(如Redis缓存)存储在分发队列中。
例如,服务器在内存创建一个先进先出队列(Frist In First Out Queue,FIFIO),当服务器根据队列中的每个请求消息查找到对应的目标节点后,将该队列中的所有请求消息一起发送给服务集群中对应的目标节点,同时清空队列,以便在下一个预设时间段内继续获取请求消息,查找每个请求所对应的目标节点,最后将这些请求消息一起分发给对应目标节点。进一步地,服务器通过在配置文件实现对预设时间内队列中所有请求消息的分发,比如在配置文件中设置轮询(round robin)负载均衡算法,具体第,该算法包括:设置当获取的请求消息的数量达到队列所能容纳的消息数量极限时启动作业分发操作,或者按照预设时间段内接收所有请求消息的原则分发队列中的请求消息。
可选的,当瞬时出现海量的构建请求消息的需要提供服务时,服务器还设置一个存储空间,用于存储所有外部的请求消息,然后在这些外部请求消息中建立队列,并进行作业分发。
此外,服务器配置实时更新的轮询算法,能够有效地提升作业分发效率,并可以适应于多种类节点请求负载均衡的场景。
本实施例提供了的方法,包括:客户端配置生成BIC、BIC存储、对该BIC检视、修改和执行,生成构建环境的镜像文件,从而实现了将不同产品构建环境通过代码化展现,并且达到统一构建IBI系统的源代码输入端到产品安装包的输出端的解决方案,本方法使得部署安全、一致、合规的构建环境变得容易,显著提高构建能力。并且也解决了复杂产品在大规模构建过程中的高复杂度、深构建层级、交付易出错、低构建资源复用率和利用率等问题。
在具体应用中,本实施例提供的方法,可以应用于图6所述的智能应用验证平台中,具体地,所述平台包括:用户500、应用代码仓库501、智能代码分析502、IBI系统503(如图3所示)、部署服务504、真机开放平台505和应用市场506。进一步地,用户500从应用代码仓库501中获取产品的应用代码(产品或源代码),并将该应用代码发送给智能应用验证DevOps平台中的智能代码分析装置502,该智能代码分析装置502对该应用代码分别在安全性,兼容性,稳定性等方面进行分析,IBI系统503根据应用代码对应产品的类别提供安全、一致、合规的构建环境,并生成产品安装包或应用程序包(application package,APK),最后将该产品安装包或应用程序包发送给真机开放平台505进行真机测试验证,验证通过后投入应用市场506。
本技术方案配合智能应用验证平台(如安卓绿色联盟或HiAi平台),提供一套统一的应用构建、测试和验证DevOps的环境,旨在优化现行测试验证流程,结合智能代码服务,从应用程序源代码入手,进行智能分析检测,标准构建平台构建生成产品安装包或应用程序包,最后部署到终端的真机开放平台进行自动化真机测试。如果智能分析,构建和真机测试验证都通过,才发布到应用市场(或由用户自行发布)。本方法增加应用代码级别质量保证,确保真机验证流程的基础质量标准,提高测试效率及测试平台生产率。
另外,由于很多手机游戏、应用开发公司都不希望将产品代码对外开放,即使是在封闭的持续交付环境也不希望,但希望能通过同一套智能应用验证平台(如图6所示)对开发流程进行管理,从而保证最后发布的游戏或产品安装包能顺利通过验证,本实施例的技术方案可以方便交付部署整套智能应用验证DevOps平台到用户数据中心(用户按使用付费),从而保证用户在开发过程中代码的安全性,兼容性,稳定性,并且满足用户的要求。
下面介绍与上述各方法实施例对应的装置实施例。
参见图7,为本申请实施例提供的一种通信装置的结构示意图。所述装置可以是前述方法实施例中的服务器,也可以是一种网络设备、通信设备,或者还可以是位于网络设备中的部件,例如芯片。进一步地,该装置可以实现前述实施例中的服务器的所有功能。
进一步地,如图7所示,该装置可以包括:接收单元701、处理单元702和发送单元703,另外,所述装置还可以包括存储单元或其他的单元或模块。
其中,接收单元701用于接收请求消息,所述请求消息用于请求提供用户所需产品的安装包,且所述请求消息中携带有唯一标识用户所需产品的产品信息;处理单元702用于根据所述请求消息中的产品信息,在节点状态表中查找与所述产品信息对应的目标节点,其中所述节点状态表中包括至少一个对应关系,每个所述对应关系为一 个节点与一个产品信息之间的关系,且所述节点状态表中的每个节点的状态为空闲;发送单元703用于将所述请求消息发送给所述目标节点,以使所述目标节点为所述用户所需产品构建对应的产品安装包。
可选的,在本实施例的一种具体的实现方式中,所述产品信息包括产品名称和所述产品名称对应的版本号,处理单元702具体用于在所述节点状态表中查找与所述产品名称和所述版本号相同的产品信息,并作为目标产品信息;根据所述目标产品信息以及所述目标产品信息的对应关系,确定所述目标节点。
可选的,在本实施例的一种具体的实现方式中,接收单元701还用于在接收请求消息之前,接收用户输入的配置参数,所述配置参数用于配置用户期望构建产品时所需的至少一个构建环境;处理单元702还用于根据所述配置参数生成至少一个构建环境代码,并运行每个所述构建环境代码得到与每个所述构建环境代码相对应的镜像文件;根据所述镜像文件生成至少一个节点,根据每个所述节点和所述节点在所述构建环境下产生唯一的产品名称和版本号,建立所述至少一个对应关系,根据所述至少一个对应关系和每个节点的状态生成所述节点状态表,其中一个节点服务于一个镜像文件所对应的构建环境,且在所述构建环境下产生唯一的产品名称和版本号。
可选的,在本实施例的一种具体的实现方式中,第一节点用于在第一环境下构建第一产品的安装包,所述目标节点为一个所述第一节点;处理单元702还用于在所述发送单元将所述请求消息发送给所述目标节点之后,在所述节点状态表中标记所述目标节点的状态为忙碌;检测所述节点状态表中所有空闲状态的第一节点的数量是否小于第一阈值;如果小于所述第一阈值,则配置和增加所述第一节点的数量,使得增加后的第一节点的数量不小于所述第一阈值。
可选的,在本实施例的一种具体的实现方式中,处理单元702还用于在所述目标节点执行完所述请求消息的构建任务的情况下,标记所述目标节点的状态为空闲,并更新所述节点状态表;如果所述节点状态表中所有空闲状态的第一节点的数量超过第二阈值,则减少所述第一节点的数量,使得减少后的第一节点的数量不超过所述第二阈值。
此外,处理单元702还用于将下线状态的节点从所述节点状态表中删除。
可选的,所述装置在作为容器编辑器时,处理单元702还用于检测资源池中每个节点的状态,所述状态包括在线和下线状态,以及为每个节点标记在线或下线状态。
可选的,在所述装置用于生成BIC时,接收单元701用于获取外部环境参数,所述外部环境参数包括:编程语言种类及版本、软件开发工具包SDK及其版本、产品源代码仓库;处理单元702用于根据所述外部环境参数生成BIC,以及将所述BIC存储在BIC代码仓库中。
另外,所述BIC包括产品流水线代码和运行环境代码。进一步地,处理单元702还用于执行BIC中的运行环境代码可得到该运行环境下的镜像文件,镜像文件用于生成一个或多个节点;执行BIC中的产品流水线代码时,需要先获取产品对应的源代码,根据所述产品对应的源代码在执行所述产品流水线代码后生成该产品的二进制包,所述二进制包可以包括二进制的产品安装包或应用程序包。
参见图8,为本申请实施例提供的一种通信设备的结构示意图。该通信设备可以 是前述实施例中的服务器或通信装置,或者是可以用于该服务器或通信装置的部件(例如芯片)。该通信设备可以实现前述实施例中的服务器的功能或操作。
如图8所示,所述通信设备可以包括收发器801、处理器802;进一步地,还可以包括存储器803,其中存储器803可以用于存储代码或者数据。收发器801可以包括接收机、发射机与天线等部件。所述通信设备还可以包括更多或更少的部件,或者组合某些部件,或者不同的部件布置,本申请对此不进行限定。
处理器802为通信设备的控制中心,利用各种接口和线路连接整个通信设备的各个部分,通过运行或执行存储在存储器803内的软件程序或模块,以及调用存储在存储器803内的数据,以执行通信设备的各种功能或处理数据。
处理器802可以由集成电路(integrated circuit,IC)组成,例如可以由单颗封装的IC所组成,也可以由连接多颗相同功能或不同功能的封装IC而组成。举例来说,处理器802可以仅包括中央处理器(central processing unit,CPU),也可以是GPU、数字信号处理器(digital signal processor,DSP)、及收发模块中的控制芯片(例如基带芯片)的组合。在本申请的各种实施方式中,CPU可以是单运算核心,也可以包括多运算核心。
可选的,处理器802中包括处理芯片,所述处理芯片中可以包括一个或多个随机存取存储单元,所述存储单元可用于存储指令或计算机程序。
收发器801用于建立通信信道,使通信设备通过所述通信信道以连接至通信网络,从而实现通信设备与其他设备之间的通信传输。其中,所述收发器801可以是完成收发功能的模块。例如,所述收发器801可以包括无线局域网(wireless local area network,WLAN)模块、蓝牙模块、基带(base band)模块等通信模块,以及所述通信设备对应的射频(radio frequency,RF)电路,用于进行无线局域网络通信、蓝牙通信、红外线通信及/或蜂窝式通信系统通信,例如宽带码分多重接入(wideband code division multiple access,WCDMA)及/或高速下行封包存取(high speed downlink packet access,HSDPA)。收发器801用于控制通信设备中的各组件的通信,并且可以支持直接内存存取(direct memory access)。
在本申请的不同实施方式中,所述收发器801中的各种收发模块一般以集成电路芯片(integrated circuit chip)的形式出现,并可进行选择性组合,而不必包括所有收发模块及对应的天线组。例如,所述收发器801可以仅包括基带芯片、射频芯片以及相应的天线以在一个蜂窝通信系统中提供通信功能。经由收发器建立的通信连接,例如无线局域网接入或WCDMA接入,所述通信装置可以连接至蜂窝网(cellular network)或因特网(internet)。
存储器803可以包括易失性存储器(volatile memory),例如随机存取内存(random access memory,RAM);还可以包括非易失性存储器(non-volatile memory),例如快闪存储器(flash memory),硬盘(hard disk drive,HDD)或固态硬盘(solid-state drive,SSD);存储器803还可以包括上述种类的存储器的组合。所述存储器中可以存储有程序或代码或者数据,通信设备中的处理器802通过执行所述程序或代码可以实现所述通信装置的功能。
在本申请实施例中,处理器802及收发器801可以单独或相耦合以实现前述方法 实施例中的节点确定方法、节点状态配置中的全部或部分步骤。例如,当所述通信设备作为前述实施例中的服务器时,收发器801可以接收请求消息,所述请求消息用于请求提供用户所需产品的安装包,且所述请求消息中携带有唯一标识用户所需产品的产品信息;处理器802根据所述请求消息中的产品信息,在节点状态表中查找与所述产品信息对应的目标节点,其中所述节点状态表中包括至少一个对应关系,每个所述对应关系为一个节点与一个产品信息之间的关系,且所述节点状态表中的每个节点的状态为空闲;最后,收发器801将所述请求消息发送给所述目标节点,以使所述目标节点为所述用户所需产品构建对应的产品安装包。
进一步地,图7中的接收单元701和发送单元703所要实现的功能可以由所述通信设备的收发器801实现,或者由处理器802控制的收发器801实现,处理单元702所要实现的功能则可以由所述处理器802实现。
此外,本申请还提供一种计算机存储介质,其中,该计算机存储介质可存储有程序,该程序执行时可包括本申请提供的消息发送方法、消息接收方法的各实施例中的部分或全部步骤。所述的存储介质可为磁碟、光盘、只读存储记忆体ROM或随机存储记忆体RAM等。
在上述实施例中,可以全部或部分通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。
所述计算机程序产品包括一个或多个计算机指令,例如切换指令,在计算机加载和执行所述计算机程序时,全部或部分地产生按照本申请上述各个实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络或者其他可编程装置。
所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网络节点、计算机、服务器或数据中心通过有线或无线方式向另一个站点、计算机或服务器进行传输。
所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等存储设备。所述可用介质可以是磁性介质,例如软盘、硬盘、磁带、光介质(例如DVD)、或半导体介质,例如固态硬盘SSD等。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
本领域的技术人员可以清楚地了解到本申请实施例中的技术可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本申请实施例中的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计 算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。
本说明书中各个实施例之间相同相似的部分互相参见即可。尤其,对于网络设备/节点或装置设备而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例中的说明即可。
以上所述的本申请实施方式并不构成对本申请保护范围的限定。

Claims (14)

  1. 一种节点选择方法,其特征在于,所述方法包括:
    接收请求消息,所述请求消息用于请求提供用户所需产品的安装包,且所述请求消息中携带有唯一标识用户所需产品的产品信息;
    根据所述请求消息中的产品信息,在节点状态表中查找与所述产品信息对应的目标节点,其中所述节点状态表中包括至少一个对应关系,每个所述对应关系为一个节点与一个产品信息之间的关系,且所述节点状态表中的每个节点的状态为空闲;
    将所述请求消息发送给所述目标节点,以使所述目标节点为所述用户所需产品构建对应的产品安装包。
  2. 根据权利要求1所述的方法,其特征在于,所述产品信息包括产品名称和所述产品名称对应的版本号,
    所述根据所述请求消息中的产品信息,在节点状态表中查找与所述产品信息对应的目标节点,包括:
    在所述节点状态表中查找与所述产品名称和所述版本号相同的产品信息,并作为目标产品信息;
    根据所述目标产品信息以及所述目标产品信息的对应关系,确定所述目标节点。
  3. 根据权利要求1或2所述的方法,其特征在于,所述接收请求消息之前,还包括:
    接收用户输入的配置参数,所述配置参数用于配置用户期望构建产品时所需的至少一个构建环境;
    根据所述配置参数生成至少一个构建环境代码,并运行每个所述构建环境代码得到与每个所述构建环境代码相对应的镜像文件;
    根据所述镜像文件生成至少一个节点,其中一个节点服务于一个镜像文件所对应的构建环境,且在所述构建环境下产生唯一的产品名称和版本号;
    根据每个所述节点和所述节点在所述构建环境下产生唯一的产品名称和版本号,建立所述至少一个对应关系;
    根据所述至少一个对应关系和每个节点的状态生成所述节点状态表。
  4. 根据权利要求1-3任一项所述的方法,其特征在于,第一节点用于在第一环境下构建第一产品的安装包,所述目标节点为一个所述第一节点;
    所述将所述请求消息发送给所述目标节点之后,还包括:
    在所述节点状态表中标记所述目标节点的状态为忙碌;
    检测所述节点状态表中所有空闲状态的第一节点的数量是否小于第一阈值;
    如果小于所述第一阈值,则配置和增加所述第一节点的数量,使得增加后的第一节点的数量不小于所述第一阈值。
  5. 根据权利要求4所述的方法,其特征在于,所述方法还包括:
    在所述目标节点执行完所述请求消息的构建任务的情况下,标记所述目标节点的状态为空闲,并更新所述节点状态表;
    如果所述节点状态表中所有空闲状态的第一节点的数量超过第二阈值,则减少所述第一节点的数量,使得减少后的第一节点的数量不超过所述第二阈值。
  6. 根据权利要求1-5任一项所述的方法,其特征在于,在接收的所述请求消息的数量为N的情况下,N为预设时间内获取的请求消息的数量,N≥2且为正整数,
    所述在节点状态表中查找与所述产品信息对应的目标节点,包括:
    在所述节点状态表中查找与每个请求消息携带的产品信息向对应的目标节点,得 到N个目标节点;
    所述将所述请求消息发送给所述目标节点,包括:
    将所述N个请求消息发送给对应的N个目标节点。
  7. 一种节点选择装置,其特征在于,所述装置包括:
    接收单元,用于接收请求消息,所述请求消息用于请求提供用户所需产品的安装包,且所述请求消息中携带有唯一标识用户所需产品的产品信息;
    处理单元,用于根据所述请求消息中的产品信息,在节点状态表中查找与所述产品信息对应的目标节点,其中所述节点状态表中包括至少一个对应关系,每个所述对应关系为一个节点与一个产品信息之间的关系,且所述节点状态表中的每个节点的状态为空闲;
    发送单元,用于将所述请求消息发送给所述目标节点,以使所述目标节点为所述用户所需产品构建对应的产品安装包。
  8. 根据权利要求7所述的装置,其特征在于,所述产品信息包括产品名称和所述产品名称对应的版本号,
    所述处理单元,具体用于在所述节点状态表中查找与所述产品名称和所述版本号相同的产品信息,并作为目标产品信息;根据所述目标产品信息以及所述目标产品信息的对应关系,确定所述目标节点。
  9. 根据权利要求7或8所述的装置,其特征在于,
    所述接收单元,还用于在接收请求消息之前,接收用户输入的配置参数,所述配置参数用于配置用户期望构建产品时所需的至少一个构建环境;
    所述处理单元,还用于根据所述配置参数生成至少一个构建环境代码,并运行每个所述构建环境代码得到与每个所述构建环境代码相对应的镜像文件;根据所述镜像文件生成至少一个节点,根据每个所述节点和所述节点在所述构建环境下产生唯一的产品名称和版本号,建立所述至少一个对应关系,根据所述至少一个对应关系和每个节点的状态生成所述节点状态表,其中一个节点服务于一个镜像文件所对应的构建环境,且在所述构建环境下产生唯一的产品名称和版本号。
  10. 根据权利要求7-9任一项所述的装置,其特征在于,第一节点用于在第一环境下构建第一产品的安装包,所述目标节点为一个所述第一节点;
    所述处理单元,还用于在所述发送单元将所述请求消息发送给所述目标节点之后,在所述节点状态表中标记所述目标节点的状态为忙碌;检测所述节点状态表中所有空闲状态的第一节点的数量是否小于第一阈值;如果小于所述第一阈值,则配置和增加所述第一节点的数量,使得增加后的第一节点的数量不小于所述第一阈值。
  11. 根据权利要求10所述的装置,其特征在于,
    所述处理单元,还用于在所述目标节点执行完所述请求消息的构建任务的情况下,标记所述目标节点的状态为空闲,并更新所述节点状态表;如果所述节点状态表中所有空闲状态的第一节点的数量超过第二阈值,则减少所述第一节点的数量,使得减少后的第一节点的数量不超过所述第二阈值。
  12. 根据权利要求7-11任一项所述的装置,其特征在于,在接收的所述请求消息的数量为N的情况下,N为预设时间内获取的请求消息的数量,N≥2且为正整数,
    所述处理单元,具体用于在所述节点状态表中查找与每个请求消息携带的产品信息向对应的目标节点,得到N个目标节点;
    所述发送单元,具体用于将所述N个请求消息发送给对应的N个目标节点。
  13. 一种网络设备,包括处理器,所述处理器与存储器耦合,其特征在于,
    所述存储器,用于存储指令;
    所述处理器,用于执行所述存储器中的指令,使得所述网络设备执行如权利要求1至6中任一项所述的方法。
  14. 一种计算机可读存储介质,所述存储介质中存储有指令,其特征在于,
    当所述指令被运行时,实现如权利要求1至6中任一项所述的方法。
PCT/CN2020/083626 2019-05-16 2020-04-08 一种节点选择方法和装置 WO2020228449A1 (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
EP20805391.8A EP3961381B1 (en) 2019-05-16 2020-04-08 Method and apparatus for node selection
US17/526,402 US11861341B2 (en) 2019-05-16 2021-11-15 Node selection method and apparatus

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN201910407397.9 2019-05-16
CN201910407397.9A CN110187912B (zh) 2019-05-16 2019-05-16 一种节点选择方法和装置

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US17/526,402 Continuation US11861341B2 (en) 2019-05-16 2021-11-15 Node selection method and apparatus

Publications (1)

Publication Number Publication Date
WO2020228449A1 true WO2020228449A1 (zh) 2020-11-19

Family

ID=67716595

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/CN2020/083626 WO2020228449A1 (zh) 2019-05-16 2020-04-08 一种节点选择方法和装置

Country Status (4)

Country Link
US (1) US11861341B2 (zh)
EP (1) EP3961381B1 (zh)
CN (1) CN110187912B (zh)
WO (1) WO2020228449A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112667385A (zh) * 2021-01-15 2021-04-16 北京金和网络股份有限公司 一种云服务系统及其任务执行方法和装置及服务器

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110187912B (zh) 2019-05-16 2022-03-29 华为技术有限公司 一种节点选择方法和装置
CN110727439A (zh) * 2019-09-02 2020-01-24 深圳壹账通智能科技有限公司 软件安装包构建方法、装置、计算机设备及存储介质
CN112650666B (zh) * 2019-10-12 2024-04-09 北京达佳互联信息技术有限公司 一种软件测试系统、方法、装置、控制设备及存储介质
CN110928642B (zh) * 2019-11-06 2022-04-05 北京云思畅想科技有限公司 用于对资源统一抽象管理的方法以及系统
CN110837476A (zh) * 2019-11-14 2020-02-25 珠海西山居移动游戏科技有限公司 一种应用程序测试的方法和装置
CN111125719B (zh) * 2019-12-25 2023-10-24 中信百信银行股份有限公司 一种提升代码安全检测效率的方法、装置、计算机设备、和可读存储介质
CN113301136B (zh) * 2021-05-17 2022-12-30 银清科技有限公司 业务请求处理方法及装置
US20230074530A1 (en) * 2021-09-07 2023-03-09 Red Hat, Inc. Distributed data grid routing for clusters managed using container orchestration services
CN114398102B (zh) * 2022-01-18 2023-08-08 杭州米络星科技(集团)有限公司 一种应用程序包生成方法、装置、编译服务器及计算机可读存储介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100242034A1 (en) * 2006-11-01 2010-09-23 Microsoft Corporation Distributing software products as an executable containing script logic with external resources
CN109299194A (zh) * 2018-09-25 2019-02-01 平安科技(深圳)有限公司 多版本数据存储管理方法及装置、电子设备、存储介质
CN109344572A (zh) * 2018-10-11 2019-02-15 广州鼎甲计算机科技有限公司 分布式对象的许可方法和系统
CN109542611A (zh) * 2017-09-21 2019-03-29 中国移动通信集团重庆有限公司 数据库即服务系统、数据库调度方法、设备及存储介质
CN109710402A (zh) * 2018-12-17 2019-05-03 平安普惠企业管理有限公司 处理资源获取请求的方法、装置、计算机设备和存储介质
CN110187912A (zh) * 2019-05-16 2019-08-30 华为技术有限公司 一种节点选择方法和装置

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4907610B2 (ja) * 2008-07-29 2012-04-04 日立オートモティブシステムズ株式会社 ソフトウェア構成管理方法およびシステム
CN104156225B (zh) * 2013-05-14 2018-07-06 腾讯科技(深圳)有限公司 一种安装包的下载方法、系统及服务器
CN103475638B (zh) * 2013-07-29 2016-09-07 融创天下(上海)科技发展有限公司 一种媒体数据传输方法及系统
US20150294119A1 (en) * 2014-04-10 2015-10-15 International Business Machines Corporation Booting a multi-node computer system from a primary node dynamically selected based on security setting criteria
US9218176B1 (en) * 2014-06-13 2015-12-22 International Business Machines Corporation Software deployment in a distributed virtual machine environment
US10225137B2 (en) * 2014-09-30 2019-03-05 Nicira, Inc. Service node selection by an inline service switch
CN104902019B (zh) * 2015-05-20 2016-11-16 腾讯科技(深圳)有限公司 一种应用推广方法、服务器及终端
US10120664B2 (en) * 2015-08-28 2018-11-06 International Business Machines Corporation Incremental build generation
US9880827B2 (en) * 2015-08-30 2018-01-30 International Business Machines Corporation Managing software version upgrades in a multiple computer system environment
US9699205B2 (en) * 2015-08-31 2017-07-04 Splunk Inc. Network security system
US10412012B2 (en) * 2015-09-22 2019-09-10 Arris Enterprises Llc Intelligent, load adaptive, and self optimizing master node selection in an extended bridge
US10043133B2 (en) * 2016-04-08 2018-08-07 Pearson Education, Inc. Systems and methods of event-based content provisioning
CN107040513B (zh) * 2016-06-30 2020-06-02 郭铮铮 一种可信访问认证处理方法、用户终端和服务端
CN106375382B (zh) * 2016-08-26 2019-09-17 苏州蓝海彤翔系统科技有限公司 数据分配的方法、系统、控制服务器及节点客户端
CN107797807B (zh) * 2016-08-29 2021-04-06 阿里巴巴集团控股有限公司 生成容器的方法、装置、终端、服务器与系统
CN107872806B (zh) * 2016-09-23 2021-07-09 富士通株式会社 路由节点位置选择方法、装置和终端设备
CN106610870B (zh) * 2016-12-28 2019-10-15 北京奇艺世纪科技有限公司 一种处理节点数量调整方法及装置
US20180227201A1 (en) * 2017-02-08 2018-08-09 International Business Machines Corporation System, method and computer program product for test-driven node selection for a distributed system
CN106997297A (zh) * 2017-03-31 2017-08-01 广东亿迅科技有限公司 一种基于DevOps的软件开发管理平台及方法
CN107766052B (zh) * 2017-09-18 2020-09-25 网宿科技股份有限公司 一种构建容器镜像的方法和装置
CN108196878B (zh) * 2018-01-22 2020-12-18 广东小天才科技有限公司 应用程序安装包的生成方法、装置、电子设备及存储介质
JP6562093B2 (ja) * 2018-01-23 2019-08-21 日本電気株式会社 システム管理装置
US10498809B2 (en) * 2018-01-29 2019-12-03 Hewlett Packard Enterprise Development Lp Selections of managing nodes in clusters of nodes
CN109302522B (zh) * 2018-09-11 2020-09-01 京东数字科技控股有限公司 测试方法、装置以及计算机系统和介质

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100242034A1 (en) * 2006-11-01 2010-09-23 Microsoft Corporation Distributing software products as an executable containing script logic with external resources
CN109542611A (zh) * 2017-09-21 2019-03-29 中国移动通信集团重庆有限公司 数据库即服务系统、数据库调度方法、设备及存储介质
CN109299194A (zh) * 2018-09-25 2019-02-01 平安科技(深圳)有限公司 多版本数据存储管理方法及装置、电子设备、存储介质
CN109344572A (zh) * 2018-10-11 2019-02-15 广州鼎甲计算机科技有限公司 分布式对象的许可方法和系统
CN109710402A (zh) * 2018-12-17 2019-05-03 平安普惠企业管理有限公司 处理资源获取请求的方法、装置、计算机设备和存储介质
CN110187912A (zh) * 2019-05-16 2019-08-30 华为技术有限公司 一种节点选择方法和装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
See also references of EP3961381A4

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112667385A (zh) * 2021-01-15 2021-04-16 北京金和网络股份有限公司 一种云服务系统及其任务执行方法和装置及服务器

Also Published As

Publication number Publication date
EP3961381B1 (en) 2023-07-26
US11861341B2 (en) 2024-01-02
CN110187912A (zh) 2019-08-30
CN110187912B (zh) 2022-03-29
EP3961381A1 (en) 2022-03-02
US20220075610A1 (en) 2022-03-10
EP3961381A4 (en) 2022-06-22

Similar Documents

Publication Publication Date Title
WO2020228449A1 (zh) 一种节点选择方法和装置
CN109995713B (zh) 一种微服务框架中的服务处理方法及相关设备
CN109067890B (zh) 一种基于docker容器的CDN节点边缘计算系统
KR102499219B1 (ko) 동적 네트워크 인터페이스를 사용하는 상호운용가능 클라우드 기반 미디어 처리
US8914893B2 (en) Method and system for mobile information security protection
WO2019001074A1 (zh) 一种远程过程调用的方法、装置及计算机设备
WO2020087948A1 (zh) 网络切片模板生成方法、装置、设备及存储介质
CN109614147B (zh) 一种phy寄存器读写方法和装置
TW201441934A (zh) 客戶端的更新方法及裝置
JP6001099B2 (ja) ピアツーピア接続を実行するためのシステム及び方法
WO2016041322A1 (zh) 移动智能终端下转发应用内流量的方法
CN111245634B (zh) 一种虚拟化管理方法及装置
US11915034B2 (en) Sidecar-based integration capabilities for containerized applications
RU2600538C2 (ru) Запуск приложения на основе интерфейса передачи сообщения (mpi) в гетерогенной среде
JP5610654B2 (ja) 端末管理パッケージを提供する装置及び前記端末管理パッケージを受信する方法
JP2011198361A (ja) デバイス管理方法およびその装置
WO2023083071A1 (zh) 视图交互方法、装置、电子设备及计算机可读介质
Sulaiman et al. Mamoc-android: Multisite adaptive computation offloading for android applications
KR101351867B1 (ko) 소프트웨어 및 어플리케이션 제어 관리 객체에서의 단계 실행 결과를 처리하는 방법
CN111026502B (zh) 一种业务调试架构创建方法、装置及电子设备、存储介质
CN115934305A (zh) 云平台的管理方法、服务器及计算机可读存储介质
CN111193805A (zh) 一种资源发现的方法及装置
TWI552107B (zh) 業務處理方法、相關設備及系統
CN108694571A (zh) 一种基于多进程的业务处理方法及装置
CN112134910B (zh) 网络请求调试方法、装置、设备及存储介质

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 20805391

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

ENP Entry into the national phase

Ref document number: 2020805391

Country of ref document: EP

Effective date: 20211124