图片写入和读取方法、装置与流程

文档序号:11155276阅读:811来源:国知局
图片写入和读取方法、装置与制造工艺

本申请涉及视频监控领域,尤其涉及图片写入和读取方法、装置。



背景技术:

随着道路监控在安防领域的广泛应用,卡口相机图片的存储量也越来越大,存储的方式也从原来的集中式存储转向时下流行的分布式存储(即云存储)。相对于集中式存储,分布式存储使用的分布式文件系统的后端组织结构相当复杂,文件读取路径会变长,导致文件读取性能大大降低。一般分布式文件系统为了提高文件频繁访问的性能,会在后端缓存该文件,避免读取同一文件多次访问磁盘。但在监控领域,多次访问同一张图片的可能性不大,因此缓存的方式并不能从根本上提高图片的读取性能。

ceph为一种通用的分布式文件系统,包括元数据管理节点和存储节点,并提供cephfs文件系统来存储图片。通过ceph访问某一张图片文件时,根据文件名通过一定的算法确定该图片文件的存储节点,接着在存储节点上通过索引信息找到该图片文件的存储位置,从而读取该图片数据。

读取图片文件时,需要通过ceph文件系统,利用文件名算出对应的存储节点,再向对应的存储节点上的文件系统发送读取请求,如此会加大了图片文件访问的路径长度,降低图片文件的读取性能。而大部分图片远小于视频文件的大小,因此在ceph的文件名称索引区中存储的映射关系远远超过视频,数量甚至达到亿级。需要在如此庞大的量级数据中查找对应的映射关系以确认图片的具体存储位置,进而读取到图片数据,对图片文件的读取性能也产生了极大的影响。另外,这种方式无法绕开文件系统本身,在性能上存在瓶颈。



技术实现要素:

有鉴于此,本申请提供一种图片写入和读取方法、装置,以解决现有技术中图片读取性能较差的问题。

具体地,本申请是通过如下技术方案实现的:

根据本申请的第一方面,提供一种图片写入方法,应用于卡口客户端,所述图片写入方法包括:

发送节点选择请求至元数据服务器;

接收所述元数据服务器针对所述节点选择请求返回的节点编码;

向所述节点编码所对应的存储节点请求可用的资源;

通过动态iscsi技术挂载所述资源,并在挂载成功后将图片按预设存储格式写入所述资源;

记录所述图片存储所在的节点编码、资源ID、slice数据块ID、偏移量和图片大小;

根据所述图片存储所在的节点编码、资源ID、slice数据块ID、偏移量和图片大小生成该图片的URL。

可选地,所述图片写入方法还包括:

发送所述URL至卡口管理服务器。

可选地,所述预设存储格式包括索引区和slice数据区,所述索引区包括索引描述区、slice位图区和目录索引区,所述slice数据区包括若干slice块。

可选地,所述节点编码、资源ID、slice数据块ID、偏移量和图片大小依次排列形成相应图片的URL。

根据本申请的第二方面,提供一种图片读取方法,应用于图片显示客户端,所述图片读取方法包括:

从元数据服务器获取各存储节点的配置信息,所述配置信息包括节点编码、存储节点IP、存储节点端口号以及该存储节点所管理的资源列表信息,所述资源列表信息包括资源ID;

从卡口管理服务器获取待读取图片的URL,所述URL至少包括节点编码、资源ID、slice数据块ID、偏移量和图片大小;

根据所述待读取图片所对应的节点编码、资源ID以及所述配置信息,获取相应的存储节点IP和存储节点端口号;

根据所述相应的存储节点IP和存储节点端口号,以及所述待读取图片所对应的资源ID、slice数据块ID、偏移量和图片大小,利用iscsi协议读取图片。

根据本申请的第三方面,提供一种图片写入装置,应用于卡口客户端,所述图片写入装置包括:

节点请求发送模块,发送节点选择请求至元数据服务器;

信息接收模块,接收所述元数据服务器针对所述节点选择请求返回的节点编码;

资源请求模块,向所述节点编码所对应的存储节点请求可用的资源;

图片写入模块,通过动态iscsi技术挂载所述资源,并在挂载成功后将图片按预设存储格式写入所述资源;

写入位置记录模块,记录所述图片存储所在的节点编码、资源ID、slice数据块ID、偏移量和图片大小;

URL生成模块,根据所述图片存储所在的节点编码、资源ID、slice数据块ID、偏移量和图片大小生成该图片的URL。

可选地,所述图片写入装置还包括:

图片信息发送模块,发送所述URL至卡口管理服务器。

