一种智能设备实时数据流式处理方法及处理系统与流程

文档序号:11215651阅读:1597来源:国知局
一种智能设备实时数据流式处理方法及处理系统与流程

本发明涉及数据处理技术领域,具体而言,涉及一种智能设备实时数据流式处理方法及处理系统。



背景技术:

智能设备是目前研究的热点,伴随各种智能设备的接入,会产生大量的数据,需要通过大量数据的分析计算来推断用户的行为,然后用计算得来的数据反馈到智能设备中,自动的将自己调整到用户想要的那种状态,这其中最主要的步骤就是数据的处理。随着接入的智能设备越来越多,传统的数据处理已经无法满足需求,需要一种可扩展系统来实时处理越来越多的智能设备产生的实时数据流。



技术实现要素:

为解决上述问题,本发明的目的在于提供一种智能设备实时数据流式处理方法及处理系统,解决海量智能设备的数据实时处理问题。

本发明提供了一种智能设备实时数据流式处理方法,该方法包括:

步骤1,用户通过前端模块上传数据流处理程序包并配置需要启动的元数据信息;

步骤2,不同智能设备上传的实时数据流经过路由模块传输给对应的数据流处理实例进行处理;

步骤3,每个机器上部署的执行模块收集本机上所有的数据流处理程序实例信息,汇报给策略调度模块,策略调度模块根据这些信息来决定实例的扩缩容;

步骤4,日志收集模块收集机器上所有实例的日志并提供一个日志查询接口,前端模块通过这个日志查询接口展示实例的日志。

作为本发明进一步的改进,步骤1具体包括:

步骤101,用户通过前端模块上传数据流处理程序包,并配置元数据信息,元数据信息包括实例个数、资源大小、语言类型,同时所述前端模块将这些元数据信息存储至存储模块中供后续调度使用;

步骤102,多个执行模块在多台机器上构成一个资源池,每个执行模块收集本机的内存使用信息及所有实例信息,并将这些信息通过http协议发送给策略调度模块;

步骤103,策略调度模块根据前端模块配置的元数据信息和所有机器上执行模块发送来的信息确定各个机器的资源使用情况及各个数据流处理实例布置情况,同时,所述策略调度模块从所述存储模块中查询数据流处理实例信息,并结合执行模块发送来的信息确定调度方案,包括是否需要新增数据流处理实例或删除多余数据流处理实例,所述策略调度模块在执行模块发送过来的http请求连接上直接响应返回调度信息下发调度命令;

步骤104,执行模块接收策略调度模块的调度命令后执行相应的操作。

作为本发明进一步的改进,步骤104中,如果调度命令是删除多余数据流处理实例,所述执行模块通过调用dockerapi的方式将此实例的容器停掉并清除遗留数据,服务发现模块从路由表中清除没有定期更新的数据流处理实例信息;

如果调度命令是增加数据流处理实例,所述执行模块先判断用户采用的程序语言,并根据该程序语言选择一个对应的镜像,然后根据配置的资源参数、环境参数调用dockerapi的方式基于此镜像创建实例容器,最后将新实例的ip:port信息即地址信息注册到所述服务发现模块中。

作为本发明进一步的改进,步骤2具体包括:

步骤201,智能设备上报的实时数据流通过网关先传输至路由模块;

步骤202,所述路由模块根据实时数据流中的信息获取智能设备的名称信息,并根据此信息在所述服务发现模块中查询该智能设备对应的数据流处理实例地址,并将实时数据发送给其中一个数据流处理实例进行处理。

作为本发明进一步的改进,步骤202中,当某个智能设备对应多个数据流处理实例时,根据负载均衡策略选取其中一个数据流处理实例进行处理。

作为本发明进一步的改进,步骤3中,单个数据流处理实例在收到上传的实时数据流后,将处理的结果数据储存在cache模块里对应的队列中,队列是根据智能设备的物理id创建的,每个智能设备对应一个队列,定期将各个队列中的数据批量刷出到存储模块中进行存储。

作为本发明进一步的改进,步骤4具体包括:

步骤401,日志收集模块收集机器上所有数据流处理实例的日志并存储到es中,对外提供一个日志查询接口;

步骤402,前端模块通过所述日志查询接口,根据内容、时间进行相关日志的查找,同时,所述前端模块通过所述日志查询接口将实例的日志展示在web系统上。

本发明还提供了一种智能设备实时数据流式处理系统,包括智能设备和服务器,所述智能设备上报需要处理的数据流至所述服务器,所述服务器用于处理接收到的实时数据流;

所述服务器包括:

前端模块,用于上传数据流处理程序包,并配置元数据信息,元数据信息包括实例个数、资源大小、语言类型,同时所述前端模块将这些元数据信息存储至存储模块中供后续调度使用;

路由模块,用于将智能设备上报的数据流传输给对应的数据流处理实例进行处理,在服务发现模块中查询数据流对应的数据流处理实例地址信息来选择一个实例,并将智能设备的数据流发送给选中的实例来处理;

