发明内容
本发明提供一种监控系统中告警信息的传输方法和设备,以节省VM的CPU资源。
为了达到上述目的,本发明提供一种监控系统中告警信息的传输方法,应用于包括编码器EC、视频管理服务器VM和多个视频客户端VC的监控系统中,所述VM设置有客户端列表,且客户端列表中有多个VC,该方法包括以下步骤:
步骤a、所述VM接收到来自所述EC的告警信息后,从所述客户端列表中选择一个VC作为当前代理VC,并向所述当前代理VC发送携带所述告警信息以及所述客户端列表的消息,并记录该告警信息的发送时间;
步骤b、所述当前代理VC接收到所述消息后,判断所述客户端列表中是否还有未收到所述告警信息的VC,如果是,执行步骤c,否则,执行步骤d;
步骤c、所述当前代理VC从所述客户端列表中选择一个未收到所述告警信息的VC作为下一个当前代理VC,并向所述下一个当前代理VC发送携带所述告警信息以及所述客户端列表的消息,转到步骤b;
步骤d、所述当前代理VC向所述VM发送用于表示所述客户端列表中各VC均接收到所述告警信息的确认消息;
步骤e、所述VM根据所述发送时间和接收所述确认消息的接收时间,判断是否调整该客户端列表中记录的VC。
所述客户端列表中的多个VC以链表方式记录,在选择一个未收到所述告警信息的VC作为当前代理VC时,选择链表的首个VC作为当前代理VC,并将链表的首个VC从客户端列表删除。
步骤e具体包括:若连续N次所述发送时间和接收时间的间隔大于第一阈值时,则所述VM将所述客户端列表中的VC拆分到至少两个客户端列表中,N为预设的数值。
当所述VM设置有多个客户端列表时,步骤e具体包括:若连续M次有至少两个客户端列表对应的发送时间和接收时间的间隔小于第二阈值时,则所述VM将所述至少两个客户端列表中的一个客户端列表中的VC合并到另一个客户端列表中,M为预设的数值。
所述VM将所述至少两个客户端列表中的一个客户端列表中的VC合并到另一个客户端列表中,具体包括:所述VM获得所述至少两个客户端列表中VC数量最少的第一客户端列表,并获得发送时间和接收时间的间隔最小的第二客户端列表;如果第一客户端列表和第二客户端列表不同,则所述VM将第一客户端列表中的VC合并到第二客户端列表中。
所述方法还包括:如果客户端列表中有VC发生故障或者关闭,所述VM从所述客户端列表中删除所述VC的信息。
一种视频管理服务器VM,应用于包括编码器EC、所述VM和多个视频客户端VC的监控系统中,所述VM设置有客户端列表,且客户端列表中有多个VC,该VM包括:
选择模块,用于在接收到来自所述EC的告警信息后,从所述客户端列表中选择一个VC作为当前代理VC;
发送模块,用于向所述当前代理VC发送携带所述告警信息以及所述客户端列表的消息,并记录该告警信息的发送时间;由所述当前代理VC向未收到所述告警信息的VC继续发送携带所述告警信息以及所述客户端列表的消息;
接收模块,用于接收来自当前代理VC的用于表示所述客户端列表中各VC均接收到所述业务告警信息的确认消息;
维护模块,用于根据接所述发送时间和接收所述确认消息的接收时间,判断是否调整该客户端列表中记录的VC。
所述维护模块,具体用于若连续N次所述发送时间和接收时间的间隔大于第一阈值时,则将所述客户端列表中的VC拆分到至少两个客户端列表中,N为预设的数值。
当所述VM设置有多个客户端列表时,所述维护模块,具体用于若连续M次有至少两个客户端列表对应的发送时间和接收时间的间隔小于第二阈值时,则所述至少两个客户端列表中的一个客户端列表中的VC合并到另一个客户端列表中,M为预设的数值。
所述维护模块,进一步用于获得所述至少两个客户端列表中VC数量最少的第一客户端列表,并获得发送时间和接收时间的间隔最小的第二客户端列表;如果第一客户端列表和第二客户端列表不同,则将第一客户端列表中的VC合并到第二客户端列表中。
所述维护模块,还用于如果客户端列表中有VC发生故障或者关闭,从所述客户端列表中删除所述VC的信息。
与现有技术相比,本发明至少具有以下优点:
通过将各个VC作为发送告警信息的代理VC,可以降低VM的资源消耗,提高VM的性能。
具体实施方式
本发明提出一种监控系统中告警信息的传输方法,该方法应用于包括EC、VM和多个VC的监控系统中,VM可设置一个或多个客户端列表,每个客户端列表中对应有多个VC(各VC可以通过地址信息的方式记录),以监控系统中有VC1-VC40(为需要获知告警信息的在线VC)为例进行说明,则VM可设置客户端列表1和客户端列表2,客户端列表1中对应VC1-VC20的地址信息,客户端列表2中对应VC21-VC40的地址信息。
如图2所示,该监控系统中告警信息的传输方法包括以下步骤:
步骤201,VM接收来自EC的告警信息(如EC1视频丢失)。实际应用中该告警信息还可以为其他的业务信息,本发明中不再赘述。
步骤202,VM从客户端列表中选择一个VC作为当前代理VC,并向当前代理VC发送携带告警信息以及客户端列表的消息,该消息的源地址为VM的地址,目的地址为当前代理VC的地址。
步骤203,当前代理VC接收到该消息后可获知告警信息,并判断客户端列表中是否还有未收到告警信息的VC,如果是,执行步骤204,否则,执行步骤205。
步骤204,当前代理VC(如VC_A)从客户端列表中选择一个未收到告警信息的VC(如VC_B)作为下一个当前代理VC,并向下一个当前代理VC发送携带告警信息以及客户端列表的消息,即VC_A将步骤203中收到的消息重新封装,并发送给VC_B,该消息源地址为VC_A的IP,目的地址为VC_B的IP。之后,下一个当前代理VC作为当前代理VC继续执行步骤203。
本发明中,为了将告警信息发送至客户端列表中的各个VC,当前代理VC需要判断是否还有未收到告警信息的VC,如果有,则选择未收到告警信息的VC作为当前代理VC,以继续向该VC发送告警信息,各VC均执行上述处理后,可使得客户端列表中的所有VC均接收到告警信息。
为了实现上述流程,一种实现为:将已经接收到告警信息的VC从客户端列表中删除(可由上一个VC在选择了当前代理VC后删除VC的信息、或者由当前代理VC删除自身的信息),各VC在接收到消息后,直接从客户端列表中任意选择一个VC作为下一个当前代理VC即可。
另一种实现为:将客户端列表中的多个VC以链表方式记录,在选择一个未收到告警信息的VC作为当前代理VC时,只要选择链表的首个VC作为当前代理VC,并将链表的首个VC从客户端列表删除即可。这种实现可基于sip(Session Initiation Protocol,会话初始协议)消息的route(路由)头来实现,即由route头来指定客户端列表中的各个VC的地址,按照各个VC的地址的指定顺序依次发送消息,从而将告警信息发送至每个VC上。
另一种实现为:在客户端列表中为每个VC设置用于表示是否已接收到告警信息的标识(如以0表示未接收到告警信息,1表示接收到告警信息),则各VC在接收到告警信息后,将客户端列表中自身对应的标识修改为1,并从标识为0的VC中选择一个VC作为下一个当前代理VC。
步骤205,当前代理VC向VM发送用于表示客户端列表中各VC均接收到告警信息的确认消息。
步骤206,VM根据自身接收到确认消息的接收时间、以及向当前代理VC发送告警信息的发送时间,确定是否调整客户端列表中记录的VC。
实际应用中,如果客户端列表的数量很少,每个客户端列表中VC的数量较多,会使得发送时间和接收时间之间的间隔较长,从而影响告警信息的实时性。如果客户端列表的数量很多,每个客户端列表中VC的数量较少,会使得发送时间和接收时间之间的间隔较短,且仍需要VM发送较多的告警信息,从而影响VM的性能。
针对上述问题,本发明中,需动态调整VM上设置的客户端列表的数量以及客户端列表中VC的数量。为了实现该功能,可执行以下操作:
(1)在设置客户端列表时,除了VC的地址信息,还可以记录标记信息,以标记信息为第一标识(如0)来表示需拆分客户端列表,以标记信息为第二标识(如1)来表示需合并客户端列表。进一步的,为了防止反复的拆分或合并客户端列表,还可记录次数信息,相应情况可如表1所示。
表1
序号 |
VC的地址信息 |
标记 |
次数 |
1 |
V1-V2-V3.....-V20的地址 |
1 |
0 |
2 |
V21-V22-V23.....-V40的地址 |
1 |
0 |
(2)在VM向当前代理VC发送携带告警信息的消息时,VM可在自身上记录发送时间,或者,在该消息中携带发送时间,并最终通过确认消息传回给VM。在消息中携带发送时间时,VM向当前代理VC发送的消息中携带的内容可以如表2所示,当前代理VC向下一个当前代理VC发送的消息中携带的内容可以如表3所示。
表2
表3
基于表1记录的内容、以及发送时间、接收时间,VM可动态调整客户端列表中记录的VC。具体的,在VM计算出发送时间与接收时间之间的间隔后,
(1)若连续N次(可根据实际经验进行选择,如3次)发送时间和接收时间的间隔大于第一阈值(可根据实际经验进行选择,如10s)时,则VM将客户端列表中的VC拆分到至少两个客户端列表中,N为预设的数值。
本发明中,在每次时间间隔大于预设第一阈值时,VM将客户端列表对应的拆分次数加预设第一数值(如加1),之后,如果拆分次数达到N次,则将客户端列表中的VC拆分到至少两个客户端列表中。
例如,VM向客户端列表1中的各VC发送告警信息时,在首次时间间隔大于10s时,将表1中客户端列表1对应的标记设置为0,将次数加1,此时次数为1;在第二次时间间隔大于10s时,将次数加1,此时次数为2;以此类推,一直到连续3次时间间隔大于10s时,将客户端列表1中的VC拆分到至少两个客户端列表中(如采用二分法将客户端列表1分为两个客户端列表)。
(2)当VM设置有多个客户端列表时,若连续M次(可根据实际经验进行选择,如3次)有至少两个客户端列表对应的发送时间和接收时间的间隔小于第二阈值(可根据实际经验进行选择,但不大于第一阈值,如5s)时,则VM将至少两个客户端列表中的一个客户端列表中的VC合并到另一个客户端列表中,M为预设的数值。
本发明中,在每次时间间隔小于预设第二阈值时,VM将客户端列表对应的合并次数加预设第二数值(如加1),之后,如果合并次数达到M次,且有其他客户端列表对应的合并次数达到M次时,VM将合并次数达到M次的一个客户端列表中的VC合并到另一个客户端列表中。在合并过程中,VM将第一客户端列表中的VC(1个或多个)合并到第二客户端列表中。
第一客户端列表为VC数量最少的客户端列表;如果时间间隔最小的客户端列表不是第一客户端列表,则第二客户端列表为时间间隔最小的客户端列表,否则,第二客户端列表为时间间隔次小的客户端列表。
如果有多个VC数量最少的客户端列表,则将连续3次的接收时间与发送时间的差进行求和,求和结果较大的客户端列表为第一客户端列表,求和结果较小的客户端列表为第二客户端列。
例如,VM向客户端列表1中的各VC发送告警信息时,在首次时间间隔小于5s时,将表1中客户端列表1对应的标记设置为1,将次数加1,此时次数为1;以此类推,一直到连续3次时间间隔小于5s时,如果客户端列表2也对应有连续3次时间间隔小于5s,则需要进行VC的合并。假设客户端列表1上连续3次时间间隔的和,小于客户端列表2上连续3次时间间隔的和,则将客户端列表2中的VC(1个或多个)合并到客户端列表1中。
为了更加清楚的阐述上述拆分和合并过程,以图3所示的状态变迁示意图进一步的说明。
当(标记,次数)为(1,0)或(0,0)时,如果时间间隔大于第一阈值(用F1事件表示),迁移到(0,X)状态;在(0,X)状态发生F1事件时,则继续保持在(0,X)状态,F1事件发生N次后进行拆分操作。
当(标记,次数)为(1,0)或(0,0)时,如果时间间隔小于第二阈值(用F2事件表示),迁移到(1,X)状态,在(1,X)状态发生F2事件时,则继续保持在(1,X)状态,F2事件发生M次后进行合并操作。
在(1,X)状态发生F1事件时,迁移到(0,X)状态;在(0,X)状态发生F2事件时,迁移到(1,X)状态。
需要说明的是,本发明中,如果客户端列表中有VC发生故障(即长时间没有向VM发送保活报文)或者关闭(即VC向VM发送退出请求消息),则VM从客户端列表中删除该VC的信息。
基于与上述方法同样的发明构思,本发明还提出了一种视频管理服务器VM,应用于包括编码器EC、所述VM和多个视频客户端VC的监控系统中,所述VM设置有客户端列表,且客户端列表中有多个VC,如图4所示,该VM包括:
选择模块11,用于在接收到来自所述EC的告警信息后,从所述客户端列表中选择一个VC作为当前代理VC;
发送模块12,用于向所述当前代理VC发送携带所述告警信息以及所述客户端列表的消息,并记录该告警信息的发送时间;由所述当前代理VC向未收到所述告警信息的VC继续发送携带所述告警信息以及所述客户端列表的消息;
接收模块13,用于接收来自当前代理VC的用于表示所述客户端列表中各VC均接收到所述告警信息的确认消息;
维护模块14,用于根据所述发送时间和接收所述确认消息的接收时间,判断是否调整该客户端列表中记录的VC。
所述维护模块14,具体用于若连续N次所述发送时间和接收时间的间隔大于第一阈值时,则将所述客户端列表中的VC拆分到至少两个客户端列表中,N为预设的数值。
当所述VM设置有多个客户端列表时,所述维护模块14,具体用于若连续M次有至少两个客户端列表对应的发送时间和接收时间的间隔小于第二阈值时,则所述至少两个客户端列表中的一个客户端列表中的VC合并到另一个客户端列表中,M为预设的数值。
所述维护模块14,进一步用于获得所述至少两个客户端列表中VC数量最少的第一客户端列表,并获得发送时间和接收时间的间隔最小的第二客户端列表;如果第一客户端列表和第二客户端列表不同,则将第一客户端列表中的VC合并到第二客户端列表中。
所述维护模块14,还用于如果客户端列表中有VC发生故障或者关闭,从所述客户端列表中删除所述VC的信息。
其中,本发明装置的各个模块可以集成于一体,也可以分离部署。上述模块可以合并为一个模块,也可以进一步拆分成多个子模块。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可以通过硬件实现,也可以借助软件加必要的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
本领域技术人员可以理解附图只是一个优选实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的。
本领域技术人员可以理解实施例中的装置中的模块可以按照实施例描述进行分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
上述本发明序号仅仅为了描述,不代表实施例的优劣。
以上公开的仅为本发明的几个具体实施例,但是,本发明并非局限于此,任何本领域的技术人员能思之的变化都应落入本发明的保护范围。