本申請(qǐng)涉及計(jì)算機(jī)技術(shù)領(lǐng)域,尤其涉及一種數(shù)據(jù)處理方法、裝置、電子設(shè)備和存儲(chǔ)介質(zhì)。
背景技術(shù):
對(duì)象體系是作者在客戶(hù)端側(cè)內(nèi)容產(chǎn)品平臺(tái)上的通行證,也是作者在內(nèi)容產(chǎn)品平臺(tái)上獲取價(jià)值的媒介。
相關(guān)技術(shù)中,通過(guò)內(nèi)容中心對(duì)象體系可以實(shí)現(xiàn)作者的對(duì)象數(shù)據(jù)的存儲(chǔ)和處理。在數(shù)據(jù)更新時(shí),內(nèi)容中心對(duì)象體系中的各個(gè)模塊之前需要相互同步,來(lái)通知各個(gè)業(yè)務(wù)方去做相應(yīng)的更新調(diào)整。業(yè)務(wù)模塊耦合嚴(yán)重,業(yè)務(wù)大量定時(shí)任務(wù)全表掃描,效率低下。
技術(shù)實(shí)現(xiàn)要素:
本申請(qǐng)實(shí)施例提供一種數(shù)據(jù)處理方法、裝置、電子設(shè)備和存儲(chǔ)介質(zhì),用以提高數(shù)據(jù)存儲(chǔ)的安全性和數(shù)據(jù)處理效率。
本申請(qǐng)實(shí)施例提供的一種數(shù)據(jù)處理方法,包括:
通過(guò)事件收集模塊從第一數(shù)據(jù)庫(kù)中批量獲取采樣數(shù)據(jù),所述第一數(shù)據(jù)庫(kù)中存儲(chǔ)有與指定業(yè)務(wù)方相關(guān)的各個(gè)對(duì)象對(duì)應(yīng)的采樣數(shù)據(jù);
將獲得的采樣數(shù)據(jù)寫(xiě)入消息隊(duì)列,并通過(guò)所述消息隊(duì)列向事件分發(fā)模塊推送基于所述采樣數(shù)據(jù)生成的數(shù)據(jù)變更消息;
通過(guò)所述事件分發(fā)模塊將所述數(shù)據(jù)變更消息映射為業(yè)務(wù)事件,并存儲(chǔ)至事件池中;
接收到消息獲取方發(fā)送的事件獲取請(qǐng)求時(shí),基于所述事件獲取請(qǐng)求中的索引信息,從所述事件池中獲取與所述索引信息對(duì)應(yīng)的業(yè)務(wù)事件并發(fā)送至所述消息獲取方。
本申請(qǐng)實(shí)施例提供的一種數(shù)據(jù)處理裝置,包括:
收集單元,用于通過(guò)事件收集模塊從第一數(shù)據(jù)庫(kù)中批量獲取采樣數(shù)據(jù),所述第一數(shù)據(jù)庫(kù)中存儲(chǔ)有與指定業(yè)務(wù)方相關(guān)的各個(gè)對(duì)象對(duì)應(yīng)的采樣數(shù)據(jù);
消息單元,用于將獲得的采樣數(shù)據(jù)寫(xiě)入消息隊(duì)列,并通過(guò)所述消息隊(duì)列向事件分發(fā)模塊推送基于所述采樣數(shù)據(jù)生成的數(shù)據(jù)變更消息;
映射單元,用于通過(guò)所述事件分發(fā)模塊將所述數(shù)據(jù)變更消息映射為業(yè)務(wù)事件,并存儲(chǔ)至事件池中;
訂閱單元,用于接收到消息獲取方發(fā)送的事件獲取請(qǐng)求時(shí),基于所述事件獲取請(qǐng)求中的索引信息,從所述事件池中獲取與所述索引信息對(duì)應(yīng)的業(yè)務(wù)事件并發(fā)送至所述消息獲取方。
可選的,所述消息單元具體用于:
根據(jù)所述采樣數(shù)據(jù)對(duì)應(yīng)的模塊標(biāo)識(shí)對(duì)所述采樣數(shù)據(jù)進(jìn)行分區(qū)處理,其中,具有相同模塊標(biāo)識(shí)的采樣數(shù)據(jù)劃分為同一分區(qū),所述采樣數(shù)據(jù)對(duì)應(yīng)的模塊標(biāo)識(shí)是通過(guò)對(duì)所述采樣數(shù)據(jù)的對(duì)象標(biāo)識(shí)進(jìn)行取模得到的;
將分區(qū)后的采樣數(shù)據(jù)并行寫(xiě)入所述消息隊(duì)列。
可選的,所述裝置還包括:
第一讀寫(xiě)單元,用于在所述收集單元通過(guò)事件收集模塊從第一數(shù)據(jù)庫(kù)中批量獲取采樣數(shù)據(jù)之前,獲取所述指定業(yè)務(wù)方在預(yù)置時(shí)間段內(nèi)相關(guān)的各個(gè)對(duì)象對(duì)應(yīng)的采樣數(shù)據(jù);
通過(guò)事物寫(xiě)操作將所述采樣數(shù)據(jù)寫(xiě)入所述第一數(shù)據(jù)庫(kù)。
可選的,所述裝置還包括:
第二讀寫(xiě)單元,用于在所述收集單元通過(guò)事件收集模塊從第一數(shù)據(jù)庫(kù)中批量獲取采樣數(shù)據(jù)之前,獲取所述指定業(yè)務(wù)方在預(yù)置時(shí)間段內(nèi)相關(guān)的各個(gè)對(duì)象對(duì)應(yīng)的基礎(chǔ)數(shù)據(jù),并通過(guò)事物寫(xiě)的方式將所述基礎(chǔ)數(shù)據(jù)寫(xiě)入第二數(shù)據(jù)庫(kù);以及
獲取所述指定業(yè)務(wù)方在預(yù)置時(shí)間段內(nèi)相關(guān)的各個(gè)對(duì)象對(duì)應(yīng)的特征數(shù)據(jù),并將所述特征數(shù)據(jù)寫(xiě)入文檔型的第三數(shù)據(jù)庫(kù)。
可選的,所述裝置還包括:
特征處理單元,用于基于所述特征數(shù)據(jù)對(duì)各個(gè)對(duì)象進(jìn)行等級(jí)劃分,并將劃分結(jié)果發(fā)送給推薦系統(tǒng),以使所述推薦系統(tǒng)針對(duì)不同等級(jí)對(duì)象分發(fā)不同內(nèi)容。
可選的,所述裝置還包括:
業(yè)務(wù)單元,用于在所述收集單元通過(guò)事件收集模塊從第一數(shù)據(jù)庫(kù)中批量獲取采樣數(shù)據(jù)之前,還包括:
通過(guò)預(yù)設(shè)讀寫(xiě)模塊為所述指定業(yè)務(wù)方接入不同類(lèi)型的對(duì)象,并對(duì)所述各個(gè)對(duì)象統(tǒng)一進(jìn)行權(quán)限檢查和頻率控制。
可選的,所述索引信息為事件獲取偏移量;所述訂閱單元具體用于:
根據(jù)所述事件獲取請(qǐng)求中的事件獲取偏移量,確定待獲取的業(yè)務(wù)事件的地址信息;
根據(jù)所述地址信息從所述事件池中獲取對(duì)應(yīng)的業(yè)務(wù)事件,并發(fā)送至所述消息獲取方。
可選的,所述裝置還包括:
清理單元,用于在所述訂閱單元從所述事件池中獲取與所述索引信息對(duì)應(yīng)的業(yè)務(wù)事件并發(fā)送至所述消息獲取方之后,通過(guò)代理服務(wù)器存儲(chǔ)所述消息獲取方對(duì)應(yīng)的事件獲取記錄;
基于所述事件獲取記錄以及預(yù)設(shè)事件清理策略,清理所述事件池中的業(yè)務(wù)事件。
本申請(qǐng)實(shí)施例提供的一種電子設(shè)備,包括處理器和存儲(chǔ)器,其中,所述存儲(chǔ)器存儲(chǔ)有程序代碼,當(dāng)所述程序代碼被所述處理器執(zhí)行時(shí),使得所述處理器執(zhí)行上述任意一種數(shù)據(jù)處理方法的步驟。
本申請(qǐng)實(shí)施例提供一種計(jì)算機(jī)程序產(chǎn)品或計(jì)算機(jī)程序,該計(jì)算機(jī)程序產(chǎn)品或計(jì)算機(jī)程序包括計(jì)算機(jī)指令,該計(jì)算機(jī)指令存儲(chǔ)在計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中。電子設(shè)備的處理器從計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)讀取該計(jì)算機(jī)指令,處理器執(zhí)行該計(jì)算機(jī)指令,使得該電子設(shè)備執(zhí)行上述任意一種數(shù)據(jù)處理方法的步驟。
本申請(qǐng)實(shí)施例提供一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其包括程序代碼,當(dāng)所述程序產(chǎn)品在電子設(shè)備上運(yùn)行時(shí),所述程序代碼用于使所述電子設(shè)備執(zhí)行上述任意一種數(shù)據(jù)處理方法的步驟。
本申請(qǐng)有益效果如下:
本申請(qǐng)實(shí)施例提供了一種數(shù)據(jù)處理方法、裝置、電子設(shè)備和存儲(chǔ)介質(zhì)。由于本申請(qǐng)實(shí)施例解除了業(yè)務(wù)模塊的耦合,引入了事件中心機(jī)制,基于事件中心機(jī)制統(tǒng)一對(duì)象事件管理,實(shí)現(xiàn)了消息實(shí)時(shí)通知和消息數(shù)據(jù)的可靠性,消息數(shù)據(jù)獨(dú)立存儲(chǔ),不占用業(yè)務(wù)系統(tǒng)資源,降低業(yè)務(wù)系統(tǒng)與消息系統(tǒng)之間的耦合,盡量與業(yè)務(wù)隔離,防止消息系統(tǒng)異常影響基本存儲(chǔ)訪問(wèn)。針對(duì)不同的業(yè)務(wù)產(chǎn)品,給用戶(hù)提供安全、高可靠的對(duì)象數(shù)據(jù)存儲(chǔ),并且基于事件中心機(jī)制統(tǒng)一對(duì)象事件管理,提高數(shù)據(jù)存儲(chǔ)的安全性和數(shù)據(jù)處理效率。
本申請(qǐng)的其它特征和優(yōu)點(diǎn)將在隨后的說(shuō)明書(shū)中闡述,并且,部分地從說(shuō)明書(shū)中變得顯而易見(jiàn),或者通過(guò)實(shí)施本申請(qǐng)而了解。本申請(qǐng)的目的和其他優(yōu)點(diǎn)可通過(guò)在所寫(xiě)的說(shuō)明書(shū)、權(quán)利要求書(shū)、以及附圖中所特別指出的結(jié)構(gòu)來(lái)實(shí)現(xiàn)和獲得。
附圖說(shuō)明
此處所說(shuō)明的附圖用來(lái)提供對(duì)本申請(qǐng)的進(jìn)一步理解,構(gòu)成本申請(qǐng)的一部分,本申請(qǐng)的示意性實(shí)施例及其說(shuō)明用于解釋本申請(qǐng),并不構(gòu)成對(duì)本申請(qǐng)的不當(dāng)限定。在附圖中:
圖1為相關(guān)技術(shù)中的一種內(nèi)容中心對(duì)象體系的一個(gè)可選的示意圖;
圖2為本申請(qǐng)實(shí)施例中的一種應(yīng)用場(chǎng)景的一個(gè)可選的示意圖;
圖3為本申請(qǐng)實(shí)施例中的一種數(shù)據(jù)處理方法的實(shí)施流程圖;
圖4為本申請(qǐng)實(shí)施例中的一種業(yè)務(wù)事件映射和存儲(chǔ)的方法流程示意圖;
圖5為本申請(qǐng)實(shí)施例中的另一種數(shù)據(jù)處理方法的實(shí)施流程圖;
圖6為本申請(qǐng)實(shí)施例中的一種分布式對(duì)象云存儲(chǔ)系統(tǒng)的框架示意圖;
圖7為本申請(qǐng)實(shí)施例中的另一種分布式對(duì)象云存儲(chǔ)系統(tǒng)的框架示意圖;
圖8為本申請(qǐng)實(shí)施例中的一種事件中心機(jī)制的具體流程示意圖;
圖9為本申請(qǐng)實(shí)施例中的一個(gè)賬號(hào)數(shù)據(jù)處理的完整方法流程圖;
圖10為本申請(qǐng)實(shí)施例中的一種數(shù)據(jù)處理裝置的組成結(jié)構(gòu)示意圖;
圖11為應(yīng)用本申請(qǐng)實(shí)施例的一種電子設(shè)備的一個(gè)硬件組成結(jié)構(gòu)示意圖。
具體實(shí)施方式
為使本申請(qǐng)實(shí)施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本申請(qǐng)實(shí)施例中的附圖,對(duì)本申請(qǐng)的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例是本申請(qǐng)技術(shù)方案的一部分實(shí)施例,而不是全部的實(shí)施例?;诒旧暾?qǐng)文件中記載的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本申請(qǐng)技術(shù)方案保護(hù)的范圍。
下面對(duì)本申請(qǐng)實(shí)施例中涉及的部分概念進(jìn)行介紹。
事物寫(xiě):在數(shù)據(jù)的存儲(chǔ)過(guò)程中,通常需要確保數(shù)據(jù)的完整性和同步性,即需要對(duì)多塊不同地址的數(shù)據(jù)進(jìn)行同步操作,保證所有數(shù)據(jù)要么全部完整的寫(xiě)入目標(biāo)區(qū)域,要么目標(biāo)區(qū)域保持原狀,沒(méi)有數(shù)據(jù)被寫(xiě)入,這種寫(xiě)操作即為事物寫(xiě)。在本申請(qǐng)實(shí)施例中,可通過(guò)事物寫(xiě)操作寫(xiě)入基礎(chǔ)數(shù)據(jù)和采樣數(shù)據(jù)。
分布式:是計(jì)算機(jī)的一種算法,當(dāng)計(jì)算機(jī)的程序和數(shù)據(jù)通過(guò)網(wǎng)絡(luò)分布在多于一個(gè)的計(jì)算機(jī)上時(shí),計(jì)算就成為“分布式的”。分布式計(jì)算是一門(mén)計(jì)算機(jī)科學(xué),它研究如何把一個(gè)需要非常巨大的計(jì)算能力才能解決的問(wèn)題分成許多小的部分,然后把這些部分分配給許多計(jì)算機(jī)進(jìn)行處理,最后把這些計(jì)算結(jié)果綜合起來(lái)得到最終的結(jié)果。分布式網(wǎng)絡(luò)存儲(chǔ)技術(shù)是將數(shù)據(jù)分散的存儲(chǔ)于多臺(tái)獨(dú)立的機(jī)器設(shè)備上。
令牌桶:令牌桶算法是網(wǎng)絡(luò)流量整形(trafficshaping)和速率限制(ratelimiting)中最常使用的一種算法。典型情況下,令牌桶算法用來(lái)控制發(fā)送到網(wǎng)絡(luò)上的數(shù)據(jù)的數(shù)目,并允許突發(fā)數(shù)據(jù)的發(fā)送。
特征數(shù)據(jù):用于描述對(duì)象相關(guān)的特征。在本申請(qǐng)實(shí)施例中,對(duì)象可以指用戶(hù),或用戶(hù)所登錄的賬號(hào)等。賬號(hào)特征數(shù)據(jù)則是指與用戶(hù)所登錄的賬號(hào)相關(guān)的特征數(shù)據(jù),用于描述信息內(nèi)容或數(shù)據(jù)等,其使用目的在于:識(shí)別內(nèi)容;評(píng)價(jià)內(nèi)容;追蹤內(nèi)容在使用過(guò)程中的變化??苫谫~號(hào)特征分析用戶(hù)畫(huà)像,對(duì)用戶(hù)進(jìn)行內(nèi)容推薦。其中,用戶(hù)畫(huà)像時(shí)一種勾畫(huà)目標(biāo)用戶(hù)、聯(lián)系用戶(hù)訴求與設(shè)計(jì)方向的有效工具。
基礎(chǔ)數(shù)據(jù):用于描述對(duì)象相關(guān)的基本屬性的數(shù)據(jù)。在本申請(qǐng)實(shí)施例中,賬號(hào)基礎(chǔ)數(shù)據(jù)則是指用戶(hù)所登錄賬號(hào)相關(guān)的基本屬性的數(shù)據(jù),例如用戶(hù)的年齡,性別,地址等。本申請(qǐng)實(shí)施例中的特征數(shù)據(jù)和基礎(chǔ)數(shù)據(jù)存儲(chǔ)分離。
采樣數(shù)據(jù):用于描述對(duì)象相關(guān)的流水?dāng)?shù)據(jù)。在本申請(qǐng)實(shí)施例中,賬號(hào)采樣數(shù)據(jù)指用戶(hù)所登錄的賬號(hào)相關(guān)的內(nèi)容變更所產(chǎn)生的流水?dāng)?shù)據(jù),例如用戶(hù)通過(guò)在應(yīng)用上登錄的賬號(hào)發(fā)布新內(nèi)容,或者是更改基本信息(例如頭像,昵稱(chēng))等時(shí),都會(huì)產(chǎn)生變更流水,即本申請(qǐng)實(shí)施例中的賬號(hào)流水?dāng)?shù)據(jù)。
kafka和ckafka:kafka是一種高吞吐量的分布式發(fā)布訂閱消息系統(tǒng),它可以處理消費(fèi)者在網(wǎng)站中的所有動(dòng)作流數(shù)據(jù)。ckafka是基礎(chǔ)架構(gòu)部開(kāi)發(fā)的高性能、高可用消息隊(duì)列,也稱(chēng)消息中間件,其主要用于消息傳輸、網(wǎng)站活動(dòng)追蹤、運(yùn)營(yíng)監(jiān)控、日志聚合、流式處理、事件追蹤、提交日志等等需要高性能的場(chǎng)景。ckafka完全兼容kafka協(xié)議,使kafka用戶(hù)可以零成本遷入ckafka。ckafka基于kafka進(jìn)行了擴(kuò)展開(kāi)發(fā)和優(yōu)化。
事件池:用于記錄所有字段變更事件的存儲(chǔ)池,在本申請(qǐng)實(shí)施例中,字段變更事件是指對(duì)基于采樣數(shù)據(jù)生成的數(shù)據(jù)變更消息,進(jìn)行映射得到的業(yè)務(wù)事件。常見(jiàn)的字段變更事件如:第一次寫(xiě)入、更新、變更為預(yù)期值等。
事務(wù)回滾:事務(wù)是一組組合成邏輯工作單元的操作,雖然系統(tǒng)中可能會(huì)出錯(cuò),但事務(wù)將控制和維護(hù)事務(wù)中每個(gè)操作的一致性和完整性。例如,在將資金從一個(gè)帳戶(hù)轉(zhuǎn)移到另一個(gè)帳戶(hù)的銀行應(yīng)用中,一個(gè)帳戶(hù)將一定的金額貸記到一個(gè)數(shù)據(jù)庫(kù)表中,同時(shí)另一個(gè)帳戶(hù)將相同的金額借記到另一個(gè)數(shù)據(jù)庫(kù)表中。由于計(jì)算機(jī)可能會(huì)因停電、網(wǎng)絡(luò)中斷等而出現(xiàn)故障,因此有可能更新了一個(gè)表中的行,但沒(méi)有更新另一個(gè)表中的行。如果數(shù)據(jù)庫(kù)支持事務(wù),則可以將數(shù)據(jù)庫(kù)操作組成一個(gè)事務(wù),以防止因這些事件而使數(shù)據(jù)庫(kù)出現(xiàn)不一致。如果事務(wù)中的某個(gè)點(diǎn)發(fā)生故障,則所有更新都可以回滾到事務(wù)開(kāi)始之前的狀態(tài)。如果沒(méi)有發(fā)生故障,則通過(guò)以完成狀態(tài)提交事務(wù)來(lái)完成更新。
云技術(shù)(cloudtechnology)是指在廣域網(wǎng)或局域網(wǎng)內(nèi)將硬件、軟件、網(wǎng)絡(luò)等系列資源統(tǒng)一起來(lái),實(shí)現(xiàn)數(shù)據(jù)的計(jì)算、儲(chǔ)存、處理和共享的一種托管技術(shù)。
云技術(shù)基于云計(jì)算商業(yè)模式應(yīng)用的網(wǎng)絡(luò)技術(shù)、信息技術(shù)、整合技術(shù)、管理平臺(tái)技術(shù)、應(yīng)用技術(shù)等的總稱(chēng),可以組成資源池,按需所用,靈活便利。云計(jì)算技術(shù)將變成重要支撐。技術(shù)網(wǎng)絡(luò)系統(tǒng)的后臺(tái)服務(wù)需要大量的計(jì)算、存儲(chǔ)資源,如視頻網(wǎng)站、圖片類(lèi)網(wǎng)站和更多的門(mén)戶(hù)網(wǎng)站。伴隨著互聯(lián)網(wǎng)行業(yè)的高度發(fā)展和應(yīng)用,將來(lái)每個(gè)物品都有可能存在自己的識(shí)別標(biāo)志,都需要傳輸?shù)胶笈_(tái)系統(tǒng)進(jìn)行邏輯處理,不同程度級(jí)別的數(shù)據(jù)將會(huì)分開(kāi)處理,各類(lèi)行業(yè)數(shù)據(jù)皆需要強(qiáng)大的系統(tǒng)后盾支撐,只能通過(guò)云計(jì)算來(lái)實(shí)現(xiàn)。
本申請(qǐng)主要涉及云技術(shù)中的云存儲(chǔ)和數(shù)據(jù)庫(kù)這兩個(gè)方向。云存儲(chǔ)(cloudstorage)是在云計(jì)算概念上延伸和發(fā)展出來(lái)的一個(gè)新的概念,分布式云存儲(chǔ)系統(tǒng)(以下簡(jiǎn)稱(chēng)存儲(chǔ)系統(tǒng))是指通過(guò)集群應(yīng)用、網(wǎng)格技術(shù)以及分布存儲(chǔ)文件系統(tǒng)等功能,將網(wǎng)絡(luò)中大量各種不同類(lèi)型的存儲(chǔ)設(shè)備(存儲(chǔ)設(shè)備也稱(chēng)之為存儲(chǔ)節(jié)點(diǎn))通過(guò)應(yīng)用軟件或應(yīng)用接口集合起來(lái)協(xié)同工作,共同對(duì)外提供數(shù)據(jù)存儲(chǔ)和業(yè)務(wù)訪問(wèn)功能的一個(gè)存儲(chǔ)系統(tǒng)。
數(shù)據(jù)庫(kù)(database),簡(jiǎn)而言之可視為電子化的文件柜,存儲(chǔ)電子文件的處所,用戶(hù)可以對(duì)文件中的數(shù)據(jù)進(jìn)行新增、查詢(xún)、更新、刪除等操作。所謂“數(shù)據(jù)庫(kù)”是以一定方式儲(chǔ)存在一起、能與多個(gè)用戶(hù)共享、具有盡可能小的冗余度、與應(yīng)用程序彼此獨(dú)立的數(shù)據(jù)集合。數(shù)據(jù)庫(kù)管理系統(tǒng)(databasemanagementsystem,dbms)是為管理數(shù)據(jù)庫(kù)而設(shè)計(jì)的電腦軟件系統(tǒng),一般具有存儲(chǔ)、截取、安全保障、備份等基礎(chǔ)功能。
本申請(qǐng)實(shí)施例中提出的用于存儲(chǔ)對(duì)象數(shù)據(jù)的系統(tǒng)即分布式對(duì)象云存儲(chǔ)系統(tǒng),其包含多個(gè)數(shù)據(jù)庫(kù),用于對(duì)對(duì)象數(shù)據(jù)、業(yè)務(wù)事件等分類(lèi)存儲(chǔ),實(shí)現(xiàn)基礎(chǔ)數(shù)據(jù)、特征數(shù)據(jù)、采樣數(shù)據(jù)、業(yè)務(wù)事件等元數(shù)據(jù)的存儲(chǔ)。
下面對(duì)本申請(qǐng)實(shí)施例的設(shè)計(jì)思想進(jìn)行簡(jiǎn)要介紹:
對(duì)象體系是作者在客戶(hù)端側(cè)內(nèi)容產(chǎn)品平臺(tái)上的通行證,也是作者在內(nèi)容產(chǎn)品平臺(tái)上獲取價(jià)值的媒介。通過(guò)內(nèi)容中心對(duì)象體系可以實(shí)現(xiàn)作者的對(duì)象數(shù)據(jù)的存儲(chǔ)和處理。以對(duì)象為賬號(hào)為例,賬號(hào)是數(shù)字時(shí)代的代表,就是每個(gè)人在特定的項(xiàng)目中所代表自己的一些數(shù)字等。
參閱圖1所示,其為相關(guān)技術(shù)中的一種內(nèi)容中心賬號(hào)體系的示意圖。由圖1可知,該內(nèi)容中心賬號(hào)體系對(duì)接的來(lái)源方眾多,包括圖1所示的內(nèi)容開(kāi)放平臺(tái),視頻軟件、瀏覽器、直播軟件等等,維護(hù)了多個(gè)開(kāi)號(hào)服務(wù)、寫(xiě)服務(wù)。賬號(hào)的元數(shù)據(jù)信息存儲(chǔ)在三個(gè)數(shù)據(jù)庫(kù)(database,db)中,即圖1中的賬號(hào)唯一標(biāo)識(shí)(puin)資料db,公眾號(hào)db,媒體平臺(tái)(mediapublic,mp)平臺(tái)db,數(shù)據(jù)存儲(chǔ)分散,也要維護(hù)多個(gè)db,保證每個(gè)db的數(shù)據(jù)的同步。另外,在數(shù)據(jù)更新時(shí),各個(gè)模塊之前需要相互同步,來(lái)通知各個(gè)業(yè)務(wù)方去做相應(yīng)的更新調(diào)整。然而,圖1所示的內(nèi)容中心賬號(hào)體系業(yè)務(wù)模塊耦合嚴(yán)重,缺少事件通知機(jī)制,業(yè)務(wù)大量定時(shí)任務(wù)全表掃描,時(shí)效t+1(當(dāng)天的下一天),效率低下。
有鑒于此,本申請(qǐng)實(shí)施例提出了一種數(shù)據(jù)處理方法、裝置、電子設(shè)備和存儲(chǔ)介質(zhì)。由于本申請(qǐng)實(shí)施例解除了業(yè)務(wù)模塊的耦合,引入了事件中心機(jī)制,基于事件中心機(jī)制統(tǒng)一對(duì)象事件管理,實(shí)現(xiàn)了消息實(shí)時(shí)通知和消息數(shù)據(jù)的可靠性,消息數(shù)據(jù)獨(dú)立存儲(chǔ),不占用業(yè)務(wù)系統(tǒng)資源,降低業(yè)務(wù)系統(tǒng)與消息系統(tǒng)之間的耦合,盡量與業(yè)務(wù)隔離,防止消息系統(tǒng)異常影響基本存儲(chǔ)訪問(wèn)。針對(duì)不同的業(yè)務(wù)產(chǎn)品,給用戶(hù)提供安全、高可靠的對(duì)象數(shù)據(jù)存儲(chǔ),并且基于事件中心機(jī)制統(tǒng)一對(duì)象事件管理,提高數(shù)據(jù)存儲(chǔ)的安全性和數(shù)據(jù)處理效率。
以下結(jié)合說(shuō)明書(shū)附圖對(duì)本申請(qǐng)的優(yōu)選實(shí)施例進(jìn)行說(shuō)明,應(yīng)當(dāng)理解,此處所描述的優(yōu)選實(shí)施例僅用于說(shuō)明和解釋本申請(qǐng),并不用于限定本申請(qǐng),并且在不沖突的情況下,本申請(qǐng)中的實(shí)施例及實(shí)施例中的特征可以相互組合。
如圖2所示,其為本申請(qǐng)實(shí)施例的應(yīng)用場(chǎng)景示意圖。其為本申請(qǐng)實(shí)施例的應(yīng)用場(chǎng)景示意圖。該應(yīng)用場(chǎng)景圖中包括兩個(gè)終端設(shè)備210和若干服務(wù)器220。終端設(shè)備210與服務(wù)器220之間可以通過(guò)通信網(wǎng)絡(luò)進(jìn)行通信。
需要說(shuō)明的是,圖2所示只是舉例說(shuō)明,實(shí)際上終端設(shè)備和服務(wù)器的數(shù)量不受限制,在本申請(qǐng)實(shí)施例中不做具體限定。
在一種可選的實(shí)施方式中,通信網(wǎng)絡(luò)是有線網(wǎng)絡(luò)或無(wú)線網(wǎng)絡(luò)。終端210以及服務(wù)器220可以通過(guò)有線或無(wú)線通信方式進(jìn)行直接或間接地連接,本申請(qǐng)?jiān)诖瞬蛔鱿拗啤?/p>
在本申請(qǐng)實(shí)施例中,終端設(shè)備210為用戶(hù)使用的電子設(shè)備,該電子設(shè)備可以是個(gè)人計(jì)算機(jī)、手機(jī)、平板電腦、筆記本、電子書(shū)閱讀器、車(chē)載終端等具有一定計(jì)算能力并且運(yùn)行有即時(shí)通信類(lèi)軟件及網(wǎng)站或者社交類(lèi)軟件及網(wǎng)站的電子設(shè)備。各終端設(shè)備210通過(guò)無(wú)線網(wǎng)絡(luò)與服務(wù)器220連接,服務(wù)器220可以是獨(dú)立的物理服務(wù)器,也可以是多個(gè)物理服務(wù)器構(gòu)成的服務(wù)器集群或者分布式系統(tǒng),還可以是提供云服務(wù)、云數(shù)據(jù)庫(kù)、云計(jì)算、云函數(shù)、云存儲(chǔ)、網(wǎng)絡(luò)服務(wù)、云通信、中間件服務(wù)、域名服務(wù)、安全服務(wù)、內(nèi)容分發(fā)網(wǎng)絡(luò)(contentdeliverynetwork,cdn)、以及大數(shù)據(jù)和人工智能平臺(tái)等基礎(chǔ)云計(jì)算服務(wù)的云服務(wù)器。終端可以是智能手機(jī)、平板電腦、筆記本電腦、臺(tái)式計(jì)算機(jī)、智能音箱、智能手表等,但并不局限于此。終端以及服務(wù)器可以通過(guò)有線或無(wú)線通信方式進(jìn)行直接或間接地連接,本申請(qǐng)?jiān)诖瞬蛔鱿拗啤?/p>
其中,用戶(hù)可通過(guò)終端設(shè)備210瀏覽其他用戶(hù)分享的內(nèi)容,終端設(shè)備210上可以安裝有分享內(nèi)容相關(guān)的應(yīng)用,例如視頻軟件,短視頻軟件,瀏覽器,內(nèi)容分享平臺(tái)等,本申請(qǐng)實(shí)施例涉及的應(yīng)用可以是軟件,也可以是網(wǎng)頁(yè)、小程序等客戶(hù)端,服務(wù)器則是與軟件或是網(wǎng)頁(yè)、小程序等相對(duì)應(yīng)的后臺(tái)服務(wù)器,不限制應(yīng)用的具體類(lèi)型。
在本申請(qǐng)實(shí)施例中,用戶(hù)可通過(guò)對(duì)象登錄終端設(shè)備210上的相關(guān)應(yīng)用來(lái)發(fā)布新的內(nèi)容,修改基礎(chǔ)信息等等,在這些對(duì)象數(shù)據(jù)發(fā)生變化時(shí),都會(huì)產(chǎn)生變更流水,即本申請(qǐng)中的采樣數(shù)據(jù),本文主要是以賬號(hào)流水?dāng)?shù)據(jù)進(jìn)行舉例說(shuō)明的。需要說(shuō)明的是,本申請(qǐng)實(shí)施例中的數(shù)據(jù)處理方法可以由服務(wù)器或終端設(shè)備單獨(dú)執(zhí)行,也可以由服務(wù)器和終端設(shè)備共同執(zhí)行。
需要說(shuō)明的是,本申請(qǐng)實(shí)施例中的采樣數(shù)據(jù),基礎(chǔ)數(shù)據(jù)和特征數(shù)據(jù)等都是在用戶(hù)已知并同意的前提下采集的,關(guān)于這些數(shù)據(jù)的采集和處理主要是為了提升業(yè)務(wù)性能。例如,可以事先與用戶(hù)簽訂相關(guān)協(xié)議,或者當(dāng)用戶(hù)在一些關(guān)鍵節(jié)點(diǎn)進(jìn)行操作時(shí),可向用戶(hù)進(jìn)行提示,并在用戶(hù)同意的前提下采集數(shù)據(jù)等等,以避免平臺(tái)侵犯用戶(hù)隱私數(shù)據(jù)。
另外需要說(shuō)明的是,如本申請(qǐng)所公開(kāi)的數(shù)據(jù)處理方法或裝置,其中這些數(shù)據(jù)可保存在區(qū)塊鏈上。其中多個(gè)服務(wù)器可組成為一區(qū)塊鏈,而服務(wù)器為區(qū)塊鏈上的節(jié)點(diǎn)。
下面結(jié)合上述描述的應(yīng)用場(chǎng)景,參考附圖來(lái)描述本申請(qǐng)示例性實(shí)施方式提供的數(shù)據(jù)處理方法,需要注意的是,上述應(yīng)用場(chǎng)景僅是為了便于理解本申請(qǐng)的精神和原理而示出,本申請(qǐng)的實(shí)施方式在此方面不受任何限制。
參閱圖3所示,其為本申請(qǐng)實(shí)施例提供的一種數(shù)據(jù)處理方法的實(shí)施流程圖,以服務(wù)器執(zhí)行為例進(jìn)行舉例說(shuō)明,該方法的具體實(shí)施流程如下:
s31:通過(guò)事件收集模塊從第一數(shù)據(jù)庫(kù)中批量獲取采樣數(shù)據(jù),第一數(shù)據(jù)庫(kù)中存儲(chǔ)有與指定業(yè)務(wù)方相關(guān)的各個(gè)對(duì)象對(duì)應(yīng)的采樣數(shù)據(jù);
例如瀏覽器、新聞軟件、短視頻軟件、內(nèi)容分享平臺(tái)等應(yīng)用,在這些應(yīng)用上,用戶(hù)可以發(fā)布一些文章,新聞,日志,短視頻,直播等內(nèi)容,這些進(jìn)行內(nèi)容分享的用戶(hù)可以稱(chēng)作作者,作者通過(guò)在應(yīng)用上登錄的賬號(hào)發(fā)布新內(nèi)容,或者是更改基本信息(例如頭像,昵稱(chēng))等時(shí),都會(huì)產(chǎn)生變更流水,即本申請(qǐng)實(shí)施例中的作者賬號(hào)相關(guān)的賬號(hào)流水?dāng)?shù)據(jù)。
s32:將獲得的采樣數(shù)據(jù)寫(xiě)入消息隊(duì)列,并通過(guò)消息隊(duì)列向事件分發(fā)模塊推送基于采樣數(shù)據(jù)生成的數(shù)據(jù)變更消息;
其中,消息隊(duì)列可以為ckafka,本申請(qǐng)實(shí)施例中基于ckafka來(lái)實(shí)現(xiàn)消息的推送,具體的,通過(guò)在ckafka中開(kāi)啟分割器(partitioner)的配置,使用hase選項(xiàng),通過(guò)puin進(jìn)行分區(qū)。
s33:通過(guò)事件分發(fā)模塊將數(shù)據(jù)變更消息映射為業(yè)務(wù)事件,并存儲(chǔ)至事件池中;
s34:接收到消息獲取方發(fā)送的事件獲取請(qǐng)求時(shí),基于事件獲取請(qǐng)求中的索引信息,從事件池中獲取與索引信息對(duì)應(yīng)的業(yè)務(wù)事件并發(fā)送至消息獲取方。
其中,消息獲取方即訂閱方,推薦系統(tǒng)等。在本申請(qǐng)實(shí)施例中,事件分發(fā)模塊主要用于將消息隊(duì)列推送的數(shù)據(jù)變更消息映射為業(yè)務(wù)事件后,進(jìn)行事件分離和分發(fā),即根據(jù)一定的規(guī)則配置,進(jìn)行分類(lèi),然后分發(fā)給不同的消息獲取方,并存儲(chǔ)至事件池中與相應(yīng)的消息獲取方相對(duì)應(yīng)的事件數(shù)據(jù)庫(kù)中,由消息獲取方主動(dòng)從事件池中拉取業(yè)務(wù)事件,以實(shí)現(xiàn)對(duì)象變更信息的推送。
在上述實(shí)施方式中,解除了業(yè)務(wù)模塊的耦合,引入了事件中心機(jī)制,基于事件中心機(jī)制統(tǒng)一對(duì)象事件管理,實(shí)現(xiàn)了消息實(shí)時(shí)通知和消息數(shù)據(jù)的可靠性,消息數(shù)據(jù)獨(dú)立存儲(chǔ),不占用業(yè)務(wù)系統(tǒng)資源,降低業(yè)務(wù)系統(tǒng)與消息系統(tǒng)之間的耦合,盡量與業(yè)務(wù)隔離,防止消息系統(tǒng)異常影響基本存儲(chǔ)訪問(wèn)。針對(duì)不同的業(yè)務(wù)產(chǎn)品,給用戶(hù)提供安全、高可靠的對(duì)象數(shù)據(jù)存儲(chǔ),并且基于事件中心機(jī)制統(tǒng)一對(duì)象事件管理,提高數(shù)據(jù)存儲(chǔ)的安全性和數(shù)據(jù)處理效率。
在一種可選的實(shí)施方式中,可以按照如圖4所示的流程圖實(shí)施s33,其為本申請(qǐng)實(shí)施例中的一種業(yè)務(wù)事件映射和存儲(chǔ)的方法流程示意圖,包括以下步驟:
s401:通過(guò)事件分發(fā)模塊獲取預(yù)設(shè)的事件映射配置信息,基于事件映射配置信息,確定數(shù)據(jù)變更消息中的變更字段對(duì)應(yīng)的業(yè)務(wù)事件類(lèi)型后,將數(shù)據(jù)變更消息映射為業(yè)務(wù)事件類(lèi)型對(duì)應(yīng)的業(yè)務(wù)事件,其中,事件映射配置信息用于表征字段與業(yè)務(wù)事件類(lèi)型之間的映射關(guān)系;
需要說(shuō)明的是,本申請(qǐng)實(shí)施例中的字段與業(yè)務(wù)事件類(lèi)型之間為多對(duì)多的映射關(guān)系,即一個(gè)字段可以對(duì)應(yīng)一個(gè)或多個(gè)業(yè)務(wù)事件類(lèi)型,一個(gè)業(yè)務(wù)事件類(lèi)型可以對(duì)應(yīng)一個(gè)或多個(gè)字段。
例如,字段x1對(duì)應(yīng)業(yè)務(wù)事件類(lèi)型a和業(yè)務(wù)事件類(lèi)型b,字段x2對(duì)應(yīng)業(yè)務(wù)事件類(lèi)型b,字段x3對(duì)應(yīng)業(yè)務(wù)事件類(lèi)型b和業(yè)務(wù)事件類(lèi)型c,字段x4對(duì)應(yīng)業(yè)務(wù)事件類(lèi)型d,字段x5對(duì)應(yīng)業(yè)務(wù)事件類(lèi)型e和業(yè)務(wù)事件類(lèi)型f等等。
s402:通過(guò)事件分發(fā)模塊獲取預(yù)設(shè)的訂閱映射配置信息,基于訂閱映射配置信息,確定各個(gè)業(yè)務(wù)事件對(duì)應(yīng)的消息獲取方,其中,訂閱映射配置信息用于表征業(yè)務(wù)事件與消息獲取方之間的映射關(guān)系;
在本申請(qǐng)實(shí)施例中,訂閱映射配置信息可以是預(yù)設(shè)設(shè)置好的業(yè)務(wù)事件與訂閱方之間的映射表,各個(gè)業(yè)務(wù)事件各自對(duì)應(yīng)有相應(yīng)的訂閱方。
s403:根據(jù)各個(gè)業(yè)務(wù)事件對(duì)應(yīng)的消息獲取方,將各個(gè)業(yè)務(wù)事件寫(xiě)入到事件池中對(duì)應(yīng)的事件數(shù)據(jù)庫(kù),其中,不同消息獲取方在事件池中對(duì)應(yīng)不同的事件數(shù)據(jù)庫(kù)。
由于本申請(qǐng)中的各個(gè)業(yè)務(wù)事件都對(duì)應(yīng)有相應(yīng)的消息獲取方,且事件池中有多個(gè)事件數(shù)據(jù)庫(kù),不同的事件數(shù)據(jù)庫(kù)對(duì)應(yīng)不同的消息獲取方。因而,在將業(yè)務(wù)事件寫(xiě)入事件池中時(shí),具體是根據(jù)各個(gè)業(yè)務(wù)事件對(duì)應(yīng)的消息獲取方來(lái)寫(xiě)入的。
例如,消息獲取方1對(duì)應(yīng)事件數(shù)據(jù)庫(kù)1,消息獲取方2對(duì)應(yīng)事件數(shù)據(jù)庫(kù)2,消息獲取方3對(duì)應(yīng)事件數(shù)據(jù)庫(kù)3等等。當(dāng)業(yè)務(wù)事件1對(duì)應(yīng)消息獲取方2時(shí),則應(yīng)將業(yè)務(wù)事件1存儲(chǔ)于事件池中的事件數(shù)據(jù)庫(kù)2,以此類(lèi)推即可。
在上述實(shí)施方式中,通過(guò)事件中心機(jī)制,實(shí)現(xiàn)消息實(shí)時(shí)通知。
在一種可選的實(shí)施方式中,數(shù)據(jù)變更消息包含多個(gè)對(duì)應(yīng)同一業(yè)務(wù)事件類(lèi)型的變更字段;該情況下,在將數(shù)據(jù)變更消息映射為業(yè)務(wù)事件類(lèi)型對(duì)應(yīng)的業(yè)務(wù)事件時(shí),需要分別將數(shù)據(jù)變更消息中的各個(gè)變更字段映射為業(yè)務(wù)事件類(lèi)型對(duì)應(yīng)的業(yè)務(wù)事件。
例如,數(shù)據(jù)變更消息包含三個(gè)字段:變更字段1,變更字段2,變更字段3。其中,變更字段1是字段x1,對(duì)應(yīng)業(yè)務(wù)事件類(lèi)型a和業(yè)務(wù)事件類(lèi)型b,變更字段2是字段x2,對(duì)應(yīng)業(yè)務(wù)事件類(lèi)型b,變更字段3是字段x3,對(duì)應(yīng)業(yè)務(wù)事件類(lèi)型b和業(yè)務(wù)事件類(lèi)型c。其中,上述所列舉的可以是一條數(shù)據(jù)變更消息包含三個(gè)變更字段,也可以是一條數(shù)據(jù)變更消息包含一個(gè)變更字段,共三條數(shù)據(jù)變更消息。
該情況下,需要將變更字段1,變更字段2,變更字段3分別映射為業(yè)務(wù)事件類(lèi)型對(duì)應(yīng)的業(yè)務(wù)事件。即,將變更字段1映射為a類(lèi)型的業(yè)務(wù)事件1和b類(lèi)型的業(yè)務(wù)事件2;將變更字段2映射為b類(lèi)型的業(yè)務(wù)事件3;將變更字段3映射為b類(lèi)型的業(yè)務(wù)事件4和c類(lèi)型的業(yè)務(wù)事件5。
在上述實(shí)施方式中,在將數(shù)據(jù)變更消息映射為業(yè)務(wù)事件類(lèi)型對(duì)應(yīng)的業(yè)務(wù)事件之后,還可以將基于多個(gè)對(duì)應(yīng)同一業(yè)務(wù)事件類(lèi)型的變更字段映射得到的多個(gè)業(yè)務(wù)事件,進(jìn)行事件合并。
例如,對(duì)于上述所列舉的這三個(gè)變更字段,都對(duì)應(yīng)有同一業(yè)務(wù)事件類(lèi)型b,對(duì)應(yīng)的映射得到的業(yè)務(wù)事件為業(yè)務(wù)事件2,業(yè)務(wù)事件3和業(yè)務(wù)事件4,對(duì)于這三個(gè)同一類(lèi)型的業(yè)務(wù)事件,可合并為一個(gè)業(yè)務(wù)事件,例如業(yè)務(wù)事件6。
綜上,將三個(gè)變更字段進(jìn)行映射得到的業(yè)務(wù)事件為:業(yè)務(wù)事件1,業(yè)務(wù)事件5和業(yè)務(wù)事件6。
在上述實(shí)施方式中,通過(guò)記錄事件流水,支持流水回放,支持事件合并,可以有效減少存儲(chǔ)操作和事件沖突。
在一種可選的實(shí)施方式中,在將獲得的采樣數(shù)據(jù)寫(xiě)入消息隊(duì)列時(shí),可進(jìn)一步分區(qū)處理,具體過(guò)程如下:
根據(jù)采樣數(shù)據(jù)對(duì)應(yīng)的模塊標(biāo)識(shí)對(duì)采樣數(shù)據(jù)進(jìn)行分區(qū)處理,將分區(qū)后的采樣數(shù)據(jù)并行寫(xiě)入消息隊(duì)列,其中,具有相同模塊標(biāo)識(shí)的采樣數(shù)據(jù)劃分為同一分區(qū),采樣數(shù)據(jù)對(duì)應(yīng)的模塊標(biāo)識(shí)是通過(guò)對(duì)采樣數(shù)據(jù)的對(duì)象標(biāo)識(shí)進(jìn)行取模得到的。
在本申請(qǐng)實(shí)施例中,對(duì)象標(biāo)識(shí)指對(duì)象唯一標(biāo)識(shí),例如賬號(hào)標(biāo)識(shí),可用puin表示,模塊標(biāo)識(shí)(id)可表示為modid,modid是指對(duì)puin進(jìn)行取模生成的模塊id,對(duì)于不同的puin,通過(guò)取模得到的modid可能相同。
因而,通過(guò)上述實(shí)施方式,將modid相同的賬號(hào)流水?dāng)?shù)據(jù)劃分為同一分區(qū),將數(shù)據(jù)寫(xiě)入到多個(gè)隊(duì)列中,然后通過(guò)多任務(wù)寫(xiě)入到ckafka中,可保證單個(gè)分區(qū)數(shù)據(jù)局部有序。
在本申請(qǐng)實(shí)施例中,還可通過(guò)統(tǒng)一讀寫(xiě)服務(wù)對(duì)賬號(hào)流水?dāng)?shù)據(jù),賬號(hào)基礎(chǔ)數(shù)據(jù)和賬號(hào)特征數(shù)據(jù)進(jìn)行讀寫(xiě),不需要維護(hù)多個(gè)讀寫(xiě)服務(wù),有效提高了系統(tǒng)的可維護(hù)性。具體的,這些數(shù)據(jù)統(tǒng)一存儲(chǔ)在數(shù)據(jù)支持層,但是各類(lèi)數(shù)據(jù)各自對(duì)應(yīng)有不同的存儲(chǔ)位置,便于后續(xù)維護(hù),可有效減少數(shù)據(jù)不一致的情況,提高數(shù)據(jù)存儲(chǔ)的安全可用性。
一種可選的實(shí)施方式為,在通過(guò)事件收集模塊從第一數(shù)據(jù)庫(kù)中批量獲取采樣數(shù)據(jù)之前,通過(guò)預(yù)設(shè)讀寫(xiě)模塊為指定業(yè)務(wù)方接入不同類(lèi)型的對(duì)象,并對(duì)各個(gè)對(duì)象統(tǒng)一進(jìn)行權(quán)限檢查和頻率控制。
在本申請(qǐng)實(shí)施例中,預(yù)設(shè)讀寫(xiě)模塊指用于提供統(tǒng)一讀寫(xiě)服務(wù)的模塊,通過(guò)統(tǒng)一讀寫(xiě)服務(wù)可以為業(yè)務(wù)方接入不同類(lèi)型的對(duì)象,例如接入不同類(lèi)型的賬號(hào)。另外,在進(jìn)行讀寫(xiě)數(shù)據(jù)時(shí),還需要進(jìn)行權(quán)限檢查和頻率控制。其中,權(quán)限檢查具體是指判斷用戶(hù)是否具有讀寫(xiě)權(quán)限等。上游的接入層會(huì)統(tǒng)一調(diào)用讀寫(xiě)服務(wù),但并非所有的用戶(hù)都可以調(diào)用,通過(guò)權(quán)限檢查可以做到權(quán)限保護(hù)的工作。例如,權(quán)限指可以向數(shù)據(jù)庫(kù)中存數(shù)據(jù),可以發(fā)一些事件消息等,在進(jìn)行權(quán)限檢查時(shí),需要檢查用戶(hù)是否能正常的讀寫(xiě)數(shù)據(jù),是否有權(quán)限發(fā)一些事件等。
其中,頻率控制則是考慮到了負(fù)載的要求,由于底層的機(jī)器資源是有限的,系統(tǒng)本身有一定的負(fù)載能力,比如一分鐘只能支持一萬(wàn)個(gè)請(qǐng)求時(shí),如果一分鐘接收到了兩萬(wàn)個(gè)請(qǐng)求,中央處理器(centralprocessingunit,cpu)和內(nèi)存不能支持這么多流量。
在本申請(qǐng)實(shí)施例中,為了保持負(fù)載均衡,防止突發(fā)流量導(dǎo)致服務(wù)崩掉,而對(duì)請(qǐng)求進(jìn)行頻率控制,具體可通過(guò)令牌桶有效控制進(jìn)入系統(tǒng)的請(qǐng)求量,同時(shí)允許突發(fā)流量,來(lái)對(duì)系統(tǒng)進(jìn)行過(guò)載保護(hù)。
在上述實(shí)施方式中,通過(guò)統(tǒng)一收攏讀寫(xiě)服務(wù),能夠支持多服務(wù)接入訂閱,當(dāng)訂閱方和訂閱內(nèi)容變更時(shí)不需要服務(wù)變更,并且增加了統(tǒng)一讀寫(xiě)鑒權(quán)、字段鑒權(quán)(appid+skey)、過(guò)載保護(hù)等,可有效屏蔽底層實(shí)現(xiàn)。
在一種可選的實(shí)施方式中,在通過(guò)事件收集模塊從第一數(shù)據(jù)庫(kù)中批量獲取采樣數(shù)據(jù)之前,還需要獲取指定業(yè)務(wù)方在預(yù)置時(shí)間段內(nèi)相關(guān)的各個(gè)對(duì)象對(duì)應(yīng)的采樣數(shù)據(jù);通過(guò)事物寫(xiě)操作將采樣數(shù)據(jù)寫(xiě)入第一數(shù)據(jù)庫(kù)。
其中,預(yù)置時(shí)間段可以是幾個(gè)小時(shí),一天,一周等等,可根據(jù)實(shí)際情況進(jìn)行設(shè)置。在上述實(shí)施方式中,寫(xiě)采樣數(shù)據(jù)時(shí)采用事物寫(xiě)的方式,可以有效確保數(shù)據(jù)可回溯。
在一種可選的實(shí)施方式中,在通過(guò)事件收集模塊從第一數(shù)據(jù)庫(kù)中批量獲取采樣數(shù)據(jù)之前,還需要獲取指定業(yè)務(wù)方在預(yù)置時(shí)間段內(nèi)相關(guān)的各個(gè)對(duì)象對(duì)應(yīng)的基礎(chǔ)數(shù)據(jù),并通過(guò)事物寫(xiě)的方式將基礎(chǔ)數(shù)據(jù)寫(xiě)入第二數(shù)據(jù)庫(kù);以及,獲取指定業(yè)務(wù)方在預(yù)置時(shí)間段內(nèi)相關(guān)的各個(gè)對(duì)象對(duì)應(yīng)的特征數(shù)據(jù),并將特征數(shù)據(jù)寫(xiě)入文檔型的第三數(shù)據(jù)庫(kù)。
其中,文檔型數(shù)據(jù)庫(kù)引入了特征數(shù)據(jù)表,可存儲(chǔ)用戶(hù)畫(huà)像的大json字段,特征標(biāo)簽等。相比于相關(guān)技術(shù)中,在關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)(mysql)中使用innodb(是mysql的數(shù)據(jù)庫(kù)引擎之一)存儲(chǔ)用戶(hù)畫(huà)像的特征字段的大腳本(json)的方式,更加安全可靠。
在上述實(shí)施方式中,寫(xiě)基礎(chǔ)數(shù)據(jù)時(shí)采用事物寫(xiě)的方式,確保數(shù)據(jù)的可回溯。另外,本申請(qǐng)?zhí)岢隽速~號(hào)基礎(chǔ)信息與賬號(hào)特征信息分離的方案,分離賬號(hào)基礎(chǔ)信息和賬號(hào)特征信息,使用文檔型數(shù)據(jù)庫(kù)存儲(chǔ)賬號(hào)特征數(shù)據(jù),降低了存儲(chǔ)成本,提高的數(shù)據(jù)的可維護(hù)性和可用性。
在一種可選的實(shí)施方式中,還可基于特征數(shù)據(jù)對(duì)各個(gè)對(duì)象進(jìn)行等級(jí)劃分,并將劃分結(jié)果發(fā)送給推薦系統(tǒng),以使推薦系統(tǒng)針對(duì)不同等級(jí)對(duì)象分發(fā)不同內(nèi)容。
在本申請(qǐng)實(shí)施例中,對(duì)各個(gè)對(duì)象進(jìn)行等級(jí)劃分時(shí),可通過(guò)算法模型檢測(cè)優(yōu)質(zhì)對(duì)象、低質(zhì)對(duì)象、對(duì)象品類(lèi),對(duì)接內(nèi)容鏈路,將各類(lèi)對(duì)象特征提供給推薦側(cè)使用,針對(duì)不同等級(jí)對(duì)象分發(fā)不同內(nèi)容。
在一種可選的實(shí)施方式中,索引信息為事件獲取偏移量,指上次最后一次獲取事件的位置與最新事件位置的距離;在基于事件獲取請(qǐng)求中的索引信息,從事件池中獲取與索引信息對(duì)應(yīng)的業(yè)務(wù)事件并發(fā)送至消息獲取方時(shí),具體過(guò)程如下:
根據(jù)事件獲取請(qǐng)求中的事件獲取偏移量,確定待獲取的業(yè)務(wù)事件的地址信息;根據(jù)地址信息從事件池中獲取對(duì)應(yīng)的業(yè)務(wù)事件,并發(fā)送至消息獲取方。其中,事件獲取偏移量也稱(chēng)拉取偏移量,消息獲取方傳入拉取偏移量,根據(jù)拉取偏移量,通過(guò)事件獲取代理服務(wù)器(proxy)來(lái)拉取事件,并發(fā)送至相應(yīng)的訂閱方。
其中,事件獲取偏移量指上次最后一次獲取事件的位置與最新事件位置的距離,基于該信息即可確定最新事件位置,即地址信息,具體表示待拉取的業(yè)務(wù)事件在事件池中的哪一個(gè)事件數(shù)據(jù)庫(kù)中的哪一位置處。
在本申請(qǐng)實(shí)施例中,之所以采用由消息獲取方拉取(pull)事件的方式,是因?yàn)橥扑停╬ush)模式很難適應(yīng)消費(fèi)速率不同的消費(fèi)者(consumer,即消息獲取方),因?yàn)橄⒌陌l(fā)送速率由緩存代理(broker)決定,可能會(huì)導(dǎo)致consumer來(lái)不及處理(拒絕服務(wù),網(wǎng)絡(luò)阻塞),pull模式可以讓消費(fèi)者使用適合自身的速率來(lái)消費(fèi),每次訂閱方獲取的值為最終態(tài)的全量訂閱字段。
在一種可選的實(shí)施方式中,在從事件池中獲取與索引信息對(duì)應(yīng)的業(yè)務(wù)事件并發(fā)送至消息獲取方之后,還可進(jìn)一步對(duì)事件池中的業(yè)務(wù)事件進(jìn)行清理,如圖5所示,其為本申請(qǐng)實(shí)施例中的又一種數(shù)據(jù)處理方法的實(shí)施流程圖,包括以下步驟:
s51:通過(guò)事件收集模塊從第一數(shù)據(jù)庫(kù)中批量獲取采樣數(shù)據(jù);
s52:將獲得的采樣數(shù)據(jù)寫(xiě)入消息隊(duì)列,并通過(guò)消息隊(duì)列向事件分發(fā)模塊推送基于采樣數(shù)據(jù)生成的數(shù)據(jù)變更消息;
s53:通過(guò)事件分發(fā)模塊將數(shù)據(jù)變更消息映射為業(yè)務(wù)事件,并存儲(chǔ)至事件池中;
s54:接收到消息獲取方發(fā)送的事件獲取請(qǐng)求時(shí),基于事件獲取請(qǐng)求中的索引信息,從事件池中獲取與索引信息對(duì)應(yīng)的業(yè)務(wù)事件并發(fā)送至消息獲取方;
s55:通過(guò)代理服務(wù)器存儲(chǔ)消息獲取方對(duì)應(yīng)的事件獲取記錄;
s56:基于事件獲取記錄以及預(yù)設(shè)事件清理策略,清理事件池中的業(yè)務(wù)事件。
其中,事件獲取記錄也可稱(chēng)作消費(fèi)記錄。例如,預(yù)設(shè)事件清理策略為按天清理,通過(guò)在proxy存儲(chǔ)當(dāng)前訂閱方消費(fèi)記錄,用以進(jìn)行告警和事件清理。
在一種可選的實(shí)施方式中,本申請(qǐng)實(shí)施例還提供一種賬號(hào)數(shù)據(jù)處理系統(tǒng),參閱圖6所示,其為本申請(qǐng)實(shí)施例中的一種分布式賬號(hào)云存儲(chǔ)系統(tǒng)的框架示意圖,主要用于介紹業(yè)務(wù)層面的架構(gòu),該系統(tǒng)包括:業(yè)務(wù)層、平臺(tái)管理層,能力層和數(shù)據(jù)支持層(又稱(chēng)數(shù)據(jù)支持層)。
其中,業(yè)務(wù)層用于對(duì)接不同的業(yè)務(wù)方,為各個(gè)平臺(tái)提供有效的賬號(hào)數(shù)據(jù)支撐以及作者生態(tài)管理。即業(yè)務(wù)層主要用于處理一些與用戶(hù)對(duì)接的業(yè)務(wù),包括對(duì)作者進(jìn)行一些管理,對(duì)作者的信息進(jìn)行統(tǒng)計(jì),分析作者的數(shù)據(jù),給寫(xiě)內(nèi)容的作者做一些結(jié)算工作,分等級(jí)、分流量,做用戶(hù)畫(huà)像等。例如圖6中所示的:作者引入、作者管理、作者信息查詢(xún)、消息通知、作者線索、作者結(jié)算等級(jí)、作者流量等級(jí)、作者畫(huà)像等。
其中,消息通知是指系統(tǒng)內(nèi)部管理的一個(gè)功能,比如用戶(hù)修改了賬號(hào)或頭像等時(shí),會(huì)觸發(fā)一個(gè)消息并通知給相關(guān)的管理人員,例如運(yùn)營(yíng)。
另外,如圖6所示,本申請(qǐng)實(shí)施例中的業(yè)務(wù)方可以是圖6所示的應(yīng)用1,應(yīng)用2,應(yīng)用3,運(yùn)營(yíng),應(yīng)用4等,這些屬于本申請(qǐng)實(shí)施例中的賬號(hào)以及內(nèi)容信息的來(lái)源渠道,本申請(qǐng)實(shí)施例中的指定業(yè)務(wù)方可以是圖6所列舉的這些應(yīng)用或運(yùn)營(yíng),賬號(hào)主要是指作者在這些應(yīng)用中注冊(cè)、登錄的賬號(hào),或運(yùn)營(yíng)人員的賬號(hào),內(nèi)容信息主要是指作者通過(guò)登錄賬號(hào)在應(yīng)用發(fā)布、上傳的內(nèi)容。其中,運(yùn)營(yíng)作為業(yè)務(wù)方時(shí),相當(dāng)于運(yùn)營(yíng)管理平臺(tái),表示運(yùn)營(yíng)人員可以直接上傳圖片、上傳內(nèi)容。
在本申請(qǐng)實(shí)施例中,這些業(yè)務(wù)方相關(guān)的賬號(hào)數(shù)據(jù),包括賬號(hào)基礎(chǔ)數(shù)據(jù),賬號(hào)流量數(shù)據(jù),賬號(hào)特征數(shù)據(jù)等,通過(guò)圖6所示的統(tǒng)一讀/寫(xiě)接入層,即可與業(yè)務(wù)層、平臺(tái)管理層、能力層,或是數(shù)據(jù)支持層進(jìn)行通信、數(shù)據(jù)讀寫(xiě)等。
本申請(qǐng)實(shí)施例中的平臺(tái)管理層主要用于對(duì)作者生態(tài)以及賬號(hào)內(nèi)容提供統(tǒng)一的管理平臺(tái),參閱圖6所示,平臺(tái)管理層分為兩部分,一部分用于對(duì)作者進(jìn)行管理,另一部分用于對(duì)內(nèi)容(即賬號(hào)的一些信息)進(jìn)行管理。
其中,用于對(duì)作者進(jìn)行管理的這一部分即圖6所示的平臺(tái)管理層-作者管理部分,包括運(yùn)營(yíng)平臺(tái)和事件管理中心。運(yùn)營(yíng)人員可以通過(guò)運(yùn)營(yíng)平臺(tái)進(jìn)行一些管理操作,而作者修改了一些內(nèi)容時(shí),會(huì)觸發(fā)一些事件,即可通過(guò)事件管理中心進(jìn)行事件管理。
圖6所示的內(nèi)容引擎部分即用于對(duì)內(nèi)容進(jìn)行管理的這一部分,包括賬號(hào)畫(huà)像標(biāo)記、賬號(hào)等級(jí)、賬號(hào)封禁。在本申請(qǐng)實(shí)施例中,內(nèi)容管理是指對(duì)賬號(hào)進(jìn)行特征標(biāo)記,字段標(biāo)記等等,這些信息不是作者自己更改的,而是一些特征處理環(huán)節(jié)所產(chǎn)生的數(shù)據(jù),包括畫(huà)像數(shù)據(jù),賬號(hào)等級(jí),是否封禁等。
在本申請(qǐng)實(shí)施例中,管理平臺(tái)做一些操作時(shí)需要調(diào)用接口,需要底層的一些服務(wù)來(lái)支持,能力層則是用于實(shí)現(xiàn)這些功能的。如圖6所示,能力層主要分為兩部分,基礎(chǔ)能力和特征工程。
1)基礎(chǔ)能力:對(duì)用戶(hù)的一些基礎(chǔ)信息進(jìn)行增刪改查的操作,主要是針對(duì)作者開(kāi)戶(hù)、賬號(hào)基礎(chǔ)信息修改、以及事件通知提供相應(yīng)的能力,如圖6所示包括:高性能讀接口,開(kāi)戶(hù)/修改,事件池,事件分離,事件分發(fā),定時(shí)任務(wù)這幾部分。
在本申請(qǐng)實(shí)施例中,用戶(hù)在修改一些信息時(shí)會(huì)觸發(fā)一些事件,這些事件會(huì)存儲(chǔ)到事件池中做一些分離、分發(fā)的工作,進(jìn)而給到不同的訂閱方。
2)特征工程:對(duì)內(nèi)容、賬號(hào)等做一些算法分析,通過(guò)算法模型對(duì)每一個(gè)賬號(hào)打一些特征標(biāo)記,比如某一賬號(hào)主要是用于寫(xiě)地域文章的,是女性賬號(hào)等等。另外,通過(guò)結(jié)合賬號(hào)低質(zhì)、優(yōu)質(zhì)程度,發(fā)文活躍情況等反向推導(dǎo)賬號(hào)的生態(tài),分析賬號(hào)是不是廣告營(yíng)銷(xiāo)賬號(hào),是不是經(jīng)常發(fā)布含有標(biāo)題黨的文章等等。通過(guò)算法模型檢測(cè)優(yōu)質(zhì)賬號(hào)、低質(zhì)賬號(hào)、賬號(hào)品類(lèi),對(duì)接內(nèi)容鏈路,將各類(lèi)賬號(hào)特征提供給推薦側(cè)使用,針對(duì)不同等級(jí)賬號(hào)分發(fā)不同內(nèi)容,例如,降低低質(zhì)賬號(hào)的降低優(yōu)先級(jí),不優(yōu)先推薦該賬號(hào)所發(fā)表的文章。
參閱圖6所示,特征工程部分具體包括:優(yōu)質(zhì)賬號(hào),用戶(hù)行為,熱點(diǎn)賬號(hào),潛力賬號(hào),發(fā)文活躍程度,號(hào)主粉絲互動(dòng),相似賬號(hào),地域賬號(hào),女性賬號(hào),賬號(hào)向量工具,信安審核,低質(zhì)賬號(hào),搬運(yùn)賬號(hào),標(biāo)題黨賬號(hào),廣告營(yíng)銷(xiāo)號(hào),無(wú)用賬號(hào),變異優(yōu)質(zhì)賬號(hào)等的分析和處理。
在本申請(qǐng)實(shí)施例中,數(shù)據(jù)支持層,用于存儲(chǔ)整個(gè)作者生態(tài)體系各個(gè)賬號(hào)對(duì)應(yīng)的所有元數(shù)據(jù),作為整個(gè)系統(tǒng)的底層數(shù)據(jù)支持,元數(shù)據(jù)包括賬號(hào)基礎(chǔ)數(shù)據(jù)、賬號(hào)特征數(shù)據(jù)、賬號(hào)流水?dāng)?shù)據(jù)、業(yè)務(wù)事件等,其中業(yè)務(wù)事件是通過(guò)對(duì)基于賬號(hào)流水信息生成的數(shù)據(jù)變更消息進(jìn)行映射而得到的,存儲(chǔ)于事件池中。對(duì)應(yīng)的數(shù)據(jù)庫(kù)有分布式數(shù)據(jù)庫(kù)、ctv、clickhouse、hbase、彈性搜索(elasticsearch,es)數(shù)據(jù)庫(kù)。
其中,分布式數(shù)據(jù)庫(kù)具備強(qiáng)一致高可用、全球部署架構(gòu)、分布式水平擴(kuò)展、高性能、企業(yè)級(jí)安全等特性。hbase是一個(gè)分布式的、面向列的開(kāi)源數(shù)據(jù)庫(kù)。clickhouse是一個(gè)用于聯(lián)機(jī)分析處理的列式數(shù)據(jù)庫(kù)管理系統(tǒng)。es是一個(gè)基于全文搜索引擎(lucene)的搜索服務(wù)器。設(shè)計(jì)用于云計(jì)算中,能夠達(dá)到實(shí)時(shí)搜索,穩(wěn)定,可靠,快速,安裝使用方便。
另外,本申請(qǐng)實(shí)施例中的分布式賬號(hào)云存儲(chǔ)系統(tǒng)還包括監(jiān)控部分,用于監(jiān)控操作流水以及一些異常的打點(diǎn)的數(shù)量,如果有異常的情況發(fā)生的話,可以及時(shí)告警通知。如圖6所示,監(jiān)控包括:es流水,記錄每一條操作的一些詳細(xì)信息,比如更改了某個(gè)字段,相當(dāng)于操作流水;monitor,主要用于記錄打點(diǎn)信息,比如讀字段每天大概請(qǐng)求多少次,相當(dāng)于數(shù)量的統(tǒng)計(jì);007,和monitor性質(zhì)相似的監(jiān)控平臺(tái)。
需要說(shuō)明的是,本申請(qǐng)實(shí)施例通過(guò)收攏賬號(hào)讀寫(xiě)入口,遷移底層數(shù)據(jù),合并db存儲(chǔ),特征數(shù)據(jù)存儲(chǔ)分離等方式,最終的效果數(shù)據(jù)如下:遷移修復(fù)有效賬號(hào)數(shù)據(jù):1600w+;修復(fù)綁定關(guān)系:6w+;解決搜索問(wèn)題賬號(hào):1k+;發(fā)文映射問(wèn)題:1w+;基礎(chǔ)賬號(hào)信息db量:由相關(guān)技術(shù)中的3個(gè)變更為1個(gè);特征數(shù)據(jù)平均讀寫(xiě)耗時(shí):由相關(guān)技術(shù)中的6-8ms變更為1-2ms。很顯然,提高了數(shù)據(jù)處理效率。
下面結(jié)合圖7所示的又一分布式賬號(hào)云存儲(chǔ)系統(tǒng)的架構(gòu)示意圖,該架構(gòu)主要體現(xiàn)的是在圖6所示的能力層和數(shù)據(jù)支持層中所做的一些優(yōu)化策略。
業(yè)務(wù)層:內(nèi)容標(biāo)簽系統(tǒng),內(nèi)容開(kāi)放平臺(tái),聊天軟件入庫(kù)應(yīng)用程序編程接口(applicationprogramminginterface,api),視頻軟件、瀏覽器、直播軟件,內(nèi)容開(kāi)放平臺(tái)流水同步。
其中,圖7所示的業(yè)務(wù)層內(nèi)左邊的矩形框中介紹的是賬號(hào)和數(shù)據(jù)的來(lái)源和渠道(對(duì)應(yīng)圖6),包括內(nèi)容標(biāo)簽系統(tǒng),內(nèi)容開(kāi)放平臺(tái)、聊天軟件入庫(kù)api,視頻軟件、瀏覽器、直播軟件,內(nèi)容開(kāi)放平臺(tái)流水同步,右邊的矩形框介紹的是客戶(hù)端側(cè)(簡(jiǎn)稱(chēng)c側(cè))的數(shù)據(jù)來(lái)源和渠道,包括作者信息查詢(xún),其他業(yè)務(wù)接口。接入層(對(duì)應(yīng)對(duì)6中的同一讀/寫(xiě)接入層和平臺(tái)管理層)包括高性能讀接口,開(kāi)戶(hù)/修改,賬號(hào)等級(jí),賬號(hào)搜索,賬號(hào)審核,消息通知,特征工程等。
圖7所示的系統(tǒng)為各個(gè)業(yè)務(wù)方提供了統(tǒng)一讀寫(xiě)服務(wù),幫助業(yè)務(wù)方快速接入不同類(lèi)型的賬號(hào),統(tǒng)一進(jìn)行權(quán)限檢查和頻率控制,同時(shí)也便于統(tǒng)一維護(hù)管理。
具體的,在讀取數(shù)據(jù)時(shí),可基于權(quán)限檢查器(appid+skey)進(jìn)行鑒權(quán),進(jìn)而在基于頻率控制器進(jìn)行頻率控制。之后,基于邏輯執(zhí)行器從相應(yīng)的數(shù)據(jù)庫(kù)中讀取數(shù)據(jù),另外還可通過(guò)元數(shù)據(jù)合并器合并元數(shù)據(jù)。
同理,在寫(xiě)入數(shù)據(jù)時(shí),過(guò)程同讀取過(guò)程類(lèi)似,其中的邏輯執(zhí)行器用于計(jì)算流水日志的modid,進(jìn)而,通過(guò)存儲(chǔ)管理器,基于事物寫(xiě)操作寫(xiě)入賬號(hào)基礎(chǔ)數(shù)據(jù)和賬號(hào)流水?dāng)?shù)據(jù)。通過(guò)特征數(shù)據(jù)存儲(chǔ)管理服務(wù),將賬號(hào)特征數(shù)據(jù)寫(xiě)入賬號(hào)特征數(shù)據(jù)hbase。
其中的賬號(hào)流水?dāng)?shù)據(jù)db即本申請(qǐng)實(shí)施例中的第一數(shù)據(jù)庫(kù),賬號(hào)基礎(chǔ)數(shù)據(jù)db即本申請(qǐng)實(shí)施例中的第二數(shù)據(jù)庫(kù),賬號(hào)特征數(shù)據(jù)hbase即本申請(qǐng)實(shí)施例中的第三數(shù)據(jù)庫(kù)。
另外,底層數(shù)據(jù)統(tǒng)一db存儲(chǔ),并且存儲(chǔ)流水記錄,寫(xiě)基礎(chǔ)數(shù)據(jù)和流水?dāng)?shù)據(jù)時(shí)采用事物寫(xiě)的方式,確保數(shù)據(jù)的可回溯。除此之外,圖7所示的架構(gòu)圖中也包含了離線的監(jiān)控對(duì)賬模塊,具體處理過(guò)程同上述實(shí)施例,重復(fù)之處不再贅述。在本申請(qǐng)實(shí)施例中,通過(guò)每天將db中數(shù)據(jù)同步到分布式數(shù)據(jù)倉(cāng)庫(kù)中,定時(shí)分析數(shù)據(jù),及時(shí)發(fā)現(xiàn)問(wèn)題。
在本申請(qǐng)實(shí)施例中,考慮到內(nèi)容中心會(huì)針對(duì)用戶(hù)畫(huà)像進(jìn)行各種特征提取,特征工程分析模型會(huì)處理、加工、更新許多用戶(hù)特征元數(shù)據(jù),推薦側(cè)以及其他業(yè)務(wù)方需要及時(shí)感知字段變更,并且業(yè)務(wù)方眾多,需要在不同時(shí)機(jī)訂閱賬號(hào)變更各種事件,并且針對(duì)解除業(yè)務(wù)模塊的耦合,所以引入了事件中心機(jī)制,對(duì)于流量進(jìn)行頻率控制,具體的實(shí)現(xiàn)方案見(jiàn)圖8所示。
參閱圖8所示,其為本申請(qǐng)實(shí)施例中的一種事件中心機(jī)制的具體流程示意圖,主要分為以下幾步:事件收集、事件推送kafka、配置獲取、事件分離、事件分發(fā)、事件proxy獲取。具體過(guò)程如下:
1、新建流水日志,更新賬號(hào)基礎(chǔ)數(shù)據(jù)與記錄數(shù)據(jù)變更消息在一個(gè)事務(wù)中完成,所有的流水日志存儲(chǔ)在賬號(hào)流水?dāng)?shù)據(jù)db(即第一數(shù)據(jù)庫(kù))中。如圖8所示,賬號(hào)流水?dāng)?shù)據(jù)包括:id,版本(version),標(biāo)簽(label),modid。
2、事件收集服務(wù)輪詢(xún)流水日志的數(shù)據(jù),定時(shí)從第一數(shù)據(jù)庫(kù)中批量獲取數(shù)據(jù),根據(jù)唯一的modid進(jìn)行分區(qū),同一個(gè)modid的內(nèi)容會(huì)進(jìn)入到同一個(gè)分區(qū),可保障局部有序,將數(shù)據(jù)寫(xiě)入到多個(gè)隊(duì)列中,然后通過(guò)多任務(wù)寫(xiě)入到ckafka中,并寫(xiě)入成功后,回寫(xiě)db狀態(tài)位,以避免重復(fù)寫(xiě)入。
3、基于消息中間件ckafka來(lái)實(shí)現(xiàn)消息的推送,ckafka中會(huì)開(kāi)啟partitioner的配置,使用hase選項(xiàng),通過(guò)puin進(jìn)行分區(qū)。
4、然后事件分離分發(fā)服務(wù)使用多個(gè)消費(fèi)者會(huì)消費(fèi)kafka中消息,同時(shí)獲取事件映射配置信息,將字段變更映射為業(yè)務(wù)事件,獲取訂閱映射配置信息,將業(yè)務(wù)事件分發(fā)到不同的訂閱方,然后寫(xiě)入到事件池中。事件池使用分布式mysql數(shù)據(jù)庫(kù),底層自動(dòng)分區(qū)。
具體的,事件分離/分發(fā)服務(wù)具體是從遠(yuǎn)程配置中心中獲取事件映射配置信息和訂閱映射配置信息。
5、訂閱方傳入事件獲取偏移量,通過(guò)事件獲取proxy來(lái)獲取事件。
6、事件清理策略:按天清理,proxy存儲(chǔ)當(dāng)前消息獲取方消費(fèi)記錄,用以進(jìn)行告警和事件清理。
在本申請(qǐng)實(shí)施例中,通過(guò)引入事件中心機(jī)制,最終的效果數(shù)據(jù)如下:1、30+業(yè)務(wù)事件分離;2、每天生產(chǎn)事件數(shù)據(jù):1千萬(wàn)+;3、事件生效時(shí)間近實(shí)時(shí);4、可維護(hù)性大大提高,業(yè)務(wù)解耦。
另外還需要說(shuō)明的是,在本申請(qǐng)實(shí)施例中,整個(gè)事件中心容錯(cuò)處理情況有以下幾種:
情況一、當(dāng)更新數(shù)據(jù)和記錄消息處理出錯(cuò),進(jìn)行事務(wù)回滾,相當(dāng)于什么都沒(méi)有發(fā)生。
情況二、當(dāng)消息push到kafka出錯(cuò)時(shí),由于消息保存在消息表中,可以重新發(fā)送到消息隊(duì)列(messagequeue,mq)進(jìn)行重試。
情況三、如果消息獲取訂閱方消費(fèi)處理出錯(cuò),且是業(yè)務(wù)上的失敗,業(yè)務(wù)方自行重試。
其中,事件分發(fā)給訂閱方之前會(huì)存到事件池中,針對(duì)每一個(gè)訂閱方,相關(guān)的業(yè)務(wù)事件都會(huì)存到對(duì)應(yīng)的db中。如果訂閱方需要消費(fèi)事件時(shí),是由訂閱方主動(dòng)從事件池db中拉取的,如過(guò)服務(wù)失敗或者網(wǎng)絡(luò)不通等情況下,就會(huì)造成數(shù)據(jù)拉取失敗,但是實(shí)際上數(shù)據(jù)沒(méi)有丟失,可以繼續(xù)從db中拉取。
通過(guò)上述實(shí)施方式可知,本申請(qǐng)實(shí)施例中的事件中心容錯(cuò)率較高,實(shí)現(xiàn)過(guò)程更加簡(jiǎn)單。
綜上,本申請(qǐng)實(shí)施例中的整個(gè)基于事件中心機(jī)制的分布式賬號(hào)云存儲(chǔ)系統(tǒng),由事件驅(qū)動(dòng),改變了開(kāi)發(fā)模式,由最開(kāi)始的同步調(diào)用變成了消息推送,將業(yè)務(wù)模塊解耦,支持監(jiān)聽(tīng)多種字段變更事件,如第一次寫(xiě)入、更新、變更為預(yù)期值等,基于事件中心機(jī)制統(tǒng)一賬號(hào)事件管理,有效提高了數(shù)據(jù)存儲(chǔ)的安全性和數(shù)據(jù)處理效率。
參閱圖9所示,其為本申請(qǐng)實(shí)施例中的一種賬號(hào)數(shù)據(jù)處理的完整方法流程圖。該方法的具體實(shí)施流程如下:
步驟s901:服務(wù)器通過(guò)預(yù)設(shè)讀寫(xiě)模塊為指定業(yè)務(wù)方接入不同類(lèi)型的賬號(hào);
步驟s902:服務(wù)器獲取指定業(yè)務(wù)方在預(yù)置時(shí)間段內(nèi)相關(guān)的各個(gè)賬號(hào)對(duì)應(yīng)的賬號(hào)流水?dāng)?shù)據(jù),通過(guò)事物寫(xiě)操作將賬號(hào)流水?dāng)?shù)據(jù)寫(xiě)入第一數(shù)據(jù)庫(kù);
步驟s903:服務(wù)器獲取指定業(yè)務(wù)方在預(yù)置時(shí)間段內(nèi)相關(guān)的各個(gè)賬號(hào)對(duì)應(yīng)的賬號(hào)基礎(chǔ)數(shù)據(jù),并通過(guò)事物寫(xiě)的方式將賬號(hào)基礎(chǔ)數(shù)據(jù)寫(xiě)入第二數(shù)據(jù)庫(kù);
步驟s904:服務(wù)器獲取指定業(yè)務(wù)方在預(yù)置時(shí)間段內(nèi)相關(guān)的各個(gè)賬號(hào)對(duì)應(yīng)的賬號(hào)特征數(shù)據(jù),并將賬號(hào)特征數(shù)據(jù)寫(xiě)入文檔型的第三數(shù)據(jù)庫(kù);
步驟s905:服務(wù)器基于賬號(hào)特征數(shù)據(jù)對(duì)各個(gè)賬號(hào)進(jìn)行等級(jí)劃分,并將劃分結(jié)果發(fā)送給推薦系統(tǒng),以使推薦系統(tǒng)針對(duì)不同等級(jí)賬號(hào)分發(fā)不同內(nèi)容;
步驟s906:服務(wù)器通過(guò)事件收集模塊從第一數(shù)據(jù)庫(kù)中批量獲取賬號(hào)流水?dāng)?shù)據(jù),第一數(shù)據(jù)庫(kù)中存儲(chǔ)有與指定業(yè)務(wù)方相關(guān)的各個(gè)賬號(hào)對(duì)應(yīng)的賬號(hào)流水?dāng)?shù)據(jù);
步驟s907:服務(wù)器將獲得的賬號(hào)流水?dāng)?shù)據(jù)寫(xiě)入消息隊(duì)列,并通過(guò)消息隊(duì)列向事件分發(fā)模塊推送基于賬號(hào)流水?dāng)?shù)據(jù)生成的數(shù)據(jù)變更消息;
步驟s908:服務(wù)器通過(guò)事件分發(fā)模塊將數(shù)據(jù)變更消息映射為業(yè)務(wù)事件,并存儲(chǔ)至事件池中;
步驟s909:服務(wù)器接收到消息獲取方發(fā)送的事件獲取請(qǐng)求時(shí),基于事件獲取請(qǐng)求中的索引信息,從事件池中獲取與索引信息對(duì)應(yīng)的業(yè)務(wù)事件并發(fā)送至消息獲取方;
步驟s910:服務(wù)器通過(guò)代理服務(wù)器存儲(chǔ)消息獲取方對(duì)應(yīng)的事件獲取記錄;
步驟s911:服務(wù)器基于事件獲取記錄以及預(yù)設(shè)事件清理策略,清理事件池中的業(yè)務(wù)事件。
需要說(shuō)明的是,本申請(qǐng)實(shí)施例結(jié)合業(yè)務(wù)的特點(diǎn),在圖1所示的內(nèi)容中心賬號(hào)體系內(nèi)容開(kāi)放平臺(tái)的基礎(chǔ)上提出了數(shù)據(jù)存儲(chǔ)優(yōu)化,引入了事件中心機(jī)制,最終實(shí)現(xiàn)了一種基于事件中心機(jī)制的分布式賬號(hào)云存儲(chǔ)系統(tǒng)。
基于相同的發(fā)明構(gòu)思,本申請(qǐng)實(shí)施例還提供一種數(shù)據(jù)處理裝置。如圖10所示,其為數(shù)據(jù)處理裝置1000的結(jié)構(gòu)示意圖,可以包括:
收集單元1001,用于通過(guò)事件收集模塊從第一數(shù)據(jù)庫(kù)中批量獲取采樣數(shù)據(jù),第一數(shù)據(jù)庫(kù)中存儲(chǔ)有與指定業(yè)務(wù)方相關(guān)的各個(gè)對(duì)象對(duì)應(yīng)的采樣數(shù)據(jù);
消息單元1002,用于將獲得的采樣數(shù)據(jù)寫(xiě)入消息隊(duì)列,并通過(guò)消息隊(duì)列向事件分發(fā)模塊推送基于采樣數(shù)據(jù)生成的數(shù)據(jù)變更消息;
映射單元1003,用于通過(guò)事件分發(fā)模塊將數(shù)據(jù)變更消息映射為業(yè)務(wù)事件,并存儲(chǔ)至事件池中;
訂閱單元1004,用于接收到消息獲取方發(fā)送的事件獲取請(qǐng)求時(shí),基于事件獲取請(qǐng)求中的索引信息,從事件池中獲取與索引信息對(duì)應(yīng)的業(yè)務(wù)事件并發(fā)送至消息獲取方。
可選的,映射單元1003具體用于:
通過(guò)事件分發(fā)模塊獲取預(yù)設(shè)的事件映射配置信息,基于事件映射配置信息,確定數(shù)據(jù)變更消息中的變更字段對(duì)應(yīng)的業(yè)務(wù)事件類(lèi)型后,將數(shù)據(jù)變更消息映射為業(yè)務(wù)事件類(lèi)型對(duì)應(yīng)的業(yè)務(wù)事件,其中,事件映射配置信息用于表征字段與業(yè)務(wù)事件類(lèi)型之間的映射關(guān)系;
通過(guò)事件分發(fā)模塊獲取預(yù)設(shè)的訂閱映射配置信息,基于訂閱映射配置信息,確定各個(gè)業(yè)務(wù)事件對(duì)應(yīng)的消息獲取方,其中,訂閱映射配置信息用于表征業(yè)務(wù)事件與消息獲取方之間的映射關(guān)系;
根據(jù)各個(gè)業(yè)務(wù)事件對(duì)應(yīng)的消息獲取方,將各個(gè)業(yè)務(wù)事件寫(xiě)入到事件池中對(duì)應(yīng)的事件數(shù)據(jù)庫(kù),其中,不同消息獲取方在事件池中對(duì)應(yīng)不同的事件數(shù)據(jù)庫(kù)。
可選的,數(shù)據(jù)變更消息包含多個(gè)對(duì)應(yīng)同一業(yè)務(wù)事件類(lèi)型的變更字段;映射單元1003具體用于:
分別將數(shù)據(jù)變更消息中的各個(gè)變更字段映射為業(yè)務(wù)事件類(lèi)型對(duì)應(yīng)的業(yè)務(wù)事件;
在將數(shù)據(jù)變更消息映射為業(yè)務(wù)事件類(lèi)型對(duì)應(yīng)的業(yè)務(wù)事件之后,還包括:
將基于多個(gè)對(duì)應(yīng)同一業(yè)務(wù)事件類(lèi)型的變更字段映射得到的多個(gè)業(yè)務(wù)事件,進(jìn)行事件合并。
可選的,消息單元1002具體用于:
根據(jù)采樣數(shù)據(jù)對(duì)應(yīng)的模塊標(biāo)識(shí)對(duì)采樣數(shù)據(jù)進(jìn)行分區(qū)處理,其中,具有相同模塊標(biāo)識(shí)的采樣數(shù)據(jù)劃分為同一分區(qū),采樣數(shù)據(jù)對(duì)應(yīng)的模塊標(biāo)識(shí)是通過(guò)對(duì)采樣數(shù)據(jù)的對(duì)象標(biāo)識(shí)進(jìn)行取模得到的;
將分區(qū)后的采樣數(shù)據(jù)并行寫(xiě)入消息隊(duì)列。
可選的,裝置還包括:
第一讀寫(xiě)單元1005,用于在收集單元1001通過(guò)事件收集模塊從第一數(shù)據(jù)庫(kù)中批量獲取采樣數(shù)據(jù)之前,獲取指定業(yè)務(wù)方在預(yù)置時(shí)間段內(nèi)相關(guān)的各個(gè)對(duì)象對(duì)應(yīng)的采樣數(shù)據(jù);
通過(guò)事物寫(xiě)操作將采樣數(shù)據(jù)寫(xiě)入第一數(shù)據(jù)庫(kù)。
可選的,裝置還包括:
第二讀寫(xiě)單元1006,用于在收集單元1001通過(guò)事件收集模塊從第一數(shù)據(jù)庫(kù)中批量獲取采樣數(shù)據(jù)之前,獲取指定業(yè)務(wù)方在預(yù)置時(shí)間段內(nèi)相關(guān)的各個(gè)對(duì)象對(duì)應(yīng)的基礎(chǔ)數(shù)據(jù),并通過(guò)事物寫(xiě)的方式將基礎(chǔ)數(shù)據(jù)寫(xiě)入第二數(shù)據(jù)庫(kù);以及
獲取指定業(yè)務(wù)方在預(yù)置時(shí)間段內(nèi)相關(guān)的各個(gè)對(duì)象對(duì)應(yīng)的特征數(shù)據(jù),并將特征數(shù)據(jù)寫(xiě)入文檔型的第三數(shù)據(jù)庫(kù)。
可選的,裝置還包括:
特征處理單元1007,用于基于特征數(shù)據(jù)對(duì)各個(gè)對(duì)象進(jìn)行等級(jí)劃分,并將劃分結(jié)果發(fā)送給推薦系統(tǒng),以使推薦系統(tǒng)針對(duì)不同等級(jí)對(duì)象分發(fā)不同內(nèi)容。
可選的,裝置還包括:
業(yè)務(wù)單元1008,用于在收集單元1001通過(guò)事件收集模塊從第一數(shù)據(jù)庫(kù)中批量獲取采樣數(shù)據(jù)之前,還包括:
通過(guò)預(yù)設(shè)讀寫(xiě)模塊為指定業(yè)務(wù)方接入不同類(lèi)型的對(duì)象,并對(duì)各個(gè)對(duì)象統(tǒng)一進(jìn)行權(quán)限檢查和頻率控制。
可選的,索引信息為事件獲取偏移量;訂閱單元1004具體用于:
根據(jù)事件獲取請(qǐng)求中的事件獲取偏移量,確定待獲取的業(yè)務(wù)事件的地址信息;
根據(jù)地址信息從事件池中獲取對(duì)應(yīng)的業(yè)務(wù)事件,并發(fā)送至消息獲取方。
可選的,裝置還包括:
清理單元1009,用于在訂閱單元1004從事件池中獲取與索引信息對(duì)應(yīng)的業(yè)務(wù)事件并發(fā)送至消息獲取方之后,通過(guò)代理服務(wù)器存儲(chǔ)消息獲取方對(duì)應(yīng)的事件獲取記錄;
基于事件獲取記錄以及預(yù)設(shè)事件清理策略,清理事件池中的業(yè)務(wù)事件。
在上述實(shí)施方式中,解除了業(yè)務(wù)模塊的耦合,引入了事件中心機(jī)制,基于事件中心機(jī)制統(tǒng)一對(duì)象事件管理,實(shí)現(xiàn)了消息實(shí)時(shí)通知和消息數(shù)據(jù)的可靠性,消息數(shù)據(jù)獨(dú)立存儲(chǔ),不占用業(yè)務(wù)系統(tǒng)資源,降低業(yè)務(wù)系統(tǒng)與消息系統(tǒng)之間的耦合,盡量與業(yè)務(wù)隔離,防止消息系統(tǒng)異常影響基本存儲(chǔ)訪問(wèn)。針對(duì)不同的業(yè)務(wù)產(chǎn)品,給用戶(hù)提供安全、高可靠的對(duì)象數(shù)據(jù)存儲(chǔ),并且基于事件中心機(jī)制統(tǒng)一對(duì)象事件管理,提高數(shù)據(jù)存儲(chǔ)的安全性和數(shù)據(jù)處理效率。
為了描述的方便,以上各部分按照功能劃分為各模塊(或單元)分別描述。當(dāng)然,在實(shí)施本申請(qǐng)時(shí)可以把各模塊(或單元)的功能在同一個(gè)或多個(gè)軟件或硬件中實(shí)現(xiàn)。
在介紹了本申請(qǐng)示例性實(shí)施方式的數(shù)據(jù)處理方法和裝置之后,接下來(lái),介紹根據(jù)本申請(qǐng)的另一示例性實(shí)施方式的電子設(shè)備。
所屬技術(shù)領(lǐng)域的技術(shù)人員能夠理解,本申請(qǐng)的各個(gè)方面可以實(shí)現(xiàn)為系統(tǒng)、方法或程序產(chǎn)品。因此,本申請(qǐng)的各個(gè)方面可以具體實(shí)現(xiàn)為以下形式,即:完全的硬件實(shí)施方式、完全的軟件實(shí)施方式(包括固件、微代碼等),或硬件和軟件方面結(jié)合的實(shí)施方式,這里可以統(tǒng)稱(chēng)為“電路”、“模塊”或“系統(tǒng)”。
與上述方法實(shí)施例基于同一發(fā)明構(gòu)思,本申請(qǐng)實(shí)施例中還提供了一種電子設(shè)備。在一種實(shí)施例中,該電子設(shè)備可以是服務(wù)器,如圖2所示的服務(wù)器110。在該實(shí)施例中,電子設(shè)備的結(jié)構(gòu)可以如圖11所示,包括存儲(chǔ)器1101,通訊模塊1103以及一個(gè)或多個(gè)處理器1102。
存儲(chǔ)器1101,用于存儲(chǔ)處理器1102執(zhí)行的計(jì)算機(jī)程序。存儲(chǔ)器1101可主要包括存儲(chǔ)程序區(qū)和存儲(chǔ)數(shù)據(jù)區(qū),其中,存儲(chǔ)程序區(qū)可存儲(chǔ)操作系統(tǒng),以及運(yùn)行即時(shí)通訊功能所需的程序等;存儲(chǔ)數(shù)據(jù)區(qū)可存儲(chǔ)各種即時(shí)通訊信息和操作指令集等。
存儲(chǔ)器1101可以是易失性存儲(chǔ)器(volatilememory),例如隨機(jī)存取存儲(chǔ)器(random-accessmemory,ram);存儲(chǔ)器1101也可以是非易失性存儲(chǔ)器(non-volatilememory),例如rom,快閃存儲(chǔ)器(flashmemory),硬盤(pán)(harddiskdrive,hdd)或固態(tài)硬盤(pán)(solid-statedrive,ssd);或者存儲(chǔ)器1101是能夠用于攜帶或存儲(chǔ)具有指令或數(shù)據(jù)結(jié)構(gòu)形式的期望的程序代碼并能夠由計(jì)算機(jī)存取的任何其他介質(zhì),但不限于此。存儲(chǔ)器1101可以是上述存儲(chǔ)器的組合。
處理器1102,可以包括一個(gè)或多個(gè)中央處理單元(centralprocessingunit,cpu)或者為數(shù)字處理單元等等。處理器1102,用于調(diào)用存儲(chǔ)器1101中存儲(chǔ)的計(jì)算機(jī)程序時(shí)實(shí)現(xiàn)上述任意一種數(shù)據(jù)處理方法。
通訊模塊1103用于與終端設(shè)備和其他服務(wù)器進(jìn)行通信。
本申請(qǐng)實(shí)施例中不限定上述存儲(chǔ)器1101、通訊模塊1103和處理器1102之間的具體連接介質(zhì)。本申請(qǐng)實(shí)施例在圖11中以存儲(chǔ)器1101和處理器1102之間通過(guò)總線1104連接,總線1104在圖11中以粗線表示,其它部件之間的連接方式,僅是進(jìn)行示意性說(shuō)明,并不引以為限??偩€1104可以分為地址總線、數(shù)據(jù)總線、控制總線等。為便于表示,圖11中僅用一條粗線表示,但并不表示僅有一根總線或一種類(lèi)型的總線。
存儲(chǔ)器1101中存儲(chǔ)有計(jì)算機(jī)存儲(chǔ)介質(zhì),計(jì)算機(jī)存儲(chǔ)介質(zhì)中存儲(chǔ)有計(jì)算機(jī)可執(zhí)行指令,計(jì)算機(jī)可執(zhí)行指令用于實(shí)現(xiàn)本申請(qǐng)實(shí)施例的數(shù)據(jù)處理方法。處理器1102用于執(zhí)行上述的數(shù)據(jù)處理方法,如圖3所示。
在一些可能的實(shí)施方式中,本申請(qǐng)?zhí)峁┑臄?shù)據(jù)處理方法的各個(gè)方面還可以實(shí)現(xiàn)為一種程序產(chǎn)品的形式,其包括程序代碼,當(dāng)程序產(chǎn)品在計(jì)算機(jī)設(shè)備上運(yùn)行時(shí),程序代碼用于使計(jì)算機(jī)設(shè)備執(zhí)行本說(shuō)明書(shū)上述描述的根據(jù)本申請(qǐng)各種示例性實(shí)施方式的數(shù)據(jù)處理方法中的步驟,例如,計(jì)算機(jī)設(shè)備可以執(zhí)行如圖3中所示的步驟。
程序產(chǎn)品可以采用一個(gè)或多個(gè)可讀介質(zhì)的任意組合??勺x介質(zhì)可以是可讀信號(hào)介質(zhì)或者可讀存儲(chǔ)介質(zhì)??勺x存儲(chǔ)介質(zhì)例如可以是但不限于電、磁、光、電磁、紅外線、或半導(dǎo)體的系統(tǒng)、裝置或器件,或者任意以上的組合??勺x存儲(chǔ)介質(zhì)的更具體的例子(非窮舉的列表)包括:具有一個(gè)或多個(gè)導(dǎo)線的電連接、便攜式盤(pán)、硬盤(pán)、隨機(jī)存取存儲(chǔ)器(ram)、只讀存儲(chǔ)器(rom)、可擦式可編程只讀存儲(chǔ)器(eprom或閃存)、光纖、便攜式緊湊盤(pán)只讀存儲(chǔ)器(cd-rom)、光存儲(chǔ)器件、磁存儲(chǔ)器件、或者上述的任意合適的組合。
本申請(qǐng)的實(shí)施方式的程序產(chǎn)品可以采用便攜式緊湊盤(pán)只讀存儲(chǔ)器(cd-rom)并包括程序代碼,并可以在計(jì)算裝置上運(yùn)行。然而,本申請(qǐng)的程序產(chǎn)品不限于此,在本文件中,可讀存儲(chǔ)介質(zhì)可以是任何包含或存儲(chǔ)程序的有形介質(zhì),該程序可以被命令執(zhí)行系統(tǒng)、裝置或者器件使用或者與其結(jié)合使用。
可讀信號(hào)介質(zhì)可以包括在基帶中或者作為載波一部分傳播的數(shù)據(jù)信號(hào),其中承載了可讀程序代碼。這種傳播的數(shù)據(jù)信號(hào)可以采用多種形式,包括但不限于電磁信號(hào)、光信號(hào)或上述的任意合適的組合??勺x信號(hào)介質(zhì)還可以是可讀存儲(chǔ)介質(zhì)以外的任何可讀介質(zhì),該可讀介質(zhì)可以發(fā)送、傳播或者傳輸用于由命令執(zhí)行系統(tǒng)、裝置或者器件使用或者與其結(jié)合使用的程序。
可讀介質(zhì)上包含的程序代碼可以用任何適當(dāng)?shù)慕橘|(zhì)傳輸,包括但不限于無(wú)線、有線、光纜、rf等等,或者上述的任意合適的組合。
可以以一種或多種程序設(shè)計(jì)語(yǔ)言的任意組合來(lái)編寫(xiě)用于執(zhí)行本申請(qǐng)操作的程序代碼,程序設(shè)計(jì)語(yǔ)言包括面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言—諸如java、c++等,還包括常規(guī)的過(guò)程式程序設(shè)計(jì)語(yǔ)言—諸如“c”語(yǔ)言或類(lèi)似的程序設(shè)計(jì)語(yǔ)言。程序代碼可以完全地在用戶(hù)計(jì)算裝置上執(zhí)行、部分地在用戶(hù)設(shè)備上執(zhí)行、作為一個(gè)獨(dú)立的軟件包執(zhí)行、部分在用戶(hù)計(jì)算裝置上部分在遠(yuǎn)程計(jì)算裝置上執(zhí)行、或者完全在遠(yuǎn)程計(jì)算裝置或服務(wù)器上執(zhí)行。在涉及遠(yuǎn)程計(jì)算裝置的情形中,遠(yuǎn)程計(jì)算裝置可以通過(guò)任意種類(lèi)的網(wǎng)絡(luò)包括局域網(wǎng)(lan)或廣域網(wǎng)(wan)連接到用戶(hù)計(jì)算裝置,或者,可以連接到外部計(jì)算裝置(例如利用因特網(wǎng)服務(wù)提供商來(lái)通過(guò)因特網(wǎng)連接)。
盡管已描述了本申請(qǐng)的優(yōu)選實(shí)施例,但本領(lǐng)域內(nèi)的技術(shù)人員一旦得知了基本創(chuàng)造性概念,則可對(duì)這些實(shí)施例做出另外的變更和修改。所以,所附權(quán)利要求意欲解釋為包括優(yōu)選實(shí)施例以及落入本申請(qǐng)范圍的所有變更和修改。
顯然,本領(lǐng)域的技術(shù)人員可以對(duì)本申請(qǐng)進(jìn)行各種改動(dòng)和變型而不脫離本申請(qǐng)的精神和范圍。這樣,倘若本申請(qǐng)的這些修改和變型屬于本申請(qǐng)權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本申請(qǐng)也意圖包含這些改動(dòng)和變型在內(nèi)。