著录项信息
专利名称 | 一种基于高分散哈希算法的数据采集策略方法及装置 |
申请号 | CN201510492674.2 | 申请日期 | 2015-08-12 |
法律状态 | 授权 | 申报国家 | 中国 |
公开/公告日 | 2015-12-30 | 公开/公告号 | CN105208075A |
优先权 | 暂无 | 优先权号 | 暂无 |
主分类号 | H04L29/08 | IPC分类号 | H;0;4;L;2;9;/;0;8;;;H;0;4;L;9;/;0;6查看分类表>
|
申请人 | 新华通讯社;中国传媒大学 | 申请人地址 | 北京市西城区宣武门西大街57号
变更
专利地址、主体等相关变化,请及时变更,防止失效 |
权利人 | 新华通讯社,中国传媒大学 | 当前权利人 | 新华通讯社,中国传媒大学 |
发明人 | 吕锐;郭鸿飞;温宇俊;康洁;陈嘉;宋卿 |
代理机构 | 北京思海天达知识产权代理有限公司 | 代理人 | 沈波 |
摘要
一种基于高分散哈希算法的数据采集策略方法及装置,该装置包括用户行为采集模块、时间种子生成器、哈希回传时间生成器、时间校正器、定时服务模块、数据传输模块、文件缓存模块、后台接收服务模块;该装置将高分散性哈希算法引入,计算合理的回传时间;数据传输模块及数据加密器等用于将数据进行加密后传输;文件缓存、传输计数器、启动计数器等用于测算数据传输成功率。本发明利用高分散性哈希算法的天然特质,在对实时性要求不高的移动互联网数据采集系统中,有效的将大量的设备发送请求进行了分散疏导,合理的利用服务器的资源情况,将其服务能力平均化,同时也可以将数据回传的延时降到最低,实现系统的均衡、稳定的目标。
1.一种基于高分散性哈希算法的移动数据采集回传策略方法,该方法基于高分散性哈希算法的移动数据采集回传策略装置实现,该装置包括用户行为采集模块、时间种子生成器、哈希回传时间生成器、时间校正器、定时服务模块、数据传输模块、文件缓存模块、后台接收服务模块;所述数据传输模块由数据加密器组成;
文件缓存模块包括传输计数器、启动计数器、回传时间模块、用户数据缓存模块;
用户行为采集模块与文件缓存模块连接,文件缓存模块与时间校正器、数据传输模块连接;时间种子生成器与哈希回传时间生成器连接;哈希回传时间生成器、时间校正器与定时服务模块连接;定时服务模块与数据传输模块相互交互;数据传输模块与后台接收服务模块连接;哈希回传时间生成器与文件缓存模块连接;
其特征在于:该方法通过如下步骤实现,
(1)通过植入在Android系统中的jar包装置,在Android App内通过用户行为采集模块采集用户行为数据,并把记录的用户数据通过http方式,加密后提交到后台接收服务;
(2)采集用户行为数据利用生命周期事件及主动拦截方式进行采集,并送到App缓存中暂存起来;
(3)Jar植入后,在App第一次启动时,使用时间种子生成器生成设备的唯一标示,然后使用加密器对时间种子生成器生成的唯一标示进行加密处理;同时发起请求通知服务端设备信息,以后将不再通知;
(4)将时间种子生成器生成的唯一标示加密结果使用哈希回传时间生成器进行处理计算,得到一个时间点,该时间点为每天该设备向服务端回传数据的时间点,单位为秒,由植入程序进行管理;
(5)植入程序在得到回传数据的时间点后,启动定时服务模块的定时器在指定时间,读取缓存的用户行为数据,以JSON形式的进行拼接,发动后台服务,使用数据加密器对数据进行加密后回传到服务端,回传成功在计数器中记录成功次数,同时计算出回传成功偏移量;
(6)植入程序会对回传时间生成器生成的时间点进行适度校正,校正的前提是如发现回传数据不能及时处理,将使用时间校正模块,基于回传成功率对该时间点进行重新计算,得到新的回传时间点。
2.根据权利要求1所述的一种基于高分散性哈希算法的移动数据采集回传策略方法,其特征在于:所述步骤(3)中种子生成器采用基于MD5算法实现,从android系统中获取imei+mac地址,两数值以字符串形式拼接后通过MD5算法加密,生成设备标示种子。
3.根据权利要求1所述的一种基于高分散性哈希算法的移动数据采集回传策略方法,其特征在于:所述步骤(4)中,回传时间生成器使用FNV-1算法对种子标示进行计算,首先生成32bit的结果,其中offset_basis和FNV_prime选择中,FNV-1基础偏移量offset_basis选择为2166136261,32bitFNV_prime初始值为16777619,对输入的种子标示的每一个字节,先使用offset_basis乘以FNV_prime得到结果hash,然后将当前标示种子中取来的字节和当前的hash值做异或运算,如此循环,直至标示种子按字节循环完毕得到最后的结果n;将得到的结果R,将结果n对86400取模,86400是通过将24小时转成秒得到结果,结果n对86400取模后,得到一个整型的数N,该数据即为一天中的第N秒。
4.根据权利要求1所述的一种基于高分散性哈希算法的移动数据采集回传策略方法,其特征在于:所述步骤(5)中定时器采用后台服务形式定时运行,将步骤(4)获取到的数据N定义为每天数据回传的时间,发起请求时将JSON数据放在Http数据包的报文中,并使用加密模块的DES对称算法进行加密传输,每天只要传输成功,传输计数器自增长1,初始值为1;
每天植入程序记录启动日,启动日计数定义为当日启动次数如大于等于1,,按1记录至启动计数器,初始值为1;一旦成功回传后,将传输计数器与启动计数器恢复初始值。
5.根据权利要求1所述的一种基于高分散性哈希算法的移动数据采集回传策略方法,其特征在于:所述步骤(6)中的时间校正模块,用于将回传时间进行时间重新调配,调配发生时间在App启动时,植入程序发起检测,判断是否需要校正时间,启动条件如下:首先计算成功率,成功率=传输成功次数/启动日数,如果成功率小于50%,启动校正;校正规则如下:第一次,使用86400减去回传时间N即时间翻转得到N1,记入时间校正计数器X;此后每次校正,计算|N1–3600*X|得到校正后时间NX,若NX>86400,对86400取模;目的是提取用户的常连通服务器时间。
一种基于高分散哈希算法的数据采集策略方法及装置\n技术领域\n[0001] 本发明涉及移动互联网领域,设计并实现了一种利用移动终端的高离散性性质,在非实时计算要求的数据采集系统中,降低服务器负载的方法及装置。\n背景技术\n[0002] 近年来,随着移动互联网的迅速发展,目前移动终端设备数量呈爆炸级的速度上升,从而带来了移动应用数量的大规模增长,截止至2014年底,我国移动智能终端用户规模达10.6亿,较2013年增长231.7%,增速远超全球同期市场。因此在这种终端设备越来越多的环境下,应用的运维人员急需了解自身应用的用户每天到底在做哪些事情,急需对用户的行为进行数据采集,以用来辅助App的运维决策。\n[0003] 目前在移动终端上进行数据采集主要依靠于在移动应用内嵌入一个采集装置,通过调用此装置提供的接口进行数据采集,但对于采集到用户行为数据,不同厂商的装置会有不同的处理策略和方法,目前大致可以分成如下三种:\n[0004] 实时回传策略方法,该策略方法优点在于数据的实时性很强,用户的行为数据在产生后立刻可以采集回系统;缺陷在于大量的用户数据会给数据采集后台造成很大的负载压力,系统不得不为实时性而进行扩容,以解决高并发带来的负载问题。\n[0005] 启动回传策略方法,该策略主要将数据累计到一定的量才传输到数据采集系统,回传的时间点在应用启动的时候或者是在应用关闭的时候,因此优点是可以将少量的用户操作进行合并,减少对系统的并发影响;缺陷在于系统压力仍然有可能随着接入终端数量的上升而上升,根据用户的实际使用行为,并发有可能会集中在特定的几个时间段爆发(如早上9点、中午12点、下午4点等时间),也对系统造成很大的负载,同时由于用户的使用习惯不一样,如应用有可能几天才打开一次,因此可能会带来数据很大的延时。\n[0006] 定时/延时回传策略方法:一般服务器的空闲时间在凌晨时分,因此该策略方法采用了将回传时间设置在这个时候,定时发送批量的采集数据到服务器,该策略好处在于能合理利用了服务器的空闲时间段;又或者采用随机的回传时间方法将数据回传,但问题在于如果接入设备量大的情况下,仍然避免不了海量的请求引起服务器的负载过量。\n发明内容\n[0007] 本发明的目的是提出一种基于高分散性哈希算法的移动数据采集回传策略方法及装置,在Android移动终端中应用,为移动用户行为数据采集服务奠定基础。\n[0008] 本发明提出的一种基于高分散性哈希算法的移动数据采集回传策略方法及装置,其特征包括如下:\n[0009] 一种基于高分散性哈希算法的移动数据采集回传策略装置,该装置包括用户行为采集模块、时间种子生成器、哈希回传时间生成器、时间校正器、定时服务模块、数据传输模块、文件缓存模块、后台接收服务模块;所述数据传输模块由数据加密器组成;\n[0010] 文件缓存模块包括传输计数器、启动计数器、回传时间模块、用户数据缓存模块;\n[0011] 具体而言,用户行为采集模块与文件缓存模块连接,文件缓存模块与时间校正器、数据传输模块连接;时间种子生成器与哈希回传时间生成器连接;哈希回传时间生成器、时间校正器与定时服务模块连接;定时服务模块与数据传输模块相互交互;数据传输模块与后台接收服务模块连接;哈希回传时间生成器与文件缓存模块连接。\n[0012] 基于上述装置的一种基于高分散性哈希算法的移动数据采集回传策略方法,该方法通过如下步骤实现:\n[0013] (1)通过植入在Android系统中的jar包装置,在AndroidApp内通过用户行为采集模块采集用户行为数据,并把记录的用户数据通过http方式,加密后提交到后台接收服务。\n[0014] (2)采集用户行为数据利用生命周期事件及主动拦截方式进行采集,并送到App缓存中暂存起来。\n[0015] (3)Jar植入后,在App第一次启动时,使用时间种子生成器生成设备的唯一标示,然后使用加密器对时间种子生成器生成的唯一标示进行加密处理;同时发起请求通知服务端设备信息,以后将不再通知。\n[0016] (4)将时间种子生成器生成的唯一标示加密结果使用哈希回传时间生成器进行处理计算,得到一个时间点,该时间点为每天该设备向服务端回传数据的时间点,单位为秒,由植入程序进行管理。\n[0017] (5)植入程序在得到回传数据的时间点后,启动定时服务模块的定时器在指定时间,读取缓存的用户行为数据,以JSON形式的进行拼接,发动后台服务,使用数据加密器对数据进行加密后回传到服务端,回传成功在计数器中记录成功次数,同时计算出回传成功偏移量。\n[0018] (6)植入程序会对回传时间生成器生成的时间点进行适度校正,校正的前提是如发现回传数据不能及时处理,将使用时间校正模块,基于回传成功率对该时间点进行重新计算,得到新的回传时间点。\n[0019] 所述步骤(3)中种子生成器采用基于MD5算法实现,从android系统中获取imei(有可能获取不到)+mac地址,两数值以字符串形式拼接后通过MD5算法加密,生成设备种子标示。\n[0020] 所述步骤(4)中,回传时间生成器使用FNV-1算法对种子标示进行计算,首先生成\n32bit的结果,其中offset_basis和FNV_prime选择中,FNV-1基础偏移量offset_basis选择为2166136261,32bitFNV_prime初始值为16777619,对输入的种子标示的每一个字节,先使用offset_basis乘以FNV_prime得到结果hash,然后将当前标示种子中取来的字节和当前的hash值做异或运算,如此循环,直至标示种子按字节循环完毕得到最后的结果n。将得到的结果R,将结果n对86400取模,86400是通过将24小时转成秒得到结果,结果n对86400取模后,得到一个整型的数N,该数据即为一天中的第N秒。\n[0021] 所述步骤(5)中定时器采用后台服务形式定时运行,将步骤(4)获取到的数据N定义为每天数据回传的时间,发起请求时将JSON数据放在Http数据包的报文中,并使用加密模块的DES对称算法进行加密传输,每天只要传输成功,传输计数器自增长1,初始值为1;每天植入程序记录启动日,启动日计数定义为当日启动次数如大于等于1,,按1记录至启动计数器,初始值为1。一旦成功回传后,将传输计数器与启动计数器恢复初始值。\n[0022] 所述步骤(6)中的时间校正模块,用于将回传时间进行时间重新调配,调配发生时间在App启动时,植入程序发起检测,判断是否需要校正时间,启动条件如下:首先计算成功率,成功率=传输成功次数/启动日数,如果成功率小于50%,启动校正。校正规则如下:第一次,使用86400减去回传时间N(时间翻转)得到N1,记入时间校正计数器X;此后每次校正,计算|N1–3600*X|得到校正后时间NX,若NX>86400,对86400取模。目的是提取用户的常连通服务器时间。\n[0023] 本发明与现有技术相比,具有以下明显的优势和有益效果:\n[0024] 因为在对实时性要求不高的移动互联网数据采集系统中,允许一定时间的延时(数据一天一算等)的前提下,本发明成为了一种适宜在这类系统上进行数据采集时降低服务器负载的方法,它利用高分散性哈希算法的天然特质,针对于在移动互联网用户行为采集方面使用,效果明显。这样将大量的设备发送请求进行了分散疏导,从终端这个层次去解决了大量设备接入问题,能够很合理的利用服务器的资源情况,将其服务能力平均化,同时也可以将数据回传的延时降到最低,实现系统的均衡、稳定的目标。\n附图说明\n[0025] 图1本发明所述实施实例的数据采集装置结构框图。\n[0026] 图2本发明所述实施实例的生成数据回传时间流程图。\n具体实施方式\n[0027] 本发明装置整体中,用户行为采集模块提供软件接口,供App调用,调用后将进行用户行为的采集;时间种子生成器、哈希回传时间生成器、时间校正器以及定时服务主要对用户行为数据被采集后,使用本发明中的算法逻辑精确计算出数据上传到后台接收服务的时间点;数据传输模块包括内含的数据加密器,主要用以将采集到用户行为数据加密后通过https协议方式回传至后台接收服务。\n[0028] 以下结合说明书附图对本发明的具体实施例加以说明。\n[0029] 请参阅图1所示,为本发明的最佳实施案例提供的基于高分散哈希算法的数据采集策略方法的可植入式装置。其包括以下步骤:\n[0030] 1、通过JAVA实现的jar包,供第三方应用进行植入,通过内置的用户行为采集模块,对设备的分辨率、品牌、型号、网络类型、操作系统、操作系统版本号、识别码、经纬度、ip地址等进行收集,另外提供接口允许用户采集使用App的情况:如点击事件、阅读、注册、评论、分享等,此外通过自动捕获技术获取App内的错误情况;\n[0031] 2、将采集到的数据缓存在文件系统中;\n[0032] 3、App启动过程中,生成回传时间,并永久保存至文件缓存中,请参阅图2所示:\n[0033] a)如果是第一次启动,将通过时间种子生成器生成如下种子标示:\nf9b1763c6d1c33c1df058d31898d895f,使用哈希回传时间生成器对种子标示进行计算处理,得到22536,即回传时间点为06:15:36。\n[0034] b)如果不是第一次启动,将检测传输成功率,如果传输成功率小于50%,那么需要较正,使用时间校正器对22536进行处理,处理结果如下:\n[0035] i.如果是第一次进行处理那么,使用86400-22536=63864,即回传时间为17:44:\n24。\n[0036] ii.若非第一次校正,如第二次校正,则使用上述说明中办法进行处理,|63864-\n3600*1|mod 86400=60264,即16:44:24。\n[0037] c)使用AlarmManager定义延时闹铃,通过闹铃启动Android Intent,延时时长根据上述计算时间与本地时间进行相减获取。\n[0038] 4、定时服务时间到后,启动数据传输模块,同时使用数据加密器对缓存数据进行DES加密,数据传输模块会将加密后数据回传至后台接收服务,如下所示\n[0039] 加密前数据样例:\n[0040] {"appID":"d0583","userID":"","userName":"","userIP":"223.104.31.49","appVersion":"V1.0.6","appStoreID":"098","deviceID":"352107066282838","deviceIMSI":"460006690768271","mobileOS":"02","deviceBrand":"samsung","deviceModel":"SM-G9008V","deviceOSVersion":"4.4.2","deviceResolution":"\n1920x1080","longitude":"","latitude":"","netWorkType":"LTE","operateType":"\n025" ,"operateTime":"2015-04-0809:44:50","sessionID":"\nb02f0f0974004f49b3946b8e2d31055c"}\n[0041] 加密后数据:\n[0042]\nAk5ZWHtT0kYv2RMQFEuFuPgOubiLmUwGzu7f4cQ50cqzBYTtphuNIHcx1RtZkL42jQlQAPaY5lWzBYTtphuNIHJ4PW4Uu+7ngw03APbiX82b+PCcAJilIu6O/AOhotITjygEjm+\nkIIIqdf1tgYn9fMjxCIV5dwGFEG8ZRcn65xkGaqOyKBuH5NM1wWkrCWWIb8XdQJ8gr5imz95zEZWomMKNj7tTpar5hX9Wm4PUqz3IB1tay7BsB5Br4dF64w2FjaIwM9cX9XCDooJhAlDq6ES9ortpjtpyoqklAn weP3O q0DME naqjs L4VhY eTnf+ xZn8k YsY7H 3fKzO+\nuTeR7S5ex2pxYPTk05C5XZs03lZBAliWk5MAeXQg8cRQSrnYjV2pMmQ9COQZwpLXNcPX9eet0Iv5a/Z I cC C E+ H Vd s ZQ H / Sy Cy A k 2O r 9p Bm P A wH / 8B 2 PP n c6 / +H4 c fJ D y7 Q SZ K H pX b 8e 1 ZB wN D zX M W bL fF g O Wi q SU Cf B 4 /c6rQMwSdqqOwtmP03cvvqKdHh7G3kAgIgyTN0AYlUeva2AuWSZXl9OaiqSUCfB4/\nc6rQMwSdqqOwSRaPbOmLYe894R0rqodrQZNcDhZyLvLrVAG7DtfvFTtAHEVvRD0/dfK6/MuR2G3U+\n2mXq6VFzCZvxd1AnyCvmKbP3nMRlaiYUcsVeaugtlWm09PQBIr+\nvaKpJQJ8Hj9zqtAzBJ2qo7BqhnRoC5VhrpYGip5VtaMtDn9p3Psa9Seds50ZHDbuK1AtvS+DaFqwJh11ADFftSjYGlfKqIRGOgGPwtDV/kjgHv1YDZJHgjCb+\nPCcAJilItheTe2Py2UJKPbPVesldP6NCVAA9pjmVdFZgWzTRQHYG3rBFvk5jugwy/\n5wuN8Fqdu15YKXvfkL+vcRE1EwkmXt8X3nxEJWuyfsFUqyjNJrJUiyNRE/\n6OPbteWCl735C63R5LFfamXQ7fF958RCVrsn7BVKsozSa7a+xozgR/+N27Xlgpe9+\nQvaa497tfIWpx0GZDnUQ/f+tVZqH8GV+xxZpJEoYEVMw9hGWThjQIPD9KY/\nPHs0DmgXHfUm85PEtzGj0GpRj3SdGpqCfJGElwGcY5WwG34ghXMbq3br7yhJXveEHbSl8xEtnex4UNbYbhqCrLoWmbtC1wQ0uxVrm+QPqYA84iTAyvfih5MKumow\n[0043] 5、为避免由于瞬间网络中断而导致数据无法回传,由此而造成时间误调整,增加错误处理机制:后台服务启动后发送数据失败,将检测网络情况,如果网络无链接,则启动定时器每隔10秒检测一次网络,如在3分钟内发现网络恢复,将重新发送,超过3分钟做发送失败处理。
法律信息
- 2018-07-31
- 2016-01-27
实质审查的生效
IPC(主分类): H04L 29/08
专利申请号: 201510492674.2
申请日: 2015.08.12
- 2015-12-30
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 |
1
| |
2014-01-01
|
2012-06-11
| | |
2
| |
2014-07-16
|
2013-01-16
| | |
3
| |
2014-12-31
|
2013-06-27
| | |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |