一种海量图片管理方法和装置与流程

文档序号:12596194阅读:646来源:国知局
一种海量图片管理方法和装置与流程

本申请涉及计算机技术领域,具体涉及一种海量图片管理方法,以及一种海量图片管理装置。



背景技术:

网络交易平台提供大量商品的交易,每个商品都有对应的至少一张图片,以全球速卖通(Aliexpress)为例,该平台上大约有1.5亿的商品,每个商品有1至6张在搜索、导购等页面展示的商品主图,还有多张描述商品详情的细节图,随着业务的发展,每天有大量的图片被新发到该平台。

基于图片可以进行多种处理和分析,例如从图片内容判断两个商品是否相似或者同款,或是基于图片内容评估图片的质量、识别商品是否侵权等。

目前存在的问题是,一方面,海量图片的处理和分析对平台的存储能力、数据处理能力均有着较高的要求;另一方面,针对每日更新的大量图片,由于并未标记与原始图片的关系,因此无法确切获知哪些图片为新增图片,目前的图片存储仅仅是简单将更新的图片全部并入图片库中,从而造成供下游应用程序调用的商品图片不准确,并且会浪费较多的计算资源和存储资源来处理重复的图片。



技术实现要素:

鉴于上述问题,提出了本申请以便提供一种克服上述问题或者至少部分地解决上述问题的海量图片管理方法和相应的海量图片管理装置。

依据本申请的一个方面,提供了一种海量图片管理方法,包括:

获取当日更新的多个最新图片;

将所述最新图片通过多个传输线程并行上传到分布式服务器集群中预置的日增图库,所述分布式服务器集群中还部署有全量图库;

通过比对图片索引,将所述日增图库中不存在于所述全量图库的最新图片保存至所述全量图库;

接收到应用程序调用图片的请求后,从所述全量图库提取目标图片反馈至所述应用程序。

优选地,在所述获取当日更新的多个最新图片之前,所述方法还包括:

通过解析商品更新记录获得对应更新的最新商品信息;

从所述最新商品信息解析出所述最新图片的链接地址,根据所述链接地址获取所述最新图片。

优选地,所述通过比对图片索引,将所述日增图库中不存在于所述全量图库的最新图片保存至所述全量图库包括:

将所述日增图库中最新图片的图片索引与预置的历史索引库进行比对,所述历史索引库中保存所述全量图库中所有图片的图片索引;

提取图片索引不存在于所述历史索引库的最新图片保存至所述全量图库。

优选地,所述方法还包括:

将增加至所述全量图库的最新图片对应的图片索引增加至所述历史索引库。

优选地,所述全量图库中的图片按照所属多级图片类目分布存放在所述服务器集群的多个存储区,每个存储区的图片按照对应的图片编号按序存放,各图片标记有对应的图片标识和所属多级图片类目;

所述接收到应用程序调用图片的请求后,从所述全量图库提取目标图片反馈至所述应用程序包括:

解析所述调用图片的请求携带所需目标图片的目标多级图片类目;

根据所述多级图片类目中各级图片类目对应在所述存储区的存放位置以及各个图片标记的图片标识和所属多级图片类目,从所述全量图库中提取所述目标图片。

优选地,每日对应一个日增图库,所述方法还包括:

删除不符合预设时间区段的日增图库。

优选地,所述方法还包括:

通过查询商品历史访问数据确定仍在线使用的商品对应的在线图片,和/或,通过查询图片历史调用数据确定仍在线使用的在线图片;

删除所述全量图库中除所述在线图片之外的图片。

优选地,所述方法还包括:

查找求模值等于当天对应星期的某个图片类目作为待清理的图片类目;

所述删除所述全量图库中除所述在线图片之外的图片为,针对所述待清理的图片类目,在所述全量图库中删除该图片类目下除所述在线图片之外的图片。

优选地,在所述通过比对图片索引,将所述日增图库中不存在于所述全量图库的最新图片保存至所述全量图库的同时,所述方法还包括:

将对应的原始图片存在于所述全量图库的最新图片替代所述原始图片保存至所述全量图库。

优选地,所述方法还包括:

检测到某个传输线程的执行时间超出预设时间时,结束所述传输线程,并重启新的传输线程代替执行相应任务;

