一种多并发图片存储方法与流程

文档序号:11254107阅读:788来源:国知局
一种多并发图片存储方法与流程

本发明涉及存储技术领域,更具体地说,涉及一种多并发图片存储方法。



背景技术:

在智慧城市、安全城市、智能交通高速发展的今天,刑侦、安防以及交通违章图片数据较之之前海量递增,一个城市一日的图片量会高达千万条数量级。随着高清相机技术的不断发展,相机拍摄图片的像素较之之前也有巨大提升,单个图像有到几兆甚至几十兆的文件大小。

这对于后端存储设备是个不小的挑战,首先海量图片并发存储对于传统的nas(networkattachedstorage,网络附属存储)、ipsan、nvr(networkvideorecorder,网络硬盘录像机)设备来说是个灾难性的问题;随着图片像素的提高,单台设备的存储容量已很难达到交警、公安部门对图片存储期限的要求;nvr以及云存储使用传统文件系统存储大数量的图片文件时会存在比较严重的性能问题,并且解决难度较大、成本较高;另外,基于成本考虑,分布式架构的云存储也无法满足中小项目的需求。因此,如何有效的对多并发图片进行存储是一项亟待解决的问题。



技术实现要素:

有鉴于此,本发明的目的在于提供一种多并发图片存储方法,能够有效的对多并发图片进行存储。

为实现上述目的,本发明提供如下技术方案:

一种多并发图片存储方法,所述方法包括以下步骤:

图片网关或抓拍设备通过表述性状态转移协议向节点管理模块发出查询最优存储节点请求;

所述节点管理模块基于接收到的请求查询在线存储节点的健康状态,基于所述健康状态选取状态最优的存储节点作为当前请求的最优存储节点,并将选取的最优存储节点返回至所述图片网关或抓拍设备;

所述图片网关或抓拍设备基于接收到的所述最优存储节点通过接口模块将图片存储至图片存储模块。

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

以预设时间周期,所述节点管理模块重新计算最优存储节点。

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

对于健康状态不满足预设条件或离线的存储节点,所述节点管理模块生成告警信息。

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

当图片存储至所述图片存储模块成功后,所述接口模块获取所述图片存储模块返回的唯一标示图片的统一资源定位符,并将所述统一资源定位符返回至上传所述图片的图片网关。

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

所述图片网关基于所述统一资源定位符从所述图片存储模块中下载相应的图片。

从上述技术方案可以看出,本发明公开了一种多并发图片存储方法,当需要进行多并发图片的存储时,首先图片网关或抓拍设备通过表述性状态转移协议向节点管理模块发出查询最优存储节点请求,然后节点管理模块基于接收到的请求查询在线存储节点的健康状态,基于所述健康状态选取状态最优的存储节点作为当前请求的最优存储节点,并将选取的最优存储节点返回至所述图片网关或抓拍设备,然后图片网关或抓拍设备基于接收到的最优存储节点通过接口模块将图片存储至图片存储模块;通过节点管理模块返回的最优存储节点,图片网关或抓拍设备能够通过最优存储节点将图片写入图片存储模块,有效的实现了多并发图片的存储。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。

图1为本发明公开的一种多并发图片存储方法实施例1的流程图;

图2为本发明公开的一种多并发图片存储方法实施例2的流程图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。

如图1所示,为本发明公开的一种多并发图片存储方法的实施例1的流程图,本方法可以包括以下步骤:

s101、图片网关或抓拍设备通过表述性状态转移协议向节点管理模块发出查询最优存储节点请求;

当需要进行多并发图片存储时,新连接的图片网关或抓拍设备通过表述性状态转移协议向节点管理模块发出请求查询最优存储节点。

s102、节点管理模块基于接收到的请求查询在线存储节点的健康状态,基于健康状态选取状态最优的存储节点作为当前请求的最优存储节点,并将选取的最优存储节点返回至所述图片网关或抓拍设备;

