编译系统、电子设备及可读介质的制作方法

文档序号:24160440发布日期:2021-03-05 16:06阅读:55来源:国知局
编译系统、电子设备及可读介质的制作方法

[0001]
本发明实施例涉及互联网技术领域,尤其涉及编译系统、电子设备及可读介质。


背景技术:

[0002]
随着互联网技术的发展,软件业务日趋复杂化。在现有大型软件系统中,通常包含有众多业务代码子单元,若要对这些业务代码子单元进行编译,则需要花费很长时间。为此,现有技术采用分布式编译技术,通过解耦各个业务代码子单元分别进行编译,进而根据编译结果组装成最终的软件成品。
[0003]
在实际应用中,利用分布式编译设备进行编译的时候,各个编译设备之间是相互独立执行各自编译任务,并且各个编译设备在执行编译任务的时候都会产生大量缓存中间件,这些缓存中间件均归属于各个分布式编译设备,编译设备会将自己编译得到的缓存中间件存储在本地供自己下次使用。当软件规模和复杂度达到一定程度的时候,面对针对大量缓存中间件进行编译的任务的时候,编译效率还是受到严重影响。


技术实现要素:

[0004]
本发明实施例提供编译系统、电子设备及可读介质,用以提高编译设备执行编译任务的效率。
[0005]
第一方面,本发明实施例提供一种编译系统,所述系统包括:多个编译设备、共享缓存服务器;
[0006]
所述共享缓存服务器,用于接收所述编译设备发送查询待编译对象对应的至少一个缓存中间件的请求;基于所述请求,反馈包含有缓存中间件的响应信息给所述编译设备;
[0007]
多个编译设备中任一编译设备,用于获取编译对象,向所述共享缓存服务器发送查询所述至少一个缓存中间件的请求;接收所述共享缓存服务器反馈的包含有缓存中间件的所述响应信息,利用所述缓存中间件完成被分配的编译任务。
[0008]
可选地,所述响应信息中还含有所述缓存中间件对应的哈希值;以及
[0009]
所述编译设备,用于基于所述哈希值,对所述缓存中间件进行验证;验证通过时,利用接收到的所述缓存中间件完成被分配的编译任务。
[0010]
可选地,所述编译设备,用于获取被分配的子任务;基于所述子任务,从所述代码资源服务器获取所述待编译对象,其中,所述待编译对象包括代码及所述代码相关的资源数据。
[0011]
可选地,所述编译设备,用于根据所述代码及所述代码相关的资源数据,确定需求的至少一个缓存中间件对应标识;基于至少一个缓存中间件对应标识,向所述共享缓存服务器发送所述请求。
[0012]
可选地,所述编译设备,用于根据所述待编译对象的名称与修改时间,生成所述标识。
[0013]
可选地,所述共享缓存服务器用于,若所述共享缓存服务器针对所述请求反馈的
响应信息表征未查询到所述缓存中间件时,对所述待编译对象进行编译,得到编译中间件;
[0014]
将所述编译中间件上传至共享缓存服务器,由共享缓存服务器对编译中间件进行存储。
[0015]
可选地,所述共享缓存服务器,用于接收所述编译设备提供的所述缓存中间件;存储所述缓存中间件。
[0016]
可选地,所述共享缓存服务器,用于计算并存储所述缓存中间件的全局唯一编码。
[0017]
可选地,所述共享缓存服务器,用于计算并存储所述缓存中间件的全局唯一编码和哈希值。
[0018]
可选地,所述系统还包括:中台设备;所述中台设备,用于将从编译任务中拆解得到的编译对象分配给所述编译设备,以便编译设备向共享缓存服务器发送查询待编译对象对应的至少一个缓存中间件的请求,以及所述编译设备根据接收到的含有缓存中间件的响应信息完成所述中台设备分配的编译任务。
[0019]
可选地,所述系统还包括:代码资源服务器;所述代码资源服务器,用于存储多个所述待编译对象。
[0020]
可选地,所述代码资源服务器中存储有所述待编译对象是否被获取过的标记;以及,所述代码资源服务器还用于,若所述待编译对象对应所述标记为被获取过,则向所述共享缓存服务器发送查询所述待编译对象对应的至少一个缓存中间件的请求;若所述待编译对象对应所述标记为未被获取过,对所述待编译对象进行编译。
[0021]
第二方面,本发明实施例还提供一种电子设备,包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、至少一段程序、代码集或指令集由所述处理器加载并执行以实现根据第一方面所述的编译系统。
[0022]
第三方面,本发明实施例还提供一种计算机可读介质,其上存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、至少一段程序、代码集或指令集由处理器加载并执行以实现根据第一方面所述的编译系统。
[0023]
在本发明实施例中,通过搭建一个具有共享缓存服务器的编译系统,在该编译系统中,利用编译设备执行被分配的编译任务。具体来说,编译设备获取到从编译任务中被拆分得到的待编译对象。进而,编译设备在执行针对待编译对象的编译任务之前,向共享缓存服务器发送用于查询待编译对象对应的至少一个缓存中间件的请求,共享缓存服务器查询待编译对象对应的至少一个缓存中间件的请求;基于所述请求,反馈包含有缓存中间件的响应信息给所述编译设备;进而编译设备利用得到的缓存中间件完成被分配的编译任务。通过上述技术方案,在编译代理服务器进行编译之前,先查找一下共享缓存服务器中是否存在有已经编译完成的与所述待编译对象对应的缓存中间件,如果存在则避免了重复编译,实现不同编译设备之间的缓存中间件共享,从而能够有效提高编译系统的编译效率。
附图说明
[0024]
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0025]
图1为本申请实施例提供的一种编译系统的结构示意图;
[0026]
图2为本申请实施例提供的一种编译方法的流程示意图;
[0027]
图3为本申请实施例提供的另一种编译方法的流程示意图;
[0028]
图4为本申请实施例提供的一种编译系统搭建过程的流程示意图;
[0029]
图5为本申请实施例提供的一种编译过程的示意图;
[0030]
图6为本申请实施例提供的一种编译装置的结构示意图;
[0031]
图7为本申请实施例提供的另一种编译装置的结构示意图;
[0032]
图8为与图6所述实施例提供的编译装置对应的电子设备的结构示意图。
具体实施方式
[0033]
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0034]
在本发明实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本发明。在本发明实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义,“多种”一般包含至少两种。
[0035]
取决于语境,如在此所使用的词语“如果”、“若”可以被解释成为“在
……
时”或“当
……
时”或“响应于确定”或“响应于检测”。类似地,取决于语境,短语“如果确定”或“如果检测(陈述的条件或事件)”可以被解释成为“当确定时”或“响应于确定”或“当检测(陈述的条件或事件)时”或“响应于检测(陈述的条件或事件)”。
[0036]
另外,下述各方法实施例中的步骤时序仅为一种举例,而非严格限定。
[0037]
随着软件技术的发展,软件规模越来越大、越来越复杂,在编译的过程中,为了提升编译效率,可以采用分布式编译技术。比如,建立分布式编译系统,在编译系统中包含有多个分布式编译设备,当需要执行编译任务的时候,各个编译设备执行被分配的编译任务,最终将多个编译设备的编译结果组装成最终的软件成品。然而,在实际编译过程中,经常会出现某个缓存中间件在多个编译设备中重复编译的情况,若这种需要重复编译的缓存中间件比较多的时候,造成计算资源浪费,对编译效率造成严重影响。因此,本申请提出一种能够有效提升编译效率的技术方案。
[0038]
为了便于理解,下面具体举例说明编译系统。需要说明的是,本申请技术方案可以应用于分布式编译系统,也可以利用其它含有共享缓存服务器的编译系统。在下面实施例中,将以分布式编译系统为例进行说明,并不构成对本申请技术方案的限制,在实际应用中用户可以根据自己的实际需求选择应用的编译系统。
[0039]
如图1为本申请实施例提供的一种编译系统的结构示意图。从图1中可以看到,在该编译系统中包括:多个编译设备11、共享缓存服务器12。此外,还可以包含中台设备13和代码资源服务器14。
[0040]
在进行编译的时候,该中台设备13,用于将从编译任务中拆解得到的编译对象分配给所述编译设备11,以便编译设备向共享缓存服务器12发送查询待编译对象对应的至少一个缓存中间件的请求,以及所述编译设备11根据接收到的含有缓存中间件的响应信息完
成所述中台设备13分配的编译任务。
[0041]
多个编译设备中一个编译设备11,用于获取待编译对象;向共享缓存服务器发送查询所述待编译对象对应的至少一个缓存中间件的请求;用于获取编译对象,向所述共享缓存服务器发送查询所述至少一个缓存中间件的请求;接收所述共享缓存服务器反馈的包含有缓存中间件的所述响应信息,利用所述缓存中间件完成被分配的编译任务。
[0042]
共享缓存服务器12,用于接收编译设备11发送查询待编译对象对应的至少一个缓存中间件的请求;基于所述请求,反馈包含有缓存中间件的响应信息,以便所述编译设备11利用所述缓存中间件完成被分配的编译任务。
[0043]
在该编译系统中,所述代码资源服务器14,用于存储多个所述待编译对象。代码资源服务器14中存储有所述待编译对象是否被获取过的标记;以及,所述代码资源服务器还用于,若所述待编译对象对应所述标记为被获取过,则向所述共享缓存服务器发送查询所述待编译对象对应的至少一个缓存中间件的请求;若所述待编译对象对应所述标记为未被获取过,对所述待编译对象进行编译。
[0044]
此外,在该编译系统中,还包括用于与中台设备进行通信连接的用户操作设备,用户可以通过该设备的操作界面进行操作以及显示编译进程。
[0045]
在下述实施例中将重点针对编译设备和共享缓存服务器在本编译系统中的工作过程进行举例说明。
[0046]
在本申请一个或者多个实施例中,假设编译设备11将请求已经发送给了对应的共享缓存服务器12中,共享缓存服务器12反馈响应信息。在所述响应信息中还含有所述缓存中间件对应的哈希值;以及,所述利用所述缓存中间件,完成对所述待编译对象的编译任务,包括:基于所述哈希值,对所述缓存中间件进行验证;验证通过时,利用接收到的所述缓存中间件完成被分配的编译任务。
[0047]
在实际应用中,为了安全起见,编译设备11从共享缓存服务器12中查询缓存中间件的时候,需要进行安全验证。具体来说,当共享缓存服务器12响应于编译设备11发出的请求后,反馈的响应信息当中还包含有哈希值,该响应信息的反馈形式可以是以字节流的形式进行反馈。例如,编译设备11接收到缓存中间件以及对应的哈希值之后,对哈希值进行验证,从而判断该缓存中间件是否被篡改。如哈希值验证通过,则该编译设备11认为接收到的缓存中间件是安全的,可以利用缓存中间件完成被分配的编译任务,并将接收到的响应信息存储到编译设备11的本地缓存当中。如果哈希值没有通过验证,则表示该缓存中间件可能被篡改,存在安全隐患,终止编译过程,比如,还可以将该缓存中间件从共享缓存服务器12中删除,由编译设备11重新编译。
[0048]
需要说明的是,这里所说的哈希值是由共享缓存服务器12基于缓存中间件计算得到的。通过上述方案,能够确保便也设备获取到的缓存中间件安全可靠。
[0049]
在本申请一个或者多个实施例中,若所述共享缓存服务器12针对所述请求反馈的响应信息表征未查询到所述缓存中间件时,对所述待编译对象进行编译,得到缓存中间件;将所述缓存中间件上传至共享缓存服务器12,由共享缓存服务器12对所述缓存中间件进行存储。
[0050]
在实际应用中,由于有的编译对象是首次被编译设备11编译,或者编译对象对应的缓存中间件可能有多个此前未被编译过,则这部分是无法从共享缓存服务器12中查询到
的。那么,需要编译设备11自己根据编译需求进行编译。在编译完成之后,将编译得到的缓存中间件上传到共享缓存服务器12中,由共享缓存服务器12存储该缓存中间件,当编译系统内有其他编译设备11需要对相同的缓存中间件的获取需求的时候,可以通过共享缓存服务器12分享给其他编译设备11,从而避免其他编译设备11再次编译,造成不必要的编译计算资源浪费,能够有效提升编译效率。
[0051]
共享缓存服务器12接收到新编译得到的缓存中间件后,按照业务规则存储,同时还计算该缓存中间件的全局唯一编码和哈希值。具体存储过程将在下述实施例中进行解释说明。
[0052]
当然,共享缓存服务器12也可以不返回什么响应信息,当编译设备11在一定时间之后得不到反馈信息,就任务该缓存中间件未被存储在共享缓存服务器12中。
[0053]
在本申请一个或者多个实施例中,编译系统可以是分布编译系统,有多个编译设备11与共享缓存服务器12分布式连接,能够同时分享共享缓存服务器12中存储的缓存中间件。在执行编译任务的时候,可以由中台设备13将任务拆分为多个待编译对象,然后分配给各个编译设备11。在进行编译对象分配的时候,需要根据各个编译设备11的负载情况进行分配,查询负载低的编译设备11优先分配待编译对象。从而能够实现对分布式编译设备11的最优化利用,提升编译效率。
[0054]
在本申请一个或者多个实施例中,所述获取待编译对象,包括:获取被分配的子任务;基于所述子任务,从代码资源服务器14获取所述待编译对象,其中,所述待编译对象包括代码及所述代码相关的资源数据。
[0055]
在实际应用中,结合图1可以看到,在编译系统中包含有专门用于存储代码和资源的代码资源服务器14。还有一些编译任务可能会是比较繁杂的,需要多个编译设备11协同完成。则中台设备13对编译任务进行拆分后得到多个子任务,并将该子任务根据各编译设备11的负载请求进行分配。在编译设备11得到子任务之后,从代码资源服务器14中获取到由代码和资源组成的待编译对象。这里所说的代码相关的资源数据,包括:除代码外的其它文件,比如软件系统的图标,游戏的美术资源,文本文件,音频文件等等。将代码和资源存储在专用的服务器当中,能够使得编译系统中各个编译设备11可以更加便捷的拉取到想要的待编译对象,满足分布式编译需求。
[0056]
在本申请的一个或者多个实施例中,向所述共享缓存服务器12发送查询所述待编译对象对应的缓存中间件的请求,包括:根据所述代码及所述代码相关的资源数据,确定需求的至少一个缓存中间件对应标识;基于至少一个缓存中间件对应标识,向所述共享缓存服务器12发送所述请求。
[0057]
在编译设备11获取到代码以及代码相关的资源数据之后,将根据所述待编译对象的名称与修改时间,生成所述标识,这个标识具有唯一性,比如,可以是全局唯一编码。进而,如前文所述,将该标识存储到一个列表当中,用于向共享缓存服务器12请求相关的缓存中间件。
[0058]
在实际应用中,编译设备11拉取到待编译对象之后的存储方式和项目选择的存储规则相关,比如:假设guid为ea4eakglelrixjfm23kg,则取前两位ea作为目录名,guid作为文件名,进行存储。
[0059]
作为一种可选实施例,编译设备11在接收到中台分配的编译任务之后,也可以不
从代码资源服务器14获取代码以及代码相关的资源数据。而是只有确定共享缓存服务器12中不含有所需的缓存中间的时候才获取代码以及代码相关的资源数据。具体来说,
[0060]
编译设备11根据接收到的编译任务,确定待编译对象之后,查询所述代码资源服务器14中存储有所述待编译对象是否被获取过的标记。以及,
[0061]
向所述共享缓存服务器12发送查询所述待编译对象对应的至少一个缓存中间件的请求,包括:若所述待编译对象对应所述标记为被获取过,则向所述共享缓存服务器12发送查询所述待编译对象对应的至少一个缓存中间件的请求;若所述待编译对象对应所述标记为未被获取过,对所述待编译对象进行编译。
[0062]
例如,假设在代码资源服务器14中,对所有被拉取过的代码和资源分别进行标记。当编译设备11拉取代码和资源之前,先查看一下是否该代码和资源被拉取过,如果被拉取过,则表示共享缓存服务器12中很有可能存储与该待编译对象对应的缓存中间件。进而从代码资源服务器14获取到对应的全局唯一编码和哈希值(这些可以是由代码资源服务器14自己计算得到的,也可以是由共享缓存服务器12计算直接或者间接发送给代码资源服务器14的)。这样,就避免了编译设备11从代码资源服务器14拉取代码和资源的过程,避免了无用拉取操作,能够有效提高编译效率。
[0063]
在实际应用中,如果共享缓存服务器12中没有存储该缓存中间件,则需要编译设备11从代码资源服务器14中拉取对应的待编译对象(包括代码和资源),进而进行编译,得到缓存中间件。
[0064]
在编译设备11对待编译对象完成编译之后,将编译得到的缓存中间件上传给共享缓存服务器12。共享缓存服务器12接收所述编译设备11提供的所述缓存中间件之后,存储所述缓存中间件。以便编译系统中再有其他编译设备11也想要获取相同的缓存中间件的时候,可以直接从共享缓存服务器12中拉取,不再需要重新编译,能够有效提升编译系统的编译效率。
[0065]
共享缓存服务器12在进行缓存中间件的存储的时候,这个主要取决于两部分,一个是项目使用什么方式进行存储(文件服务器存储或数据库存储),二个是存储分区的划分。比如,若是文件服务器存储的话,可以将缓存中间件的全局唯一标识和哈希值关联后(比如以key-value的形式进行关联)全部存一个目录下,或是根据文件前几个字母划分不同的目录,存储到子目录下,以加快检索速度。如果是数据库存储的话,可以存单个库单张表,也可以存多个库多张表。
[0066]
在实际应用中,共享缓存服务器12在接收到缓存中间件之后,会计算并存储所述缓存中间件的全局唯一编码。需要说明的是,在编译过程中全局唯一编码的计算的时序,可以是在接收到缓存中间件之后立即计算,也可以是在有编译设备11想要拉取缓存中间件之前进行计算。
[0067]
在实际应用中,为了确保编译设备11能够安全拉取缓存中间件,共享缓存服务器12接收到缓存中间件之后,计算并存储所述缓存中间件的全局唯一编码和哈希值。其中,全局唯一编码和哈希值的计算过程在前文中已经进行举例说明,这里就不再重复赘述,具体可参考前述实施例。
[0068]
基于图1所示编译系统,下面将对其对应的编译方法进行举例说明。
[0069]
图2为本申请实施例提供的一种编译方法的流程示意图。可以应用于编译设备,如
图2所示,该方法包括以下步骤:
[0070]
201:获取待编译对象。
[0071]
202:向共享缓存服务器发送查询所述待编译对象对应的至少一个缓存中间件的请求。
[0072]
203:所述共享缓存服务器针对所述请求反馈的响应信息含有缓存中间件时,利用所述缓存中间件完成被分配的编译任务。
[0073]
在实际应用中,如前文所述可知编译设备获取到编译对象后,不直接对编译对象执行编译任务,而是先向共享缓存服务器发送查询待编译对象对应的至少一个缓存中间件的请求,在该请当中包含有表示目标缓存中间件的唯一标识,从而以便能够准确、快速的从共享缓存服务器中找到想要缓存中间件。这里所说的待编译对象可以包括代码和资源,其中,资源可以包括:软件系统的图标,游戏的美术资源,文本文件,音频文件等等处理代码以外的其他文件。
[0074]
需要说明的是,这里所说的待编译对象对应的缓存中间件可以有多个或者只有一个。这个是由编译设备在执行编译任务的时候,根据具体编译逻辑以及获取到的待编译对象计算得到的,若有多个缓存中间件,则可以是以列表形式表示。在计算缓存中间件的时候,不同项目类型或编码语言的计算方式不同,计算得到的缓存中间件不同。例如,c++编译过程的缓存中间件为.o文件,unity编译过程的缓存中间件为.bin文件等等。当代码和资源未改变时,这些缓存中间件是不会改变的。计算时主要根据资源名、资源修改时间等信息生成用于表征该缓存中间件的唯一标识(比如,全局唯一编码(globally unique identifier,guid)),在编译设备侧生成的缓存中间件列表中仅包含此信息。
[0075]
在共享缓存服务器根据前文所述的唯一标识查找到对应的缓存中间件之后,会通过响应信息的方式向编译设备反馈。在该响应信息中包含有缓存中间件,进而编译设备利用缓存中间件完成被分配的编译任务。在实际应用中,可能出现待编译对象对应的缓存中间件有多个,但是,在共享缓存服务器中并没有存储所有其需要的缓存中间件(换言之,在共享缓存服务器中只存储有部分该编译设备所需的缓存中间件),则根据请求反馈能够查询到的部分缓存中间件,其他没有查询到的,则需要编译设备根据拉取到的待编译对象执行对应的编译工作。
[0076]
需要说明的是,在编译设备查询到共享缓存服务器中存储有对应的缓存中间件之后,可以有编译设备主动拉取所需数据。其中,拉取缓存中间件的过程与共享缓存服务器的类型有关,如果是数据库类的共享缓存服务器,则基于数据库账号认证完成所需数据拉取工作;如果是文件服务器,则基于token认证通过http协议完成所需数据的拉取工作。
[0077]
通过上述方案可知,在本实施例中,编译设备在进行编译之前,先查询该待编译对象是否有部分已经此前被编译过并存储在共享缓存服务器当中,若此前被编译并已存储,则无需编译设备进行重复编译。需要说明的是,在共享缓存服务器中存储的缓存中间件是来自多个编译设备执行编译后生成的中间件,换言之,在该编译系统中,编译设备可以根据获取由其他编译设备编译后存储到共享缓存服务器中的中间件,从而基于共享缓存服务器能够满足在该编译系统中所有编译设备部分编译需求,实现缓存中间件共享,能够有效提高编译效率。尤其是当需要分布式编译系统处理比较复杂的编译任务的时候,利用上述技术方案能够更加明显的提升编译效率。
[0078]
在完成对各个编译设备的待编译对象的分配任务之后,将由各个编译设备执行编译工作。编译设备编译过程可以参见图1所示系统部分关于编译设备对应实施例的说明,这里就不再重复赘述。
[0079]
如步骤203所述,所述响应信息中还含有所述缓存中间件对应的哈希值;以及,所述利用所述缓存中间件完成被分配的编译任务,包括:基于所述哈希值,对所述缓存中间件进行验证;验证通过时,利用接收到的所述缓存中间件完成被分配的编译任务。
[0080]
若所述共享缓存服务器针对所述请求反馈的响应信息表征未查询到所述缓存中间件时,对所述待编译对象进行编译,得到编译中间件;将所述编译中间件上传至共享缓存服务器,由共享缓存服务器对编译中间件进行存储。
[0081]
如步骤201所述获取待编译对象,包括:获取被分配的子任务;基于所述子任务,从代码资源服务器获取所述待编译对象,其中,所述待编译对象包括代码及所述代码相关的资源数据。
[0082]
如步骤202所述,向所述共享缓存服务器发送查询所述待编译对象对应的至少一个缓存中间件的请求,包括:根据所述代码及所述代码相关的资源数据,确定需求的至少一个缓存中间件对应标识;基于至少一个缓存中间件对应标识,向所述共享缓存服务器发送所述请求。其中,确定需求的至少一个缓存中间件对应标识的方式可以是根据所述待编译对象的名称与修改时间,生成所述标识。
[0083]
如步骤203所述,所述代码资源服务器中存储有所述待编译对象是否被获取过的标记;以及,若所述待编译对象对应所述标记为被获取过,则向所述共享缓存服务器发送查询所述待编译对象对应的至少一个缓存中间件的请求;若所述待编译对象对应所述标记为未被获取过,对所述待编译对象进行编译。
[0084]
基于同样的思路,本申请实施例还提供另一种编译方法,可以应用于共享缓存服务器。如图3为本申请实施例提供的另一种编译方法的流程示意图。从图3中可以看到编译过程包括如下步骤:
[0085]
301:接收编译设备发送查询待编译对象对应的至少一个缓存中间件的请求。
[0086]
302:基于所述请求,反馈包含有缓存中间件的响应信息,以便所述编译设备利用所述缓存中间件完成被分配的编译任务。
[0087]
在共享缓存服务器中,会存储有由编译系统中编译设备完成编译后提供的缓存中间件。在接收到编译设备对待编译对象对应的至少一个缓存中间件的查询的请求之后,会查看一下是否存储有该缓存中间件。如果存储有缓存中间件,则可以被编译设备拉取,向编译设备反馈响应信息,进而编译设备可以根据得到的缓存中间件完成被中台设备分配的编译任务。通过共享缓存服务器可以实现编译系统中不同编译设备编译得到的缓存中间件的共享,能够提高编译系统编译效率。
[0088]
共享缓存服务器还用于接收所述编译设备提供的所述缓存中间件;存储所述缓存中间件。
[0089]
此外,共享缓存服务器还用于计算并存储所述缓存中间件的全局唯一编码。当然,也可用于计算并存储所述缓存中间件的全局唯一编码和哈希值。具体地共享缓存服务器所需要计算和存储的内容可以根据实际需要进行选择,这里仅作为举例说明,并不构成对本申请技术方案的限制。
[0090]
下面结合图1对分布式编译系统的搭建过程进行举例说明。如图4为本申请实施例提供的一种编译系统搭建过程的流程示意图。从图4中可以看到包括如下步骤:
[0091]
401:根据业务形态搭建对应的共享缓存服务器。
[0092]
在进行搭建的时候,根据实际的业务需求进行搭建。这里所说的共享缓存服务器,可以是redis服务器,也可以是mongodb服务器。具体用户可以根据自己的需求进行选择。
[0093]
402:在编译设备上部署和配置编译所需环境。具体包括:根据具体业务需求,部署对应的编译软件环境;例如,若业务需求为unity游戏开发,则需要部署unity相关软件环境;若业务需求为java软件开发,则需要部署java相关软件环境。配置分布式编译环境参数,将编译过程中使用的共享缓存服务器地址配置为步骤401中所搭建的服务器地址;在实际应用中可以根据项目情况进行配置,比如,配置到配置文件(json/xml)中,也可以配置到数据库中,确保在进行编译的时候能够顺利读取到配置参数即可。
[0094]
为了便于理解,下面对编译系统整体工作过程进行举例说明。如图5为本申请实施例提供的一种编译过程的示意图。如图5所示包括如下步骤:
[0095]
所述用户操作设备执行:接收用户操作指令,将指令对应的任务信息包装为网络字节流指令,发送至中台设备,触发中台设备的任务执行。同时,在用户操作界面上实时显示任务执行状态,以便用户可以实时掌握编程进度。
[0096]
所述中台设备执行:与多个编译设备建立基于tcp协议的网络交互连接,在接收到来自用户操作界面的操作指令后,查询并调用可用的编译设备,将编译任务分解为多个子编译任务,分发到各个编译设备。接收编译设备返回的编译任务执行过程的相关信息,将相关信息同步至用户操作界面,以便用户可以实时掌握编程进度。
[0097]
所述编译设备执行:与中台设备建立基于tcp协议的网络交互连接。接收到来自中台设备的编译指令后,执行对应的编译过程。编译设备与代码资源服务器交互,拉取编译所需的代码和资源。编译设备与共享缓存服务器交互,拉取缓存中间件或者上传编译产生的缓存中间件。
[0098]
所述代码资源服务器执行:以目录和名称的形式存储编译中所需使用的代码和资源,同时还为编译设备提供代码和资源的下载服务。
[0099]
所述共享缓存服务器执行:以全局唯一编码加文件哈希值的形式,存储编译过程中动态生成的缓存中间件。此外,该共享缓存服务器还提供缓存中间件的编码计算、哈希值计算服务,以及提供缓存中间件的下载和上传服务。
[0100]
基于同样的思路,本申请实施例还提供一种编译装置。如图6为本申请实施例提供的一种编译装置的结构示意图。从图6中可以看到,该装置包括:
[0101]
获取模块61,用于获取待编译对象。
[0102]
发送模块62,用于向共享缓存服务器发送查询所述待编译对象对应的至少一个缓存中间件的请求。
[0103]
编译模块63,用于在所述共享缓存服务器针对所述请求反馈的响应信息含有缓存中间件时,利用所述缓存中间件完成被分配的编译任务。
[0104]
可选地,所述响应信息中还含有所述缓存中间件对应的哈希值;以及
[0105]
编译模块63,还用于基于所述哈希值,对所述缓存中间件进行验证;
[0106]
验证通过时,利用接收到的所述缓存中间件完成被分配的编译任务。
[0107]
可选地,编译模块63,还用于若所述共享缓存服务器针对所述请求反馈的响应信息表征未查询到所述缓存中间件时,对所述待编译对象进行编译,得到编译中间件;将所述编译中间件上传至共享缓存服务器,由共享缓存服务器对编译中间件进行存储。
[0108]
可选地,所述待编译对象是从编译任务中被拆分出的。
[0109]
获取模块61,用于获取被分配的子任务;基于所述子任务,从代码资源服务器获取所述待编译对象,其中,所述待编译对象包括代码及所述代码相关的资源数据。
[0110]
可选地,发送模块62,用于根据所述代码及所述代码相关的资源数据,确定需求的至少一个缓存中间件对应标识;基于至少一个缓存中间件对应标识,向所述共享缓存服务器发送所述请求。
[0111]
可选地,发送模块62,还用于根据所述待编译对象的名称与修改时间,生成所述标识。
[0112]
可选地,所述代码资源服务器中存储有所述待编译对象是否被获取过的标记;以及,
[0113]
发送模块62还用于若所述待编译对象对应所述标记为被获取过,则向所述共享缓存服务器发送查询所述待编译对象对应的至少一个缓存中间件的请求;若所述待编译对象对应所述标记为未被获取过,对所述待编译对象进行编译。
[0114]
基于同样的思路,本申请实施例还提供另一种编译装置。如图7为本申请实施例提供的另一种编译装置的结构示意图。从图7中可以看到,该装置包括:
[0115]
接收模块71,用于接收编译设备发送查询待编译对象对应的至少一个缓存中间件的请求。
[0116]
反馈模块72,用于基于所述请求,反馈包含有缓存中间件的响应信息,以便所述编译设备利用所述缓存中间件完成被分配的编译任务。
[0117]
可选地,接收模块71还用于接收所述编译设备提供的所述缓存中间件;存储所述缓存中间件。
[0118]
可选地,还包括计算模块73,用于计算并存储所述缓存中间件的全局唯一编码。
[0119]
可选地,还包括计算模块73,用于计算并存储所述缓存中间件的全局唯一编码和哈希值。
[0120]
在一个可能的设计中,上述图6所示的编译装置的结构可实现为一电子设备。如图8所示,该电子设备可以包括:处理器81、存储器82。其中,所述存储器82上存储有可执行代码,当所述可执行代码被所述处理器81执行时,至少使所述处理器81可以实现如前述实施例中提供的编译系统。其中,该电子设备的结构中还可以包括通信接口83,用于与其他设备或通信网络通信。
[0121]
另外,本发明实施例提供了一种非暂时性机器可读存储介质,所述非暂时性机器可读存储介质上存储有可执行代码,当所述可执行代码被无线路由器的处理器执行时,使所述处理器执行前述各实施例中提供的编译系统。
[0122]
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的各个模块可以是或者也可以不是物理上分开的。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
[0123]
通过以上的实施例的描述,本领域的技术人员可以清楚地了解到各实施例可借助加必需的通用硬件平台的方式来实现,当然也可以通过硬件和软件结合的方式来实现。基于这样的理解,上述技术方案本质上或者说做出贡献的部分可以以计算机产品的形式体现出来,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
[0124]
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1