可选地,所述预设存储格式包括索引区和slice数据区,所述索引区包括索引描述区、slice位图区和目录索引区,所述slice数据区包括若干slice块。

可选地,所述节点编码、资源ID、slice数据块ID、偏移量和图片大小依次排列形成相应图片的URL。

根据本申请的第四方面,提供一种图片读取装置,应用于图片显示客户端,所述图片读取装置包括:

节点信息获取模块,从元数据服务器获取各存储节点的配置信息,所述配置信息包括节点编码、存储节点IP、存储节点端口号以及该存储节点所管理的资源列表信息,所述资源列表信息包括资源ID;

URL读取模块,从卡口管理服务器获取待读取图片的URL,所述URL至少包括节点编码、资源ID、slice数据块ID、偏移量和图片大小;

IP获取模块,根据所述待读取图片所对应的节点编码、资源ID以及所述配置信息,获取相应的存储节点IP和存储节点端口号;

图片文件读取模块,根据所述相应的存储节点IP和存储节点端口号,以及所述待读取图片所对应的资源ID、slice数据块ID、偏移量和图片大小,利用iscsi协议读取图片。

本申请的有益效果:将图片存储在相应存储节点中的具体位置与该图片的URL唯一对应,需要读取图片时,直接从URL中解析出具体存储节点的具体资源上的图片存储具体位置,即可直接读取该图片,无需通过元数据服务器和文件系统索引确定图片的存储位置,大大缩短了图片访问路径的长度,达到直接快速读取图片的目的,提高图片读取性能,进而提高后续智能分析等业务的处理性能。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。

图1是本申请的图片云存储的组网结构示意图;

图2是图1的局部结构示意图,其揭示了图片云存储写入的组网;

图3是图1的另一局部结构示意图,其揭示了图片云存储读取的组网;

图4是本申请提供的一种图片写入方法的流程图;

图5是本申请提供的标准san资源上的数据存储格式示意图;

图6是本申请提供的存储节点进行资源管理的结构示意图;

图7是本申请提供的一种图片读取方法的流程图;

图8是本申请提供的一种图片写入装置的结构示意图;

图9是本申请提供的一种图片读取装置的结构示意图。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。

图1是本申请的监控图片云存储的组网示意图,图2是图1的局部结构示意图,其揭示了图片云存储写入的组网,图3是图1的另一局部结构示意图,其揭示了图片云存储读取的组网。

如图1所示,该监控图片云存储组网设有云存储系统、若干部署有云存储客户端的卡口、卡口管理服务器、部署有云存储客户端的UI(User Interface,用户界面)。其中,每个卡口中可设有若干与该卡口中部署的云存储客户端通信连接的卡口相机。云存储系统包括元数据管理服务器(CDM,Cloud Data Management,简称元数据服务器)和若干存储节点(CDV,Cloud Data Storage Virtual Service Software,存储节点虚拟化服务软件,部署有CDV的服务器称为存储节点管理服务器)。

本申请中,云存储客户端部署在卡口中称作卡口客户端,云存储客户端部署在UI中则称作图片显示客户端。其中,UI可为手机APP(Application,即应用程序)、或计算机上的应用软件等。其中,元数据服务器负责管理各存储节点,调度各个存储节点间的存储负载均衡。具体地,各存储节点将各自的能力(例如激活状态、存储容量等)上报至元数据服务器,元数据服务器根据各存储节点上报的能力数据,调度各存储节点间的存储负载均衡。

存储节点负责管理其所属的存储设备,并进行资源的分配以及调度各个资源间的存储负载均衡。其中,若干存储节点的节点编码以CDV1、CDV2、……、CDVn的方式命名。

卡口相机实时采集卡口处的图片,并通过iscsi(Internet Small Computer System Interface,小型计算机系统接口)协议将图片直接写入存储节点(磁盘),并在写入成功后将图片的URL(Uniform Resource Locator,统一资源定位符)发送至卡口管理服务器。

卡口管理服务器则保存各图片的URL至数据库中,以便后续的调用。

图片显示客户端从存储节点中读取图片数据。

以下实施例均以图1所示的图片云存储组网结构为例进行说明。另外,在不冲突的情况下,下述的实施例及实施例中的特征可以相互组合。

图4示出了本申请第一实施例提供的一种图片写入方法,应用于卡口客户端。该图片写入方法可以包括:

步骤S101:发送节点选择请求至元数据服务器。

具体地,卡口相机拍摄到图片后,卡口客户端首先会通过本地配置文件获取到元数据服务器的信息,然后调用云存储接口向云数据服务器发送节点选择请求。