当节点管理模块接收到图片网关或抓拍设备发送的查询最优存储节点的请求后,节点管理模块通过集群接口查询在线的存储节点的健康状态,然后向健康状态满足条件的节点查询节点网络压力、系统负载和空闲存储空间等,然后根据查询到的以上状态信息进行综合计算,选取状态最优的节点作为当前请求的最优存储节点,然后将最优存储节点返回给请求的图片网关。

s103、图片网关或抓拍设备基于接收到的最优存储节点通过接口模块将图片存储至图片存储模块。

图片网关接收到最优存储节点后,直接由最优存储节点将待存储图片存储至图片存储模块。

在上述实施例中,各图片存储模块和前端图片网关或抓拍设备连接在同一个交换网络中。其中,节点管理模块安装在每一个图片存储模块上,但是只需要一个节点负责实际的最优节点选择工作,图片网关或抓拍设备通过该节点的ip地址来查询进行图片存储的最优节点,节点管理模块可以通过系统自动选举或者用户手动配置两种方式产生。图片存储模块并不保存过多的分布式系统配置信息,所有系统状态都是实时查询得到,这样就增加了图片存储模块节点增删的灵活性。当节点管理模块发生致命错误后,会由其他节点发送错误消息通知管理员进行维护。该方案较之分布式系统管理灵活、成本低,符合图片存储中小项目应用实际。

如图2所示,为为本发明公开的一种多并发图片存储方法的实施例1的流程图,本方法可以包括以下步骤:

s201、图片网关或抓拍设备通过表述性状态转移协议向节点管理模块发出查询最优存储节点请求;

当需要进行多并发图片存储时,新连接的图片网关或抓拍设备通过表述性状态转移协议向节点管理模块发出请求查询最优存储节点。

s202、节点管理模块基于接收到的请求查询在线存储节点的健康状态,基于健康状态选取状态最优的存储节点作为当前请求的最优存储节点,并将选取的最优存储节点返回至所述图片网关或抓拍设备;

当节点管理模块接收到图片网关或抓拍设备发送的查询最优存储节点的请求后,节点管理模块通过集群接口查询在线的存储节点的健康状态,然后向健康状态满足条件的节点查询节点网络压力、系统负载和空闲存储空间等,然后根据查询到的以上状态信息进行综合计算,选取状态最优的节点作为当前请求的最优存储节点,然后将最优存储节点返回给请求的图片网关。

s203、图片网关或抓拍设备基于接收到的最优存储节点通过接口模块将图片存储至图片存储模块;

图片网关接收到最优存储节点后,直接由最优存储节点将待存储图片存储至图片存储模块。

图片存储模块是本存储系统的重点模块,本模块的性能和稳定性是整个系统特性的关键因素。其中,为保证存储效率,本模块避开通用文件系统层,直接对块设备进行操作;根据图片存储的特点,图片多为小文件并且数量巨大,如果使用数据库等结构化手段来管理每个图片元数据,对于系统性能将是灾难性的影响,本模块设计时只对卷空间等固定设备做结构化管理,不对图片存储直接产生的过程数据做结构化保存。

在存储空间管理上,本模块对加入的卷进行划分,每4g划分为一个chunk,然后将卷信息通过结构化数据表保存,数据表的内容为:chunkid、lunid、lunoffset、state、chunkoffset、priority。其中chunkid为唯一标示该chunk的id,由lunid和lunoffset生成;lunid为该chunk所在lun的id;lunoffset为该chunk在lun中的偏移量;state为该chunk的状态,包括unused、using、full和bad,分别标示未使用、正在使用、已写满和损坏四个状态;当state为using时chunkoffset为当前已使用的偏移量;priority标示该chunk的优先级,用于存储高优先级的图片。通过lunid+lunoffset+chunkoffset可以找到当前可以使用的存储空间。

图片存储的具体实现过程如下:

