[0006] 本发明的目的在于提供一种智能家居系统中基于哈希算法的终端网关负载分配方法。
[0007] 本发明应用的系统包括网关控制系统、本地服务器、传感器控制系统和移动终端设备。
[0008] 所述网关控制系统包括主控网关和终端网关,主控网关和终端网关直接采用RPC协议联接,终端网关由多种嵌入式Linux控制板连接Zigbee协调器;传感器控制系统由智能插座、照明设备、声光报警器、智能锁具、新风系统、空调设备、电动窗帘连接Zigbee模块组成的Zigbee子设备组成;本地服务器根据需要放在家中或者小区物业管理的机房内;移动终端设备包括日常使用的手机或平板等。
[0009] 所述主控网关和终端网关的控制板采用Tiny4412控制板,它基于三星Exynos 4412四核心处理器,主频高达1.5GHz,搭载1G DDR3RAM和4G eMMC高速缓存,并拥有良好的功耗控制。
[0010] 所述的终端网关系统用于接收Zigbee子设备上产生的数据,并转发到服务器进行存储,另一方面,对用户直接控制的移动终端设备上下发的控制指令,进行转发。加入边缘计算网络进行服务器分配的计算任务。
[0011] 所述Zigbee协调器和Zigbee子设备上采用CC2530开发套件,搭载了8KB RAM和256KB闪存,可支持协调器和254个子设备的大规模组网,并拥有非常低的功耗。
[0012] 所述的传感控制系统一方用于将各种传感器数据上传给主控网关系统,一方面用于接收主控网关系统下发的各种控制指令,对相应的智能设备进行控制。
[0013] 所述的本地服务器用于接收和存储主控网关系统上传的数据。进行边缘计算的控制,包括边缘计算任务的切分和下发、进行数据加工后的结果处理,对加入和退出边缘计算网络的主控网关的控制和调度。
[0014] 所述的移动终端设备即用户日常使用的手机或平板电脑等。
[0015] 本发明的技术解决方案:
[0016] 本发明的负载分配是在由多台终端网关和本地服务器组成的网络中,终端网关利用Zigbee协调器接收从Zigbee子设备上发送到的传感器数据,并存储在服务器上。主控网关将数据切分成多个小区间并映射到哈希环上,用虚拟节点代替终端网关在哈希环上的位置,用虚拟节点的数量来表示终端网关的算力,即当终端网关加入边缘计算网络时,主控网关根据终端网关的算力为终端网关分配相应数量的虚拟节点,并将其虚拟节点用哈希函数映射到哈希环上,虚拟节点去捕获固定方向上离它最近的数据,让已经进入边缘计算状态的网关系统拥有在动态加入和退出边缘计算网络的同时,仍能实现按算力比值分配负载的能力。
[0017] 本发明解决其技术问题所采用的技术方案具体步骤如下:
[0018] 步骤1、系统初始化时,主控网关里存储一张算力表,以终端网关的网卡MAC值为主键值,查询加入智能家居系统的所有终端网关是否已在算力表中记录其算力,如果已经记录,进入步骤1;否则计算当前终端网关的算力,并在算力表中记录当前终端网关的MAC值和对应的算力,然后直至所有终端网关的算力均记录在算力表中后进入步骤2。
[0019] 步骤2、判断当前数据积累量和系统运行时间,如果当前服务器上数据量累积到了C并且系统时间运行了T时,由主控网关向服务器和终端网关发起边缘计算请求;否则进入网关正常使用状态。
[0020] 步骤3、终端网关接收到主控网关发出的边缘计算请求后,判断其自身当前是否处于空闲状态,如果是,则进入边缘计算网络,进入步骤4;否则不加入边缘计算网络。
[0021] 步骤4、主控网关查询当前算力表中所有正处于边缘计算网络中的终端网关的算力值,并计算其比值β,以K为单位,为每一台终端网关分配N个虚拟节点,每台终端网关的虚拟节点标记为:node(n)={Mn‑1,Mn‑2,...,Mn‑N|n∈1~M,N=Kβ(n)},将它们由哈希函数全部映射到哈希环上。
[0022] 步骤5、当需要边缘计算的数据总量为Q GB时,主控网关从服务器上获取后,将他们分割为大小为P MB的样本,得到Q/P个数据块,并将分割的数据块按顺序标记为1~Q/P,使用哈希函数,映射到哈希环上。
[0023] 步骤6、在哈希环上,标记为x的数据分块块按照顺时针方向去找离数据块本身最近的虚拟节点,找到该虚拟节点归属的终端网关,并将该数据块分配到虚拟节点归属的终端网关上进行边缘计算,将这种分配的路径记录在路由表上,存储到服务器上并发送到每个终端网关中,然后将数据分块按照步骤5中标记的顺序依次将数据分块发送到对应的终端网关上。
[0024] 步骤7、每个终端网关将拿到的数据分块和路由表中的数据路径进行对比,如果当前所在的终端网关拿到的数据分块在路由表中的数据路径指向自己,就进行边缘计算,否则不进行计算。
[0025] 步骤8、当有新的终端网关接入智能家居系统时,同样需要进行步骤(1)的初始化过程。当有新的终端网关进入边缘计算状态时,则同理在算力表中,以MAC值为索引,查找新的终端网关对应的算力值。得到算力值后,计算新终端网关和边缘计算网络中其它终端网关的算力比值β(y),并为新的终端网关分配新的N个虚拟节点,标记为node(y)={My‑1,My‑2,...,My‑N|N=Kβ(y)},根据哈希函数的计算,将新的虚拟节点全部映射到哈希环上,将哈希环上数据分块所在的位置向顺时针旋转,找到最近的终端网关,则新分配的虚拟节点又会捕获到数据分块,在路由表中更新新的分配路径,重新向所有网关发送路由表,服务器根据新的路径发送分块数据。
[0026] 步骤9、当终端网关由空闲状态切换为非空闲状态时,需要退出边缘计算网络,此时,该终端网关对应的所有虚拟节点退出哈希环,同理在路由表中更新分配路径。
[0027] 步骤10、每个数据块计算完成,终端网关将计算结果回传给服务器,当所有边缘计算任务完成后,服务器将计算结果汇总,进行相应后续处理和存储。
[0028] 进一步地,步骤1所述算力表为终端网关处理器算力,可由设备厂家提供,也可以在进行步骤1的处理器算力评估的计算时,由软件计算可得,。
[0029] 进一步地,步骤2所述当前服务器上数据量累积到了C并且系统时间运行了T,具体过程和必要性如下:
[0030] (1)过程:当数据量积累到达C时而系统运行时间没有达到T时,并不开始进行边缘计算;同理当系统运行时间到达T时,数据量没有累积到C时,也不开始进行边缘计算;只有当数据累积量到达C并且系统运行时间到达T时,才开始进行边缘计算。
[0031] (2)必要性:边缘计算是由数据驱动的,很多计算的应用以大量的数据为依托,数据量不够,会增加无意义的计算;当系统运行时间过短时,收集的到数据可能会是大量的冗余数据,样本采集缺乏多样性,对于边缘计算的意义同样不大。
[0032] 进一步地,步骤3所述的空闲状态,根据当前终端网关的CPU利用率来判定当前网关是否处于空闲状态,根据网关的负载,当CPU利用率小于等于T1(T1可以自定义)超过U时间时,属于空闲状态,加入边缘计算网络;如果当CPU利用率大于T1,属于非空闲状态,则不加入或退出边缘计算网络。
[0033] 进一步地,步骤4所述计算每一台终端网关的算力值并计算其比值β,以K为单位,为每一台终端网关分配N个虚拟节点的必要性如下:
[0034] 在实际情况下,由于联接到边缘计算网络的每一台终端网关设备的处理性能不同,而导致算力不同,所以如果将数据分块等分到每个边缘计算的末端显然是不合理的。所以将处理器算力比值作为衡量标准,为每个边缘计算末端的设备分配虚拟节点的个数,就显得尤为必要了。
[0035] 进一步地,根据步骤6找到的所有数据块的分配路径存储在路由表里,将数据块按照步骤5中标记的顺序分块发送到对应的终端设备上的具体过程和必要性如下:
[0036] (1)过程:当路由表确定后,服务器根据路由表的里的信息,将数据块按照步骤(4)中标记的1,2,3...,Q/P,分块发送到对应的终端网关。发送完第一个数据分块后,继续发送剩余的数据分块。
[0037] (2)必要性:避免了将所有属于某一个终端网关的数据分块发送完毕,再去发送下一个终端网关的数据分块这种方式带来的负载不合理的缺点。
[0038] 进一步地,步骤8、9所述新分配的虚拟节点会捕获到数据分块,虚拟节点退出哈希环会释放数据分块,并更新路由表,服务器根据新的路径发送分块数据的具体过程和必要性如下:
[0039] (1)过程:当新的虚拟节点进入哈希环以后,必然会有之前已经被捕获的数据分块重新被分配到新的虚拟节点上;同理,当虚拟节点退出哈希环时,必然有之前已经被捕获的数据分块被重新释放出来,由当前仍在哈希环上的虚拟节点来捕获,所以需要更新服务器上的路由表,服务器根据新的路由表,对比旧的路由表,将数据分块标记为三种状态:已发送的数据分块,未发送的数据分块,已失效的数据分块。其中已失效的数据分块为新旧路由表中路径不同数据分块。服务器继续向网关发送未发送的数据分块和已失效的数据分块。
[0040] (2)必要性:首先,当新的虚拟节点入环或旧的虚拟节点退时,由于比例固定,在不改变单位K的情况下,原本处于环上的代表各个终端网关的虚拟节点数量和比例不会发生改变。其次,由哈希一致性可知,原本的虚拟节点在哈希环上的位置保持不变,而新的虚拟节点的进入哈希环或部分虚拟节点退环后,根据顺时针捕获数据分块的原则,只有部分的数据分块的路径发送了变化。最后,路由器根据新的路由表下发数据分块,而不采用跨网关数据迁移,减少了网路传输的压力和服务器转发的负载,有利于实现数据分块路径的快速迁移。
[0041] 本发明的有益效果:
[0042] (1)使用本发明,每一个数据分块被分配到每个终端网关的概率是和算力成比例的。所以可以保证在数据块大量下发后,每个终端网关分配到的计算量是合理的。允许终端网关动态加入和退出边缘计算网络,既不会影响终端网关的日常任务需求,又可以利用终端网关的闲时算力,节省了服务器的计算压力和投资成本。
[0043] (2)由于任意一个或多个终端网关加入或退出边缘计算网络时,并不会影响边缘计算网络内部终端网关的按算力比值分配负载的状态,所以当任意一个或多个终端网关设备发生故障、用户主动停止使用某一个或几个终端网关、有新增终端网关设备需要接入智能家居系统时,始终都是“按力分配,能者多劳”,因此本系统具有很灵活的扩展性、裁剪性和可用性。
[0044] (3)使用本发明,当新的终端网关加入或退出边缘计算网络时,仅有部分的数据失效,减少了数据迁移量;由服务器重新下发运算数据,代替了由失效数据占有者跨网关传输的做法,减轻了网络数据传送压力。