一种基于事件驱动模型的智能网关管理方法及系统与流程

文档序号:11589856阅读:295来源:国知局
一种基于事件驱动模型的智能网关管理方法及系统与流程

本发明涉及智能设备控制领域,尤其涉及一种基于事件驱动模型的智能网关管理方法及系统。



背景技术:

各种智能硬件设备组成智能家居系统,为了统一管理所有的智能硬件,需要一个智能网关对所有的智能硬件进行管理。通过在用户端增加一个智能网关设备,所有的智能硬件都可以由这个智能网关统一管理,以实现操作的简化和智能硬件的相互操作。用户可以通过手机应用程序控制智能硬件,用户在智能网关后台管理系统注册后,绑定智能网关,然后通过手机给智能网关后台管理系统发送指令,后台管理系统通过处理后,把指令下派到智能网关,最终由智能网关对智能硬件进行控制操作。智能网关也需要把智能硬件实时状态反馈给后台管理系统,后台管理系统进行处理后通过手机反馈给用户。

如申请号为cn201510265376.x的专利文献提供的“一种基于运营服务的智能家居管理系统”,该发明公开了一种基于运营服务的智能家居管理系统,包括智能家居运营平台、客户终端、智能网关和受控设备。智能家居运营平台通过以太网与智能网关进行通信,无需固定ip地址用户即可通过运营平台对家庭中的设备进行远程操作。通过运营平台对用户开户注册、使用、注销、设备更改、系统设置等功能进行管理。提供完整稳定的智能家居远程控制解决方案。客户终端,通过internet网访问智能家居运营平台的服务端,获取智能家居远程操作服务。智能网关,负责本地组网管理与网络启动,通过运营平台对家庭中的设备进行远程操作。

又如申请号为cn201610087803.4的专利文献公开的“一种移动终端与后台管理系统任务关联的方法”,该发明涉及一种移动终端与后台管理系统任务关联的方法,包括如下步骤:s1、移动终端接受后台管理系统发来的工作指令,该工作指令是由后台管理系统接收到内外部工作任务请求或既定工作计划后生成的,并且将该工作指令和后台管理系统生成的文件夹进行了关联;s2、移动终端自动生成一个同样与工作指令相关联的文件包;s3、移动终端产生需要上传到后台管理系统的信息后,将欲上传的信息一并打包并自动存储于文件包内,然后上传。

现有技术的缺点是每一个智能设备在后台管理系统中都是一个实体对象,对这些实体对象的操作和监控都需要启动一个后台线程进行处理。一个智能网关后台服务器可能需要同时管理几百万个智能设备,这就需要在资源的使用和管理数量之间找到一个平衡点。使用普通的多线程方式,每个智能设备生成一个线程进行管理,在这种模式下大约4096个线程会占用1g的内存空间,服务器无法满足系统需要的资源。即使在内存可用的情况下,每个线程的执行都需要在cpu中进行上下文切换,发现有新的业务需要处理也需要使用定时循环的方式,这样最终也将消耗掉cpu的资源,使用系统无法有效地进行业务处理。

对一个智能硬件的指令操作在多线程模式下也会发生问题,例如对智能灯发出打开和调整亮度两个命令,在多线程环境下,对智能灯这个业务对象的访问和修改是并发执行的,为了保证顺序性需要这个业务对象上增加锁,增加了系统的复杂性。



技术实现要素:

针对上述现有技术的现状,本发明的目的是在大量智能硬件被后台管理系统控制管理的环境下,解决系统的性能问题,以及指令的顺序处理问题。

本发明解决上述技术问题所采用的技术方案为:

一种基于事件驱动模型的智能网关管理方法,所述事件驱动模型中包括一个多层级的角色管理目录,该管理方法包括:

s1.当所述智能网关为在线状态时,查找所述智能网关对应的智能网关角色;

s2.当所述智能网关管理的智能设备为在线状态时,创建智能设备角色;

s3.接收用户发送的控制指令,并将所述控制指令发送至智能设备角色;

