一种基于记录仪平台的图片存储方法与流程

文档序号:11589903阅读:335来源:国知局

本发明涉及一种图片存储方法。



背景技术:

随着科技的发展,网络存储和云存储已经取得了快速发展,在存储技术中占有较重要的地位。由于其不需要随身携带硬盘、u盘等存储工具,具有极大的方便性,同时还有防丢失的功能,所以成为很多用户的首选。但是其自身也存在这一定的弊端,比如,当多个用户在客户端同时发出上传照片请求时,如果将照片直接向数据库中存储,由于web系统对于数据库的访问请求过于频繁,会导致数据库性能低下,降低系统整体性能;而且实时并发量大,服务器响应速度慢,用户在客户端就会出现长时间等待的现象。



技术实现要素:

本发明为了解决目前的网络存储方法中用户在客户端存在长时间等待的问题。

一种基于记录仪平台的图片存储方法,包括:

步骤1、首先接收从客户端上传的图片文件,并将图片打包成流形式的消息包,将新的消息包推送至图片缓存通道,使用系统自带的内存机制,缓存图片消息;

步骤2、通过springintegration配置文件的filesender将流文件转换成消息的形式,并放入到消息通道中,所述的消息通道为springintegration内部提供的栈;将流文件转换成消息的形式放入到消息通道的过程中的数据是在缓存中进行的;

步骤3、利用多线程并发操作从消息通道中读取数据,并上传保存到mongo数据库的体系结构中。

优选地,步骤3中从消息通道中读取数据之前,首先创建n个线程,能够存放m个消息,然后利用多线程并发操作从消息通道中读取数据,并上传保存到mongo数据库的体系结构中。

优选地,线程数目n=1000,存放消息的数量为m=80000个。

优选地,步骤3中从消息通道中读取数据是通过基于n个线程通过filesaver算法以并发操作从消息通道中读取数据。

优选地,步骤3中基于n个线程通过filesaver算法以并发操作从消息通道中读取数据的过程中,随着时间的推移,待处理的数据量增加时,通过修改配置文件的线程数n以及可存放的消息总数,增加无法及时处理数据部分的数量。

本发明具有以下有益效果:

本发明首先通过算法将上传的图片转换成字节流形式保存到由springintegration框架(一种轻量级企业级集成框架)内部提供的栈中(即消息通道),该操作的时间非常短,避免了用户在客户端上传照片数量过多时出现等待的现象,能够实现异步处理,然后通过springintegration框架中多线程并发操作堆栈数据,将照片依次从栈中取出,存入到mongo数据库中。相比现有的直接向数据库中存储的方式,本发明能够将客户端的等待时间减少40%以上,而且数据总量越大,效果越明显,极大地提高了用户体验。同时由于本发明针对多线程、缓存队列等易出错误部分,使用springintegration框架内固有的成熟稳定模块,保证了程序的稳定性。通过xml配置文件进行调用,可以方便的维护后期由于待处理消息数量过多而导致的等待时间长、易出错等问题。

附图说明

图1为本发明的流程图。

具体实施方式

具体实施方式一:结合图1说明本实施方式,

一种基于记录仪平台的图片存储方法,包括:

步骤1、首先接收从客户端上传的图片文件,并将图片打包成流形式的消息包,将新的消息包推送至图片缓存通道,使用系统自带的内存机制,缓存图片消息;

体系结构如下:

步骤2、通过springintegration配置文件的filesender将流文件转换成消息的形式,并放入到消息通道中,所述的消息通道为springintegration内部提供的栈;将流文件转换成消息的形式放入到消息通道的过程中的数据是在缓存中进行的;

配置文件如下:

步骤3、利用多线程并发操作从消息通道中读取数据,并上传保存到mongo数据库的体系结构中。

从消息通道中读取数据并保存到mongo数据库的体系结构如下:

具体实施方式二:

本实施方式所述步骤3中从消息通道中读取数据之前,首先创建n个线程,能够存放m个消息,然后利用多线程并发操作从消息通道中读取数据,并上传保存到mongo数据库的体系结构中。

例如,程序启动时,根据需要,创建1000个线程与存放80000个消息,就是创建了1000个线程,来处理80000个消息,有可能是1000个线程只处理几十个、几百个消息,这样速度就会很快,假如同一时间在客户端发出的请求过多,那么就可以修改配置文件将80000调整为更多,同时增加线程总数,这样在客户端无论有多少用户发出请求,在前端都不会出现等待的现象。

其他步骤和参数与具体实施方式一相同。

具体实施方式三:

本实施方式所述线程数目n=1000,存放消息的数量为m=80000个。

其他步骤和参数与具体实施方式二相同。

具体实施方式四:

本实施方式所述步骤3中从消息通道中读取数据是通过基于n个线程通过filesaver算法以并发操作从消息通道中读取数据。

filesaver类里面应用的是mongo数据库里面的一套文件上传模版,通过配置文件配置一下,再将gridfstemplate注入到filesaver类中,就可以在程序里面进行调用这套模版里面的方法。配置文件是这样的:

<beanid="gridfstemplate"class="org.springframework.data.mongodb.gridfs.gridfstemplate">

<constructor-argref="mongodbfactory"/>

<constructor-argref="converter"/>

</bean>

其他步骤和参数与具体实施方式一至三之一相同。

具体实施方式五:

本实施方式所述步骤3中基于n个线程通过filesaver算法以并发操作从消息通道中读取数据的过程中,随着时间的推移,待处理的数据量增加时,可通过修改配置文件的线程数n以及可存放的消息总数,适当增加无法及时处理数据部分的数量。

其他步骤和参数与具体实施方式一至四之一相同。

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