执行模块,用于收集本机的内存使用信息及所有实例信息,并将这些信息通过http协议发送给策略调度模块,同时接收策略调度模块的调度命令并执行相应的操作;

策略调度模块,用于根据前端模块配置的元数据信息和所有机器上的执行模块发送来的信息确定调度方案,并在执行模块发送过来的http请求连接上直接响应返回调度信息下发调度命令;

服务发现模块,用于存储数据流处理实例地址信息,并定期更新的路由表中的实例信息;

cache模块,用于存储被数据流处理实例处理后的结果数据,并将处理后结果数据批量传输至存储模块中进行存储;

存储模块,用于存储前端模块中配置的元数据信息及cache模块中的结果数据;

日志收集模块,用于收集机器上所有实例的日志并存储到es中,提供一个日志查询接口,前端模块通过这个接口将实例的日志展示在web系统上。

本发明的有益效果为:

1、支持不同语言写的处理程序,只需要按照一定打包规范打包即可,降低接入成本,同时通过web系统长传的方式降低了程序部署的复杂性;

2、可以通过添加机器,可以方便达到系统扩容的目的;

3、由于多个智能设备上传的数据前后可能是有关联的,如果后端处理实例存在多个的话,为了确保数据流处理的顺序,引入cache模块,根据智能设备的物理id创建一个队列,然后将处理完的数据存入此队列中,这样每个处理实例本身不带任何状态,任何实例在接收到上传数据流后,均会根据上报的设备物理id去cache模块中查找已经处理过的信息,然后结合刚上报的数据进行处理,这样就保证了每个智能设备数据流都能被顺序的处理;

后端数据流处理实例在处理智能设备上传的数据时会将中间结果实时的写入cache系统,由于同一个智能设备下的不同实例本身也是没有状态的,因此如果某种产品的智能设备数据过多、上传的数据压力过大、导致现有的实例个数处理不过来时,可以轻易的通过增加实例个数来解决;

4、路由模块也是无状态的,因此当接入智能设备过多导致性能问题时,也可以通过简单的部署多个实例来解决,同时将路由模块和服务发现模块结合,可以将接入智能设备的数据流转发给后端的某个实例,在路由过程中还能起到负载均衡和故障转移的作用;

路由模块的引入,对设备来说屏蔽了后端实例的细节,使得设备端只需要知道路由模块的地址即可;

5、日志收集模块通过前端模块可视化,可以帮助及时的发现实例应用程序的问题,方便测试和问题排查,可运维性高;

6、策略调度模块在执行模块发送过来的http请求连接上直接响应返回调度信息下发调度命令,使得执行模块的信息上传和策略调度模块的决策信息返回仅仅只需要一次网络往返;

7、本发明智能设备实时数据流式处理系统的各个模块均可以通过简单的增加机器来解决瓶颈问题,鲁棒性和可扩展性都很高,可以解决海量智能设备的数据上传问题,上传的数据不容易丢失。

附图说明

图1为本发明实施例所述的一种智能设备实时数据流式处理方法的流程示意图。

具体实施方式

下面通过具体的实施例并结合附图对本发明做进一步的详细描述。

实施例1,如图1所示,本发明实施例的一种智能设备实时数据流式处理方法,该方法包括:

步骤1,用户通过前端模块上传数据流处理程序包并配置需要启动的元数据信息。具体包括:

步骤101,用户采用某一种程序语言编写好处理的逻辑程序,按照约定的打包格式规范将程序打好包,通过前端模块上传此数据流处理程序包,并配置元数据信息,元数据信息包括实例个数、资源大小、语言类型,同时前端模块将这些元数据信息存储至存储模块中供后续调度使用;

步骤102,每个机器上面部署一个执行模块,多个执行模块在多台机器上构成一个资源池,每个执行模块收集本机的内存使用信息及所有实例信息,并将这些信息通过http协议发送给策略调度模块;

步骤103,策略调度模块根据前端模块配置的元数据信息和所有机器上执行模块发送来的信息确定各个机器的资源使用情况及各个数据流处理实例布置情况,同时,策略调度模块从存储模块中查询数据流处理实例信息,并结合执行模块发送来的信息确定调度方案,包括是否需要新增实例或删除多余实例,策略调度模块在执行模块发送过来的http请求连接上直接响应返回调度信息下发调度命令;

在调度时,应遵循:尽量将实例部署在空闲资源最多的机器上;同一个数据流处理程序的多个实例尽量分散部署,防止一个机器宕机导致整个智能硬件厂商的数据流处理程序瞬间不可用的情况;

步骤104,执行模块接收策略调度模块的调度命令后执行相应的操作:

如果调度命令是删除多余实例,执行模块通过调用dockerapi的方式将此实例的容器停掉并清除遗留数据,服务发现模块自动清除路由表没有定期更新的实例信息;

如果调度命令是增加实例,执行模块先判断用户采用的程序语言,并根据该程序语言选择一个对应的镜像,然后根据配置的资源参数、环境参数调用dockerapi的方式基于此镜像创建实例容器,最后将新实例的ip:port信息即地址信息注册到服务发现模块中。

