大规模图片处理方法及系统与流程

文档序号:16134187发布日期:2018-12-01 00:43阅读:272来源:国知局

本发明涉及多媒体数据处理技术领域,特别涉及一种大规模图片处理方法及系统。

背景技术

在现今的网络环境中,网络服务器经常需要处理用户提交的巨量多媒体数据,而且用户提交多媒体数据的数量、提交的时间、以及提交的频率都是不确定的。为了能够应对最极端的情况,例如多个用户在同一时间段同时提交大量多媒体数据请求处理,现有的用于多媒体数据的批量处理框架通常都要常备数量足够多的高性能服务器,时刻待命。但是这样就会导致在请求处理的数据较少或没有的时间段内,绝大部分甚至全部待命的服务器处于无用状态,造成资源浪费。另外,大量服务器的启动、升级、关闭以及重新分配角色都带来了极大的运维成本。



技术实现要素:

本发明提供了一种大规模图片处理方法及系统,用于解决现有的多媒体数据处理技术中存在的上述问题。

根据本发明的实施方式,提供了一种大规模图片处理方法,所述方法包括以下步骤:

s1,接收来自用户的图片处理请求;

s2,根据所述图片处理请求的业务逻辑,将所述图片处理请求存储到业务逻辑消息队列中;

s3,从所述业务逻辑消息队列中取出所述图片处理请求,并根据所述图片处理请求的业务逻辑,从公有云平台的无服务器计算设备的数据处理模块中调用适用于处理所述图片处理请求的数据处理模块;

s4,使用所述数据处理模块完成所述图片处理请求所请求的处理工作;

s5,保存所述图片处理请求所请求的处理工作的完成结果。

优选地,所述大规模图片处理方法还包括以下步骤:

s0,编写所述数据处理模块,将所述数据处理模块上传到所述无服务器计算设备中存储,以供在处理所述图片请求时进行调用。

优选地,所述数据处理模块包括机器学习算法模型、深度学习模型、以及可使用所述机器学习算法模型及深度学习模型的代码。

优选地,在所述步骤s0中,将所述数据处理模块上传到所述无服务器计算设备中存储的方式是:将所述数据处理模块以插件形式整合到所述无服务器计算设备中。

优选地,在所述步骤s1中,所述图片处理请求的数量为多个;在所述步骤s2中,所述业务逻辑消息队列的数量为多个;所述步骤s2包括:

根据每个图片处理请求的业务逻辑确定适用于该图片处理请求的业务逻辑消息队列;

分别将每个图片处理请求存储到适用于该图片处理请求的业务逻辑消息队列中。

优选地,所述步骤s3包括:

将所述图片处理请求的业务逻辑划分为多个业务逻辑部分;

根据所述多个业务逻辑部分,从所述公有云平台的所述无服务器计算设备中调用分别适用于处理所述多个业务逻辑部分的多个数据处理模块。

优选地,所述步骤s4包括:

使用所述多个数据处理模块分别完成所述多个业务逻辑部分所请求的处理工作。

优选地,所述步骤s5包括:

在使用所述多个数据处理模块分别完成所述多个业务逻辑部分所请求的处理工作之后,将所述多个业务逻辑部分所请求的处理工作的完成结果汇总为聚合结果;

保存所述聚合结果。

本发明的实施方式还提供一种大规模图片处理系统,所述大规模图片处理系统包括接收模块、暂存模块、执行模块、公有云平台和存储模块;所述暂存模块包括业务逻辑消息队列;所述执行模块包括业务逻辑执行器;所述公有云平台包括无服务器计算设备,所述无服务器计算设备包括数据处理模块;其中,

所述接收模块用于:接收来自用户的图片处理请求,以及根据所述图片处理请求的业务逻辑,将所述图片处理请求存储到所述业务逻辑消息队列中;

所述暂存模块用于:通过所述业务逻辑消息队列暂存所述图片处理请求;

所述执行模块用于:通过所述业务逻辑执行器从所述业务逻辑消息队列中取出所述图片处理请求,并根据所述图片处理请求的业务逻辑,从公有云平台的无服务器计算设备的数据处理模块中调用适用于处理所述图片处理请求的数据处理模块;

所述数据处理模块用于:完成所述图片处理请求所请求的处理工作;

所述存储模块用于:保存所述图片处理请求所请求的处理工作的完成结果。

