存储服务器及其实现方法

文档序号:9691363阅读:610来源:国知局
存储服务器及其实现方法
【技术领域】
[0001 ]本申请涉及服务器存储领域,尤其是一种存储服务器及其实现方法。
【背景技术】
[0002]对于大路数的安防监控系统的存储服务器,性能一般受以下因素影响:在安全范围内线程栈越小越好、在存储同样路数情况下线程数量越少越好、缓存空间越大越好。现有的存储服务器架构设计过于繁杂,与媒体服务器混合一起,导致在一条进程内要实现过多功能,与存储不相关的线程过多而占用不必要的内存空间;视频码流从前端收集后不是直接进入缓存区,而是经过内部网络文件描述符传输转发导致存储性能下降。

【发明内容】

[0003]本申请提供一种改进的存储服务器及其实现方法。
[0004]根据本申请的第一方面,本申请提供一种存储服务器实现方法,其包括如下步骤:
[0005]Sl、Web服务器与存储服务器建立通讯;
[0006]S2、Web服务器向存储服务器发送开始存储命令;
[0007]S3、存储服务器接收到开始存储命令后,创建与DVR设备的数据通道一一对应的接收通道;
[0008]S4、每个接收通道向对应的DVR设备的对应通道进行视频码流请求,视频码流数据通过对应的接收通道写入外部磁盘设备;
[0009]S5、Web服务器向存储服务器发送停止存储命令;
[0010]S6、存储服务器接收到停止存储命令后,每个接收通道向对应的DVR设备的对应通道停止进行视频码流请求;
[0011]S7、存储服务器销毁与DVR设备的数据通道一一对应的接收通道。
[0012]根据本申请的第二方面,本申请提供一种存储服务器,其包括设置在所述存储服务器外部的Web服务器、DVR设备和磁盘设备,以及设置在所述存储服务器内部的监听控制模块、接收模块、设备缓存模块和写入模块;
[0013]所述Web服务器与所述监听控制模块网络连接,以向所述监听控制模块转发存储命令;
[0014]所述监听控制模块分别与所述接收模块和写入模块通信连接,以同时向接收模块和写入模块转发存储命令;
[0015]所述接收模块包括动态创建的接收结构体和通道结构体,所述写入模块包括动态创建的写入结构体和写入线程;
[0016]所述接收模块与所述DVR设备通信连接,以对所述DVR设备进行视频码流请求;
[0017]所述设备缓存模块包括静态分配的设备结构体和缓存区,所述设备结构体分别与所述通道结构体和所述写入结构体相连接,所述写入结构体还和所述缓存区相连,并通过所述写入线程将视频数据写入磁盘设备。
[0018]本申请的有益效果是:该存储服务器内可创建300至400条数据通道,且不同数据通道的视频数据流不会产生互相干扰。使得本发明的存储服务器能同时对300至400路视频码流进行存储,从而提高了存储服务器的存储性能。
【附图说明】
[0019]图1为本发明的一实施例中的存储服务器的结构示意图;
[0020]图2为本发明的一实施例中的接收结构体的结构示意图;
[0021]图3为本发明的一实施例中的设备缓存模块的结构示意图;
[0022]图4为图3中的设备结构体的结构示意图;
[0023]图5为本发明的一实施例中的视频数据块在缓存区的存储方式的示意图;
[0024]图6为本发明的一实施例中的接收模块、设备缓存模块和写入模块之间的关联示意图;
[0025]图7为本发明的一实施例中的模块之间的命令和消息传送机制示意图;
[0026]图8为本发明的一实施例中的存储服务器实现方法的流程图;
[0027]其中,1、Web服务器;2、DVR设备;3、磁盘设备;4、监听控制模块;5、接收模块;51、接收结构体;52、通道结构体;6、设备缓存模块;61、设备表结构体;62、设备结构体;621、缓存结构体;7、写入模块;71、写入结构体;72、写入线程;8、日志模块;9、视频数据块;91、cell头结构体;10、模块主线程;11、线程控制块;12、消息队列头;13、消息队列缓存区。
【具体实施方式】
[0028]下面通过【具体实施方式】结合附图对本申请作进一步详细说明。
[0029]如图1所示,存储服务器的外部设置有Web服务器1、DVR设备2和磁盘设备3。存储服务器的内部设置有监听控制模块4、接收模块5、设备缓存模块6、写入模块7和日志模块8。图1中的虚线边界用于区分该存储服务器的内部和外部。
[0030]本实施例中的存储服务器的工作原理如下:用户通过Web浏览器向Web服务器1发出存储命令,监听控制模块4监听到Web服务器1的网络连接请求后,Web服务器1与监听控制模块4建立网络连接。Web服务器1向监听控制模块4转发存储命令,监听控制模块4接收到该存储命令后,同时向接收模块5和写入模块7转发存储命令。接收模块5接收到命令后会创建相应的接收结构体51和通道结构体52,写入模块7接收到命令后会创建相应的写入结构体71和写入线程72。接收模块5对DVR设备2进行视频码流请求,视频数据由DVR设备2进入接收模块5后,接收模块5会对视频数据块9进行封装,并写入相应的设备缓存模块6的设备结构体62的缓存区。设备结构体62能同时跟接收模块5的通道结构体52和写入模块7的写入结构体71相关联。写入模块7中的写入结构体71对应的写入线程7 2,读取设备缓存模块6的缓存区,解封并提取视频数据后,将视频数据写入磁盘设备3。
[0031]上述监听控制模块4、接收模块5、设备缓存模块6、写入模块7的运作状况均由日志模块8记录,并将日志以文件的形式保存在磁盘设备3中。
[0032]另外,当接收到Web服务器1停止其中一通道的存储命令后,该通道对应的接收模块5的通道结构体52和接收结构体51,该通道对应的写入模块7的写入结构体71和写入线程72先后销毁,尽可能减少线程数量。
[0033]下面具体说明存储服务器内部的监听控制模块4、接收模块5、写入模块7、设备缓存模块6和日志模块8。
[0034]监听控制模块4包括监听部分和控制部分。监听部分主要包括监听线程,该监听线程一直处于对外部的Web服务器1的监听状态。当Web服务器1向存储服务器请求网络连接后,监听线程会创建单独的通讯线程负责与Web服务器1建立通讯。控制部分主要包括通讯线程,该通讯线程可通过专有的模块间命令传输机制向其他模块传送命令。当Web服务器1与存储服务器的网络连接建立后,Web服务器1向监听控制模块4传送存储命令,通讯线程向其他模块转发该存储命令。另外,当Web服务器1与存储服务器的网络连接断开后,通讯线程会销毁,但监听线程会一直保持监听状态。
[0035]接收模块5主要用于对DVR设备2进行视频码流请求,当接收模块5收到监听控制模块4的存储命令后,会创建一个与DVR设备2对应的接收结构体51。接收结构体51可分别接收DVR设备2的各个通道的视频数据。接收结构体51的结构参阅图2。接收结构体51内包括一个通道结构体52队列,队列中的每一个通道结构体52与DVR设备2的一个通道对应。且通道结构体52是动态创建的。例如接收模块5接收到监听控制模块4要对DVR设备2的1、2、3通道进行视频存储时,接收结构体51会创建对应的1、2、3通道结构体52。且每一个通道结构体52将会向对应的DVR设备2的对应通道进行视频码流请求。
[0036]写入模块7主要用于将视频数据写入磁盘设备3,当写入模块7收到监听控制模块4的存储命令后,写入模块7会创建写入结构体71,以及与写入结构体71—一对应的写入线程72。写入模块7的每一个写入结构体71与DVR设备2的一个通道对应。且写入结构体71是动态创建的。例如写入模块7接收到监听控制模块4要对DVR设备2的1、2、3通道进行视频存储时,写入模块7会创建对应的1、2、3写入结构体71。
[0037]设备缓存模块6主要用于分配空闲的设备结构体62,并创建缓存区。参阅图3,设备缓存模块6包括一设备表结构体61,设备表结构体61包括一组列设备结构体62。单个设备结构体62与DVR设备2的一个通道对应,设备表结构体61和一组列设备结构体62为静态分配。再参阅图4,设备结构体62还包括一个缓存结构体621,缓存头结构体记录缓存的大小、缓存在内存的地址位置、读写指针等,缓存头结构体并不包括真正的缓存区。缓存结构体621有一指针指向真正的缓存区位置。
[0038]当存储服务器接收到存储命令,且接收模块5的接收结构体51的通道结构体52和写入模块7的写入结构体71已进行动态创建后,设备缓存模块6中的设备表结构体61会从已静态分配的一组列设备结构体62中选择一个空闲的设备结构体62,将该空闲的设备结构体62分配给对应的接收模块5接收结构体51的通道结构体52和写入模块7的写入结构体7
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1