s4.智能设备角色判断所述控制指令是否为可执行指令,若是,则智能设备角色将所述控制指令发送至智能网关角色,智能网关角色将所述控制指令发送至智能网关。

进一步地,步骤s1之前还包括:

创建一根结点,所述根结点用于创建智能网关对应的智能网关角色。

进一步地,步骤s1中,根据智能网关序列号信息查找所述智能网关对应的智能网关角色。

进一步地,步骤s1中,若根据智能网关序列号信息不能查找到所述智能网关对应的智能网关角色,则创建一个新的智能网关角色。

进一步地,步骤s2中,根据所述智能设备序列号信息于智能网关角色创建智能设备角色。

进一步地,步骤s2中,还包括:

智能设备角色创建完成后,开启对所述智能设备角色的状态监测;

当所述智能设备角色发生异常时,向所述智能网关角色发送通知消息。

进一步地,当后台管理系统与智能网关的连接中断后,向所述智能网关角色发送停止消息;

智能网关角色接收到所述停止消息后,向它管理的所有智能硬件角色发送停止消息。

一种基于事件驱动模型的智能网关管理系统,包括:

查找模块,用于当所述智能网关为在线状态时,查找所述智能网关对应的智能网关角色;

创建模块,用于当所述智能网关管理的智能设备为在线状态时,创建智能设备角色;

转发模块,用于接收用户发送的控制指令,并将所述控制指令发送至智能设备角色;

判断模块,用于判断所述控制指令是否为可执行指令。

进一步地,所述创建模块还用于当根据智能网关序列号信息不能查找到所述智能网关对应的智能网关角色时,创建一个新的智能网关角色。

进一步地,还包括:

状态监测模块,用于当智能设备角色创建完成后,开启对所述智能设备角色的状态监测。

本发明通过使用事件驱动模型,减少对内存和cpu资源的消耗,提高可管理的硬件数量。通过角色的单线程模型,减小系统的复杂度,提高系统的并发处理能力和响应速度。

附图说明

图1为发明本实施例一中一种基于事件驱动模型的智能网关管理方法流程图;

图2为本发明实施例一中一种基于事件驱动模型的智能网关管理系统结构图;

图3为本发明实施例二中系统角色结构图。

具体实施方式

以下是本发明的具体实施例并结合附图,对本发明的技术方案作进一步的描述,但本发明并不限于这些实施例。

一个智能网关后台服务器需要具有管理几百万个智能硬件的能力,为了实现这种业务需求本发明使用akka的事件驱动模型实现管理大量智能硬件的能力。akka的主要目的是编写应用程序,使它们能更简单的部署在云上或运行在分布式环境中,并能有效的利用全部计算机资源进行业务处理。akka是一个用scala编写的库,用于简化编写容错的、高可伸缩性的java和scala角色模型应用。

在智能网关后台管理系统中这些智能设备相当于一个actor(角色)。它有以下特点:

1.角色是一个非常小的模块,1g的内存可以部署250万个角色,所以满足内存的容量要求。

2.角色是单线程的,彼此间通过传递消息来进行交互,如果没有消息发送给这个角色,角色不会消耗资源,不需要使用轮询的方式获取数据,没有线程环境下的上下文切换,减少cpu的使用。

3.角色一次只能处理一个消息请求,所以无论是动作消息还是请求某个响应或状态的消息,在角色内部都是顺序处理的,这个保证了指令按照下发的顺序进行处理。

4.如果一个角色在处理业务过程中发生异常,它会自动终止或重启,不会对系统中的其它的角色的产生影响,提高了系统的稳定性。

5.角色使用不可变数据,从根本上消除了线程同步问题,减少了系统的复杂度,有利于后期的维护和升级。

通过使用基于角色的事件驱动模型,智能网关后台管理系统可以实现大量智能硬件的管理能力,同时保证系统运行的可靠性。

以下为本发明具体实施例。

实施例一

如图1所示为本实施例中一种基于事件驱动模型的智能网关管理方法流程图,所述事件驱动模型中包括一个多层级的角色管理目录,该管理方法包括:

s1.当所述智能网关为在线状态时,查找所述智能网关对应的智能网关角色;

本步骤之前,当系统启动后,会自动创建一个根结点,该根结点用于创建智能网关对应的智能网关角色。

本步骤中,后台管理系统监测到智能网关为在线状态时,根据所述智能网关序列号信息,开始查找所述智能网关对应的智能网关角色。

若根据智能网关序列号信息不能查找到所述智能网关对应的智能网关角色,则创建一个新的智能网关角色。

s2.当所述智能网关管理的智能设备为在线状态时,创建智能设备角色;

本步骤中,后台管理系统监测到智能网关管理的智能设备为在线状态时,根据所述智能设备序列号信息,创建智能设备角色。

s3.接收用户发送的控制指令,并将所述控制指令发送至智能设备角色;

本步骤中,后台管理系统接收到用户发送的控制指令后,将所述控制指令发送至智能设备角色。

s4.智能设备角色判断所述控制指令是否为可执行指令,若是,则智能设备角色将所述控制指令发送至智能网关角色,智能网关角色将所述控制指令发送至智能网关。

本步骤中,智能设备角色接收后台管理系统发送的用户控制指令,并根据所述智能设备状态判断所述控制指令是否为可执行指令:

若所述控制指令为可执行指令,则智能设备角色将所述控制指令发送至智能网关角色,智能网关角色再将所述控制指令发送至智能网关。

如图2所示为本实施例中一种基于事件驱动模型的智能网关管理系统结构图,该系统包括:

查找模块100,用于当所述智能网关为在线状态时,查找所述智能网关对应的智能网关角色;

创建模块200,用于当所述智能网关管理的智能设备为在线状态时,创建智能设备角色;

转发模块300,用于接收用户发送的控制指令,并将所述控制指令发送至智能设备角色;

判断模块400,用于判断所述控制指令是否为可执行指令。

所述创建模块200还用于当根据智能网关序列号信息不能查找到所述智能网关对应的智能网关角色时,创建一个新的智能网关角色。

本实施例旨在解决智能网关后台管理系统对大量智能硬件进行控制时系统运行的效率问题。

实施例二

本实施例使用飞利浦智能灯业务模型对实施例一进行详细方案阐述。

如图3所示为本实施例中系统角色结构图,系统模型相当于一个树形结构。

本实施例中,硬件系统由智能网关,飞利浦网络控制器(hub),飞利浦智能灯组成。

系统启动后,自动创建一个根结点,名字为supervisor,这个根结点负责智能网关角色的创建,在系统中的路径为:/user/supervisor。

智能网关后台管理系统接收到智能网关在线消息后,在根角色中根据智能网关的序列号查找这个智能网关对应的智能网关角色。

如果没有,则创建一个新的智能网关角色,这个智能网关的名字为:gateway-sn值,在系统中的路径为:/user/supervisor/gateway-sn。

智能网关管理的智能设备上线后,根据智能设备的厂商序列号在智能网关角色下生成智能设备角色,例如智能灯在系统中的路径为:/user/supervisor/gateway-sn/led-sn。

由于角色是基于消息事件驱动的模型,为了控制角色的动作,需要给角色发送事件消息,角色接收事件消息后(onreceive方法),根据事件类型进行处理。

智能网关角色有以下消息事件组成:

1.online:网关在线

后台管理系统接收智能网关在线消息后,把网关在线消息发送给智能网关角色。

智能网关角色在后台管理系统中根据sn生成或更新数据库中的网关对象,例如创建时间、最新上线时间、网关上线状态,软件版本等,最后把智能网关上线命令处理结果返回给返智能网关,返回值需要包括智能网关在后台管理系统的id值(数据库表主键)。

2.offline:网关离线

当后台管理系统与智能网关tcp连接通道中断后,给智能网关角色发送停止消息。

智能网关角色接收所述停止消息后,给它管理的所有智能设备角色发送停止消息,完成后停止(stop方法),释放资源。