本发明的实施方式还提供一种计算机设备,所述计算机设备包括存储器以及处理器,所述存储器用于存储计算机程序,所述处理器运行所述计算机程序以使所述计算机设备执行根据上述各个实施方式所述的大规模图片处理方法。

本发明的实施方式还提供一种计算机可读存储介质,其存储有上述计算机设备中存储及使用的所述计算机程序。

依照上述的实施方式,本发明实质上是基于公有云平台的无服务器计算设备实现了大规模图片处理方法以及相应的系统、计算机设备和计算机可读存储介质。而公有云平台上的无服务器计算的特点是:只有进行了实际计算,才会产生费用;没有计算则不会产生费用;同时可以随着调用量的不断加大,自行完成计算资源的增加;随着调用量的减少,自行完成计算资源的减少。因此,在本发明的技术方案中,当用户提交大量图片数据时,无服务器计算会自行增大计算资源,支持足够的数据处理量;当用户提交的图片数据处理完毕后,因为不会再有发送给无服务器计算的请求,此时就不会再有计算费用产生。这样,相比于现有的图片数据处理技术,本发明可以取得多方面的优势:不需要自己设置大量的服务器进行工作,有效地节约了框架费用和运维成本;能够方便灵活地扩展应用程序,获得更好的可用性和容错能力;能够方便地实现框架可定制化,而且不会受到平台类型和存储地点的限制;同时,本发明在取得这些优势的前提下依旧能稳定地支持用户调用峰值所需的工作量。显然,本发明对于处理大规模图片数据的技术作出了多方面的改善。由于多媒体数据中最主要的部分就是图片数据,因此本发明的大规模图片处理方法及系统对于多媒体数据处理技术领域而言是一个重大的改进,能够有效地解决现有技术中存在的问题。

附图说明

图1示出了本发明的一个实施方式提供的大规模图片处理系统的结构方框图。

图2示出了本发明的一个实施方式提供的大规模图片处理方法的主要步骤的流程示意图。

具体实施方式

为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图结合实施例,对本发明进一步详细说明。

为了解决现有的多媒体数据处理技术需要采用大量服务器,造成成本过高及资源浪费等问题,本发明的实施方式提供了一种大规模图片处理方法、以及相应的用于实现该大规模图片处理方法的大规模图片处理系统。由于多媒体数据中最主要的部分就是图片数据,因此本发明的大规模图片处理方法及系统对于多媒体数据处理技术领域而言是一个重大的改进,能够有效地解决现有技术中存在的问题。

由于介绍所述大规模图片处理方法时会涉及所述大规模图片处理系统的具体部件,为了使表述的顺序清晰,以下首先基于附图中的图1对所述大规模图片处理系统的实施方式进行介绍,之后再基于图2详细介绍所述大规模图片处理方法的实施方式。

请参阅图1,其示出了示出了本发明的一个实施方式提供的大规模图片处理系统100的结构方框图。所述大规模图片处理系统100包括接收模块10、暂存模块20、执行模块30、公有云平台40和存储模块50。

所述接收模块10可以包括例如现有的api(applicationprogramminginterface,应用程序编程接口)网关,所述api网关与数量较多的具体的网络用户都建立有有线或无线的网络通信连接,可以从每个网络用户接收数据,例如接收来自网络用户的图片处理请求。api网关与具体网络用户建立网络通信连接以及从具体网络用户接收图片处理请求的方法都可以是现有技术,此处无需赘述。

所述暂存模块20可以是设置在本地的暂存器模块,也可以设置在云端(例如设置在所述公有云平台40上)以获得更大的存储容量。所述接收模块10可以通过例如现有的有线或无线的连接方式与所述暂存模块20建立网络通信连接,并可以将从具体网络用户接收到的数据,例如上述的图片处理请求,暂存到所述暂存模块20中。所述暂存模块20中可以包括多个业务逻辑消息队列21,这些业务逻辑消息队列21可以分别对应于不同的业务逻辑类型;所述接收模块10可以根据所接收到的每个图片处理请求的具体的业务逻辑类型确定适用于该图片处理请求的业务逻辑消息队列21,然后分别将每个图片处理请求暂存到适用于该图片处理请求的业务逻辑消息队列21,也就是与该图片处理请求的业务逻辑类型相对应的业务逻辑消息队列21中。所述每个业务逻辑消息队列21都可以存储多个具有对应的业务逻辑种类的图片处理请求。