和/或,监控网络连接API,当捕获到所述网络连接API发出网络连接异常通知时,结束所有传输线程,并重启新的多个传输线程代替执行相应任务。

优选地,所述从所述全量图库提取目标图片反馈至所述应用程序为,从所述全量图库查找所述目标图片,提取所述目标图片的图片特征反馈至所述应用程序;

所述图片索引为所述图片的图片编号和图片标识。

本申请还提供了一种海量图片管理装置,包括:

图片获取模块,用于获取当日更新的多个最新图片;

图片上传模块,用于将所述最新图片通过多个传输线程并行上传到分布式服务器集群中预置的日增图库,所述分布式服务器集群中还部署有全量图库;

图片保存模块,用于图片通过比对图片索引,将所述日增图库中不存在于所述全量图库的最新图片保存至所述全量图库;

图片反馈模块,用于接收到应用程序调用图片的请求后,从所述全量图库提取目标图片反馈至所述应用程序。

优选地,所述装置还包括:

最新商品解析模块,用于在所述获取当日更新的多个最新图片之前,通过解析商品更新记录获得对应更新的最新商品信息;

链接地址访问模块,用于从所述最新商品信息解析出所述最新图片的链接地址,根据所述链接地址获取所述最新图片。

优选地,所述图片保存模块包括:

索引比对子模块,用于将所述日增图库中最新图片的图片索引与预置的历史索引库进行比对,所述历史索引库中保存所述全量图库中所有图片的图片索引;

图片提取子模块,用于提取图片索引不存在于所述历史索引库的最新图片保存至所述全量图库。

优选地,所述装置还包括:

索引增加模块,用于将增加至所述全量图库的最新图片对应的图片索引增加至所述历史索引库。

优选地,所述全量图库中的图片按照所属多级图片类目分布存放在所述服务器集群的多个存储区,每个存储区的图片按照对应的图片编号按序存放,各图片标记有对应的图片标识和所属多级图片类目;

所述图片反馈模块包括:

类目解析子模块,用于解析所述调用图片的请求携带所需目标图片的目标多级图片类目;

按类目提取子模块,用于根据所述多级图片类目中各级图片类目对应在所述存储区的存放位置以及各个图片标记的图片标识和所属多级图片类目,从所述全量图库中提取所述目标图片。

优选地,每日对应一个日增图库,所述装置还包括:

图库删除模块,用于删除不符合预设时间区段的日增图库。

优选地,所述装置还包括:

查询模块,用于通过查询商品历史访问数据确定仍在线使用的商品对应的在线图片,和/或,通过查询图片历史调用数据确定仍在线使用的在线图片;

图片删除模块,用于删除所述全量图库中除所述在线图片之外的图片。

优选地,所述装置还包括:

类目查找模块,用于查找求模值等于当天对应星期的某个图片类目作为待清理的图片类目;

所述图片删除模块,具体用于针对所述待清理的图片类目,在所述全量图库中删除该图片类目下除所述在线图片之外的图片。

优选地,所述装置还包括:

图片替代模块,用于在所述通过比对图片索引,将所述日增图库中不存在于所述全量图库的最新图片保存至所述全量图库的同时,将对应的原始图片存在于所述全量图库的最新图片替代所述原始图片保存至所述全量图库。

优选地,所述装置还包括:

超时处理模块,用于检测到某个传输线程的执行时间超出预设时间时,结束所述传输线程,并重启新的传输线程代替执行相应任务;

和/或,网络连接中断处理模块,用于监控网络连接API,当捕获到所述网络连接API发出网络连接异常通知时,结束所有传输线程,并重启新的多个传输线程代替执行相应任务。

优选地,所述图片反馈模块,具体用于从所述全量图库查找所述目标图片,提取所述目标图片的图片特征反馈至所述应用程序;

所述图片索引为所述图片的图片编号和图片标识。

依据本申请实施例,将全量的商品图片存储于分布式服务集群的全量图库中,满足了海量图片的处理和分析对平台的存储能力、数据处理能力的要求;针对每日更新的最新图片,存储至日增图库,通过比对图片索引确定不存在于全量图库的新增图片,将确定的新增图片增加至全量图库,避免了提供给下游应用程序的商品图片不准确以及占用较多存储资源和计算资源的问题。

本申请实施例中,针对对应的原始图片存在于全量图库的最新图片,可以替代原始图片保存至所述全量图库,从而实现新旧图片的更新;在提取应用程序所需最新图片后,可以进一步提取图片特征进行反馈,减轻了应用程序所在终端处理图片的负载。

本申请实施例支持将图片按照对应的多级图片类目存放在服务器集群的多个存储区,进一步查找图片时可以仅仅根据多级类目进行提取,从而可以极大的提高查找数据的效率;并且,在各个存储区,可以将多个图片按照图片编号组织成一个大文件进行存储,从而提高了图片查找和处理的效率。

上述说明仅是本申请技术方案的概述,为了能够更清楚了解本申请的技术手段,而可依照说明书的内容予以实施,并且为了让本申请的上述和其它目的、特征和优点能够更明显易懂,以下特举本申请的具体实施方式。

附图说明

通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本申请的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:

图1示出了根据本申请一个实施例的海量图片管理方法的流程图;

图2示出了根据本申请另一个实施例的海量图片管理方法的流程图;

图3示出了本申请图片传输的流程示意图;

图4示出了本申请的一个示例中图片的存储结构;

图5示出了本申请的一个示例中多级图片类目的示意图;

图6示出了本申请的一个示例中图片清理的步骤示意图;

图7示出了本申请的一个示例中图片输出的流程示意图;

图8示出了根据本申请一个实施例的海量图片管理装置的结构框图;

图9示出了根据本申请另一个实施例的海量图片管理装置的结构框图。

具体实施方式

下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。

参考图1,示出了根据本申请一个实施例的海量图片管理的流程图,该方法具体可以包括以下步骤:

步骤101,获取当日更新的多个最新图片。

当日更新的最新图片可以包括针对原始图片进行修改后的图片,也可以是新增的图片,例如新增商品的所有图片或是针对原有商品新增的图片。可以通过多种方式获取最新图片,例如监控客户端更新图片的行为,或是通过访问图片更新的相关记录获取最新图片,还可以通过其他任意适用的方式,本申请对此并不做限制。

步骤102,将所述最新图片通过多个传输线程并行上传到分布式服务器集群中预置的日增图库,所述分布式服务器集群中还部署有全量图库。

传统的图片存储和处理通常是在一个服务器上进行,无法满足海量图片的需求,本申请通过将存储所有图片的全量图库部署在分布式服务器集群上,可以满足海量图片存储和处理的要求。

具体实现中,优选的,可以将本申请的方案部署在Hadoop系统(Hadoop Distributed File System,分布式文件系统)上,Hadoop是一个由Apache基金会所开发的分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群高速运算和存储能力。Hadoop的框架最核心的设计就是:HDFS(Hadoop Distributed File System,分布式文件系统)和MapReduce。HDFS为海量的数据提供了存储。HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序,MapReduce则为海量的数据提供了计算。

Hadoop作为现在比较可靠的分布式框架,可以很方便的编写分布式程序。但是要在hadoop上分布式的处理图片,需要先把图片传输到HDFS上。随着数据量的增大,数据传输耗时增加,海量数据的上传到HDFS更是会耗费大量的时间,相比于单线程,本申请通过多线程传输可以提高数据传输的效率。

进一步,需要在HDFS上维护一个全量的图片库以及每日的日增图库,保持图库的日更新,作为分布式图片处理任务的数据输入可以采用统一的接口为下游的分布式图片处理程序提供输入。

步骤103,通过比对图片索引,将所述日增图库中不存在于所述全量图库的最新图片保存至所述全量图库。

图片采用图片索引进行标识,图片索引可以是图片的标识、编号等任意可用数据。

由于日增图库中可能存在全量图库中已有对应的原始图片,因此需要需要确定哪些图片是不存在于全量图库中的最新图片并保存至全量图库。

优选地,当采用Hadoop系统实施本申请时,可以采用MapReduce任务完成索引比对的步骤。

步骤104,接收到应用程序调用图片的请求后,从所述全量图库提取目标图片反馈至所述应用程序。

应用程序可以向分布式服务集群发送调用图片的请求,接收到请求后,查找应用程序所请求的图片进行反馈。此处应用程序可以实现包括图同款、图片质量检测和基于图片内容的商品侵权检测等功能,本申请在此不做限制。

本申请实施例中,优选地,所述步骤103可以包括:

子步骤S1,将所述日增图库中最新图片的图片索引与预置的历史索引库进行比对,所述历史索引库中保存所述全量图库中所有图片的图片索引;

子步骤S2,提取图片索引不存在于所述历史索引库的最新图片保存至所述全量图库。

本申请可以预先采用历史索引库保存全量图库的全部图片的图片索引,确定不存在于所述全量图库的最新图片时,可以通过比对图片索引,若在全量图库中未查找到日增图库中某个图片的图片索引,则可以将该图片保存至全量图库。

本申请实施例中,优选地,所述方法还包括:

将增加至所述全量图库的最新图片对应的图片索引增加至所述历史索引库。

在确定不存在于所述全量图库的最新图片后,可以将确定的最新图片的图片索引增加至历史索引库,以对其进行更新。

本申请实施例中,优选地,所述全量图库中的图片可以按照所属多级图片类目分布存放在所述服务器集群的多个存储区,进一步查找图片时可以仅仅根据多级类目进行提取,从而可以极大的提高查找数据的效率。多级类目可以根据实际需要进行设置,本申请对此并不做限定。

相应优选地,所述步骤104可以包括:

子步骤S3,解析所述调用图片的请求携带所需目标图片的目标多级图片类目;

子步骤S4,根据所述多级图片类目中各级图片类目对应在所述存储区的存放位置以及各个图片标记的图片标识和所属多级图片类目,从所述全量图库中提取所述目标图片。

预先配置各级类目与存储区的存放位置的对应关系,对应用程序调用图片的请求进行解析获得待提取图片的多级图片类目,进一步按照对应的存储位置从全量图库提取目标图片。

由于图片库需要提供灵活的过滤访问,比如用户可能需要访问某某类目下某个图片标识对应的图片,所以本图片库中不是将所有的图片都放在一起,而是按照如下的目录组织形式,将图片按照类目分级存放,就像一个个的分区。这样当只需要过滤得到某个三级类目下的某些图片时,只需要拿三级类目的数据作为输入即可,可极大的减少数据的处理量。

由于图片都是一个个的小文件,而众多的小文件会大大降低Hadoop平台的处理效率。采用Hadoop系统时,其文件系统的结构在处理和存储大文件有很大的优势,而很多小文件则不适合在hadoop中进行处理,可以将众多的小文件,通过使用Hadoop中提供的SequenceFile的方式,组织成一个大文件进行存储。SequenceFile是Hadoop提供的一种二进制文件格式,它将数据以<key,value>的形式序列化到文件中。具体应用到本申请,每个存储区的图片可以按照对应的图片编号按序存放,在后续的图片处理过程中这些元数据可以提供数据过滤功能,从而提高了图片查找和处理的效率;各图片可以标记有对应的图片标识和所属多级图片类目,用于按照图片标识和多级图片类目对图片进行提取,K为图片编号,V为图片原始数据和元数据,元数据包括图片标识和所属多级类目。图片标识可以是图片的MD5值。

本申请实施例中,优选地,所述从所述全量图库提取目标图片反馈至所述应用程序为,从所述全量图库查找所述目标图片,提取所述目标图片的图片特征反馈至所述应用程序。

相比于在HDFS上存储图片的特征库而不是图片原始数据的方案,这种方案不在HDFS上存储图片原始数据,而是在拿到图片的原始数据之后,提取需要的图片特征,比如直方图、SIFT等,存储这些特征数据到HDFS上,目的是为了减少数据传输量。但这种方案存在的问题是,图片库无法作为图片处理和分析任务的通用数据平台,每个图片处理任务需要的图片特征可能是不一样的,无法一一枚举,如果某个任务需要某种特征,而这种特征不存在,那么就无法在短时间内进行这个图片处理任务,因为对海量图片提取特征本身也需要巨大的工作量。并且这种方式,算法人员的工作必须从如何获取图片着手,然后提取特征,然后再上传到HDFS,之后才能使用算法进行分析和处理。前期的特征准备需要花费很大精力,算法人员无法专注在算法的应用上。