发送停止命令为:

3.deviceonline:智能硬件在线

智能网关管理的智能硬件上线后,在智能网关角色中根据设置类型创建不同的智能设备角色,它属于智能网关角色的孩子。

智能设备角色的名字为:设备类型-设备sn。

例如网络控制器对应路径为:

/user/supervisor/gateway-fxgw00000001/hub-00:17:88:01:02:31:a5-0b

4.onlinersp:回复消息

后台管理系统对智能网关或智能硬件发送的消息处理结束后,都需要给智能网关发送处理结果消息。

这些消息通过智能网关角色统一处理,以保证命令处理的顺序性。智能网关角色接收到这个消息后,把消息保存在消息队列中,依次处理。

5.deviceset:智能硬件控制消息

用户通过手机应用程序管理智能硬件时,把相关命令发送给后台管理系统。

后台管理系统接收用户发送的控制指令后,将控制指令发送给智能设备角色的步骤具体为:

(1)生成智能设备角色的路径;

(2)把控制指令流包装进控制消息中,把消息发送给智能设备角色。

智能设备角色判断所述控制指令是否为可执行指令:

若是,则智能设备角色将所述控制指令发送至智能网关角色,智能网关角色将所述控制指令发送至智能网关。

示例开灯过程如下:

(1)把开灯指令发送给智能灯角色

led:智能灯

userid:手机用户标识符

power:1-开灯0-关灯

(2)在智能灯角色对指令进行判断,如果是可执行命令,把控制命令交给智能网关角色(相当于智能灯角色的父亲)处理

getcontext().parent().tell(newgatewayactor.deviceset(指令),this.getself());

指令格式为:

{"type":"set","commandid":4,"userid":"2","deviceid":"2","devdata":{"power":"1"}}

需要注意的是,本实施例中,当智能网关角色停止时,由它所生成的所有智能设备角色都将自动停止运行,以便释放资源。

本实施例具有以下优点:

1)通过角色减少内存消耗量,容易满足对资源的要求;

2)通过事件触发机制,减少cpu的使用量,提高系统处理的吞吐量;

3)取消线程模型,减少系统的复杂性,有得于后期的维护和运行的稳定性。

实施例三

本实施例与之前的实施例不同之处在于,本实施例中还包括对智能设备角色的状态监控。

本实施例中,智能网关角色还包括以下消息事件:

terminated:智能设备角色终止消息

创建智能设备角色时,使用监听方法(watch)监听智能设备角色的状态信息。

当监听的智能设备角色发生异常终止时,会给智能网关角色发送消息,智能网关角色获取到这个消息后,从消息体中获取智能设备角色信息以便做进一步处理。

本实施例中一种基于事件驱动模型的智能网关管理方法包括:

s1.当所述智能网关为在线状态时,查找所述智能网关对应的智能网关角色;

s2.当所述智能网关管理的智能设备为在线状态时,创建智能设备角色;

本实施例中,步骤s2中还包括:

智能设备角色创建完成后,开启对所述智能设备角色的状态监测;

当所述智能设备角色发生异常时,向所述智能网关角色发送通知消息。

s3.接收用户发送的控制指令,并将所述控制指令发送至智能设备角色;

s4.智能设备角色判断所述控制指令是否为可执行指令,若是,则智能设备角色将所述控制指令发送至智能网关角色,智能网关角色将所述控制指令发送至智能网关。

本实施例中一种基于事件驱动模型的智能网关管理系统包括:

查找模块100;

创建模块200;

转发模块300;

判断模块400。

还包括:

状态监测模块500,用于当智能设备角色创建完成后,开启对所述智能设备角色的状态监测。

本实施例通过对对智能设备角色进行状态监控,能有效提高系统稳定性。

本文中所描述的具体实施例仅仅是对本发明精神作举例说明。本发明所属技术领域的技术人员可以对所描述的具体实施例做各种各样的修改或补充或采用类似的方式替代,但并不会偏离本发明的精神或者超越所附权利要求书所定义的范围。

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