所述执行模块30可以通过例如现有的有线或无线的连接方式与所述暂存模块20建立网络通信连接,并从所述暂存模块20中调取数据,例如调取暂存在所述暂存模块20的所述业务逻辑消息队列21中的图片处理请求。具体而言,所述执行模块30可以包括多个业务逻辑执行器31,这些业务逻辑执行器31可以被设置成分别对应于不同的业务逻辑类型,因此也就可以基于其对应的业务逻辑类型而进一步与上述的业务逻辑消息队列21建立对应关系。每个业务逻辑执行器31可以通过例如现有的有线或无线的连接方式和与其对应的业务逻辑消息队列21建立通信,并从与其对应的业务逻辑消息队列21中取出存储在该业务逻辑消息队列21中的图片处理请求。可以理解,所述执行模块30也可以设置在云端(例如设置在所述公有云平台40)上以节省本地的资源。

所述公有云平台40可以是当前市场上的第三方提供商为用户提供的能够使用的云,其中包括无服务器计算设备41。公有云一般可通过国际互联网(internet)使用,通常是是免费或成本低廉的,其核心属性是共享资源服务。所述公有云平台40和其中的无服务器计算设备41的基本架构和基础工作原理都可以是本领域中应用较为广泛的已有技术,因此这里不再赘述。所述执行模块30可以通过例如现有的有线或无线的连接方式与所述公有云平台40建立网络通信连接。在本实施方式中,所述无服务器计算设备41中包含多个数据处理模块42,每个数据处理模块42可以包括例如机器学习算法模型、深度学习模型、以及可使用所述机器学习算法模型及深度学习模型的代码等等。这些数据处理模块42可以是以插件形式整合在所述无服务器计算设备41中的业务逻辑基础单元,它们可以分别对应于不同的业务逻辑类型,因此也就可以基于其对应的业务逻辑类型而进一步与上述的业务逻辑消息队列21及业务逻辑执行器31建立对应关系。每个业务逻辑执行器31在从与其对应的业务逻辑消息队列21中取出存储在该业务逻辑消息队列21中的图片处理请求后,可以根据相应的业务逻辑类型查询到对应的数据处理模块42,然后调用该数据处理模块42完成所述图片处理请求所请求的处理工作(也就是该图片处理请求所需要的计算工作)。这样就可以把所述图片处理请求所需要的计算工作都转移到公有云平台40上的无服务器计算设备41中来执行,而不需要在本地的服务器上进行这些计算工作。

所述存储模块50可以包括设置在本地的多种数据存储装置例如硬盘、移动硬盘等,也可以包括设置在云端(例如设置在所述公有云平台40上或者其他可获得的云端上)的一种或多种数据库(例如mangodb数据库、mysql数据库、hbase数据库等等)中的存储区域。所述执行模块30可以通过例如现有的有线或无线的连接方式与所述存储模块50建立网络通信连接。在每个所述数据处理模块42完成图片处理请求所请求的处理工作之后,所述执行模块30中相应的业务逻辑执行器31可以获取所述数据处理模块42做出的处理结果(例如图片处理请求所需的计算结果),并将该处理结果存储到所述存储模块50中,供用户查询及使用。

请一并参阅图2,其示出了本发明的一个实施方式提供的大规模图片处理方法的主要步骤的流程示意图,该大规模图片处理方法可以用图1所示的大规模图片处理系统100来实现。以下详细介绍所述大规模图片处理方法的步骤:

s1,接收来自用户的图片处理请求。

在该步骤s1中,可以通过例如上述大规模图片处理系统100中的接收模块10接收来自用户的图片处理请求,所述图片处理请求的数量优选为多个。由于接收模块10中可以使用api网关,其能够同时接收巨量的图片数据,因此本发明的实施方式允许用户同时批量上传大量的图片处理请求,例如可以一次性地批量上传10万张、100万张、甚至1000万张图片的处理请求。

s2,根据所述图片处理请求的业务逻辑,将所述图片处理请求存储到业务逻辑消息队列中。

在该步骤s2中,接收模块10接收到图片处理请求(通常是大量的图片处理请求)之后,并不会立即将这些图片处理请求交给数据处理装置(例如本地服务器或云端)处理并返回处理结果,而是首先将这些图片处理请求存储到暂存模块20的业务逻辑消息队列21中进行异步处理。具体地,所述业务逻辑队列21的数量优选为多个,这些业务逻辑消息队列21可以被设置成分别对应于不同的业务逻辑类型;所述接收模块10可以根据所接收到的每个图片处理请求的具体的业务逻辑类型确定适用于该图片处理请求的业务逻辑消息队列21,然后分别将每个图片处理请求暂存到适用于该图片处理请求的业务逻辑消息队列21,也就是与该图片处理请求的业务逻辑类型相对应的业务逻辑消息队列21中。所述每个业务逻辑消息队列21都可以存储多个具有对应的业务逻辑种类的图片处理请求。