(1)接口模块将图片二进制数据和图片大小、类型、时间戳等描述信息传递到本模块,本模块将上述数据按时间戳、图片类型、图片长度和图片数据的顺序进行编排。然后在数据头部加入图片魔数和图片存储版本信息,这两个信息用于图片查找和循环覆盖时使用。

(2)查询chunk结构化数据表,找到存储空间中当前正在可用的lunid、chunkid和chunkoffset,然后将该写入地址和(1)中产生的写入数据一起放到缓存队列中,更新当前可用lunid、chunkid和chunkoffset。

(3)将图片存储的lunid、chunkid和chunkoffset返回给接口层,经由接口层返回给用户。

(4)缓存队列有定量和定时两种方式进行图片异步下刷,定量方式指当缓存队列数据超过64m数据后进行一次下刷操作;定时下刷方式指当最老缓存数据超过10秒时进行一次下刷操作。

(5)下刷动作成功完成后,将结构化chunk数据表数据落盘。

用户有重要图片需要存储时,会在请求的rest接口中添加highpriority的字段,每个chunk都会有一个priority属性,这类图片会存放在priority为high的chunk中,这类chunk在有效时间结束前不允许循环覆盖。

当所有chunk写满后需要循环覆盖利用存储空间,此时程序通过检查覆盖点附近的图片magic和version信息以确定是否为陈旧图片数据,如果是则循环覆盖该位置数据。

s204、以预设时间周期,所述节点管理模块重新计算最优存储节点;

经过设定的更新时间后,节点管理模块会重新计算最优存储节点。如果系统负载压力变化不大则维持原最优节点方案,如果系统负载有较大变化则重新为该图片网关选择最优存储节点,具体实现方式为:图片网关往最优存储节点写入图片时,最优存储节点完成该图片存储并返回最优存储节点变更错误代码,图片网关收到该代码后需要重新向节点管理模块查询最优存储节点路径。

s205、对于健康状态不满足预设条件或离线的存储节点,所述节点管理模块生成告警信息;

对于健康状态不佳或者离线的存储节点,节点管理模块会发出告警,通知管理员进行人工维护。

s206、当图片存储至图片存储模块成功后,接口模块获取图片存储模块返回的唯一标示图片的统一资源定位符,并将统一资源定位符返回至上传图片的图片网关;

当图片存储成功后,接口模块获取图片存储模块返回的唯一标示图片的统一资源定位符返回给上传图片的图片网关。

s207、图片网关基于统一资源定位符从图片存储模块中下载相应的图片。

当图片网关下载图片时,接口层解析网关请求的url,将lunid、chunkid和chunkoffset传递到图片存储模块,最后将获取的图片信息返回给图片网关。

返回图片信息中,除图片二进制数据外,还包括图片的时间戳、图片类型和图片长度等结构化数据。

图片下载的详细步骤如下:

(1)接口层传递图片存储的lunid、chunkid、chunkoffset和version信息,本模块不需要经过结构化数据表查询,直接通过上述信息到指定chunk的偏移量读出图片结构化信息;

(2)校验图片的magic是否为有效图片,校验图片的version是否为指定与传入version一致(如果不一致则为已被循环覆盖),如果上述校验通过则根据图片length读出图片二进制数据;

(3)将图片的二进制数据和结构化数据返回给接口层,经由接口层通过rest返回给用户

综上所述,本发明通过简单有效的最优节点管理机制实现低成本的中小规模图片存储方案,提高业务并发度和存储效率;通过规范的rest接口实现存储系统和用户的交互,增加了对接的通用性;定制化的图片存储方案,解决了使用通用性文件系统小文件存储效率低的问题;不对每条图片信息进行结构化数据存储,而是将结构化数据和图片元数据一同存储数据空间,在海量存储场景下解决了随着存储图片量的增加效率降低的问题;在图片读取时直接通过传递参数读取磁盘信息,避免再次对结构化数据进行查询的问题,提高数据的读取效率。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同相似部分互相参见即可。

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

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