一種基于高分散哈希算法的數(shù)據(jù)采集策略方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及移動互聯(lián)網(wǎng)領(lǐng)域,設(shè)計并實(shí)現(xiàn)了一種利用移動終端的高離散性性質(zhì),在非實(shí)時計算要求的數(shù)據(jù)采集系統(tǒng)中,降低服務(wù)器負(fù)載的方法及裝置。
【背景技術(shù)】
[0002]近年來,隨著移動互聯(lián)網(wǎng)的迅速發(fā)展,目前移動終端設(shè)備數(shù)量呈爆炸級的速度上升,從而帶來了移動應(yīng)用數(shù)量的大規(guī)模增長,截止至2014年底,我國移動智能終端用戶規(guī)模達(dá)10.6億,較2013年增長231.7%,增速遠(yuǎn)超全球同期市場。因此在這種終端設(shè)備越來越多的環(huán)境下,應(yīng)用的運(yùn)維人員急需了解自身應(yīng)用的用戶每天到底在做哪些事情,急需對用戶的行為進(jìn)行數(shù)據(jù)采集,以用來輔助App的運(yùn)維決策。
[0003]目前在移動終端上進(jìn)行數(shù)據(jù)采集主要依靠于在移動應(yīng)用內(nèi)嵌入一個采集裝置,通過調(diào)用此裝置提供的接口進(jìn)行數(shù)據(jù)采集,但對于采集到用戶行為數(shù)據(jù),不同廠商的裝置會有不同的處理策略和方法,目前大致可以分成如下三種:
[0004]實(shí)時回傳策略方法,該策略方法優(yōu)點(diǎn)在于數(shù)據(jù)的實(shí)時性很強(qiáng),用戶的行為數(shù)據(jù)在產(chǎn)生后立刻可以采集回系統(tǒng);缺陷在于大量的用戶數(shù)據(jù)會給數(shù)據(jù)采集后臺造成很大的負(fù)載壓力,系統(tǒng)不得不為實(shí)時性而進(jìn)行擴(kuò)容,以解決高并發(fā)帶來的負(fù)載問題。
[0005]啟動回傳策略方法,該策略主要將數(shù)據(jù)累計到一定的量才傳輸?shù)綌?shù)據(jù)采集系統(tǒng),回傳的時間點(diǎn)在應(yīng)用啟動的時候或者是在應(yīng)用關(guān)閉的時候,因此優(yōu)點(diǎn)是可以將少量的用戶操作進(jìn)行合并,減少對系統(tǒng)的并發(fā)影響;缺陷在于系統(tǒng)壓力仍然有可能隨著接入終端數(shù)量的上升而上升,根據(jù)用戶的實(shí)際使用行為,并發(fā)有可能會集中在特定的幾個時間段爆發(fā)(如早上9點(diǎn)、中午12點(diǎn)、下午4點(diǎn)等時間),也對系統(tǒng)造成很大的負(fù)載,同時由于用戶的使用習(xí)慣不一樣,如應(yīng)用有可能幾天才打開一次,因此可能會帶來數(shù)據(jù)很大的延時。
[0006]定時/延時回傳策略方法:一般服務(wù)器的空閑時間在凌晨時分,因此該策略方法采用了將回傳時間設(shè)置在這個時候,定時發(fā)送批量的采集數(shù)據(jù)到服務(wù)器,該策略好處在于能合理利用了服務(wù)器的空閑時間段;又或者采用隨機(jī)的回傳時間方法將數(shù)據(jù)回傳,但問題在于如果接入設(shè)備量大的情況下,仍然避免不了海量的請求引起服務(wù)器的負(fù)載過量。
【發(fā)明內(nèi)容】
[0007]本發(fā)明的目的是提出一種基于高分散性哈希算法的移動數(shù)據(jù)采集回傳策略方法及裝置,在Android移動終端中應(yīng)用,為移動用戶行為數(shù)據(jù)采集服務(wù)奠定基礎(chǔ)。
[0008]本發(fā)明提出的一種基于高分散性哈希算法的移動數(shù)據(jù)采集回傳策略方法及裝置,其特征包括如下:
[0009]—種基于高分散性哈希算法的移動數(shù)據(jù)采集回傳策略裝置,該裝置包括用戶行為采集模塊、時間種子生成器、哈?;貍鲿r間生成器、時間校正器、定時服務(wù)模塊、數(shù)據(jù)傳輸模塊、文件緩存模塊、后臺接收服務(wù)模塊;所述數(shù)據(jù)傳輸模塊由數(shù)據(jù)加密器組成;
[0010]文件緩存模塊包括傳輸計數(shù)器、啟動計數(shù)器、回傳時間模塊、用戶數(shù)據(jù)緩存模塊;
[0011]具體而言,用戶行為采集模塊與文件緩存模塊連接,文件緩存模塊與時間校正器、數(shù)據(jù)傳輸模塊連接;時間種子生成器與哈希回傳時間生成器連接;哈?;貍鲿r間生成器、時間校正器與定時服務(wù)模塊連接;定時服務(wù)模塊與數(shù)據(jù)傳輸模塊相互交互;數(shù)據(jù)傳輸模塊與后臺接收服務(wù)模塊連接;哈?;貍鲿r間生成器與文件緩存模塊連接。
[0012]基于上述裝置的一種基于高分散性哈希算法的移動數(shù)據(jù)采集回傳策略方法,該方法通過如下步驟實(shí)現(xiàn):
[0013](I)通過植入在Android系統(tǒng)中的jar包裝置,在AndroidApp內(nèi)通過用戶行為采集模塊采集用戶行為數(shù)據(jù),并把記錄的用戶數(shù)據(jù)通過http方式,加密后提交到后臺接收服務(wù)。
[0014](2)采集用戶行為數(shù)據(jù)利用生命周期事件及主動攔截方式進(jìn)行采集,并送到App緩存中暫存起來。
[0015](3) Jar植入后,在App第一次啟動時,使用時間種子生成器生成設(shè)備的唯一標(biāo)不,然后使用加密器對時間種子生成器生成的唯一標(biāo)示進(jìn)行加密處理;同時發(fā)起請求通知服務(wù)端設(shè)備信息,以后將不再通知。
[0016](4)將時間種子生成器生成的唯一標(biāo)示加密結(jié)果使用哈?;貍鲿r間生成器進(jìn)行處理計算,得到一個時間點(diǎn),該時間點(diǎn)為每天該設(shè)備向服務(wù)端回傳數(shù)據(jù)的時間點(diǎn),單位為秒,由植入程序進(jìn)行管理。
[0017](5)植入程序在得到回傳數(shù)據(jù)的時間點(diǎn)后,啟動定時服務(wù)模塊的定時器在指定時間,讀取緩存的用戶行為數(shù)據(jù),以JSON形式的進(jìn)行拼接,發(fā)動后臺服務(wù),使用數(shù)據(jù)加密器對數(shù)據(jù)進(jìn)行加密后回傳到服務(wù)端,回傳成功在計數(shù)器中記錄成功次數(shù),同時計算出回傳成功偏移量。
[0018](6)植入程序會對回傳時間生成器生成的時間點(diǎn)進(jìn)行適度校正,校正的前提是如發(fā)現(xiàn)回傳數(shù)據(jù)不能及時處理,將使用時間校正模塊,基于回傳成功率對該時間點(diǎn)進(jìn)行重新計算,得到新的回傳時間點(diǎn)。
[0019]所述步驟(3)中種子生成器采用基于MD5算法實(shí)現(xiàn),從android系統(tǒng)中獲取imei (有可能獲取不到)+mac地址,兩數(shù)值以字符串形式拼接后通過MD5算法加密,生成設(shè)備種子標(biāo)示。
[0020]所述步驟(4)中,回傳時間生成器使用FNV-1算法對種子標(biāo)示進(jìn)行計算,首先生成32bit的結(jié)果,其中offset_basis和FNV_prime選擇中,F(xiàn)NV-1基礎(chǔ)偏移量offset_basis選擇為2166136261,32bitFNV_prime初始值為16777619,對輸入的種子標(biāo)示的每一個字節(jié),先使用offset_basis乘以FNV_prime得到結(jié)果hash,然后將當(dāng)前標(biāo)示種子中取來的字節(jié)和當(dāng)前的hash值做異或運(yùn)算,如此循環(huán),直至標(biāo)示種子按字節(jié)循環(huán)完畢得到最后的結(jié)果η。將得到的結(jié)果R,將結(jié)果η對86400取模,86400是通過將24小時轉(zhuǎn)成秒得到結(jié)果,結(jié)果η對86400取模后,得到一個整型的數(shù)N,該數(shù)據(jù)即為一天中的第N秒。
[0021]所述步驟(5)中定時器采用后臺服務(wù)形式定時運(yùn)行,將步驟(4)獲取到的數(shù)據(jù)N定義為每天數(shù)據(jù)回傳的時間,發(fā)起請求時將JSON數(shù)據(jù)放在Http數(shù)據(jù)包的報文中,并使用加密模塊的DES對稱算法進(jìn)行加密傳輸,每天只要傳輸成功,傳輸計數(shù)器自增長I,初始值為I;每天植入程序記錄啟動日,啟動日計數(shù)定義為當(dāng)日啟動次數(shù)如大于等于1,,按I記錄至啟動計數(shù)器,初始值為I。一旦成功回傳后,將傳輸計數(shù)器與啟動計數(shù)器恢復(fù)初始值。
[0022]所述步驟(6)中的時間校正模塊,用于將回傳時間進(jìn)行時間重新調(diào)配,調(diào)配發(fā)生時間在App啟動時,植入程序發(fā)起檢測,判斷是否需要校正時間,啟動條件如下:首先計算成功率,成功率=傳輸成功次數(shù)/啟動日數(shù),如果成功率小于50%,啟動校正。校正規(guī)則如下:第一次,使用86400減去回傳時間N(時間翻轉(zhuǎn))得到NI,記入時間校正計數(shù)器X ;此后每次校正,計算I N’ - 3600*X I得到校正后時間NX,若NX>86400,對86400取模。目的是提取用戶的常連通服務(wù)器時間。
[0023]本發(fā)明與現(xiàn)有技術(shù)相比,具有以下明顯的優(yōu)勢和有益效果:
[0024]因?yàn)樵趯?shí)時性要求不高的移動互聯(lián)網(wǎng)數(shù)據(jù)采集系統(tǒng)中,允許一定時間的延時(數(shù)據(jù)一天一算等)的前提下,本發(fā)明成為了一種適宜在這類系統(tǒng)上進(jìn)行數(shù)據(jù)采集時降低服務(wù)器負(fù)載的方法,它利用高分散性哈希算法的天然特質(zhì),針對于在移動互聯(lián)網(wǎng)用戶行為采集方面使用,效果明顯。這樣將大量的設(shè)備發(fā)送請求進(jìn)行了分散疏導(dǎo),從終端這個層次去解決了大量設(shè)備接入問題,能夠很合理的利用服務(wù)器的資源情況,將其服務(wù)能力平均化,同時也可以將數(shù)據(jù)回傳的延時降到最低,實(shí)現(xiàn)系統(tǒng)的均衡、穩(wěn)定的目標(biāo)。
【附圖說明】
[0025]圖1本發(fā)明所述實(shí)施實(shí)例的數(shù)據(jù)采集裝置結(jié)構(gòu)框圖。
[0026]圖2本發(fā)明所述實(shí)施實(shí)例的生成數(shù)據(jù)回傳時間流程圖。
【具體實(shí)施方式】
[0027]本發(fā)明裝置整體中,用戶行為采集模塊提供軟件接口,供App調(diào)用,調(diào)用后將進(jìn)行用戶行為的采集;時間種子生成器、哈希回傳時間生成器、時間校正器以及定時服務(wù)主要對用戶行為數(shù)據(jù)被采集后,使用本發(fā)明中的算法邏輯精確計算出數(shù)據(jù)上傳到后臺接收服務(wù)的時間點(diǎn);數(shù)據(jù)傳輸模塊包括內(nèi)含的數(shù)據(jù)加密器,主要用以將采集到用戶行為數(shù)據(jù)加密后通過https協(xié)議方式回傳至后臺接收服務(wù)。
[0028]以下結(jié)合說明書附圖對本發(fā)明的具體實(shí)施例加以說明。
[0029]請參閱圖1所示,為本發(fā)明的最佳實(shí)施案例提供的基于高分散哈希算法的數(shù)據(jù)采集策略方法的可植入式裝置。其包括以下步驟:
[0030]1、通過JAVA實(shí)現(xiàn)的jar包,供第三方應(yīng)用進(jìn)行植入,通過內(nèi)置的用戶行為采集模塊,對設(shè)備的分辨率、品牌、型號、網(wǎng)絡(luò)類型、操作系統(tǒng)、操作系統(tǒng)版本號、識別碼、經(jīng)瑋度、ip地址等進(jìn)行收集,另外提供接口允許用戶采集使用App的情況:如點(diǎn)擊事件、閱讀、注冊、評論、分享等,此外通過自動捕獲技術(shù)獲取App內(nèi)的錯誤情況;
[0031]2、將采集到的數(shù)據(jù)緩存在文件系統(tǒng)中;
[0032]3、App啟動過程中,生成回傳時間,并永久保存至文件緩存中,請參閱圖2所示:
[0033]a)如果是第一次啟動,將通過時間種子生成器生成如下種子標(biāo)示:f9bl763c6dlc33cldf058d31898d895f,使用哈?;貍鲿r間生成器對種子標(biāo)示進(jìn)行計算處理,得到22536,即回傳時間點(diǎn)為06:15:36。
[0034]b)如果不是第一次啟動,將檢測傳輸成功率,如果傳輸成功率小于50%,那么需要較正,使用時間校正器對22536進(jìn)行處理,處理結(jié)果如下:
[0035]1.如果是第一次進(jìn)行處理那么,使用86400-22536 = 63864,即回傳時間為17:44:24。
[0036]i1.若非第一次校正,如第二次校正,則使用上述說明中辦法進(jìn)行處理,63864-3600*1|mod 86400 = 60264,即 16:44:24。
[0037]c)使用AlarmManager定義延時鬧鈴,通過鬧鈴啟動Android Intent,延時時長根據(jù)上述計算時間與本地時間進(jìn)行相減獲取。
[0038]4、定時服務(wù)時間到后,啟動數(shù)據(jù)傳輸模塊,同時