[发明专利]一种基于哈希表的路由器运行数据缓存方法及系统在审
申请号: | 201611118245.X | 申请日: | 2016-12-07 |
公开(公告)号: | CN106844233A | 公开(公告)日: | 2017-06-13 |
发明(设计)人: | 曾凡菊 | 申请(专利权)人: | 深圳市德传技术有限公司;深圳市中微互联软件有限公司 |
主分类号: | G06F12/0877 | 分类号: | G06F12/0877;G06F12/02;H04L29/08 |
代理公司: | 深圳市科吉华烽知识产权事务所(普通合伙)44248 | 代理人: | 经国富 |
地址: | 518000 广东省深圳市南山*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 哈希表 路由器 运行 数据 缓存 方法 系统 | ||
技术领域
本发明涉及路由器运行信息处理技术,尤其涉及一种基于哈希表的路由器运行数据缓存方法,还涉及一种实现该方法的系统。
背景技术
随着无线通信传输速度的飞速提高,资费的不断降低,无线路由器被广泛应用在电力、水利、物流等各个行业,有效提高了各个行业的效率。在这些行业应用中,无线路由器具有分布广泛、数量众多的特点,M2M管理云平台用于实现对这些无线通信路由器的设备远程管理。提供运行状态监控、参数远程修改查看,远程升级等功能。
无线路由器运行数据,包括当前在线状态,网络模式,信号强度,流量统计等。这些数据由路由器在运行过程中,定期上报。一般10-60秒上报一次。在中小规模项目中,例如接入2000台设备的系统,10秒钟上报一次,每秒系统需要处理200个运行状态数据上报,普通关系型数据库即可很好满足需求。
当系统接入数十万甚至百万台设备后,每秒需要处理数万个运行状态数据包,数据库系统无法提供每秒数万次的更新能力。特别是对于数百万台设备接入,平均每秒收到的数据上报指令最大约数十万条。针对每秒几十万次的更新频率性能需求,普通数据库或者文件系统,均无法满足需求。部分内存数据库可以提供约10万次每秒的更新能力,但需要安装和配置额外的组件,增加了项目部署和维护的成本,而且性能上也无法完全满足超大型系统需求。
发明内容
为解决现有技术中的问题,本发明提供一种基于哈希表的路由器运行数据缓存方法,还提供了一种实现上述方法的系统。
本发明基于哈希表的路由器运行数据缓存方法包括如下步骤:
S1:在与路由器连接的服务器内存中创建哈希表;
S2:收到路由器运行数据上报指令,通过哈希函数计算得到所述路由器在服务器内存中对应的节点的哈希表位置;
S3:在所述哈希表位置查找是否存在所述路由器的节点信息,如果存在,更新该节点信息;如果不存在,新增节点和节点对应的哈希表索引,并将上报的运行数据存储在新增的节点上;
S4:将内存数据写入数据库。
本发明作进一步改进,在步骤S1中,创建哈希表的方法为:创建一个容量为N的数组指针,所述指针指向一个数组,该数组是由N个节点的首地址组成。
本发明作进一步改进,数组指针的容量N根据路由器的数量配置。
本发明作进一步改进,在步骤S2中,路由器标示符的后8个字节为路由器的唯一序列号,所述哈希函数是由路由器序列号的标示符决定,哈希函数算法如下:
A1:对路由器标示符的后8个字节中,每两个字节按照按十六进制文本转二进制,转为一个字节,得到4个字节的二进制数值;
A2:将步骤A1得到的二进制数值强制赋值给unsigned int,得到路由器唯一id号;
A3:将步骤A2得到的id号对哈希表容量取余,即得到哈希表位置值。
本发明作进一步改进,在步骤A3中,每个哈希表位置采用链表保存数据,当得到哈希表位置后,对链表中每个节点的id号进行对比,如果与请求上报指令的路由器的id号相同,则找到该路由器的节点,否则,在链表尾端新增节点。
本发明作进一步改进,服务器收到路由器运行数据上报指令,更新数据的具体方法为:
S301:开始处理上报数据;
S302:判断路由器的参数是否合法,如果是,根据路由器的标示符得到id,如果否,执行步骤S35;
S303:获取哈希表位置,在哈希表位置的链表循环查找id;
S304:判断是否找到id,如果是,更新路由器运行数据,如果否,新增节点,将运行数据给新增节点赋值,加入链表尾端;
S305:上报处理结束。
本发明作进一步改进,服务器提供对外读取路由器运行数据的接口,用户能够通过该接口读取内存中的数据,读取内存中路由器运行数据的方法包括如下步骤:
S311:开始读取数据;
S312:根据路由器的标示符的到id;
S313:获取哈希表位置,在哈希表位置的链表循环查找id;
S314:判断是否找到id,如果是,读取路由器运行数据,如果否,读取失败;
S315:读取结束。
本发明作进一步改进,在步骤S4中,内存数据定期写入数据库,具体实现方法为:
S41:更新开始,内存每更新一次数据,更新次数加1;
S42:判断更新次数是否达到同步阀值,如果是,将流量与数据库中的相应路由器的流量累加,更新到数据库,如果否,返回执行步骤S41;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于深圳市德传技术有限公司;深圳市中微互联软件有限公司,未经深圳市德传技术有限公司;深圳市中微互联软件有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201611118245.X/2.html,转载请声明来源钻瓜专利网。