其中,卡口相机拍摄到的图片的参数可根据需要预先设定的,例如,卡口相机拍摄的图片为512KB大小,图片格式为pic.jpg。

步骤S102:接收所述元数据服务器针对所述节点选择请求返回的存储节点的节点编码。

元数据服务器接收到节点选择请求后,根据负载均衡策略选择可用的存储节点,并将该可用的存储节点的节点编码(例如CDV1)返回给卡口客户端。

其中,负载均衡策略可选择各存储节点的能力数据,例如存储容量大小,作为可用存储节点的存储优先级设定因素。

本实施例中,元数据服务器实时获取各存储节点的存储容量大小,按照各存储节点的存储容量从大到小,依次将存储优先级从大到小设定,并发送优先级最高的存储节点的节点编码至卡口客户端。

步骤S103:向所述节点编码所对应的存储节点请求可用的资源。

本实施例的资源为标准的san资源,如图5所示,为标准san资源上的数据存储格式示意图。参见图5,标准的san资源包括索引区和slice数据区。

索引区包括索引描述区、slice位图区和目录索引区。其中,索引描述区用于描述位图区、目录索引区、slice数据区(即一个固定大小的数据片段)的大小以及具体的位置,slice位图区用于标识当前slice数据区中每个slice块(分别称作slice1、slice2、……sliceN)的占用情况,目录索引区用于描述用户目录信息以及当前用户目录占用的slice块集。

slice数据区包括若干slice块,其中,slice块大个数由资源总量决定。本实施例中,slice数据区由若干大小为64M的slice块组成。

卡口客户端在获得节点编码后,则向该节点编码所属的存储节点请求一个可用的标准san资源信息。

其中,所述标准san资源信息包括target和资源ID(identification,身份标识号)等。

步骤S104:通过动态iscsi技术挂载所述资源,并在挂载成功后将图片按预设存储格式写入所述资源。

其中,所述预设存储格式为步骤S103中资源上的数据存储格式。具体地,所述预设存储格式为标准san资源上的数据存储格式。

参见图6,各存储节点上均部署有用于管理存储节点的节点管理模块,该节点管理模块可将其所属存储节点上的存储资源均匀的分成N(N为自然数)个标准san资源,每个资源都有一个设备级的资源ID,例如san资源1、san资源2、……、san资源N,通过该资源ID可查找到对应的target等信息。

每个资源被节点管理模块格式化为索引区和slice数据区,索引区和slice数据区的内部结构请参见图5,不再赘述。

步骤S105:记录所述图片存储所在的节点编码、资源ID、slice数据块ID、偏移量和图片大小。

卡口客户端与存储节点进行iscsi挂载及写入图片过程中,会获得节点编码、资源ID、slice数据块ID、偏移量和图片大小等信息并保存。

步骤S106:根据所述图片存储所在的节点编码、资源ID、slice数据块ID、偏移量和图片大小生成该图片的URL(Uniform Resource Locator,统一资源定位符)。

通过图片的存储位置信息(节点编码、资源ID、slice数据块ID、偏移量和图片大小等)来构造URL,使得图片与URL一一对应,通过URL即可直接且准确地定位至图片的存储位置,无需通过元数据服务器和文件系统索引确定图片的存储位置,大大缩短了图片访问路径的长度,从而缩短图片的读取时间。

其中,所述URL的字段排列可根据实际需要来设定。

在一具体实施例中,所述节点编码、资源ID、slice数据块ID、偏移量和图片大小依次排列,形成相应图片的URL。本实施例的URL是按照可直接定位至图片存储位置所需的最少存储位置信息所形成,可减少后期读取图片时所需识别的路径,从而能够快速定位至图片存储位置。

在另一具体实施例中,所述URL还包括元数据服务器编码、图片存储的目录路径、图片文件名称等信息,所述URL由所述元数据服务器编码、图片存储的目录路径、图片文件名称等信息、节点编码、资源ID、slice数据块ID、偏移量和图片大小依次排列所形成。

一可行的实现方式中,图片被写入存储节点前,图片信息包括图片存储的目录路径(dir_path)和图片文件名称(file_name),图片被存储前的URL格式为:dir_path/file_name。

图片被写入存储节点后,为更加精确定位图片,除节点编码、资源ID、slice数据块ID、偏移量和图片大小外,所述URL还包括元数据服务器编码、图片存储的目录路径、图片文件名称等信息,所述URL的字段格式为:

cdm_code/dir_path/file_name-cdv_code-res_id-slice_id-seek_pos-file_size,

其中,字符‘-’:各字段的分隔符;