本申请由于存储了图片原始数据,应用程序可以预置所需的特征提取方式,或是,对于一些常用的图片特征,可以通过预置的通用的分布式特征提取程序,使用者可以直接调用。可以满足提取各种特征的需求,使得对于下游的图片处理和分析任务,本申请的图片库可以作为一个公共的数据支持平台提供数据服务。通过这种统一的图片输出方式以及内置的图片特征处理算法,从而可以方便快捷地为下游的图片处理任务提供数据,算法人员不需要关心大量图片存储和特征提取工作,只需要关注算法本身,实现了“专人专事”策略,保障了工作的高效性。并且通过提取图片特征进行反馈,减轻了应用程序所在终端处理图片的负载。

参考图2,示出了根据本申请另一个实施例的基于数据分析的服务器入侵识别方法的流程图,该方法具体可以包括以下步骤:

步骤201,通过解析商品更新记录获得对应更新的最新商品信息。

在商品更新时可以进行记录,后续通过读取记录即可蝴蝶更新的最新商品信息。

步骤202,从所述最新商品信息解析出所述最新图片的链接地址,根据所述链接地址获取所述最新图片。

在获取最新商品时,可以通过解析最新商品信息获得最新图片的链接地址,根据链接地址可以从最新商品的存储位置获取该商品。

步骤203,获取当日更新的多个最新图片。

步骤204,将所述最新图片通过多个传输线程并行上传到分布式服务器集群中预置的日增图库,每日对应一个日增图库,所述分布式服务器集群中还部署有全量图库。

步骤205,检测到某个传输线程的执行时间超出预设时间时,结束所述传输线程,并重启新的传输线程代替执行相应任务。

图片传输中可能会出现传输超时的问题,导致整个图片传输的时间大大增加,甚至发生传输失败的问题,因此需要做好超时控制。

由于采用了多个传输线程进行图片的上传,预先可以针对各个传输线程设置传输时间上限或是超时时间,超出这个时间传输线程还没有结束,则确定发生传输超时的问题。针对一个或多个传输线程超时的情况,强制关闭相应的传输线程,并重新启动新的传输线程,代替关闭的线程执行任务,从而及时发现并解决传输超时的问题,保证可以在最短的时间中将大量的图片传输到到分布式服务器集群。

步骤206,监控网络连接API,当捕获到所述网络连接API发出网络连接异常通知时,结束所述传输线程,并重启新的传输线程代替执行相应任务。

图片传输中可能会受到网络扰动,导致和分布式服务器集群的连接会断掉,使传输中断。因此,在图片传输过程中需要对网络连接进行监控,并在监控到网络连接中断时,重试传输任务,从而及时发现并解决网络中断的问题,保证可以在最短的时间中将大量的图片传输到到分布式服务器集群。

本申请优选采用的方式是,结束当前所有传输线程,并重新启动相应个数的新的线程,对应执行关闭的各个传输任务。

其中,可以通过监控网络连接API来发现网络中断,网络连接功能通过Java语言底层的API(Application Programming Interface,应用程序编程接口)来实现,当网络中断时,API会发出一个异常通知,通过捕获这个异常通知即可确定发生网络中断。

本申请针对连接中断和超时均可采用重试的方式解决。由于不可能无限制的进行重试,可以针对重试设置对应的最大重试次数进行控制。例如,最多重试3次,若重试3次之后还不能完成任务,则忽略对这张图片的传输。

步骤207,通过比对图片索引,将所述日增图库中不存在于所述全量图库的最新图片保存至所述全量图库,将对应的原始图片存在于所述全量图库的最新图片替代所述原始图片保存至所述全量图库。

本申请实施例中,针对对应的原始图片存在于全量图库的最新图片,可以替代原始图片保存至所述全量图库,从而实现新旧图片的更新。

步骤208,接收到应用程序调用图片的请求后,从所述全量图库提取目标图片反馈至所述应用程序。

步骤209,删除不符合预设时间区段的日增图库。

由于存储空间的限制,日增图库不需要保留很多天的数据,可以设置一个期限,例如保留7天,并根据该期限将过期的日增图库删除。

步骤210,通过查询商品历史访问数据确定仍在线使用的商品对应的在线图片,和/或,通过查询图片历史调用数据确定仍在线使用的在线图片。

