数据路由方法、装置、设备及计算机可读存储介质
技术领域
本申请涉及监控
技术领域
,尤其涉及一种数据路由方法、装置、设备及计算机可读存储介质。背景技术
随着AI(Artificial Intelligence,人工智能)的高速发展,安防监控行业在经历了从模拟到数字、从数字到高清的发展变革之后,也实现了人工智能与安防监控行业的融合。人工智能在智慧商业、智能安防的落地都依赖于智能IPC(Internet Protocol Camera,网络摄像机)的发展,智能IPC的核心为图像识别技术。通过各类视频智能分析技术,解决传统视频分析必须依赖人工查看视频的问题。实现有效信息的结构化数据提取,让视频分析的使用者真正告别人工安防、人工零售,走进智能安防、智慧零售的新时代。
相关技术中,针对智能IPC的应用场景如智慧零售、智能安防,都是针对每个单一化的场景实现一套数据传输系统。数据传输系统涉及到的上下游环节较多,如智能IPC的数据上传,中转服务转发到下游的各个智能服务都是基于每个场景定制化的。可以看出,相关技术中的数据传输系统无法实现不同场景下数据的传输,对于每一个场景下的数据传输系统,均需要进行定制化开发,开发成本和维护成本较高。
发明内容
本申请实施例提供一种数据路由方法、装置、设备及计算机可读存储介质,能够降低数据传输系统的开发成本和维护成本。
本申请实施例的技术方案是这样实现的:
本申请实施例提供一种数据路由方法,包括:接收转发层发送的结构化数据;转发层用于接收至少一个网络摄像机发送的结构化数据;结构化数据包括发送结构化数据的网络摄像机的设备标识;根据设备标识获取结构化数据对应的至少一个目标服务的注册信息;根据每一目标服务的注册信息,将结构化数据分别推送至每一目标服务。
在本申请的一些实施例中,所述根据设备标识获取结构化数据对应的至少一个目标服务的注册信息,包括:根据设备标识在任务数据库中确定至少一个任务类型;根据预设的任务类型与服务类型的映射关系,确定至少一个任务类型对应的至少一个目标服务;每一任务类型对应至少一个服务类型的目标服务;在任务数据库中查询每一目标服务的注册信息。
在本申请的一些实施例中,所述根据每一目标服务的注册信息,将结构化数据分别推送至每一目标服务,包括:在目标服务的服务类型为事件推送类型的情况下,基于目标服务的注册信息,获取目标服务对应的订阅主题;根据订阅主题和结构化数据生成推送事件;将推送事件持久化到消息队列中,通过消息队列将推送事件推送至订阅主题对应的订阅服务。
在本申请的一些实施例中,所述根据每一目标服务的注册信息,将结构化数据分别推送至每一目标服务,包括:在目标服务的服务类型为任务推送类型的情况下,基于目标服务的注册信息,获取目标服务的地址信息;地址信息包括目标服务的网络地址和端口信息;基于目标服务的网络地址和端口信息,将结构化数据推送至目标服务。
在本申请的一些实施例中,所述方法还包括:基于目标服务的注册信息,获取目标服务的参数信息;参数信息包括服务参数和数据格式;所述基于目标服务的网络地址和端口信息,将结构化数据推送至目标服务,包括:在结构化数据中提取服务参数;根据数据格式对服务参数进行封装,得到封装数据;基于目标服务的网络地址和端口信息,将封装数据推送至目标服务。
在本申请的一些实施例中,所述方法还包括:接收待注册服务对应的注册请求;存储注册请求中携带的待注册服务的任务类型和注册信息,以将待注册服务确定为已注册服务。
在本申请的一些实施例中,所述存储注册请求中携带的待注册服务的任务类型和注册信息,以将待注册服务确定为已注册服务,包括:在待注册服务的服务类型为任务推送类型的情况下,获取注册请求中携带的待注册服务的任务类型和注册信息;注册信息包括地址信息和参数信息;将待注册服务的任务类型、地址信息和参数信息存储至任务数据库,以将待注册服务确定为已注册服务。
在本申请的一些实施例中,所述存储注册请求中携带的待注册服务的任务类型和注册信息,以将待注册服务确定为已注册服务,包括:在待注册服务的服务类型为事件推送类型的情况下,获取注册请求中携带的待注册服务的任务类型和事件主题;根据预设的任务类型与服务类型的映射关系,判断注册请求是否有效;在注册请求有效的情况下,存储待注册服务的任务类型和事件主题,以将待注册服务确定为已注册服务。
在本申请的一些实施例中,所述方法还包括:监控已注册服务的注册信息变化事件;响应于注册信息变化事件,提取注册信息变化事件中已注册服务的新注册信息;存储新注册信息,以完成已注册服务的更新。
本申请实施例提供一种数据路由装置,所述装置包括:
服务路由模块,用于接收转发层发送的结构化数据;所述转发层用于接收至少一个网络摄像机发送的所述结构化数据;所述结构化数据包括发送所述结构化数据的网络摄像机的设备标识;
任务管理模块,用于根据所述设备标识获取所述结构化数据对应的至少一个目标服务的注册信息;
服务路由模块,还用于根据每一所述目标服务的注册信息,将所述结构化数据分别推送至服务层中的每一所述目标服务。
本申请实施例提供一种数据路由设备,包括:
存储器,用于存储可执行指令;
处理器,用于执行所述存储器中存储的可执行指令时,实现本申请实施例提供的数据路由方法。
本申请实施例提供一种计算机可读存储介质,存储有可执行指令,用于引起处理器执行时,实现本申请实施例提供的数据路由方法。
本申请实施例具有以下有益效果:
本申请实施例通过转发层接收所有网络摄像机发送的结构化数据,使得不同场景对应的目标服务可以共用该转发层实现结构化数据的获取,降低了系统的开发成本和维护成本;同时,由于获取每一结构化数据对应的设备标识,可以根据该设备标识确定每一结构化数据对应的至少一个目标服务的注册信息,以完成每一结构化数据的正确路由,实现了所有网络摄像机共用同一转发层和服务路由模块时结构化数据的正确传输,不仅可以减少开发成本和维护成本,还可以支持不同的业务场景,扩大了本申请数据路由方法的应用范围。
附图说明
图1是本申请实施例提供的数据路由系统的一个可选的架构示意图;
图2是本申请实施例提供的数据路由设备的结构示意图;
图3是本申请实施例提供的数据路由方法的一个可选的流程示意图;
图4是本申请实施例提供的数据路由方法的一个可选的流程示意图;
图5是本申请实施例提供的数据路由方法的一个可选的流程示意图;
图6是本申请实施例提供的数据路由方法的一个可选的流程示意图;
图7是本申请实施例提供的数据路由方法的一个可选的流程示意图;
图8是本申请实施例提供的数据路由方法的一个可选的流程示意图;
图9是本申请实施例提供的数据路由方法的一个可选的流程示意图;
图10是本申请实施例提供的一个可选的数据路由系统的架构示意图;
图11是本申请实施例提供的智能服务注册器的原理示意图。
具体实施方式
为了使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请作进一步地详细描述,所描述的实施例不应视为对本申请的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。
在以下的描述中,所涉及的术语“第一\第二\第三”仅仅是是区别类似的对象,不代表针对对象的特定排序,可以理解地,“第一\第二\第三”在允许的情况下可以互换特定的顺序或先后次序,以使在本实施例中描述的本申请实施例能够以除了在在本实施例中图示或描述的以外的顺序实施。
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本申请实施例的目的,不是旨在限制本申请。
参见图1,图1是本申请实施例提供的数据路由系统100的一个可选的架构示意图,为实现支撑一个数据路由应用,数据接收端(示例性示出了接收端400-1和接收端400-2)通过网络300连接服务器200,网络300可以是广域网或者局域网,又或者是二者的组合。图1还示出了服务器200可以为服务器集群,该服务器集群包括服务器200-1至200-3,同样地,服务器200-1至200-3可以是实体机器,也可以是利用虚拟化技术(如容器技术及虚拟机技术等)构建的虚拟机器,本申请实施例对此不做限定,当然,在本实施例中也可使用单个服务器来进行服务的提供。服务器200可以接收数据发送端600发送的结构化数据,并将该结构化数据路由至对应的数据接收端。
本申请实施例可以借助于云技术(Cloud Technology)实现,云技术是指在广域网或局域网内将硬件、软件、网络等系列资源统一起来,实现数据的计算、储存、处理和共享的一种托管技术。
云技术基于云计算商业模式应用的网络技术、信息技术、整合技术、管理平台技术、以及应用技术等的总称,可以组成资源池,按需所用,灵活便利。云计算技术将变成重要支撑。技术网络系统的后台服务需要大量的计算、存储资源,例如,教育系统的门户网站。
作为示例,服务器200可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器。终端可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、以及智能手表等,但并不局限于此。终端以及服务器200可以通过有线或无线通信方式进行直接或间接地连接,本申请实施例中不做限制。
参见图2,图2是本申请实施例提供的数据路由设备500的结构示意图,图2所示的数据路由设备500包括:至少一个处理器510、存储器550、至少一个网络接口520和用户接口530。数据路由设备500中的各个组件通过总线系统540耦合在一起。可理解,总线系统540用于实现这些组件之间的连接通信。总线系统540除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图2中将各种总线都标为总线系统540。
处理器510可以是一种集成电路芯片,具有信号的处理能力,例如通用处理器、数字信号处理器(DSP,Digital Signal Processor),或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,其中,通用处理器可以是微处理器或者任何常规的处理器等。
用户接口530包括使得能够呈现媒体内容的一个或多个输出装置531,包括一个或多个扬声器和/或一个或多个视觉显示屏。用户接口530还包括一个或多个输入装置532,包括有助于用户输入的用户接口部件,比如键盘、鼠标、麦克风、触屏显示屏、摄像头、其他输入按钮和控件。
存储器550包括易失性存储器或非易失性存储器,也可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(ROM,Read Only Memory),易失性存储器可以是随机存取存储器(RAM,Random Access Memory)。本申请实施例描述的存储器550旨在包括任意适合类型的存储器。存储器550可选地包括在物理位置上远离处理器510的一个或多个存储设备。
在本申请的一些实施例中,存储器550能够存储数据以支持各种操作,这些数据的示例包括程序、模块和数据结构或者其子集或超集,下面示例性说明。
操作系统551,包括用于处理各种基本系统服务和执行硬件相关任务的系统程序,例如框架层、核心库层、驱动层等,用于实现各种基础业务以及处理基于硬件的任务;
网络通信模块552,用于经由一个或多个(有线或无线)网络接口520到达其他计算设备,示例性的网络接口520包括:蓝牙、无线相容性认证(WiFi)、和通用串行总线(USB,Universal Serial Bus)等;
显示模块553,用于经由一个或多个与用户接口530相关联的输出装置531(例如,显示屏、扬声器等)使得能够呈现信息(例如,用于操作外围设备和显示内容和信息的用户接口);
输入处理模块554,用于对一个或多个来自一个或多个输入装置532之一的一个或多个用户输入或互动进行检测以及翻译所检测的输入或互动。
在本申请的一些实施例中,本申请实施例提供的数据路由装置可以采用软硬件结合的方式实现,作为示例,本申请实施例提供的数据路由装置可以是采用硬件译码处理器形式的处理器,其被编程以执行本申请实施例提供的数据路由方法。
在本申请的一些实施例中,本申请实施例提供的数据路由装置可以采用软件方式实现,图2示出了存储在存储器550中的数据路由装置555,其可以是程序和插件等形式的软件,包括以下软件模块:服务路由模块5551、任务管理模块5552和注册模块5553,这些模块是逻辑上的,因此根据所实现的功能可以进行任意的组合或进一步拆分。
将在下文中说明各个模块的功能。
在另一些实施例中,本申请实施例提供的装置可以采用硬件方式实现,作为示例,本申请实施例提供的装置可以是采用硬件译码处理器形式的处理器,其被编程以执行本申请实施例提供的数据路由方法,例如,硬件译码处理器形式的处理器可以采用一个或多个应用专用集成电路(ASIC,Application Specific Integrated Circuit)、DSP、可编程逻辑器件(PLD,Programmable Logic Device)、复杂可编程逻辑器件(CPLD,ComplexProgrammable Logic Device)、现场可编程门阵列(FPGA,Field-Programmable GateArray)或其他电子元件。
将结合本申请实施例提供的服务器的示例性应用和实施,在本申请实施例中,将以服务器为执行主体说明本申请实施例提供的数据路由方法。
参见图3,图3是本申请实施例提供的数据路由方法的一个可选的流程示意图,将结合图3示出的步骤进行说明。
在步骤301中,接收转发层发送的结构化数据;转发层用于接收至少一个网络摄像机发送的结构化数据;结构化数据包括发送结构化数据的网络摄像机的设备标识。
在本申请的一些实施例中,转发层与至少一个网络摄像机相连。其中,每一个网络摄像机采集实时数据后,会根据自身的设备标识和实时数据生成该网络摄像机对应的结构化数据,并将生成的结构化数据发送至该转发层。转发层接收到至少一个网络摄像机发送的结构化数据后,会提取每一结构化数据中携带的设备标识,以确定每一结构化数据对应的设备标识。
需要说明的是,由于通过设备标识可以确定对应的网络摄像机,每一网络摄像机的摄像机信息也是确定的,摄像机信息可以包括摄像机类型,摄像机所述位置,摄像机的功能等。因此,在获取到该设备标识之后,可以知道对应的结构化数据的具体用途。
在本申请的一些实施例中,该网络摄像机为智能摄像机,通过该智能摄像机,可以在采集原始视频的基础上,对该原始视频进行初步的智能识别。其中,原始视频为非结构化的数据,原始视频中的目标对象只能通过人工观看识别,不能直接的被电子设备读取和识别。因此,智能摄像机通过分析原始视频以完成该结构化数据的提取。其中,可以采用采用目标检测、特征提取、对象识别、深度学习等分析手段提取原始视频的结构化数据,该结构化数据可以包括目标对象的标记信息、目标对象的轨迹信息等。
在步骤302中,根据设备标识获取结构化数据对应的至少一个目标服务的注册信息。
在本申请的一些实施中,服务器可以根据该设备标识可以确定需要使用该结构化数据的至少一个目标服务。可以通过以下方式实现至少一个目标服务的注册信息的获取步骤,发送查询请求至存储层,以使所述存储层根据该查询请求中携带的设备标识和存储的匹配关系,确定该设备标识对应的至少一个目标服务的服务标识,并根据至少一个服务标识获取对应的至少一个目标服务的注册信息。其中,存储层可以设置在该服务器中,可以设置与其他用于存储数据的服务中,该存储层可以通过Redis数据库实现上述匹配关系的存储,该匹配关系包括多个设备标识中每一设备标识与至少一个目标服务之间的匹配关系。
在本申请的一些实施例中,该注册信息用于确定该目标服务接收结构化数据的接口地址。目标服务可以通过该接口地址接收该结构化数据,每一目标服务的接口地址是唯一的。
在本申请的一些实施例中,该目标服务可以是事件推送类型的服务,也可以是任务推送类型的服务。
其中,在该目标服务是任务推送类型的服务的情况下,任务推送类型的服务会根据接收到的结构化数据生成分析任务,该分析任务用于进一步对该结构化数据进行分析,以生成该目标服务对应场景下的分析结果。该分析任务往往需要该目标服务对应场景下的分析服务器完成,因此,该注册信息可以包括该目标服务对应的网络地址和端口信息,也就是分析服务器对应的网络地址和端口信息。该任务推送类型的服务包括但不限于是以下至少之一:安防布控,安防建档,安防路人库,商业客流分析,安防抓拍图推送,商业预览图推送和商业自注册。
在该目标服务是事件推送类型的服务的情况下,事件推送类型的服务会直接根据接收到的结构化数据生成事件任务,并将事件任务保存至消息队列中,通过该消息队列将该事件任务推送至订阅该事件任务的至少一个订阅者。因此,该注册信息可以为该目标服务对应的订阅主题。该事件推送类型的服务包括但不限于是以下至少之一:安防抓拍图推送和商业预览图推送。
在本申请的一些实施例中,设备标识与目标服务之间的对应关系可以是一个设备标识对应至少一个目标服务,也可以是多个设备标识对应一个目标服务。
在步骤303中,根据每一目标服务的注册信息将结构化数据分别推送至每一目标服务。
在本申请的一些实施例中,根据该设备标识对应的每一目标服务的注册信息,由于该注册信息用于确定目标服务接收该结构化数据的接口地址,因此可以通过每一注册信息可以将该结构化数据分别推送至每一目标服务。
通过本申请实施例对于图3的上述示例性实施可知,本申请实施例通过转发层接收所有网络摄像机发送的结构化数据,使得不同场景对应的目标服务可以共用该转发层实现结构化数据的获取,降低了系统的开发成本和维护成本;同时,由于获取每一结构化数据对应的设备标识,可以根据该设备标识确定每一结构化数据对应的至少一个目标服务的注册信息,以完成每一结构化数据的正确路由,实现了所有网络摄像机共用同一转发层和服务路由模块时结构化数据的正确传输,不仅可以减少开发成本和维护成本,还可以支持不同的业务场景,扩大了本申请数据路由方法的应用范围。
在本申请的一些实施例中,参见图4,图4是本申请实施例提供的数据路由方法的一个可选的流程示意图,基于图3,图3示出的步骤302可更新为步骤401至步骤403,将结合图4示出的步骤进行说明。
在步骤401中,根据设备标识在任务数据库中确定至少一个任务类型。
在本申请的一些实施例中,该任务数据库可以设置在该服务器中;该任务数据库还可以设置才用于存储数据的存储层中,该存储层可以通过至少一个存储数据库实现。
在本申请的一些实施例中,对于与转发层连接的所有网络摄像机,该任务数据库中设置每一网络摄像机的设备标识对应的任务类型。其中,一个网络摄像机的设备标识可以对应至少一个任务类型。
例如,该任务类型可以包括安防布控,安防建档,安防路人库,商业客流分析,安防抓拍图推送,商业预览图推送和商业自注册共7种任务类型,对于一个网络摄像机的设备标识X1,该设备标识X1可以对应唯一一个任务类型,也可以对应两个或两个以上的任务类型。例如,该设备标识X1可以对应安防布控;该设备标识X1还可以同时对应商业预览图推送和商业自注册。
在步骤402中,根据预设的任务类型与服务类型的映射关系,确定至少一个任务类型对应的至少一个目标服务;每一任务类型对应至少一个服务类型的目标服务。
在本申请的一些实施例中,对于任务数据库中的每一任务类型,每一任务类型可以对应至少一个服务类型。也就是说,在服务类型包括事件推送类型和任务推送类型两种服务类型的情况下,一个任务类型可以只对应事件推送类型,也可以只对应任务推送类型,还可以同时对应事件推送类型和任务推送类型。相应地,该至少一个目标服务可以包括每一任务类型对应的目标服务。
例如,基于上述举例,在任务类型可以包括安防布控,安防建档,安防路人库,商业客流分析,安防抓拍图推送,商业预览图推送和商业自注册的情况下,其中,安防布控,安防建档,安防路人库,商业客流分析和商业自注册可以仅仅对应一种服务类型(任务推送类型),安防抓拍图推送和商业预览图推送可以同时对应两种服务类型。在该设备标识X1还可以同时对应商业预览图推送和商业自注册的情况下,该设备标识X1对应的目标服务可以包括任务类型为商业预览图推送且服务类型为事件推送类型的目标服务、任务类型为商业预览图推送且服务类型为任务推送类型的目标服务和任务类型为商业自注册推送且服务类型为任务推送类型的目标服务。
在步骤403中,在任务数据库中查询每一目标服务的注册信息。
在本申请的一些实施例中,在确定该设备标识对应的至少一个目标服务后,可以根据每一目标服务对应的服务标识,在该任务数据库中获取该服务标识对应的注册信息,以确定每一目标服务的注册信息。
通过本申请实施例对于图4的上述示例性实施可知,本申请实施例通过在任务数据库中设置任务类型与服务类型的映射关系,在获取到该设备标识对应的至少一个任务类型后,可以进一步确定该设备标识对应的至少一个目标服务,实现了不同服务类型。不同任务类型的目标服务对一个网络摄像机发送的结构化数据的共用,提升了对于复杂应用场景的适应性;并且,根据通过该任务数据库保存每一目标服务的注册信息,可以为后续结构化数据的正确路由提供数据基础。
在本申请的一些实施例中,参见图5,图5是本申请实施例提供的数据路由方法的一个可选的流程示意图,基于图4,图4示出的步骤303可更新为步骤501至步骤503,将结合图5示出的步骤进行说明。
在步骤501中,在目标服务的服务类型为事件推送类型的情况下,基于目标服务的注册信息,获取目标服务对应的订阅主题。
在本申请的一些实施例中,在该目标服务的服务类型为事件推送类型的情况下,该目标服务对应的注册信息为该目标服务对应的订阅主题(topic)。每一目标服务对应的订阅主题是管理员预先设置的。
在步骤502中,根据订阅主题和结构化数据生成推送事件。
在本申请的一些实施例中,对于该事件推送类型的目标服务,该目标服务只是将原始的结构化数据作为事件消息推送至订阅该目标服务的订阅者,因此,服务器无需对该结构化数据进行进一步处理,只需将该目标服务对应的订阅主题和该结构数据生成推送事件。
在步骤503中,将推送事件持久化到消息队列中,通过消息队列将推送事件推送至订阅主题对应的订阅服务。
在本申请的一些实施例中,该消息队列用于将队列中的事件推送至该事件携带订阅主题对应的订阅服务中。其中,该订阅主题对应的订阅服务为将事件推送至订阅该订阅主题的至少一个订阅者。该消息队列可以通过kafka集群实现。
例如,若该目标服务对应的订阅主题为topicA,服务器根据该topicA和该结构化数据生成对应的推送事件,并将该推送事件保存至kafka集群中的消息队列中,该消息队列在推送该推送事件的过程中,可以按照预设的推送规则确定订阅该topicA的至少一个订阅者,并将该推送事件推送至该至少一个订阅者。
通过本申请实施例对于图5的上述示例性实施可知,本申请实施例通过获取事件推送类型的目标服务的订阅主题,并基于该订阅主题和结构化数据生成推送事件,通过预设的消息队列将该推送事件推送至订阅该订阅主题的至少一个订阅者,增加了本申请数据路由方法的数据推送形式,由于采用事件推送的方法,可以提升结构化数据的推送效率。
在本申请的一些实施例中,参见图6,图6是本申请实施例提供的数据路由方法的一个可选的流程示意图,基于图4,图4示出的步骤303可更新为步骤601至步骤603,将结合图6示出的步骤进行说明。
在步骤601中,在目标服务的服务类型为任务推送类型的情况下,基于目标服务的注册信息,获取目标服务的地址信息;地址信息包括目标服务的网络地址和端口信息。
在本申请的一些实施例中,在目标服务的服务类型为任务推送类型的情况下,该注册信息包括该目标服务对应的网络地址和端口信息。其中,该注册信息可以为该目标服务在向服务器注册的过程中,该服务器通过目标服务发送的服务注册请求获取该注册信息。
在步骤602中,基于目标服务的网络地址和端口信息,将结构化数据推送至目标服务。
在本申请的一些实施例中,每一目标服务的均对应为一个网络地址和端口信息,目标服务可以通过该网络地址和端口信息接收该目标服务对应的结构化数据,并对该结构化数据进行进一步分析处理,得到分析结果。
通过本申请实施例对于图6的上述示例性实施可知,本申请实施例通过获取任务推送类型的目标服务的网络地址和端口信息,并基于该目标服务的网络地址和端口信息将该结构化数据推送至目标服务,增加了本申请数据路由方法的数据推送形式,由于采用任务推送的方法,可以便于任务推送类型的目标服务获取准确的结构化数据,并生成对应的智能分析结果,提升结构化数据的推送效率。
在本申请的一些实施例中,参见图7,图7是本申请实施例提供的数据路由方法的一个可选的流程示意图,基于图4,图4示出的步骤303可更新为步骤701至步骤703,将结合图7示出的步骤进行说明。
在步骤701中,在目标服务的服务类型为任务推送类型的情况下,基于目标服务的注册信息,获取目标服务的地址信息和参数信息;参数信息包括服务参数和数据格式;地址信息包括目标服务的网络地址和端口信息。
在本申请的一些实施例中,该注册信息可以为该目标服务在向服务器注册的过程中,该服务器通过目标服务发送的服务注册请求获取该注册信息和参数信息。其中,该注册信息用于确定该结构化数据的传输路径,该参数信息用于确定该结构化数据的处理方法。
需要说明的是,对于原始的结构化数据,可能包括原始摄像机数据对应的所有分析数据,但是,对于具体场景下的目标服务,无需全部的分析数据,及不需要原始的结构化数据,因此,在传输该结构化数据至目标服务之前,可以根据该参数信息对原始的结构化数据进行筛选、重组和封装等处理。
在步骤702中,在结构化数据中提取服务参数;根据数据格式对服务参数进行封装,得到封装数据;基于目标服务的网络地址和端口信息,将封装数据推送至目标服务。
在本申请的一些实施例中,基于该服务参数,确定该目标服务需要的参数,在该结构化数据中去除该服务参数之外的其他参数,仅仅保留该服务参数,以完成该服务参数的提取。
在本申请的一些实施例中,按照该数据格式对提取的服务参数进行封装,得到对应的封装数据。通过目标服务的网络地址和端口信息,将封装数据推送至目标服务。其中,该数据格式可以是数据的封装方法,加密方法等。通过该数据格式可以对服务参数进行进一步封装,生成只有目标服务可以识别的封装数据,以提升服务参数传输的安全性。
例如,若存在原始的结构化数据包括行人分析数据,道路分析数据和车辆分析数据,在目标服务为安防路人库类型的情况下,该目标服务对应的服务参数为行人分析数据,因此,基于该服务参数,可以对该原始结构化数据进行处理,去取不需要的道路分析数据和车辆分析数据,并按照该目标服务对应的数据格式对行人分析数据进行封装,得到仅包括行人分析数据的封装数据。
通过本申请实施例对于图7的上述示例性实施可知,本申请实施例通过获取每一任务推送类型的目标服务的服务参数,可以对原始的结构化数据进行处理,去除目标服务不需要的无效数据,只传输目标服务需要的服务参数,可以节省网络传输的数据量,节省带宽的同时还可以提升路由效率;同时,本申请实施例通过获取每一任务推送类型的目标服务的数据格式,根据该数据格式对每一目标服务的服务参数进行进一步的封装,不仅可以满足目标服务的数据格式要求,该可以提升数据传输的安全性。
在本申请的一些实施例中,参见图8,图8是本申请实施例提供的数据路由方法的一个可选的流程示意图,基于图3和上述实施例,在任意步骤之间还可以包括步骤801和步骤802,以在图3中的步骤303之后为例,将结合图8示出的步骤进行说明。
在步骤801中,接收待注册服务对应的注册请求。
在本申请的一些实施例中,该服务器还可以包括一个服务注册器,该服务注册器为服务器中的可扩展的注册器插件,在该服务器中安装该注册器插件的情况下,可以支持待注册服务的注册功能。
在步骤802中,存储注册请求中携带的待注册服务的任务类型和注册信息,以将待注册服务确定为已注册服务。
在本申请的一些实施例中,可以通过以下方式实现上述步骤802:在步骤8021中,在待注册服务的服务类型为任务推送类型的情况下,获取注册请求中携带的待注册服务的任务类型和注册信息;注册信息包括地址信息和参数信息;将待注册服务的任务类型、地址信息和参数信息存储至任务数据库,以将待注册服务确定为已注册服务。
在本申请的一些实施例中,可以通过以下方式实现上述步骤802:在步骤8022中,在待注册服务的服务类型为事件推送类型的情况下,获取注册请求中携带的待注册服务的任务类型和事件主题;根据预设的任务类型与服务类型的映射关系,判断注册请求是否有效;在注册请求有效的情况下,存储待注册服务的任务类型和事件主题,以将待注册服务确定为已注册服务。
通过本申请实施例对于图8的上述示例性实施可知,本申请实施例通过接收待注册服务的注册请求,根据该注册请求中的任务类型和注册信息实现该待注册服务的注册过程,实现了本申请数据路由方法的可扩展性,在需要新增服务的情况下,无需重新为该新增服务进行定制化开发,只需保存注册请求中携带的待注册服务的任务类型和注册信息,即可完成该新增服务的注册过程,降低了注册成本,提升了服务注册效率。
在本申请的一些实施例中,参见图9,图9是本申请实施例提供的数据路由方法的一个可选的流程示意图,基于图3和上述实施例,在任意步骤之间还可以包括步骤901和步骤902,以在图3中的步骤303之后为例,将结合图9示出的步骤进行说明。
在步骤901中,接收待注册服务对应的注册请求。
在步骤902中,存储注册请求中携带的待注册服务的任务类型和注册信息,以将待注册服务确定为已注册服务。
在本申请的一些实施例中,在待注册服务的服务类型为任务推送类型的情况下,获取注册请求中携带的待注册服务的任务类型和注册信息;注册信息包括地址信息和参数信息;将待注册服务的任务类型、地址信息和参数信息存储至任务数据库,以将待注册服务确定为已注册服务。
在本申请的一些实施例中,在待注册服务的服务类型为事件推送类型的情况下,获取注册请求中携带的待注册服务的任务类型和事件主题;根据预设的任务类型与服务类型的映射关系,判断注册请求是否有效;在注册请求有效的情况下,存储待注册服务的任务类型和事件主题,以将待注册服务确定为已注册服务。
在步骤903中,监控已注册服务的注册信息变化事件。
在本申请的一些实施例中,可以通过服务发现机制对该注册信息变化事件进行监控。在该已注册服务注册完成之后,需要定期上报心跳消息至服务器,服务器可以根据该心跳消息确定该已注册服务是否存活。其中,该服务发现机制可以通过zookeeper组件实现。
在步骤904中,响应于注册信息变化事件,提取注册信息变化事件中已注册服务的新注册信息。
在本申请的一些实施例中,服务器可以通过订阅已注册服务的注册信息变化事件以实现对该已注册服务的监控。其中,在已注册服务的注册信息发生变化后,会通过服务发现机制上报携带新注册信息的注册信息变化事件。服务器作为订阅该事件的服务消费者,可以通过该注册信息变化事件得到该新注册信息。相应地,该已注册服务为服务提供者。
在步骤905中,存储新注册信息,以完成已注册服务的更新。
在本申请的一些实施例中,在存储新注册信息的同时,会架构该已注册服务之前存储的历史注册信息删除,在后续的路由转发过程中,会按照该新注册信息完成结构化数据的路由。
通过本申请实施例对于图9的上述示例性实施可知,本申请实施例通过监控每一已注册服务的注册信息变化事件,可以在已注册服务发生数据变化、网络地址变化或断开变化的情况下,实时对服务器中该已注册服务进行更新,便于后续结构化数据的正确路由。
下面,将说明本申请实施例在一个实际的应用场景中的示例性应用。
近年来,大数据、云计算、新一代信息技术已成为先进商业企业运营的“标配”。智慧商业成为新的发展趋势,不少商业企业纷纷布局其商业智能版图。当中,人工智能在越来越多的商业领域得到了广泛使用。商业企业使用人工智能强大的数据收集和分析能力,比如可以进行会员自动识别、客流属性统计包括年龄、性别等,客流热力图分析以查看用户在哪个位置逗留时间最长等等,从而进一步为用户进行个性化的推荐,以达到更好的盈利,优化客户体验。
过去的20年高速发展中,安防行业经历了从模拟到数字、从数字到高清的发展变革,2017年迎来了“安防AI元年”。虽然人工智能总体水平仍处于初级阶段,但这并不妨碍人工智能在特定领域(比如安防领域)得到广泛的应用并且取得巨大成功。人工智能在智慧商业、智能安防的落地都依赖于智能IPC的发展,所谓智能IPC就是新一代网络摄像机,智能IPC的核心为图像识别技术。通过各类视频智能分析技术,解决传统视频分析必须依赖人工查看视频的问题,实现有效信息的结构化数据提取,让视频分析的使用者真正告别人工安防、人工零售,走进智能安防、智慧零售的新时代。
目前针对智能IPC的应用场景如智慧零售、智能安防,都是针对每个单一化的场景实现一套系统。该系统涉及到的上下游环节较多,如智能IPC的数据上传,中转服务转发到下游的各个智能服务都是基于每个场景定制化的。但事实上智慧零售和智能安防两个不同的场景只是应用场景的不同,具体来说只是最下游的智能服务(包括安防布控、人脸建档、商业自注册、商业客流统计等)不同,而智能IPC数据上传和中转服务的转发在不同的场景下是一样的。不同场景下上下游服务的无法复用会带来很多额外的开销。
现有的解决方案一般基于一个具体应用场景如智慧商业,定制化的开发从智能IPC的数据上传到中转服务的转发。这种方案会导致有多少个应用场景就会有多少套定制化的开发,大大增加了维护成本和开发成本,同时也增加了智慧商业、智能安防场景的落地成本。
针对上述问题和现有解决方案的缺陷,申请人经过研究后提出了一种数据路由方法及数据路由系统。
请参阅图10示出的一种数据路由系统的架构示意图,其中,该数据路由系统A10包括接入转发层A11、服务路由模块A12、任务管理模块A13、服务层A14。
其中,该服务路由模块A12是一种面向IPC视频流的总线式智能数据路由模块,作为总线式的智能数据路由模块,能够为包括商业、安防两个大的场景下的所有智能服务提供IPC视频流的路由。总线式的智能路由模块包括商业/安防事件(Event)的推送,不同场景(商业、安防)的智能服务的总线式数据路由。在本申请实施例中,该服务路由模块可以支持多种类型任务的数据路由,其中,支持的任务类型可以包括:安防布控,安防建档,安防路人库,商业客流分析,安防抓拍图推送,商业预览图推送,商业自注册。
该服务路由模块A12的上游为接入转发层A11,其中,该接入转发层用于接收至少一个网络摄像机发送的智能摄像机数据,其中,该智能摄像机数据可以为视频流数据,图像数据,文字数据等。
该服务路由模块A12的下游为服务层A14,其中,该服务层A14可以包括任务推送类型的服务和事件推送类型的服务。该任务推送类型的服务为具备AI算法能力的智能服务,如人脸识别,自动建档等等。
该服务路由模块A12还可以和任务管理模块A13连接,其中,该任务管理模块A13用于将任务数据写入存储层A15中,以方便服务路由模块A12在该存储层A15查询实时任务。该任务管理模块A13还用于将实时任务下发至接入转发层A11,以使该接入转发层A11获取该实时任务对应的智能摄像机数据。
其中,图10中的自动服务发现在本实施例中有两个地方会应用到:1)接入转发层能够发现智能服务调度模块,获取智能服务调度模块的ip地址;2)智能服务调度模块和下游的智能服务交互。可以依赖一个zookeeper组件实现。
分布式服务框架借助zookeeper进行基于服务名字的服务的注册和动态发现,zookeeper作为服务注册中心存在。思路如下,服务提供者注册服务到zookeeper,并定期上报心跳信息到服务注册中心,证明自己活着。服务消费者也就是client端在启动时会获取服务的注册信息,并且订阅某个路径下的数据和节点变化,这样一旦服务提供者变更时,zookeeper会告知服务消费者,服务消费者会更新本地缓存的下游服务地址信息。
其中,接入转发层发送数据给智能服务调度模块,也可以理解成智能服务调度模块是服务提供者,上游的接入转发层是服务消费者。智能服务调度模块发送数据给下游智能服务模块,也可以理解成,下游智能服务是服务提供者,上游的智能服务调度模块是服务消费者。
在本申请的一些实施例中,接入转发层A11接收到网络摄像机发送的智能摄像机数据为JSON数据,接入转发层A11的JSON数据为IPC视频流的原始数据。该智能摄像机数据可以包括设备标识数据(“did”字段)和结构化数据(“payload”字段)。其中,“did”字段代表唯一的智能摄像机的设备标识(IPC device id),即设备信息;“payload”字段则为智能摄像机数据携带的所有智能数据。
其中,这里的JSON数据只是由接入转发层A11进行了格式处理,包括设备标识数据和结构化数据。每一个JSON数据均对应设备标识数据和结构化数据。其中,结构化数据为该智能摄像机数据中识别出的对象对应的属性数据。例如,若对象是行人,对应的属性数据可以为年龄、性别、身高、衣着等。
在本申请的一些实施例中,服务路由模块A12接收上游接入转发层A11的JSON数据,获取该JSON数据中的“did”信息,根据“did”信息和任务管理模块A13通过存储层A15交互,进行实时任务的查询。存储层A15可以通过Redis数据库实现,在查询数据库的过程中,可以将“did”信息作为匹配条件(key),查询具体的“action”信息。各个“action”代表不同的智能服务,如图中A141,示例性的显示了“建档”、“自注册”和“商业分析”等智能服务。当查询到具体要执行的智能服务任务时,服务路由模块A12对JSON数据中的“payload”信息进行处理,其中,可以根据每个智能服务向智能服务路由模块的注册信息对得到的“payload”信息进行筛选、重组和封装,以按照约定的数据格式路由服务层A14中的智能服务A141。
存储层A15中的数据库中存在至少一个任务,每一个任务包括服务与多个设备之间的对应关系,即每一个任务包括一个服务与多个设备标识之间的对应关系。服务路由模块A12可以根据数据库中的对应关系,将接收到的JSON数据转发至与设备标识对应的目标服务。
在本申请的一些实施例中,除了智能服务A141外,由接收来自接入转发层A11的智能摄像机数据,也可能不经过服务路由模块A12处理,比如商业截图和安防抓拍不经过服务路由模块A12的处理,由服务路由模块A12直接进行事件的推送。其中,可以将事件持久化到kafka集群A142的消息队列中。
通过上述实施例可以看出,服务路由模块A12与“数据总线”的作用相似,为上游的智能摄像头数据和下游的各个类型的智能服务A141或者kafka集群A142中的消息队列提供路由服务。
在本申请的一些实施例中,该数据路由系统A10还可以包括智能服务注册器,该智能服务注册器为该服务路由模块A12中的可扩展的注册器插件,支持其他自定义的路由任务注册,以实现服务路由模块的可扩展能力。智能服务注册器作为一个插件,支持通过修改配置文件完成注册。新的智能服务A141向服务路由模块A12注册时,需要提供该智能服务的路径信息,这样服务路由模块A12能够获取该智能服务的地址信息,其中,该地址信息包括端口和IP地址。
请参阅图11,其示出了该智能服务注册器的原理示意图,其中,该智能服务注册器B11可以接收服务提供者B12的注册请求,在智能服务提供者B12向该智能服务注册器B11注册的过程中,需要发送携带注册信息的注册请求至该智能服务注册器B11。其中,该注册信息包括该服务提供者B12对应的智能服务的服务参数和数据格式。在实际路由过程中,服务消费者B13可以为上述实施例中的服务路由模块,服务消费者B13可以根据该注册信息对得到的智能摄像机数据进行处理,具体的,可以根据该服务参数对该智能摄像机数据进行筛选和重组,并根据该数据格式对筛选和重组后的智能摄像机数据进行封装,最后,将封装后的数据发送至该服务提供者B12。
在本申请的一些实施例中,该服务路由模块A12作为数据传输的枢纽和中心,支撑着整个系统的数据中转。由于对性能的要求会很高,基于此,申请人经过研究后,也做了很多的性能的优化和高可用设计。其中,本申请提供的数据路由系统采用异步通信模式设计、引入线程池并增加线程安全的LRU缓存机制等,可以支持每秒处理4000+智能摄像机数据的转发请求,即完成4000+的智能摄像机数据的路由。同时,增加了kafka集群模式、redis哨兵模式、zkclient c++sdk自动断链重连和探针模式服务状态监控等高可用优化,可以增加本申请数据路由系统的稳定性,能够做到自动容灾。
通过上述实施例提供的数据路由方法和数据路由系统,可以覆盖商业和安防两大场景下的多种典型智能服务数据路由和事件推送路由;同时,提供了一种智能服务注册器,由于该智能服务注册器为可扩展的注册器插件,可以支持其他自定义的服务注册,以实现服务路由模块的可扩展性;由于采用了通用化的模块设计,不仅能够支撑不同的业务场景,还无需进行定制化开发,节省了开发成本和维护成本。
下面继续说明本申请实施例提供的数据路由装置555的实施为软件模块的示例性结构,在本申请的一些实施例中,如图2所示,存储在存储器550的数据路由装置555中的软件模块可以包括:
服务路由模块5551,用于接收转发层发送的结构化数据;所述转发层用于接收至少一个网络摄像机发送的所述结构化数据;所述结构化数据包括发送所述结构化数据的网络摄像机的设备标识;
任务管理模块5552,用于根据所述设备标识获取所述结构化数据对应的至少一个目标服务的注册信息;
服务路由模块5551,还用于根据每一所述目标服务的注册信息,将所述结构化数据分别推送至服务层中的每一所述目标服务。
在本申请的一些实施例中,所述任务管理模块5552,还用于根据设备标识在任务数据库中确定至少一个任务类型;根据预设的任务类型与服务类型的映射关系,确定至少一个任务类型对应的至少一个目标服务;每一任务类型对应至少一个服务类型的目标服务;在任务数据库中查询每一目标服务的注册信息。
在本申请的一些实施例中,所述服务路由模块5551,还用于在目标服务的服务类型为事件推送类型的情况下,基于目标服务的注册信息,获取目标服务对应的订阅主题;根据订阅主题和结构化数据生成推送事件;将推送事件持久化到消息队列中,通过消息队列将推送事件推送至订阅主题对应的订阅服务。
在本申请的一些实施例中,所述服务路由模块5551,还用于在目标服务的服务类型为任务推送类型的情况下,基于目标服务的注册信息,获取目标服务的地址信息;地址信息包括目标服务的网络地址和端口信息;基于目标服务的网络地址和端口信息,将结构化数据推送至目标服务。
在本申请的一些实施例中,所述服务路由模块5551,还用于基于目标服务的注册信息,获取目标服务的参数信息;参数信息包括服务参数和数据格式;在结构化数据中提取服务参数;根据数据格式对服务参数进行封装,得到封装数据;基于目标服务的网络地址和端口信息,将封装数据推送至目标服务。
在本申请的一些实施例中,数据路由装置555还包括注册模块5553。
注册模块5553用于接收待注册服务对应的注册请求;存储注册请求中携带的待注册服务的任务类型和注册信息,以将待注册服务确定为已注册服务。
在本申请的一些实施例中,所述注册模块5553,还用于在待注册服务的服务类型为任务推送类型的情况下,获取注册请求中携带的待注册服务的任务类型和注册信息;注册信息包括地址信息和参数信息;将待注册服务的任务类型、地址信息和参数信息存储至任务数据库,以将待注册服务确定为已注册服务。
在本申请的一些实施例中,所述注册模块5553,还用于在待注册服务的服务类型为事件推送类型的情况下,获取注册请求中携带的待注册服务的任务类型和事件主题;根据预设的任务类型与服务类型的映射关系,判断注册请求是否有效;在注册请求有效的情况下,存储待注册服务的任务类型和事件主题,以将待注册服务确定为已注册服务。
在本申请的一些实施例中,所述注册模块5553,还用于监控已注册服务的注册信息变化事件;响应于注册信息变化事件,提取注册信息变化事件中已注册服务的新注册信息;存储新注册信息,以完成已注册服务的更新。
本公开实施例提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行本申请实施例上述的数据路由方法。
本公开实施例提供一种存储有可执行指令的计算机可读存储介质,其中存储有可执行指令,当可执行指令被处理器执行时,将引起处理器执行本申请实施例提供的数据路由方法,例如,如图3至图9示出的方法。
在本申请的一些实施例中,计算机可读存储介质可以是FRAM、ROM、PROM、EPROM、EEPROM、闪存、磁表面存储器、光盘、或CD-ROM等存储器;也可以是包括上述存储器之一或任意组合的各种设备。
在本申请的一些实施例中,可执行指令可以采用程序、软件、软件模块、脚本或代码的形式,按任意形式的编程语言(包括编译或解释语言,或者声明性或过程性语言)来编写,并且其可按任意形式部署,包括被部署为独立的程序或者被部署为模块、组件、子例程或者适合在计算环境中使用的其它单元。
作为示例,可执行指令可以但不一定对应于文件系统中的文件,可以可被存储在保存其它程序或数据的文件的一部分,例如,存储在超文本标记语言(HTML,Hyper TextMarkup Language)文档中的一个或多个脚本中,存储在专用于所讨论的程序的单个文件中,或者,存储在多个协同文件(例如,存储一个或多个模块、子程序或代码部分的文件)中。
作为示例,可执行指令可被部署为在一个计算设备上执行,或者在位于一个地点的多个计算设备上执行,又或者,在分布在多个地点且通过通信网络互连的多个计算设备上执行。
综上所述,通过本申请实施例能够实现以下技术效果:
(1)本申请实施例通过转发层接收所有网络摄像机发送的结构化数据,使得不同场景对应的目标服务可以共用该转发层实现结构化数据的获取,降低了系统的开发成本和维护成本;同时,由于获取每一结构化数据对应的设备标识,可以根据该设备标识确定每一结构化数据对应的至少一个目标服务的注册信息,以完成每一结构化数据的正确路由,实现了所有网络摄像机共用同一转发层和服务路由模块时结构化数据的正确传输,不仅可以减少开发成本和维护成本,还可以支持不同的业务场景,扩大了本申请数据路由方法的应用范围。
(2)本申请实施例通过在任务数据库中设置任务类型与服务类型的映射关系,在获取到该设备标识对应的至少一个任务类型后,可以进一步确定该设备标识对应的至少一个目标服务,实现了不同服务类型。不同任务类型的目标服务对一个网络摄像机发送的结构化数据的共用,提升了对于复杂应用场景的适应性;并且,根据通过该任务数据库保存每一目标服务的注册信息,可以为后续结构化数据的正确路由提供数据基础。
(3)本申请实施例通过获取事件推送类型的目标服务的订阅主题,并基于该订阅主题和结构化数据生成推送事件,通过预设的消息队列将该推送事件推送至订阅该订阅主题的至少一个订阅者,增加了本申请数据路由方法的数据推送形式,由于采用事件推送的方法,可以提升结构化数据的推送效率。
(4)本申请实施例通过获取任务推送类型的目标服务的网络地址和端口信息,并基于该目标服务的网络地址和端口信息将该结构化数据推送至目标服务,增加了本申请数据路由方法的数据推送形式,由于采用任务推送的方法,可以便于任务推送类型的目标服务获取准确的结构化数据,并生成对应的智能分析结果,提升结构化数据的推送效率。
(5)本申请实施例通过获取每一任务推送类型的目标服务的服务参数,可以对原始的结构化数据进行处理,去除目标服务不需要的无效数据,只传输目标服务需要的服务参数,可以节省网络传输的数据量,节省带宽的同时还可以提升路由效率;同时,本申请实施例通过获取每一任务推送类型的目标服务的数据格式,根据该数据格式对每一目标服务的服务参数进行进一步的封装,不仅可以满足目标服务的数据格式要求,该可以提升数据传输的安全性。
(6)本申请实施例通过接收待注册服务的注册请求,根据该注册请求中的任务类型和注册信息实现该待注册服务的注册过程,实现了本申请数据路由方法的可扩展性,在需要新增服务的情况下,无需重新为该新增服务进行定制化开发,只需保存注册请求中携带的待注册服务的任务类型和注册信息,即可完成该新增服务的注册过程,降低了注册成本,提升了服务注册效率。
(7)本申请实施例通过监控每一已注册服务的注册信息变化事件,可以在已注册服务发生数据变化、网络地址变化或断开变化的情况下,实时对服务器中该已注册服务进行更新,便于后续结构化数据的正确路由。
以上所述,仅为本申请的实施例而已,并非用于限定本申请的保护范围。凡在本申请的精神和范围之内所作的任何修改、等同替换和改进等,均包含在本申请的保护范围之内。