cdm_code:元数据服务器编码;

dir_path:图片存储的目录路径;

file_name:图片文件名称;

cdv_code:该图片文件存储的存储节点编码;

res_id:资源ID,其中该资源ID在同一个存储节点上唯一对应一个标准san资源,通过该ID号可以直接定位到图片文件所在的标准san资源;

slice_id:slice数据块ID,即图片文件的存储起始位置地址;

seek_pos:该字段表示从编号为slice_id起始地址偏移的大小;

file_size:该图片文件的大小,其中本实施例中图片文件大小的单位是字节,以16进制表示。

例如,URL字段格式为:

cdmserver01/ipc01/2016/09/12/11/pic.jpg-CDV1-res2015-slice05-512-80000,

这表示图片存储在元数据服务器编码为cdmserver01下的节点编号为CDV1的存储节点中的res2015资源上,其中,图片从res2015资源上起始存储地址为slice05处,偏移512大小,图片文件的大小为512KB,图片存储的目录路径为ipc01,图片文件名称为2016/09/12/11/pic.jpg。可见,通过URL,可唯一定位至相应的图片文件,从而获取文件。

本实施例中,在卡口客户端接收到该URL后,发送所述URL至卡口管理服务器,再由卡口管理服务器存储至本地数据库中,便于统一管理图片的位置信息。

在本实施例中,通过上述实施方式,可将图片存储在相应存储节点中的具体位置与该图片的URL唯一对应,需要读取图片时,直接从URL中解析出具体存储节点的具体资源上的图片存储具体位置,即可直接读取该图片,无需通过元数据服务器和文件系统索引确定图片的存储位置,大大缩短了图片访问路径的长度,达到直接快速读取图片的目的,提高图片读取性能,进而提高后续智能分析等业务的处理性能。

图7示出本申请第二实施例提供的一种图片读取方法,应用于图片显示客户端,该方法可以包括:

步骤S201:从元数据服务器获取各存储节点的配置信息,所述配置信息包括节点编码、存储节点IP(Internet Protocol,网络之间互连的协议)、存储节点端口号以及该存储节点所管理的资源列表信息,所述资源列表信息包括资源ID。

本实施例中,部署有云存储客户端的图片显示客户端在服务启动时,即向元数据服务器获取该元数据服务器所管理的各存储节点的配置信息。

所述资源列表信息还包括target、lun(logical unit number,即逻辑单元号)等信息。

其中,target对应了iscsi存储设备(即各存储节点)上的一个服务端,initiator(即发起程序)对应了访问iscsi存储设备的客户端(即图片显示客户端)。

一个target下可以管理多个资源,一个lun id对应了一个资源。因此在客户端访问iscsi存储设备中的资源时,target、initiator以及lun id就唯一对应了某台iscsi存储设备上的一个资源。ip地址用来确定iscsi存储设备。

其中,资源为标准的san资源,所述标准san资源的存储格式请参见第一实施例,不再赘述。

步骤S202:从卡口管理服务器获取待读取图片的URL,所述URL至少包括节点编码、资源ID、slice数据块ID、偏移量和图片大小。

其中,所述URL中的节点编码、资源ID、slice数据块ID、偏移量和图片大小依次排列的,所述URL与图片是一一对应的,从而在获得待读取图片的URL后,可快速确定出该待读取图片的存储位置。

本实施例中,URL的设置与第一实施例相同,不再赘述。

步骤S203:根据所述待读取图片所对应的节点编码、资源ID以及所述配置信息,获取相应的存储节点IP和存储节点端口号。

在该步骤中,图片显示客户端获得待读取图片所在的存储节点的节点编码和资源ID后,结合步骤S201中的配置信息,匹配到相应的存储节点的IP,即可直接访问图片所在存储节点,无需通过元数据服务器和文件系统索引区定位图片的存储位置,实现了直接从URL中解析出存储节点的具体资源上的图片开始存储的具体位置,提高图片定位的速度。

步骤S204:根据所述相应的存储节点IP和存储节点端口号,以及所述待读取图片所对应的资源ID、slice数据块ID、偏移量和图片大小,利用iscsi协议读取所述图片。

图片显示客户端根据步骤S203获得的存储节点的IP和端口号,直接定位到相应的存储节点,接着在该相应的存储节点中定位到所述对应资源ID所对应的资源,从所述资源的slice数据块ID地址位置开始,偏移所述偏移量大小后,读取所述图片大小量的数据,即获得待读取的图片。