全量库中由于存储了大量的历史数据,里面会有很多的“僵尸图片”,包括已经下线的商品对应的图片,商品中已经删除的图片等,这些数据需要清除,否则久而久之会占用很大的存储空间。通过查询商品历史访问数据可以确定仍在线使用的商品对应的在线图片,或是通过查询图片历史调用数据确定仍在线使用的在线图片,或是将两种方式结合使用。

步骤211,删除所述全量图库中除所述在线图片之外的图片。

需要将全量库中的“僵尸图片”删除,由于全量图库数据量巨大,无法一次性执行这个清理工作,因此对于全量图片,可以采用按照类目分批清理的策略。

可以设定类目ID与预设数值的求模结果,与预设时间段(一天、一周、一月或一年等)中各个日期(某天、一天中的某个时间点等)的对应关系,在到达该日期时,清理对应的类目ID。

优选地,可以查找求模结果等于当天对应星期的某个图片类目作为待清理的图片类目,即将类目ID与7求模的结果等于当天对应星期的类目,作为待清理的对象,这样保证在一周之内每个类目都会得到清理。例如,类目A的ID为9,与7求模结果为2,类目B的ID为8,与7求模结果为1,则可以将类目A作为星期二的待清理对象,将类目B作为星期一的待清理对象,若当天对应一周中的星期二,则清理类目A。还可以根据实际需求设置类目ID与7求模结果与一周中某个日期的对应关系,例如,求模结果为2,则对应在一周中的周五清理,求模结果为3,在对应在一周中的周一清理。还可以采用任意适用的方式设置清理图片的时间,本申请对此并不做限制。

相应的,所述删除所述全量图库中除所述在线图片之外的图片为,针对所述待清理的图片类目,在所述全量图库中删除该图片类目下除所述在线图片之外的图片。

为使本领域技术人员更好地理解本申请,以下通过采用Hadoop平台实施本申请的一种海量图片管理方法为例进行说明。本申请的方案可以包括图片传输、图片存储、图库更新和数据输出几部分,以下分块进行详细说明。需要说明的是,图3-7中的图像即本申请所述的图片。

一、图片传输

如图3所示给出了本申请图片传输的流程示意图,具体过程包括:

1、获取当天修改的商品信息。

通过查询业务数据,找到当天被修改的商品,包括新发布的商品和文字修改或者图片修改的商品。由于无法精确的获得哪些商品是图片修改的商品,因此获取的商品量会比较大。

2、均衡商品信息切分。

对下载的商品信息构建相应的图像信息,首先获取待处理的商品数据,然后通过商品数据解析得到图片的URL,进一步均衡的切分为N份,调用高可靠性的传输程序将图片写入HDFS的SequenceFile中,每一份会有一个对应的图片上传单元进行处理。通过并行化上传加快图片的传输速度,多个图片上传单元并行工作。

3、传输图片到临时日增图库。

所有上传单元都将图片上传到HDFS上的一个临时日增图库中,这个临时日增图库存储了第一步中获取的全部商品的图片。传输程序具备高可靠性,通过部署传输断开重连机制、超时控制机制,保证可以在最短的时间中将大量的图片传输到HDFS。

4、索引比对,构建日增库。

索引中存储了图片库中图片的ID和图片的MD5码,通过MapReduce任务,将临时目录中的图片和索引库对比,获取不存在索引中的图片数据,作为当天的日增库内容。

5、更新索引。

对当天的日增库内容的图片数据构建索引,更新图库索引库,以便下次的图片上传中使用此索引进行过滤。

6、更新全量图库。

将当天的日增图库写入全量图库。

7、日增图库自清理。

由于存储空间的限制,日增图库不需要保留很多天的数据,一般保留7天,这一步将过期的日增图库从HDFS删除。

8、全量图库自清理。

二、图片存储

图4示出了本申请的一个示例中图片的存储结构,图5示出了本申请的一个示例中多级图片类目的示意图。

SequenceFile中通过K-V格式存储数据,这里我们将K作为图片的ID,V作为图片原始数据(二进制数据)和元数据,组成了如图4所示的存储结构。

图片的元数据包括图片的MD5码和图片对应的商品所在的类目等,在后续的图片处理过程中这些元数据可以提供数据过滤功能。