s3,从所述业务逻辑消息队列中取出所述图片处理请求,并根据所述图片处理请求的业务逻辑,从公有云平台的无服务器计算设备的数据处理模块中调用适用于处理所述图片处理请求的数据处理模块。

在该步骤s3中,所述业务逻辑执行器31从与其对应的业务逻辑消息队列21中按照预定顺序(例如该业务逻辑消息队列21中的图片处理请求的存储顺序)依次取出存储在该业务逻辑消息队列21中的每个图片处理请求,然后根据取出的图片处理请求的业务逻辑从所述公有云平台40的无服务器计算设备41中查询到与该业务逻辑类型相应的数据处理模块42,调用该数据处理模块42完成所述图片处理请求所请求的处理工作(也就是该图片处理请求所需要的计算工作)。这样就可以把所述图片处理请求所需要的计算工作都转移到公有云平台40上的无服务器计算设备41中来执行,而不需要在本地的服务器上进行这些计算工作。而且由于公有云平台40上的无服务器计算设备41可以包含数量足够多的数据处理模块42,因此可以同时处理大量的图片处理请求所请求的处理工作,处理能力非常强大,不会受到本地服务器容量的限制。

s4,使用所述数据处理模块完成所述图片处理请求所请求的处理工作。

在该步骤s4中,各个数据处理模块42基于其对应类型的业务逻辑,依照相应的业务逻辑执行器31安排的工作顺序,分别处理类型相应的图片处理请求所请求的处理工作。

s5,保存所述图片处理请求所请求的处理工作的完成结果。

在该步骤s5中,在每个所述数据处理模块42完成图片处理请求所请求的处理工作之后,所述执行模块30中相应的业务逻辑执行器31可以获取所述数据处理模块42做出的处理结果(例如图片处理请求所需的计算结果),并将该处理结果存储到所述存储模块50中,供用户查询及使用。特别地,如果所述存储模块50包含有多种存储设备,例如设置在本地的多种存储装置和/或设置在云端上的多种数据库中的存储区域,所述执行模块30可以通过对应于不同业务逻辑类型的业务逻辑执行器31分别将对应于相应业务逻辑类型的数据处理模块42做出的处理结果存储到不同类型的存储设备中,例如,可以通过对应于第一种业务逻辑类型的业务逻辑执行器31将对应于相应业务逻辑类型的数据处理模块42做出的处理结果存储到mangodb数据库中,通过对应于第二种业务逻辑类型的业务逻辑执行器31将对应于相应业务逻辑类型的数据处理模块42做出的处理结果存储到mysql数据库中,通过对应于第三种业务逻辑类型的业务逻辑执行器31将对应于相应业务逻辑类型的数据处理模块42做出的处理结果存储到hbase数据库中,通过对应于第四种业务逻辑类型的业务逻辑执行器31将对应于相应业务逻辑类型的数据处理模块42做出的处理结果存储到本地存储装置中,等等。这样可以节省单种存储设备的存储量,提高存储处理结果的安全性,方便用户对处理结果进行归类整理。

优选地,在一个进一步的实施方式中,所述大规模图片处理方法还包括以下步骤:

s0,编写所述数据处理模块,将所述数据处理模块上传到所述无服务器计算设备中存储,以供在处理所述图片请求时进行调用。

该步骤s0优选在上述步骤s1-s5之前,至少在步骤s3之前执行。用户或者其他的系统开发者都可以根据实际工作中可能的需求编写具有预定义的业务逻辑的数据处理模块42,并将编写的数据处理模块42上传到所述公有云平台40的所述无服务器计算设备41中进行存储。当执行所述步骤s1-s5时,用户就可以查询和调用到自己或者他人预先编写和存储的数据处理模块42,用来处理具有相应的业务逻辑类型的图片处理请求所请求的处理工作。

优选地,在所述步骤s0中,将所述数据处理模块上传到所述无服务器计算设备中存储的方式是:将所述数据处理模块以插件形式整合到所述无服务器计算设备中。