步骤2,不同智能设备上传的实时数据流经过路由模块传输给对应的数据流处理实例进行处理。具体包括:

步骤201,智能设备上传的数据流通过网关先传输至路由模块;

步骤202,路由模块根据实时数据流中的信息获取智能设备的名称信息,并根据此信息在服务发现模块中查询该智能设备对应的实例地址,并将实时数据发送给其中一个数据流处理实例进行处理。当后端对应有有多个数据流处理实例时,根据负载均衡策略(如rr策略)选取其中一个实例进行处理。

步骤3,每个机器上部署的执行模块收集本机上所有的数据流处理程序实例信息,汇报给策略调度模块,策略调度模块根据这些信息来决定实例的扩缩容,单个数据流处理实例在收到上传的实时数据流后,将处理的结果数据储存在cache模块里对应的队列中,队列是根据智能设备的物理id创建的,每个智能设备对应一个队列,定期将各个队列中的数据批量刷出到存储模块中进行存储。

步骤4,日志收集模块收集机器上所有实例的日志并提供一个日志查询接口,前端模块通过这个日志查询接口展示实例的日志,具体包括:

步骤401,日志收集模块收集机器上所有数据流处理实例的日志并存储到es中,对外提供一个日志查询接口;

步骤402,前端模块通过所述日志查询接口,根据内容、时间进行相关日志的查找,同时,所述前端模块通过所述日志查询接口将实例的日志展示在web系统上。

实施例2,一种智能设备实时数据流式处理系统,包括智能设备和服务器,智能设备上报需要处理的数据流至服务器,服务器用于处理接收到的实时数据流;

服务器包括:

前端模块,用于上传数据流处理程序包,并配置元数据信息,元数据信息包括实例个数、资源大小、语言类型,同时前端模块将这些元数据信息存储至存储模块中供后续调度使用;

路由模块,用于将智能设备上报的数据流传输给对应的数据流处理实例进行处理,在服务发现模块中查询数据流对应的数据流处理实例地址信息来选择一个实例,并将智能设备的数据流发送给选中的实例来处理;

执行模块,用于收集本机的内存使用信息及所有实例信息,并将这些信息通过http协议发送给策略调度模块,同时接收策略调度模块的调度命令并执行相应的操作;

策略调度模块,用于根据前端模块配置的元数据信息和所有机器上的执行模块发送来的信息确定调度方案,并在执行模块发送过来的http请求连接上直接响应返回调度信息下发调度命令;

服务发现模块,用于存储数据流处理实例地址信息,并定期更新的路由表中的实例信息;

cache模块,用于存储被数据流处理实例处理后的结果数据,并将处理后结果数据批量传输至存储模块中进行存储;

存储模块,用于存储前端模块中配置的元数据信息及cache模块中的结果数据;

日志收集模块,用于收集机器上所有实例的日志并存储到es中,提供一个日志查询接口,前端模块通过这个接口将实例的日志展示在web系统上。

本发明的智能设备实时数据流式处理系统支持不同语言写的处理程序,只需要按照一定打包规范打包即可,降低接入成本,同时通过web系统长传的方式降低了程序部署的复杂性。可以通过添加机器,部署执行模块达到系统扩容的目的。由于多个智能设备上传的数据前后可能是有关联的,如果后端处理实例存在多个的话,为了确保数据流处理的顺序,本发明引入了cache模块,根据智能设备的物理id创建一个队列,然后将处理完的数据存入此队列中,这样每个处理实例本身不带任何状态,任何实例在接收到上传数据流后,均会根据上报的设备物理id去cache模块中查找已经处理过的信息,然后结合刚上报的数据进行处理,这样就保证了每个智能设备数据流都能被顺序的处理;后端实例在处理智能设备上传的数据时会将中间结果实时的写入cache系统,由于同一个智能设备下的不同实例本身也是没有状态的,因此如果某种产品的智能设备数据过多、上传的数据压力过大、导致现有的实例个数处理不过来时,可以轻易的通过增加实例个数来解决。本发明通过路由模块的引入,屏蔽了后端实例的细节,使得设备端只需要知道路由模块的地址即可;由于路由模块也是无状态的,因此当接入智能设备过多导致性能问题时,也可以通过简单的部署多个实例来解决,同时将路由模块和服务发现模块结合,可以将接入智能设备的数据流转发给后端的某个实例,在路由过程中还能起到负载均衡和故障转移的作用。日志收集模块通过前端模块可视化,可以帮助及时的发现实例应用程序的问题,方便测试和问题排查,可运维性高。策略调度模块在执行模块发送过来的http请求连接上直接响应返回调度信息下发调度命令,使得执行模块的信息上传和策略调度模块的决策信息返回仅仅只需要一次网络往返。

综合看来,本发明智能设备实时数据流式处理系统的各个模块均可以通过简单的增加机器来解决瓶颈问题,鲁棒性和可扩展性都很高,可以解决海量智能设备的数据上传问题,上传的数据不容易丢失。

以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

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