视频监控***中的数据存储方法及设备
技术领域
本发明涉及通信领域,尤其涉及一种视频监控***中的数据存储方法及设备。
背景技术
视频监控***的监控数据到达存储设备的过程包括:视频信息经摄像头采集后进入EC(Encoder,编码器);EC通过编码模块将数据编译成指定码率大小的I帧组,放入缓存区;EC发包模块每次从缓存区中取出一个I帧组,分成固定大小的数据包(例如64KB),通过TCP协议向存储设备发送报文;存储设备将接收到的数据包写入缓存后向EC回应信息通知EC继续发送数据包,EC发包模块将这个I帧组中的下一个数据包继续向存储设备发送。
如果存储设备向EC回应信息的速度降低,EC降低向存储设备发送数据报文的速率,EC缓存内的数据报文越来越多,当超过EC缓存区大小时,后来的数据报文将覆盖之前的数据报文,导致EC缓存内数据的丢失。
如图1所示场景,EC1、EC2和EC3共同向存储设备发送数据包。当存储设备的缓存已满后,存储设备将数据刷入磁盘的性能降低,向EC回应信息的速度降低,将导致EC缓存内数据的丢失。特别的,如果EC3的缓存区内存储的I帧组已经将要到达最大值,而存储设备首先将EC1和EC2发送的数据包下刷,则存储设备向EC3回应信息的速度降低,加剧EC3的缓存区内I帧组的增多,导致EC3的丢包。
发明内容
本发明实施例提供了一种视频监控***中的数据存储方法及设备,有效避免EC缓存内数据的丢失。
本发明实施例提供了一种视频监控***中的数据存储方法,该视频监控***中包括存储设备和多个视频编码器,所述存储设备接收多个视频编码器发送的数据报文,该方法还包括:
所述存储设备获取数据报文中携带的状态标识,检测是否存储有发送所述数据报文的视频编码器与所述状态标识的对应关系;所述状态标识用于指示视频编码器的缓存水位的高低;
如果检测结果为否,所述存储设备存储所述对应关系,并在所述状态标识为报警标识时,根据存储的状态标识与视频编码器的对应关系,选择缓存水位低的视频编码器,延迟向所述缓存水位低的视频编码器回复信息,所述报警标识用于指示缓存水位达到报警条件。
延迟向所述缓存水位低的视频编码器回复信息的时间为:预先设置的与所述缓存水位低的视频编码器的状态标识相对应的时间,或者所述缓存水位低的视频编码器由当前缓存水位到达报警水位所需要的时间。
还包括:所述存储设备检测报警标识与视频编码器的对应关系的持续时间是否达到最大值,如果达到则执行选择视频编码器的步骤。
所述持续时间的最大值与回复信息延迟的时间相等。
当视频编码器初始与所述存储设备建立连接时,如果视频编码器的缓存水位达到报警条件,该视频编码器不发送报警标识,如果预设时间后该视频编码器的缓存水位依然达到报警条件,该视频编码器向所述存储设备发送报警标识。
所述状态标识为报警标识、正常标识或者富余标识;
所述选择缓存水位低的视频编码器包括:
所述存储设备优先选择富余标识对应的视频编码器;
如果当前没有富余标识,所述存储设备根据预设策略选择正常标识对应的视频编码器。
一种存储设备,应用于包括所述存储设备和多个视频编码器的视频监控***中,该存储设备包括:
接收单元,用于接收多个视频编码器发送的数据报文,该数据报文中携带用于指示视频编码器缓存水位高低的状态标识;
发送单元,用于在所述接收单元接收到数据报文后,向视频编码器回复信息;
检测单元,用于获取数据报文中携带的状态标识,检测是否存储有发送所述数据报文的视频编码器与所述状态标识的对应关系;
存储单元,用于当所述检测单元的检测结果为否时,存储发送所述数据报文的视频编码器与所述状态标识的对应关系;
选择单元,用于当所述检测单元的检测结果为否、且所述状态标识为报警标识时,根据存储的状态标识与视频编码器的对应关系,选择缓存水位低的视频编码器,通知所述发送单元延迟向所述缓存水位低的视频编码器回复信息,所述报警标识用于指示缓存水位达到报警条件。
所述发送单元延迟向所述缓存水位低的视频编码器回复信息的时间为:预先设置的与所述缓存水位低的视频编码器的状态标识相对应的时间,或者所述缓存水位低的视频编码器由当前缓存水位到达报警水位所需要的时间。
还包括:
时间检测单元,用于检测报警标识与视频编码器的对应关系的持续时间是否达到最大值;
所述选择单元还用于:当所述时间检测单元的检测结果为是时,根据存储的状态标识与视频编码器的对应关系,选择缓存水位低的视频编码器,延迟向所述缓存水位低的视频编码器回复信息。
所述持续时间的最大值与回复信息延迟的时间相等。
所述状态标识为报警标识、正常标识或者富余标识;
所述选择单元还用于:优先选择富余标识对应的视频编码器;如果当前没有富余标识,根据预设策略选择正常标识对应的视频编码器。
与现有技术相比,本发明实施例至少具有以下优点:
本发明实施例中,存储设备根据数据报文内的状态标识获知视频编码器的缓存状态,有状态标识为报警标识时,存储设备选择缓存水位低的视频编码器,并延迟向选择的视频编码器回复信息,从而能够使得其他视频编码器及时得到回复信息,降低其他视频编码器缓存区的数据,有效避免了视频编码器的丢包。
附图说明
图1是现有技术中视频监控***中的数据存储网络示意图;
图2是本发明实施例一提供的视频监控***中的数据存储方法的流程示意图;
图3是本发明实施例一提供的数据报文的报文结构示意图;
图4是本发明实施例一提供的视频监控***中的数据存储示意图;
图5~图7是本发明实施例一提供的存储设备在延迟阶段接收并下刷数据的过程示意图;
图8和图9是本发明实施例二提供的存储设备的结构示意图。
具体实施方式
实施例一
本发明实施例一提供一种视频监控***中的数据存储方法,该视频监控***中的视频编码器在向存储设备发送数据报文时,在数据报文中携带状态标识,该状态标识用于指示视频编码器的缓存水位的高低。
例如,视频编码器发送iSCSI(Internet Small Computer System Interface,因特网小型计算机***接口)协议的data out(数据写)报文。本发明实施例中,对data out报文的保留字段进行设计,如图3所示,在iSCSI保留字段中增加两位的ca(cache alert,缓存报警)字段,用来标识当前EC的缓存区数据存储状态,即缓存水位。ca字段取值所指示的意义如下:
11:报警标识,指示缓存水位达到报警条件,存储设备的并发性能不足以满足该EC;
01:正常标识,指示缓存水位正常,存储设备的并发性能正常满足该EC;
00:富余标识,指示缓存水位较低,存储设备可优先使用此类EC进行分批存储;
10:保留值。
当然也可以只设计两种缓存的状态标识,正常和报警。这样只需一位字段来表示缓存的状态,比如1为报警,即缓存快满了,存储设备的并发性能不足,0为正常。
假定该方法应用的视频监控***中初始包括EC1、EC2及存储设备,存储设备的并发性能能够满足EC1、EC2同时写入数据,则如图2所示,本发明实施例一提供的视频监控***中的数据存储方法包括以下步骤:
步骤201,EC1和EC2向存储设备发送数据报文,在数据报文中分别携带状态标识00和01。
当存储设备的并发性能够满足接入的EC1和EC2时,存储设备能够及时处理EC1和EC2的数据报文,以条带方式将数据从缓存下刷至磁盘,该过程参考图4所示,EC1和EC2的数据可以写入3个缓存块,存储设备以条带方式将缓存块内的数据下刷至磁盘(RAID5阵列)。存储设备快速回复EC1和EC2,EC1和EC2从而能够及时发送各自缓存中的数据,使EC1和EC2的缓存水位正常甚至较低。以EC1的缓存水位较低、EC2的缓存水位正常为例,EC1和EC2根据自身缓存水位在发送的数据报文内分别携带状态标识00和01。
步骤202,存储设备接收EC1和EC2发送的数据报文,存储EC1和EC2与状态标识的对应关系。
具体的,存储设备内可以配置EC状态表,使用该EC状态表存储状态标识与EC1和EC2的对应关系。EC状态表的形式如表1所示。
表1
|
状态标识 |
延迟回复时间 |
EC1 |
00 |
0 |
EC2 |
01 |
0 |
其中,存储设备可以仅存储状态标识与EC1和EC2的对应关系,也可以进一步存储状态标识与延迟回复时间的对应关系。当只有EC1和EC2向存储设备写入数据时,存储设备正常处理每个报文,EC1和EC2发送的报文内分别携带状态标识00和01,不需要延迟回复,表1内EC1和EC2的延迟回复时间为0。
步骤203,当新接入EC3向存储设备写入数据时,存储设备并发处理能力达到上限,存储设备无法及时处理EC3的数据,导致EC3缓存水位达到报警水平,EC3发送的数据报文内携带状态标识11。
具体的,当EC3接入存储设备后,存储设备的并发处理能力达到上限,存储设备缓存中的数据成不了条带,无法以条带形式将缓存中的数据下刷至磁盘,存储设备无法及时回复EC3。EC3在与存储设备建立iSCSI连接过程中产生的数据无法及时向存储设备发送,导致EC3缓存水位无法下降至正常水位,EC3的缓存水位一直处于报警水平。
可选的,EC3与存储设备建立连接后,第一秒(不限于一秒)内EC3所发送的data out报文的ca字段设置01,虽然EC3此时的缓存可能已经超过了报警水位,因为数据发送一秒后,如果存储设备性能正常,则EC3的缓存水位就会下降。待建立连接一秒钟后,EC3按照真实的缓存状态填充data out数据报文的ca字段。如果此时EC3缓存仍然处于报警水平,EC3将data out报文内的ca字段的值设置为11。
步骤204,存储设备收到EC3发送的携带状态标识11的数据报文,查找EC状态表内是否有EC3与状态标识11的对应关系,如果是,则执行步骤205;否则,执行步骤206。
步骤205,存储设备缓存EC3发送的数据报文。
步骤206,存储设备在EC状态表中记录EC3的状态标识为11,查询EC1和EC2的状态标识,选择对EC1的数据报文延迟3秒回复。
具体的,存储设备查询EC1和EC2的状态标识,查询到EC1和EC2的状态标识分别为00和01,存储设备优先选择EC1延迟回复。此时,存储设备的EC状态表如表2所示。
表2
EC1 |
00 |
3 |
EC2 |
01 |
0 |
EC3 |
11 |
0 |
其中,3秒的延迟时间仅是一例子,其值可以根据实际需要灵活调整。由于EC1在3秒内无法接收到回复,因此在这3秒内EC1不会向存储设备发送报文。
通常,延迟时间为预先设置的固定值,其大小与选择的EC的状态标识对应,假定EC的状态标识为00时延迟时间为3s,EC的状态标识为01时延迟时间为1.5s,那么此时EC1的状态标识为00,因此设定延迟时间为3s。
延迟时间还可以为被选择的EC由当前缓存水位到达报警水位所需要的时间,以EC1为例,EC1可以根据到达报警水位的剩余缓存空间、和报文的存储速率进行计算得到延迟时间。存储设备获取该延迟时间的方式包括但不限于:在选择EC1后,向EC1发送通知报文,通知EC1被选中延迟,该通知报文的保留字段内可以设置通知标识,EC1根据该通知标识获知自身是否被选中,如果自身被选中,EC1计算从当前水位到达报警水位所需要的时间,将该时间通过报文的保留字段发送至存储设备。或者,EC向存储设备周期发送自身到达报警水位所需要的时间,该时间值被携带在数据报文的保留字段内。
步骤207,存储设备在延迟回复期间接收EC2和EC3发送的报文,将EC2和EC3的数据迅速下刷至磁盘。
存储设备在延迟第1s接收并下刷数据的过程可以参考图5所示,EC3的数据可以以条带方式下刷,存储设备迅速向EC3回复信息,使得EC3迅速将其缓存内的数据向存储设备发送,降低EC3的缓存水位。该过程后存储设备内的EC状态表如表3所示,EC3的状态标识由11更新为01。
表3
存储设备在延迟第2s接收并下刷数据的过程可以参考图6所示,EC3的数据依然可以以条带方式下刷,EC3迅速将其缓存内的数据向存储设备发送,降低EC3的缓存水位。该过程后存储设备内的EC状态表如表4所示,EC3的状态标识为01。
表4
|
状态标识 |
延迟回复时间 |
EC1 |
00 |
1 |
EC2 |
01 |
0 |
EC3 |
01 |
0 |
存储设备在延迟第3s接收并下刷数据的过程可以参考图7所示,EC3的数据依然可以以条带方式下刷,EC3迅速将其缓存内的数据向存储设备发送,降低EC3的缓存水位。该过程后存储设备内的EC状态表如表5所示,EC3的状态标识为01。
表5
|
状态标识 |
延迟回复时间 |
EC1 |
00 |
0 |
EC2 |
01 |
0 |
EC3 |
01 |
0 |
步骤208,对EC1的延迟回复结束后,EC1接收到存储设备的回复信息,发现自身缓存水位达到报警状态,向存储设备发送的数据报文内携带状态标识11。
当然,也有可能对EC1的延迟回复结束后,EC1的缓存水位依然正常,步骤208仅是以EC1的缓存水位达到报警状态举例说明。
步骤209,存储设备根据EC1发送的数据报文更新EC状态表,此时没有状态标识为00的EC,存储设备选择状态标识01对应的EC2或EC3,延迟向EC2或EC3回复信息。
具体的,存储设备根据预设策略选择EC2或EC3,例如可以随机选择EC2或EC3,或者按照列表顺序选择排列在前的EC2,该预设策略并不限于以上两种。优选的,当延迟回复状态标识01对应的EC时,延迟回复时间相应减少,例如设置为1.5s。
需要说明,本发明实施例仅是以3个EC向存储设备发送数据报文为例进行介绍,对于超过3个EC向存储设备发送数据报文的情况与以上介绍类似,存储设备记录各EC与状态标识的对应关系,当有EC的缓存水位报警时,存储设备选择一个或多个缓存水位正常或富余的EC延迟回复,以实现在单位时间内存储设备能够正常处理EC发送的报文。
另外,本发明实施例中,存储设备查询是否已存储EC3与状态标识11的对应关系,在查询结果为没有时存储该对应关系。本领域技术人员应当理解,存储设备对收到的每一数据报文都可以获取状态标识,然后查询是否存储了状态标识与EC的对应关系,并在查询结果为否时存储。
以上实施例中均以状态标识11、01和00为例进行说明,本领域技术人员应当清楚,根据实际需要还可以设置更多状态标识,例如设置状态标识包括11、01、00和10,分别指示EC的缓存水位报警、正常、较低和极低。
以上实施例一的步骤204中,当EC状态表内之前已存储有EC3与状态标识11的对应关系时,执行步骤205,存储设备缓存EC3发送的数据报文,向存储阵列正常写入该数据报文。
为防止EC3的状态标识长期为11而得不到处理,本发明实施例中还可以对实施例一中的步骤205进行改进,改进后的步骤205包括:
存储设备统计EC3的报警持续时间,即EC3的状态标识为11的持续时间。如果该持续时间达到最大值,则执行步骤206,由存储设备查询EC1和EC2的状态标识,选择对EC1的数据报文延迟3秒回复,相应的,存储设备将EC3的报警持续时间清零并重新计时。如果该持续时间没有达到最大值,则缓存EC3发送的数据报文,向存储阵列正常写入该数据报文。
存储设备内可以设置计时器,用于统计任一EC的状态标识为11的持续时间。可选的,当EC3的状态标识修改为11后,表2可以修改为表3的形式,记录EC3的状态标识为11的持续时间。
表6
|
状态标识 |
延迟回复时间/报警持续时间 |
EC1 |
00 |
3 |
EC2 |
01 |
0 |
EC3 |
11 |
3 |
存储设备根据统计的EC3的状态标识为11的持续时间设置表3中EC3的报警持续时间,假定初始值为0,则当EC3的状态标识11持续3(s)时,将表3中的报警持续时间更新为3。当然,也可以设定初始值为3,当EC3的状态标识11持续3(s)时,将表3中的报警持续时间更新为0。此处仅是举例说明报警持续时间的设置,并不限定具体设置方式。
通过采用本发明实施例提供的方法,存储设备根据数据报文内的状态标识获知视频编码器的缓存状态,有状态标识为报警标识时,存储设备选择缓存水位在阈值以下的视频编码器,并延迟向选择的视频编码器回复信息,从而能够使得其他视频编码器及时得到回复信息,降低其他视频编码器缓存区的数据,有效避免了视频编码器的丢包。
实施例二
基于与上述方法实施例相同的技术构思,本发明实施例二提供一种存储设备,应用于包括所述存储设备和多个视频编码器的视频监控***中,如图8所示,该存储设备包括:
接收单元11,用于接收多个视频编码器发送的数据报文,该数据报文中携带用于指示视频编码器缓存水位高低的状态标识;
发送单元12,用于在所述接收单元11接收到数据报文后,向视频编码器回复信息;
检测单元13,用于获取数据报文中携带的状态标识,检测是否存储有发送所述数据报文的视频编码器与所述状态标识的对应关系;
存储单元14,用于当所述检测单元13的检测结果为否时,存储发送所述数据报文的视频编码器与所述状态标识的对应关系;
选择单元15,用于当所述检测单元13的检测结果为否、且所述状态标识为报警标识时,根据存储的状态标识与视频编码器的对应关系,选择缓存水位低的视频编码器,通知所述发送单元12延迟向所述缓存水位低的视频编码器回复信息,所述报警标识用于指示缓存水位达到报警条件。
所述发送单元12延迟向所述缓存水位低的视频编码器回复信息的时间为:预先设置的与所述缓存水位低的视频编码器的状态标识相对应的时间,或者所述缓存水位低的视频编码器由当前缓存水位到达报警水位所需要的时间。
如图9所示,该存储设备还包括:
时间检测单元16,用于检测报警标识与视频编码器的对应关系的持续时间是否达到最大值;
所述选择单元15还用于:当所述时间检测单元16的检测结果为是时,根据存储的状态标识与视频编码器的对应关系,选择缓存水位低的视频编码器,延迟向所述缓存水位低的视频编码器回复信息。
优选的,所述持续时间的最大值与回复信息延迟的时间相等。
所述状态标识为报警标识、正常标识或者富余标识;所述选择单元15还用于:优先选择富余标识对应的视频编码器;如果当前没有富余标识,根据预设策略选择正常标识对应的视频编码器。
本发明实施例提供的存储设备,根据数据报文内的状态标识获知视频编码器的缓存状态,有状态标识为报警标识时,存储设备选择缓存水位低的视频编码器,并延迟向选择的视频编码器回复信息,从而能够使得其他视频编码器及时得到回复信息,降低其他视频编码器缓存区的数据,有效避免了视频编码器的丢包。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
本领域技术人员可以理解附图只是一个优选实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的。
本领域技术人员可以理解实施例中的装置中的模块可以按照实施例描述进行分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
以上公开的仅为本发明的几个具体实施例,但是,本发明并非局限于此,任何本领域的技术人员能思之的变化都应落入本发明的保护范围。