优选地,在一个进一步的实施方式中,所述步骤s3包括:

将所述图片处理请求的业务逻辑划分为多个业务逻辑部分;

根据所述多个业务逻辑部分,从所述公有云平台的所述无服务器计算设备中调用分别适用于处理所述多个业务逻辑部分的多个数据处理模块。

所述步骤s4则包括:

使用所述多个数据处理模块分别完成所述多个业务逻辑部分所请求的处理工作。

所述步骤s5则包括:

在使用所述多个数据处理模块分别完成所述多个业务逻辑部分所请求的处理工作之后,将所述多个业务逻辑部分所请求的处理工作的完成结果汇总为聚合结果;

保存所述聚合结果。

具体而言,当某个图片处理请求的业务逻辑较为复杂时,为了提高数据处理效率,所述执行模块30可以将该图片处理请求的业务逻辑划分为多个业务逻辑部分,分别确定该多个业务逻辑部分的业务逻辑类型。根据所述多个业务逻辑部分的业务逻辑类型,所述执行模块30可以通过与所述多个业务逻辑部分的业务逻辑类型相应的多个业务逻辑执行器31,分别从所述公有云平台40的所述无服务器计算设备41中调用分别适用于处理所述多个业务逻辑部分的(即分别与所述多个业务逻辑部分的业务逻辑类型相应的)多个数据处理模块42,然后使用所述多个数据处理模块42分别完成所述多个业务逻辑部分所请求的处理工作。显然,这样的数据处理方式可以将一个图片处理请求的业务逻辑拆分成多个部分,然后多线程地同时处理该多个部分的计算工作,有利于提高数据处理效率。为了确保上述数据处理方式最后得到的数据处理结果仍然是完整的(即获得了整个图片处理请求的业务逻辑所要求的完整结果),在该实施方式中,若是所述多个数据处理模块42中有一个或几个比其他的数据处理模块42更早地完成了其相应的业务逻辑部分所请求的处理工作,则此时并不立即输出和保存这部分数据处理模块42取得的数据处理结果;直到所述多个数据处理模块42分别都完成了其相应的业务逻辑部分所请求的处理工作之后,先将所述多个业务逻辑部分所请求的处理工作的完成结果汇总为聚合结果,再将所述聚合结果输出并保存到所述存储模块50中。这样就可以确保上述多线程处理方式所得到的数据处理结果是完整的。

本发明的实施方式还提供一种计算机设备,所述计算机设备包括存储器以及处理器,所述存储器用于存储计算机程序,所述处理器运行所述计算机程序以使所述计算机设备执行根据上述各个实施方式所述的大规模图片处理方法。

本发明的实施方式还提供一种计算机可读存储介质,其存储有上述计算机设备中存储及使用的所述计算机程序。

依照上述的实施方式,本发明实质上是基于公有云平台的无服务器计算设备实现了大规模图片处理方法以及相应的系统、计算机设备和计算机可读存储介质。而公有云平台上的无服务器计算的特点是:只有进行了实际计算,才会产生费用;没有计算则不会产生费用;同时可以随着调用量的不断加大,自行完成计算资源的增加;随着调用量的减少,自行完成计算资源的减少。因此,在本发明的技术方案中,当用户提交大量图片数据时,无服务器计算会自行增大计算资源,支持足够的数据处理量;当用户提交的图片数据处理完毕后,因为不会再有发送给无服务器计算的请求,此时就不会再有计算费用产生。这样,相比于现有的图片数据处理技术,本发明可以取得多方面的优势:不需要自己设置大量的服务器进行工作,有效地节约了框架费用和运维成本;能够方便灵活地扩展应用程序,获得更好的可用性和容错能力;能够方便地实现框架可定制化,而且不会受到平台类型和存储地点的限制;同时,本发明在取得这些优势的前提下依旧能稳定地支持用户调用峰值所需的工作量。显然,本发明对于处理大规模图片数据的技术作出了多方面的改善。由于多媒体数据中最主要的部分就是图片数据,因此本发明的大规模图片处理方法及系统对于多媒体数据处理技术领域而言是一个重大的改进,能够有效地解决现有技术中存在的问题。

在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和结构图显示了根据本发明的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,结构图和/或流程图中的每个方框、以及结构图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

另外,在本发明各个实施例中的各功能模块或单元可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或更多个模块集成形成一个独立的部分。

所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是智能手机、个人计算机、服务器、或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1