在本实施例中,通过上述实施方式,将图片存储在相应存储节点中的具体位置与该图片的URL唯一对应,需要读取图片时,直接从URL中解析出具体存储节点的具体资源上的图片存储具体位置,即可直接读取该图片,无需通过元数据服务器和文件系统索引确定图片的存储位置,大大缩短了图片访问路径的长度,达到直接快速读取图片的目的,提高图片读取性能,进而提高后续智能分析等业务的处理性能。

如图8所示,为本申请第三实施例提供的图片写入装置的结构示意图,与上述图片写入方法相对应,可参照上述图片写入方法的实施例来理解或解释该图片写入装置的内容。

参见图8,一种图片写入装置,应用于卡口客户端,包括节点请求发送模块101、信息接收模块102、资源请求模块103、图片写入模块104、写入位置记录模块105和URL生成模块106。

其中,节点请求发送模块101用以发送节点选择请求至元数据服务器。

具体地,卡口相机拍摄到图片后,卡口客户端首先会通过本地配置文件获取到元数据服务器的信息,然后调用云存储接口,由节点请求发送模块101向云数据服务器发送节点选择请求。

信息接收模块102用以接收所述元数据服务器针对所述节点选择请求返回的节点编码。

其中,元数据服务器是根据负载均衡策略(例如,按照各存储节点的存储容量大小设定存储优先级)选择可用的存储节点的,并将该可用的存储节点的节点编码返回给信息接收模块102。

资源请求模块103用以向所述节点编码所对应的存储节点请求可用的资源。

参见图5,所述资源为为标准的san资源,标准的san资源上的数据存储格式包括索引区和slice数据区。所述索引区包括索引描述区、slice位图区和目录索引区,所述slice数据区包括若干slice块。

图片写入模块104通过动态iscsi技术挂载所述资源,并在挂载成功后将预图片按预设存储格式写入所述资源。

其中,所述预设存储格式即为标准san资源上的数据存储格式。

写入位置记录模块105用以记录所述图片存储所在的节点编码、资源ID、slice数据块ID、偏移量和图片大小。

URL生成模块106用以根据所述图片存储所在的节点编码、资源ID、slice数据块ID、偏移量和图片大小生成该图片的URL。

所述信息接收模块102接收所述存储节点根据其获取的节点编码、资源ID、slice数据块ID、偏移量和图片大小所生成的该图片的URL。

其中,所述节点编码、资源ID、slice数据块ID、偏移量和图片大小依次排列,形成相应图片的URL,即图片与URL是一一对应的,从而更好地对图片位置进行标识。

为便于统一管理图片的位置信息,该图片写入装置还包括:

图片信息发送模块,发送所述URL至卡口管理服务器。

如图9所示,为本申请第四实施例提供的图片读取装置的结构示意图,与上述图片读取方法相对应,可参照上述图片读取方法的实施例来理解或解释该图片读取装置的内容。

参见图9,一种图片读取装置,应用于图片显示客户端,包括节点信息获取模块201、URL读取模块202、IP获取模块203和图片文件读取模块204。

其中,节点信息获取模块201用以从元数据服务器获取各存储节点的配置信息,所述配置信息包括节点编码、存储节点IP、存储节点端口号以及该存储节点所管理的资源列表信息,所述资源列表信息包括资源ID。

所述资源列表信息还包括target、lun等信息。

其中,资源为标准的san资源,所述标准san资源的存储格式请参见第一实施例,不再赘述。

URL读取模块202用以从卡口管理服务器获取待读取图片的URL,所述URL至少包括节点编码、资源ID、slice数据块ID、偏移量和图片大小。

其中,所述URL中的节点编码、资源ID、slice数据块ID、偏移量和图片大小依次排列的,所述URL与图片是一一对应的,从而在获得待读取图片的URL后,可快速确定出该待读取图片的存储位置。

IP获取模块203用以根据所述待读取图片所对应的节点编码、资源ID以及配置信息,获取相应的存储节点IP和存储节点端口号。

图片文件读取模块204用以根据所述相应的存储节点IP和存储节点端口号,以及所述待读取图片所对应的资源ID、slice数据块ID、偏移量和图片大小,利用iscsi协议读取图片。

综上所述,本申请通过图片存储在相应存储节点中的具体位置与该图片的URL唯一对应,需要读取图片时,直接从URL中解析出具体存储节点的具体资源上的图片存储具体位置,即可直接读取该图片,无需通过元数据服务器和文件系统索引确定图片的存储位置,大大缩短了图片访问路径的长度,达到直接快速读取图片的目的,提高图片读取性能,进而提高后续智能分析等业务的处理性能。

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

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