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