由于图片库需要提供灵活的过滤访问,比如用户可能需要访问某某类目下的哪些商品ID对应的图片,所以本图片库中不是将所有的图片都放在一起,而是按照如图5所示的目录组织形式,将图片按照类目分级存放,就像一个个的分区。如图image01.seq、image02.seq和image03.seq存储在图像库根目录下的某个四级类目下,这样当只需要过滤得到某个四级类目下的某些图片时,只需要拿四级类目的数据作为输入即可,可极大的减少数据的处理量。

三、图库更新

图片更新包括三个方面:

1、日增图库的更新

通过每日运行图片传输任务,建立当天的日增图库,并将过期的日增图库删除。

2、全量图库的更新

全量图库在本发明中是实现的日更新,将每日的日增图库直接和全量库合并即可。

3、全量图片的清理

此步骤需要将全量库中的“僵尸图片”删除,由于全量图库数据量巨大,无法一次性执行这个清理工作,因此对于全量图片,按照类目分批清理的策略,即在每天清理类目ID求模7等于当天对应星期的类目,这样保证在一周之内每个类目都会得到清理。

如图6示出了本申请的一个示例中图片清理的步骤示意图,具体包括:

步骤1、判断类目是否当天清理。

如果此类目当天清理,则加入图像库文件的清理列表中。

步骤2、准备有效图片ID列表。

通过查询业务数据,确定哪些图片ID是需要保留的,不在此列表之内的图片数据将被删除。

步骤3、运行MapReduce清理任务。

执行MapReduce任务将有效图片ID和原始图库中的图片数据进行比对,将不需要的图片清理掉。

步骤4、用清理后的数据翻盖原始数据。

使用清理之后的图片数据替换原始的图片库数据,完成清理。

四、数据输出

图片输出解决的问题是如何将满足下游图片处理程序的数据输入,图7示出了本申请的一个示例中图片输出的流程示意图,具体包括:

步骤1、确定需要的图片ID列表。

下游程序提供需要的图片ID,作为图片输出步骤的输入。

步骤2、过滤图库,得到图片数据。

根据图片列表,从图库中获取需要的图片数据。这里通过MapReduce任务进行图片ID和图库数据的分布式比对,得到结果。

步骤3、提取图片特征。

得到图片数据之后,可以通过内置的图片特征提取方法,或者下游程序自定义的图片特征提取算法,通过分布式MapReduce任务任务做特征提取,提取的特征作为下游图片处理任务的输入。

参考图8,其示出了根据本申请一个实施例的海量图片管理装置的结构框图,具体可以包括:

图片获取模块301,用于获取当日更新的多个最新图片;

图片上传模块302,用于将所述最新图片通过多个传输线程并行上传到分布式服务器集群中预置的日增图库,所述分布式服务器集群中还部署有全量图库;

图片保存模块303,用于图片通过比对图片索引,将所述日增图库中不存在于所述全量图库的最新图片保存至所述全量图库;

图片反馈模块304,用于接收到应用程序调用图片的请求后,从所述全量图库提取目标图片反馈至所述应用程序。

本申请实施例中,优选地,所述图片保存模块包括:

索引比对子模块,用于将所述日增图库中最新图片的图片索引与预置的历史索引库进行比对,所述历史索引库中保存所述全量图库中所有图片的图片索引;

图片提取子模块,用于提取图片索引不存在于所述历史索引库的最新图片保存至所述全量图库。

本申请实施例中,优选地,所述装置还包括:

索引增加模块,用于将增加至所述全量图库的最新图片对应的图片索引增加至所述历史索引库。

本申请实施例中,优选地,所述全量图库中的图片按照所属多级图片类目分布存放在所述服务器集群的多个存储区,每个存储区的图片按照对应的图片编号按序存放,各图片标记有对应的图片标识和所属多级图片类目;

所述图片反馈模块包括:

类目解析子模块,用于解析所述调用图片的请求携带所需目标图片的目标多级图片类目;

按类目提取子模块,用于根据所述多级图片类目中各级图片类目对应在所述存储区的存放位置以及各个图片标记的图片标识和所属多级图片类目,从所述全量图库中提取所述目标图片。

本申请实施例中,优选地,所述图片反馈模块,具体用于从所述全量图库查找所述目标图片,提取所述目标图片的图片特征反馈至所述应用程序;

所述图片索引为所述图片的图片编号和图片标识。

依据本申请实施例,将全量的商品图片存储于分布式服务集群的全量图库中,满足了海量图片的处理和分析对平台的存储能力、数据处理能力的要求;针对每日更新的最新图片,存储至日增图库,通过比对图片索引确定不存在于全量图库的新增图片,将确定的新增图片增加至全量图库,避免了提供给下游应用程序的商品图片不准确以及占用较多存储资源和计算资源的问题。

参考图9,其示出了根据本申请另一个实施例的海量图片管理装置的结构框图,具体可以包括:

最新商品解析模块401,用于在所述获取当日更新的多个最新图片之前,通过解析商品更新记录获得对应更新的最新商品信息;

链接地址访问模块402,用于从所述最新商品信息解析出所述最新图片的链接地址,根据所述链接地址获取所述最新图片。

图片获取模块403,用于获取当日更新的多个最新图片;

图片上传模块404,用于将所述最新图片通过多个传输线程并行上传到分布式服务器集群中预置的日增图库,所述分布式服务器集群中还部署有全量图库;

超时处理模块405,用于检测到某个传输线程的执行时间超出预设时间时,结束所述传输线程,并重启新的传输线程代替执行相应任务;

网络连接中断处理模块406,用于监控网络连接API,当捕获到所述网络连接API发出网络连接异常通知时,结束所有传输线程,并重启新的多个传输线程代替执行相应任务。

图片保存模块407,用于图片通过比对图片索引,将所述日增图库中不存在于所述全量图库的最新图片保存至所述全量图库,将对应的原始图片存在于所述全量图库的最新图片替代所述原始图片保存至所述全量图库;

图片反馈模块408,用于接收到应用程序调用图片的请求后,从所述全量图库提取目标图片反馈至所述应用程序。

图库删除模块409,用于删除不符合预设时间区段的日增图库。

查询模块410,用于通过查询商品历史访问数据确定仍在线使用的商品对应的在线图片,和/或,通过查询图片历史调用数据确定仍在线使用的在线图片;

图片删除模块411,用于删除所述全量图库中除所述在线图片之外的图片。

本申请实施例中,优选地,类目查找模块,用于查找求模值等于当天对应星期的某个图片类目作为待清理的图片类目;

所述图片删除模块,具体用于针对所述待清理的图片类目,在所述全量图库中删除该图片类目下除所述在线图片之外的图片。

依据本申请实施例,将全量的商品图片存储于分布式服务集群的全量图库中,满足了海量图片的处理和分析对平台的存储能力、数据处理能力的要求;针对每日更新的最新图片,存储至日增图库,通过比对图片索引确定不存在于全量图库的新增图片,将确定的新增图片增加至全量图库,避免了提供给下游应用程序的商品图片不准确以及占用较多存储资源和计算资源的问题。

本申请实施例中,针对对应的原始图片存在于全量图库的最新图片,可以替代原始图片保存至所述全量图库,从而实现新旧图片的更新;在提取应用程序所需最新图片后,可以进一步提取图片特征进行反馈,减轻了应用程序所在终端处理图片的负载。

本申请实施例支持将图片按照对应的多级图片类目存放在服务器集群的多个存储区,进一步查找图片时可以仅仅根据多级类目进行提取,从而可以极大的提高查找数据的效率;并且,在各个存储区,可以将多个图片按照图片编号组织成一个大文件进行存储,从而提高了图片查找和处理的效率。

由于所述装置和系统实施例基本相应于前述所示的方法实施例,故本实施例的描述中未详尽之处,可以参见前述实施例中的相关说明,在此就不赘述了。

在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本申请也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本申请的内容,并且上面对特定语言所做的描述是为了披露本申请的最佳实施方式。

在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本申请的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。

类似地,应当理解,为了精简本公开并帮助理解各个申请方面中的一个或多个,在上面对本申请的示例性实施例的描述中,本申请的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本申请要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,申请方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本申请的单独实施例。

本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。

此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本申请的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。

本申请的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本申请实施例的基于数据分析的服务器入侵识别设备中的一些或者全部部件的一些或者全部功能。本申请还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本申请的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。

应该注意的是上述实施例对本申请进行说明而不是对本申请进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本申请可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。

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