亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

數(shù)據(jù)寫入方法及裝置和電子設(shè)備與流程

文檔序號:11215864閱讀:569來源:國知局
數(shù)據(jù)寫入方法及裝置和電子設(shè)備與流程

本申請涉及數(shù)據(jù)存儲技術(shù)領(lǐng)域,尤其涉及一種數(shù)據(jù)寫入方法及裝置和電子設(shè)備。



背景技術(shù):

隨著互聯(lián)網(wǎng)的不斷發(fā)展,使用互聯(lián)網(wǎng)的用戶越來越大,隨之而來生成的數(shù)據(jù)也呈指數(shù)增長。

在一些需要人為寫入數(shù)據(jù)的場景中如搜索引擎、消息隊列,也出現(xiàn)了需要寫入海量數(shù)據(jù)的情況。面對海量數(shù)據(jù),傳統(tǒng)的單條數(shù)據(jù)寫入方式由于效率較低通常都被批量數(shù)據(jù)寫入方式所替代。

然而,現(xiàn)有的批量數(shù)據(jù)寫入存在用戶操作復(fù)雜的問題。



技術(shù)實現(xiàn)要素:

本申請?zhí)峁┑囊环N數(shù)據(jù)寫入方法及裝置,以解決現(xiàn)有技術(shù)中存在的批量數(shù)據(jù)寫入操作復(fù)雜的問題。

根據(jù)本申請實施例提供的一種數(shù)據(jù)寫入方法,所述方法包括:

獲取用戶通過單條數(shù)據(jù)接口提交的單條數(shù)據(jù);

將所述單條數(shù)據(jù)添加到緩存隊列;

在控制器觸發(fā)設(shè)定指令的情況下,將所述緩存隊列中所有單條數(shù)據(jù)批量發(fā)送到服務(wù)端。

根據(jù)本申請實施例提供的一種數(shù)據(jù)寫入方法,所述方法包括:

獲取用戶通過單條數(shù)據(jù)接口提交的單條數(shù)據(jù);

將所述單條數(shù)據(jù)添加到緩存隊列;

在控制器觸發(fā)設(shè)定指令的情況下,將所述緩存隊列中所有單條數(shù)據(jù)批量寫入到存儲設(shè)備。

根據(jù)本申請實施例提供的一種數(shù)據(jù)寫入方法,所述方法包括:

獲取用戶通過批量數(shù)據(jù)接口提交的數(shù)據(jù)隊列;所述數(shù)據(jù)隊列中保存有至少一條的單條數(shù)據(jù);

將所述數(shù)據(jù)隊列中的數(shù)據(jù)寫入到存儲設(shè)備;

在事件監(jiān)聽器觸發(fā)設(shè)定指令的情況下,將所述數(shù)據(jù)隊列中未寫入到存儲設(shè)備的數(shù)據(jù)批量寫入到所述存儲設(shè)備。

根據(jù)本申請實施例提供的一種數(shù)據(jù)寫入方法,所述方法包括:

獲取用戶通過批量數(shù)據(jù)接口提交的數(shù)據(jù)隊列;所述數(shù)據(jù)隊列中保存有至少一條的單條數(shù)據(jù);

將所述數(shù)據(jù)隊列中的數(shù)據(jù)發(fā)送到服務(wù)端;

在事件監(jiān)聽器觸發(fā)設(shè)定指令的情況下,將所述數(shù)據(jù)隊列中未發(fā)送到服務(wù)端的數(shù)據(jù)批量發(fā)送到所述服務(wù)端。

根據(jù)本申請實施例提供的一種數(shù)據(jù)寫入裝置,所述裝置包括:

獲取數(shù)據(jù)單元,獲取用戶通過單條數(shù)據(jù)接口提交的單條數(shù)據(jù);

添加數(shù)據(jù)單元,將所述單條數(shù)據(jù)添加到緩存隊列;

發(fā)送數(shù)據(jù)單元,在控制器觸發(fā)設(shè)定指令的情況下,將所述緩存隊列中所有單條數(shù)據(jù)批量發(fā)送到服務(wù)端。

根據(jù)本申請實施例提供的一種數(shù)據(jù)寫入裝置,所述裝置包括:

獲取數(shù)據(jù)單元,獲取用戶通過單條數(shù)據(jù)接口提交的單條數(shù)據(jù);

添加數(shù)據(jù)單元,將所述單條數(shù)據(jù)添加到緩存隊列;

寫入數(shù)據(jù)單元,在控制器觸發(fā)設(shè)定指令的情況下,將所述緩存隊列中所有單條數(shù)據(jù)批量寫入到存儲設(shè)備。

根據(jù)本申請實施例提供的一種數(shù)據(jù)寫入裝置,所述裝置包括:

獲取數(shù)據(jù)單元,獲取用戶通過批量數(shù)據(jù)接口提交的數(shù)據(jù)隊列;所述數(shù)據(jù)隊列中保存有至少一條的單條數(shù)據(jù);

寫入數(shù)據(jù)單元,將所述數(shù)據(jù)隊列中的數(shù)據(jù)寫入到存儲設(shè)備;

異常處理單元,在事件監(jiān)聽器觸發(fā)設(shè)定指令的情況下,將所述數(shù)據(jù)隊列中未寫入到存儲設(shè)備的數(shù)據(jù)批量寫入到所述存儲設(shè)備。

根據(jù)本申請實施例提供的一種數(shù)據(jù)寫入裝置,所述裝置包括:

獲取數(shù)據(jù)單元,獲取用戶通過批量數(shù)據(jù)接口提交的數(shù)據(jù)隊列;所述數(shù)據(jù)隊列中保存有至少一條的單條數(shù)據(jù);

發(fā)送數(shù)據(jù)單元,將所述數(shù)據(jù)隊列中的數(shù)據(jù)發(fā)送到服務(wù)端;

異常處理單元,在事件監(jiān)聽器觸發(fā)設(shè)定指令的情況下,將所述數(shù)據(jù)隊列中未發(fā)送到服務(wù)端的數(shù)據(jù)批量發(fā)送到所述服務(wù)端。

根據(jù)本申請實施例提供的一種電子設(shè)備,包括:

處理器;

用于存儲處理器可執(zhí)行指令的存儲器;

其中,所述處理器被配置為:

獲取用戶通過單條數(shù)據(jù)接口提交的單條數(shù)據(jù);

將所述單條數(shù)據(jù)添加到緩存隊列;

在控制器觸發(fā)設(shè)定指令的情況下,將所述緩存隊列中所有單條數(shù)據(jù)批量發(fā)送到服務(wù)端。

根據(jù)本申請實施例提供的一種電子設(shè)備,包括:

處理器;

用于存儲處理器可執(zhí)行指令的存儲器;

其中,所述處理器被配置為:

獲取用戶通過單條數(shù)據(jù)接口提交的單條數(shù)據(jù);

將所述單條數(shù)據(jù)添加到緩存隊列;

在控制器觸發(fā)設(shè)定指令的情況下,將所述緩存隊列中所有單條數(shù)據(jù)批量寫入到存儲設(shè)備。

根據(jù)本申請實施例提供的一種電子設(shè)備,包括:

處理器;

用于存儲處理器可執(zhí)行指令的存儲器;

其中,所述處理器被配置為:

獲取用戶通過批量數(shù)據(jù)接口提交的數(shù)據(jù)隊列;所述數(shù)據(jù)隊列中保存有至少一條的單條數(shù)據(jù);

將所述數(shù)據(jù)隊列中的數(shù)據(jù)寫入到存儲設(shè)備;

在事件監(jiān)聽器觸發(fā)設(shè)定指令的情況下,將所述數(shù)據(jù)隊列中未寫入到存儲設(shè)備的數(shù)據(jù)批量寫入到所述存儲設(shè)備。

根據(jù)本申請實施例提供的一種電子設(shè)備,包括:

處理器;

用于存儲處理器可執(zhí)行指令的存儲器;

其中,所述處理器被配置為:

獲取用戶通過批量數(shù)據(jù)接口提交的數(shù)據(jù)隊列;所述數(shù)據(jù)隊列中保存有至少一條的單條數(shù)據(jù);

將所述數(shù)據(jù)隊列中的數(shù)據(jù)發(fā)送到服務(wù)端;

在事件監(jiān)聽器觸發(fā)設(shè)定指令的情況下,將所述數(shù)據(jù)隊列中未發(fā)送到服務(wù)端的數(shù)據(jù)批量發(fā)送到所述服務(wù)端。

本申請實施例中,通過將用戶提交的單條數(shù)據(jù)添加到緩存隊列中,并通過設(shè)置控制器來觸發(fā)設(shè)定指令,該設(shè)定指令用于將緩存隊列中所有單條數(shù)據(jù)發(fā)送到服務(wù)端或者寫入到本地存儲設(shè)備。如此,可以將用戶單條數(shù)據(jù)寫入轉(zhuǎn)換為自動批量數(shù)據(jù)寫入。對于用戶而言,雖然依然使用單條數(shù)據(jù)接口提交數(shù)據(jù),但其實最終是一種批量數(shù)據(jù)寫入的方式,這樣就提高了數(shù)據(jù)寫入效率;而且用戶并不感知批量數(shù)據(jù)寫入過程,也無需在批量數(shù)據(jù)寫入過程中進行操作。相對于現(xiàn)有的單條數(shù)據(jù)寫入方式,應(yīng)用本實施例可以提高數(shù)據(jù)寫入效率;相對于現(xiàn)有的批量數(shù)據(jù)寫入方式,應(yīng)用本實施例,用戶無需除了提交單條數(shù)據(jù)的操作,無需進行其它額外操作,簡化了用戶操作,提高了用戶體驗。

附圖說明

圖1是本申請一實施例提供的數(shù)據(jù)寫入方法的流程圖;

圖2是本申請一實施例提供的客戶端內(nèi)部模塊示意圖;

圖3是本申請一實施例提供的數(shù)據(jù)寫入方法的流程圖;

圖4是本申請一實施例提供的數(shù)據(jù)寫入方法的流程圖;

圖5是本申請一實施例提供的數(shù)據(jù)寫入方法的流程圖;

圖6是本申請一實施例提供的數(shù)據(jù)寫入裝置的模塊示意圖;

圖7是本申請一實施例提供的數(shù)據(jù)寫入裝置的模塊示意圖;

圖8是本申請一實施例提供的數(shù)據(jù)寫入裝置的模塊示意圖;

圖9是本申請一實施例提供的數(shù)據(jù)寫入裝置的模塊示意圖。

具體實施方式

這里將詳細(xì)地對示例性實施例進行說明,其示例表示在附圖中。下面的描述涉及附圖時,除非另有表示,不同附圖中的相同數(shù)字表示相同或相似的要素。以下示例性實施例中所描述的實施方式并不代表與本申請相一致的所有實施方式。相反,它們僅是與如所附權(quán)利要求書中所詳述的、本申請的一些方面相一致的裝置和方法的例子。

在本申請使用的術(shù)語是僅僅出于描述特定實施例的目的,而非旨在限制本申請。在本申請和所附權(quán)利要求書中所使用的單數(shù)形式的“一種”、“所述”和“該”也旨在包括多數(shù)形式,除非上下文清楚地表示其他含義。還應(yīng)當(dāng)理解,本文中使用的術(shù)語“和/或”是指并包含一個或多個相關(guān)聯(lián)的列出項目的任何或所有可能組合。

應(yīng)當(dāng)理解,盡管在本申請可能采用術(shù)語第一、第二、第三等來描述各種信息,但這些信息不應(yīng)限于這些術(shù)語。這些術(shù)語僅用來將同一類型的信息彼此區(qū)分開。例如,在不脫離本申請范圍的情況下,第一信息也可以被稱為第二信息,類似地,第二信息也可以被稱為第一信息。取決于語境,如在此所使用的詞語“如果”可以被解釋成為“在……時”或“當(dāng)……時”或“響應(yīng)于確定”。

如前所述,現(xiàn)有的批量數(shù)據(jù)寫入方式,提供用戶一個批量數(shù)據(jù)接口,用戶通過該批量數(shù)據(jù)接口主動進行批量數(shù)據(jù)寫入操作。這里的批量數(shù)據(jù)寫入操作對于用戶來說比較復(fù)雜。

例如,在進行批量數(shù)據(jù)寫入過程中,數(shù)據(jù)寫入系統(tǒng)如果發(fā)送異常如關(guān)閉,則用戶需要手動將剩余未寫入的數(shù)據(jù)發(fā)送。

另一方面,對于搜索引擎、消息隊列這類場景,待寫入的數(shù)據(jù)具有很高的時效性,這樣就要求用戶實時關(guān)注待寫入數(shù)據(jù)的時效性,如果某個數(shù)據(jù)超過了預(yù)設(shè)時長,即不具有時效性,該數(shù)據(jù)就無法寫入或者寫入后會導(dǎo)致系統(tǒng)異常。對于不具有時效性的數(shù)據(jù),用戶必須將其從批量數(shù)據(jù)中找到并取回。

現(xiàn)有的批量數(shù)據(jù)寫入操作過于復(fù)雜,有些用戶寧可使用傳統(tǒng)的單條數(shù)據(jù)寫入方式,從而影響數(shù)據(jù)寫入的效率。

為了解決上述問題,請參見圖1,為本申請一實施例提供的數(shù)據(jù)寫入方法的流程圖,所述方法包括以下步驟:

步驟110:獲取用戶通過單條數(shù)據(jù)接口提交的單條數(shù)據(jù)。

一般的,對于業(yè)務(wù)系統(tǒng)來說,數(shù)據(jù)通常都是存儲在服務(wù)端的;而用戶可以使用客戶端與該服務(wù)端進行數(shù)據(jù)交互從而實現(xiàn)業(yè)務(wù)往來。在本實施例中,用于進行數(shù)據(jù)寫入的系統(tǒng)也可以包括服務(wù)端以及至少一個的客戶端。具體地,用戶可以在客戶端進行數(shù)據(jù)寫入操作,并通過該客戶端將需要寫入的數(shù)據(jù)發(fā)送給服務(wù)端,由服務(wù)端寫入到存儲設(shè)備。

數(shù)據(jù)寫入系統(tǒng)通過提供客戶端單條數(shù)據(jù)接口,如此,用戶可以在客戶端上通過單條數(shù)據(jù)接口一條一條的遞交單條數(shù)據(jù)??梢岳斫獾模瑢τ谟脩魜碚f,依然使用的是一種單條數(shù)據(jù)寫入方式。

步驟120:將所述單條數(shù)據(jù)添加到緩存隊列。

但是,客戶端在接收到用戶提交的單條數(shù)據(jù)之后,并不是如現(xiàn)有技術(shù)那樣直接將該單條數(shù)據(jù)發(fā)送給服務(wù)端,從而完成一次單條數(shù)據(jù)寫入過程;而是,將所述單條數(shù)據(jù)添加到緩存隊列中。

所述緩存隊列用于緩存用戶提交的單條數(shù)據(jù)。在控制器未觸發(fā)設(shè)定指令時,只要客戶端獲取到用戶提交的單條數(shù)據(jù),就可以持續(xù)添加到緩存隊列中。

步驟130:在控制器觸發(fā)設(shè)定指令的情況下,將所述緩存隊列中所有單條數(shù)據(jù)批量發(fā)送到服務(wù)端。

以下結(jié)合圖2所示客戶端內(nèi)部模塊示意圖,可以包括處理器、緩存隊列、批量發(fā)送器、定時器和事件監(jiān)聽器,這些模塊可以理解成客戶端內(nèi)部用于執(zhí)行不同功能的軟件模塊。

處理器獲取用戶通過單條數(shù)據(jù)接口提交的單條數(shù)據(jù);

所述處理器將所述單條數(shù)據(jù)添加到緩存隊列;

在處理器、定時器或事件監(jiān)聽器觸發(fā)設(shè)定指令的情況下,所述批量發(fā)送器將所述緩存隊列中所有單條數(shù)據(jù)批量發(fā)送到服務(wù)端。

在一種方式中:

所述控制器可以包括定時器,其中,所述定時器在到達(dá)定時周期的情況下,觸發(fā)設(shè)定指令。

如前所述,待寫入的數(shù)據(jù)通常有著非常高的時效性要求;因此,本實施例通過設(shè)置定時器,并且該定時器設(shè)定一個定時周期,在定時器計時到達(dá)該定時周期后,就可以觸發(fā)設(shè)定指令。從而可以控制批量發(fā)送器周期性的將緩存隊列中的數(shù)據(jù)發(fā)送給服務(wù)端,也就是說,在隊列中第一條數(shù)據(jù)寫入后,必定到達(dá)定時周期發(fā)送出去,避免第一條數(shù)據(jù)過期。

所述定時器設(shè)定的定時周期可以是數(shù)據(jù)最大忍耐時長例如100毫秒;當(dāng)然設(shè)定的定時周期可以根據(jù)實際需要靈活設(shè)定。

通過設(shè)置定時器,可以免去用戶人為關(guān)注數(shù)據(jù)時效性的問題;用戶只需提交數(shù)據(jù)即可,簡化操作,提高數(shù)據(jù)寫入效率,用戶體驗較好。

在另一種方式中:

所述控制器可以包括事件監(jiān)聽器;其中,所述事件監(jiān)聽器在監(jiān)測到數(shù)據(jù)寫入程序關(guān)閉的情況下,觸發(fā)設(shè)定指令。

如前所述,在批量數(shù)據(jù)寫入過程中,如果數(shù)據(jù)寫入程序異常關(guān)閉(例如程序被終止),數(shù)據(jù)隊列中未發(fā)送的數(shù)據(jù)必須要用戶人為進行操作,將未發(fā)送的數(shù)據(jù)發(fā)送給服務(wù)端。

本實施例中,通過設(shè)置事件監(jiān)聽器,該事件監(jiān)聽器用于監(jiān)測數(shù)據(jù)寫入程序是否關(guān)閉,只要監(jiān)測到數(shù)據(jù)寫入關(guān)閉(包括異常關(guān)閉以及正常關(guān)閉),就可以觸發(fā)設(shè)定指令。也就是說,只要數(shù)據(jù)寫入程序關(guān)閉,事件監(jiān)聽器就可以控制批量發(fā)送器將緩存隊列中未發(fā)送的單條數(shù)據(jù)再次批量發(fā)送給服務(wù)端,而無需用戶介入操作。所述事件監(jiān)聽器可以包括例如系統(tǒng)鉤子(systemhook)。

所述步驟130中,將所述緩存隊列中所有單條數(shù)據(jù)批量發(fā)送到服務(wù)端,具體可以包括:

對所述緩存隊列中所有單條數(shù)據(jù)序列化處理;

將序列化后的數(shù)據(jù)發(fā)送到服務(wù)端。

該實施例中,所述序列化(serialization)是一種將數(shù)據(jù)的狀態(tài)信息轉(zhuǎn)換為可以存儲或者傳輸形式的過程。也就是說,數(shù)據(jù)如果需要進行存儲或者傳輸,需要預(yù)先進行序列化。

通過本實施例,將用戶提交的單條數(shù)據(jù)添加到緩存隊列中,并通過設(shè)置控制器來觸發(fā)設(shè)定指令,該設(shè)定指令可以用于發(fā)送緩存隊列中所有單條數(shù)據(jù)。如此,可以將用戶單條數(shù)據(jù)寫入轉(zhuǎn)換為自動批量數(shù)據(jù)寫入。對于用戶而言,雖然依然使用單條數(shù)據(jù)接口提交數(shù)據(jù),但其實最終是一種批量數(shù)據(jù)寫入的方式,這樣就提高了數(shù)據(jù)寫入效率;而且用戶并不感知批量數(shù)據(jù)寫入過程,也無需在數(shù)據(jù)寫入過程中進行操作。相對于現(xiàn)有的單條數(shù)據(jù)寫入方式,應(yīng)用本實施例可以提高數(shù)據(jù)寫入效率;相對于現(xiàn)有的批量數(shù)據(jù)寫入方式,應(yīng)用本實施例,用戶無需除了提交單條數(shù)據(jù)的操作,無需進行其它額外操作,簡化了用戶操作,提高了用戶體驗。

在本申請的一個具體實施例中,所述將所述緩存隊列中所有單條數(shù)據(jù)批量發(fā)送到服務(wù)端,具體可以包括:

對所述緩存隊列中所有單條數(shù)據(jù)序列化處理;

將序列化后的數(shù)據(jù)緩存到內(nèi)存,清空所述數(shù)據(jù)隊列;

將緩存在內(nèi)存中的所述序列化的數(shù)據(jù)發(fā)送到服務(wù)端。

本實施例中,實際應(yīng)用時,在序列化處理過程中,可以將當(dāng)前狀態(tài)的數(shù)據(jù)寫入到臨時存儲區(qū)域如內(nèi)存中。之后,可以從內(nèi)存中讀取或反序列化數(shù)據(jù)的狀態(tài)信息,重新創(chuàng)建出該數(shù)據(jù)。

所述內(nèi)存設(shè)有內(nèi)存上限;其中,在所述內(nèi)存中數(shù)據(jù)量達(dá)到所述內(nèi)存上限的情況下,阻塞寫入所述內(nèi)存的數(shù)據(jù)。

本實施例與上一實施例不同之處在于,本實施例先將緩存隊列中單條數(shù)據(jù)緩存到內(nèi)存中,并清空緩存隊列。及時清空數(shù)據(jù)隊列可以避免由于等待緩存隊列中數(shù)據(jù)發(fā)送而導(dǎo)致無法添加新獲取的單條數(shù)據(jù),可以及時添加用戶新提交的單條數(shù)據(jù),從而可以提高數(shù)據(jù)寫入效率。

在圖1所示實施例基礎(chǔ)上,在一個具體地實施例中,所述步驟120之前,所述方法還可以包括:

判斷緩存隊列是否已滿;

所述步驟120,具體可以包括:

在所述緩存隊列未滿的情況下,將所述單條數(shù)據(jù)添加到緩存隊列。

在所述緩存隊列已滿的情況下,觸發(fā)設(shè)定指令。

在實際應(yīng)用中,緩存隊列通常設(shè)置有一個隊列上限,當(dāng)緩存隊列中數(shù)據(jù)量達(dá)到該隊列上限后,緩存隊列就沒有空間存放新的數(shù)據(jù)。為此,如圖2所示,處理器在獲取到用戶通過單條數(shù)據(jù)接口提交的單條數(shù)據(jù)之后,可以判斷緩存隊列是否已滿,例如判斷該緩存隊列中緩存的數(shù)據(jù)量是否到達(dá)隊列上限;如果到達(dá)隊列上限,則說明該緩存隊列已滿,此時緩存隊列中無法添加新的單條數(shù)據(jù),需要等待該緩存隊列清空后才能進行添加;等待過程中,處理器由于判斷得出緩存隊列已滿,因此可以觸發(fā)設(shè)定指令,控制批量發(fā)送器執(zhí)行步驟130;如果未到達(dá)隊列上限,則說明該緩存隊列未滿,處理器可以將所述單條數(shù)據(jù)添加到緩存隊列。

請參見圖3,為本申請一實施例提供的數(shù)據(jù)寫入方法的流程圖,所述方法包括以下步驟:

步驟310:獲取用戶通過單條數(shù)據(jù)接口提交的單條數(shù)據(jù)。

該步驟與前述實施例中步驟110類似,此處不再贅述。

步驟320:將所述單條數(shù)據(jù)添加到緩存隊列。

該步驟與前述實施例中步驟110類似,此處不再贅述。

步驟330:在控制器觸發(fā)設(shè)定指令的情況下,將所述緩存隊列中所有單條數(shù)據(jù)批量寫入到存儲設(shè)備。

與前述實施例類似的,所述控制器包括定時器;其中,所述定時器設(shè)置有定時周期,所述定時器周期性地觸發(fā)所述設(shè)定指令。

所述控制器包括事件監(jiān)聽器;其中,所述事件監(jiān)聽器在監(jiān)測到數(shù)據(jù)寫入程序關(guān)閉的情況下,觸發(fā)設(shè)定指令。

第一種方式中:

所述將所述緩存隊列中所有單條數(shù)據(jù)批量寫入到存儲設(shè)備,具體包括:

對所述緩存隊列中所有單條數(shù)據(jù)序列化處理;

將串行化后的數(shù)據(jù)寫入到存儲設(shè)備。

第二種方式中:

所述將所述緩存隊列中所有單條數(shù)據(jù)批量寫入到存儲設(shè)備,具體包括:

對所述緩存隊列中所有單條數(shù)據(jù)序列化處理;

將序列化后的數(shù)據(jù)緩存到內(nèi)存,清空所述數(shù)據(jù)隊列;

將緩存在內(nèi)存中的所述序列化的數(shù)據(jù)寫入到存儲設(shè)備。

該方式中,所述內(nèi)存設(shè)有內(nèi)存上限;其中,在所述內(nèi)存中數(shù)據(jù)量達(dá)到所述內(nèi)存上限的情況下,阻塞寫入所述內(nèi)存的數(shù)據(jù)。

本實施例中,執(zhí)行主體可以僅是前述的客戶端,也可以僅是服務(wù)端。例如,用戶可以直接在服務(wù)端上操作,提交單條數(shù)據(jù);這樣,對于服務(wù)端來說,最終將緩存隊列中所有單條數(shù)據(jù)批量寫入到本地的存儲設(shè)備。

再例如,對于分布式系統(tǒng)中,每一臺客戶端都可以視為服務(wù)端集群下的一個子服務(wù)端。這樣,用戶就可以在客戶端操作,提交單條數(shù)據(jù),并最終將緩存隊列中所有單條數(shù)據(jù)批量寫入到本地的存儲設(shè)備,而無需發(fā)送給服務(wù)端。

由于圖3所示實施例與圖1所示實施例區(qū)別僅在于步驟330中將所述緩存隊列中所述單條數(shù)據(jù)批量寫入待存儲設(shè)備而不是發(fā)送給服務(wù)端,因此本實施例以及其它相關(guān)步驟可以參考前述實施例中相應(yīng)說明。

在圖3所示實施例的基礎(chǔ)上,在所述步驟320之前,所述方法可以包括:

判斷緩存隊列是否已滿;

所述步驟320,具體可以包括:

在所述緩存隊列未滿的情況下,將所接收的單條數(shù)據(jù)添加到緩存隊列。

在所述緩存隊列已滿的情況下,觸發(fā)設(shè)定指令。

請參見圖4,為本申請一實施例提供的數(shù)據(jù)寫入方法的流程圖,所述方法包括以下步驟:

步驟410:獲取用戶通過批量數(shù)據(jù)接口提交的數(shù)據(jù)隊列;所述數(shù)據(jù)隊列中保存有至少一條的單條數(shù)據(jù);

步驟420:將所述數(shù)據(jù)隊列中的數(shù)據(jù)寫入到存儲設(shè)備;

步驟430:在事件監(jiān)聽器觸發(fā)設(shè)定指令的情況下,將所述數(shù)據(jù)隊列中未寫入到存儲設(shè)備的數(shù)據(jù)批量寫入到所述存儲設(shè)備。

前述實施例均是向用戶提供單條數(shù)據(jù)接口,本實施例中用戶可以通過與現(xiàn)有相同的批量數(shù)據(jù)接口批量提交數(shù)據(jù),即以數(shù)據(jù)隊列的形式,該數(shù)據(jù)隊列中包括了用戶提交的至少一條的單條數(shù)據(jù)。

和圖3所示實施例相同的場景,即數(shù)據(jù)最終是寫入到本地的。

為了解決現(xiàn)有批量數(shù)據(jù)寫入方式中,在批量數(shù)據(jù)寫入過程中,如果數(shù)據(jù)寫入程序異常關(guān)閉(例如程序被終止),數(shù)據(jù)隊列中未寫入的數(shù)據(jù)必須要用戶人為進行操作,將未寫入的數(shù)據(jù)繼續(xù)寫入存儲設(shè)備。本實施例中,通過設(shè)置事件監(jiān)聽器,該事件監(jiān)聽器用于監(jiān)測數(shù)據(jù)寫入程序是否關(guān)閉,只要監(jiān)測到數(shù)據(jù)寫入關(guān)閉(包括異常關(guān)閉以及正常關(guān)閉),就可以觸發(fā)設(shè)定指令。也就是說,只要數(shù)據(jù)寫入程序關(guān)閉,事件監(jiān)聽器就可以控制批量發(fā)送器將緩存隊列中未發(fā)送的單條數(shù)據(jù)再次批量寫入存儲設(shè)備,而無需用戶介入操作。所述事件監(jiān)聽器可以包括例如系統(tǒng)鉤子(systemhook)。

請參見圖5,為本申請一實施例提供的數(shù)據(jù)寫入方法的流程圖,所述方法包括以下步驟:

步驟510:獲取用戶通過批量數(shù)據(jù)接口提交的數(shù)據(jù)隊列;所述數(shù)據(jù)隊列中保存有至少一條的單條數(shù)據(jù);

步驟520:將所述數(shù)據(jù)隊列中的數(shù)據(jù)發(fā)送到服務(wù)端;

步驟530:在事件監(jiān)聽器觸發(fā)設(shè)定指令的情況下,將所述數(shù)據(jù)隊列中未發(fā)送到服務(wù)端的數(shù)據(jù)批量發(fā)送到所述服務(wù)端。

前述實施例均是向用戶提供單條數(shù)據(jù)接口,本實施例中用戶可以通過與現(xiàn)有相同的批量數(shù)據(jù)接口批量提交數(shù)據(jù),即以數(shù)據(jù)隊列的形式,該數(shù)據(jù)隊列中包括了用戶提交的至少一條的單條數(shù)據(jù)。

和圖1所示實施例相同的系統(tǒng)架構(gòu),即客戶端-服務(wù)端架構(gòu),客戶端需要將數(shù)據(jù)隊列中的數(shù)據(jù)發(fā)送到服務(wù)端,由服務(wù)端寫入存儲設(shè)備。

為了解決現(xiàn)有批量數(shù)據(jù)寫入方式中,在批量數(shù)據(jù)發(fā)送過程中,如果數(shù)據(jù)寫入程序異常關(guān)閉(例如程序被終止),數(shù)據(jù)隊列中未發(fā)送的數(shù)據(jù)必須要用戶人為進行操作,將未發(fā)送的數(shù)據(jù)繼續(xù)發(fā)送給服務(wù)端。本實施例中,通過設(shè)置事件監(jiān)聽器,該事件監(jiān)聽器用于監(jiān)測數(shù)據(jù)寫入程序是否關(guān)閉,只要監(jiān)測到數(shù)據(jù)寫入關(guān)閉(包括異常關(guān)閉以及正常關(guān)閉),就可以觸發(fā)設(shè)定指令。也就是說,只要數(shù)據(jù)寫入程序關(guān)閉,事件監(jiān)聽器就可以控制批量發(fā)送器將數(shù)據(jù)隊列中未發(fā)送的單條數(shù)據(jù)再次批量發(fā)送給服務(wù)端,而無需用戶介入操作。所述事件監(jiān)聽器可以包括例如系統(tǒng)鉤子(systemhook)。

與前述圖1所述的數(shù)據(jù)寫入方法實施例相對應(yīng),本申請還提供了一種數(shù)據(jù)寫入裝置的實施例。所述裝置實施例可以通過軟件實現(xiàn),也可以通過硬件或者軟硬件結(jié)合的方式實現(xiàn)。以軟件實現(xiàn)為例,作為一個邏輯意義上的裝置,是通過其所在設(shè)備的處理器將非易失性存儲器中對應(yīng)的計算機程序指令讀取到內(nèi)存中運行形成的。從硬件層面而言,本申請數(shù)據(jù)寫入裝置所在設(shè)備的一種硬件結(jié)構(gòu)可以包括處理器、網(wǎng)絡(luò)接口、內(nèi)存以及非易失性存儲器之外,實施例中裝置所在的設(shè)備通常根據(jù)該數(shù)據(jù)寫入實際功能,還可以包括其他硬件,對此不再贅述。

參見圖6,為本申請一實施例提供的數(shù)據(jù)寫入裝置的模塊圖,所述裝置包括:獲取數(shù)據(jù)單元610、添加數(shù)據(jù)單元620和發(fā)送數(shù)據(jù)單元630。

其中,獲取數(shù)據(jù)單元610,獲取用戶通過單條數(shù)據(jù)接口提交的單條數(shù)據(jù);

添加數(shù)據(jù)單元620,將所述單條數(shù)據(jù)添加到緩存隊列;

發(fā)送數(shù)據(jù)單元630,在控制器觸發(fā)設(shè)定指令的情況下,將所述緩存隊列中所有單條數(shù)據(jù)批量發(fā)送到服務(wù)端。

在一個可選的實施例中:

在所述添加數(shù)據(jù)單元620之前,所述裝置還包括:

判斷子單元,判斷緩存隊列是否已滿;

所述添加數(shù)據(jù)單元620,具體包括:

在所述緩存隊列未滿的情況下,將所述單條數(shù)據(jù)添加到緩存隊列。

在一個可選的實施例中:

所述裝置還包括:

觸發(fā)指令子單元,在所述緩存隊列已滿的情況下,觸發(fā)設(shè)定指令。

在一個可選的實施例中:

所述控制器包括定時器;其中,所述定時器在到達(dá)定時周期的情況下,觸發(fā)設(shè)定指令。

在一個可選的實施例中:

所述控制器包括事件監(jiān)聽器;其中,所述事件監(jiān)聽器在監(jiān)測到數(shù)據(jù)寫入程序關(guān)閉的情況下,觸發(fā)設(shè)定指令。

在一個可選的實施例中:

所述發(fā)送數(shù)據(jù)單元630,具體包括:

序列化子單元,在控制器觸發(fā)設(shè)定指令的情況下,對所述緩存隊列中所有單條數(shù)據(jù)序列化處理;

發(fā)送子單元,將序列化后的數(shù)據(jù)發(fā)送到服務(wù)端。

在一個可選的實施例中:

所述發(fā)送數(shù)據(jù)單元630,具體包括:

序列化子單元,在控制器觸發(fā)設(shè)定指令的情況下,對所述緩存隊列中所有單條數(shù)據(jù)序列化處理;

處理子單元,將序列化后的數(shù)據(jù)緩存到內(nèi)存,清空所述數(shù)據(jù)隊列;

發(fā)送子單元,將緩存在內(nèi)存中的所述序列化的數(shù)據(jù)發(fā)送到服務(wù)端。

在一個可選的實施例中:

所述內(nèi)存設(shè)有內(nèi)存上限;其中,在所述內(nèi)存中數(shù)據(jù)量達(dá)到所述內(nèi)存上限的情況下,阻塞寫入所述內(nèi)存的數(shù)據(jù)。

與前述圖3所述的數(shù)據(jù)采集方法實施例相對應(yīng),本申請還提供了一種數(shù)據(jù)采集裝置的實施例。所述裝置實施例可以通過軟件實現(xiàn),也可以通過硬件或者軟硬件結(jié)合的方式實現(xiàn)。以軟件實現(xiàn)為例,作為一個邏輯意義上的裝置,是通過其所在設(shè)備的處理器將非易失性存儲器中對應(yīng)的計算機程序指令讀取到內(nèi)存中運行形成的。從硬件層面而言,本申請數(shù)據(jù)寫入裝置所在設(shè)備的一種硬件結(jié)構(gòu)可以包括處理器、網(wǎng)絡(luò)接口、內(nèi)存以及非易失性存儲器之外,實施例中裝置所在的設(shè)備通常根據(jù)該數(shù)據(jù)寫入實際功能,還可以包括其他硬件,對此不再贅述。

參見圖7,為本申請一實施例提供的數(shù)據(jù)采集裝置的模塊圖,所述裝置包括:獲取數(shù)據(jù)單元710、添加數(shù)據(jù)單元720和發(fā)送數(shù)據(jù)單元730。

其中,獲取數(shù)據(jù)單元710,獲取用戶通過單條數(shù)據(jù)接口提交的單條數(shù)據(jù);

添加數(shù)據(jù)單元720,將所述單條數(shù)據(jù)添加到緩存隊列;

寫入數(shù)據(jù)單元730,在控制器觸發(fā)設(shè)定指令的情況下,將所述緩存隊列中所有單條數(shù)據(jù)批量寫入到存儲設(shè)備。

在一個可選的實施例中:

在所述添加數(shù)據(jù)單元720之前,所述裝置還包括:

判斷子單元,判斷緩存隊列是否已滿;

所述添加數(shù)據(jù)單元720,具體包括:

在所述緩存隊列未滿的情況下,將所述單條數(shù)據(jù)添加到緩存隊列。

在一個可選的實施例中:

所述裝置還包括:

觸發(fā)指令子單元,在所述緩存隊列已滿的情況下,觸發(fā)設(shè)定指令。

在一個可選的實施例中:

所述控制器包括定時器;其中,所述定時器在到達(dá)定時周期的情況下,觸發(fā)設(shè)定指令。

在一個可選的實施例中:

所述控制器包括事件監(jiān)聽器;其中,所述事件監(jiān)聽器在監(jiān)測到數(shù)據(jù)寫入程序關(guān)閉的情況下,觸發(fā)設(shè)定指令。

在一個可選的實施例中:

所述寫入數(shù)據(jù)單元730,具體包括:

序列化子單元,在控制器觸發(fā)設(shè)定指令的情況下,對所述緩存隊列中所有單條數(shù)據(jù)序列化處理;

寫入子單元,將序列化后的數(shù)據(jù)寫入到存儲設(shè)備。

在一個可選的實施例中:

所述寫入數(shù)據(jù)單元730,具體包括:

序列化子單元,在控制器觸發(fā)設(shè)定指令的情況下,對所述緩存隊列中所有單條數(shù)據(jù)序列化處理;

處理子單元,將序列化后的數(shù)據(jù)緩存到內(nèi)存,清空所述數(shù)據(jù)隊列;

寫入子單元,將緩存在內(nèi)存中的所述序列化的數(shù)據(jù)寫入到存儲設(shè)備。

在一個可選的實施例中:

所述內(nèi)存設(shè)有內(nèi)存上限;其中,在所述內(nèi)存中數(shù)據(jù)量達(dá)到所述內(nèi)存上限的情況下,阻塞寫入所述內(nèi)存的數(shù)據(jù)。

與前述圖4所述的數(shù)據(jù)采集方法實施例相對應(yīng),本申請還提供了一種數(shù)據(jù)采集裝置的實施例。所述裝置實施例可以通過軟件實現(xiàn),也可以通過硬件或者軟硬件結(jié)合的方式實現(xiàn)。以軟件實現(xiàn)為例,作為一個邏輯意義上的裝置,是通過其所在設(shè)備的處理器將非易失性存儲器中對應(yīng)的計算機程序指令讀取到內(nèi)存中運行形成的。從硬件層面而言,本申請數(shù)據(jù)寫入裝置所在設(shè)備的一種硬件結(jié)構(gòu)可以包括處理器、網(wǎng)絡(luò)接口、內(nèi)存以及非易失性存儲器之外,實施例中裝置所在的設(shè)備通常根據(jù)該數(shù)據(jù)寫入實際功能,還可以包括其他硬件,對此不再贅述。

參見圖8,為本申請一實施例提供的數(shù)據(jù)采集裝置的模塊圖,所述裝置包括:獲取數(shù)據(jù)單元810、寫入數(shù)據(jù)單元820和異常處理單元830。

其中,獲取數(shù)據(jù)單元810,獲取用戶通過批量數(shù)據(jù)接口提交的數(shù)據(jù)隊列;所述數(shù)據(jù)隊列中保存有至少一條的單條數(shù)據(jù);

寫入數(shù)據(jù)單元820,將所述數(shù)據(jù)隊列中的數(shù)據(jù)寫入到存儲設(shè)備;

異常處理單元830,在事件監(jiān)聽器觸發(fā)設(shè)定指令的情況下,將所述數(shù)據(jù)隊列中未寫入到存儲設(shè)備的數(shù)據(jù)批量寫入到所述存儲設(shè)備。

與前述圖5所述的數(shù)據(jù)采集方法實施例相對應(yīng),本申請還提供了一種數(shù)據(jù)采集裝置的實施例。所述裝置實施例可以通過軟件實現(xiàn),也可以通過硬件或者軟硬件結(jié)合的方式實現(xiàn)。以軟件實現(xiàn)為例,作為一個邏輯意義上的裝置,是通過其所在設(shè)備的處理器將非易失性存儲器中對應(yīng)的計算機程序指令讀取到內(nèi)存中運行形成的。從硬件層面而言,本申請數(shù)據(jù)寫入裝置所在設(shè)備的一種硬件結(jié)構(gòu)可以包括處理器、網(wǎng)絡(luò)接口、內(nèi)存以及非易失性存儲器之外,實施例中裝置所在的設(shè)備通常根據(jù)該數(shù)據(jù)寫入實際功能,還可以包括其他硬件,對此不再贅述。

參見圖9,為本申請一實施例提供的數(shù)據(jù)采集裝置的模塊圖,所述裝置包括:獲取數(shù)據(jù)單元910、發(fā)送數(shù)據(jù)單元920和異常處理單元930。

其中,獲取數(shù)據(jù)單元810,獲取用戶通過批量數(shù)據(jù)接口提交的數(shù)據(jù)隊列;所述數(shù)據(jù)隊列中保存有至少一條的單條數(shù)據(jù);

發(fā)送數(shù)據(jù)單元820,將所述數(shù)據(jù)隊列中的數(shù)據(jù)發(fā)送到服務(wù)端;

異常處理單元830,在事件監(jiān)聽器觸發(fā)設(shè)定指令的情況下,將所述數(shù)據(jù)隊列中未發(fā)送到服務(wù)端的數(shù)據(jù)批量發(fā)送到所述服務(wù)端。

上述實施例闡明的系統(tǒng)、裝置、模塊或單元,具體可以由計算機芯片或?qū)嶓w實現(xiàn),或者由具有某種功能的產(chǎn)品來實現(xiàn)。一種典型的實現(xiàn)設(shè)備為計算機,計算機的具體形式可以是個人計算機、膝上型計算機、蜂窩電話、相機電話、智能電話、個人數(shù)字助理、媒體播放器、導(dǎo)航設(shè)備、電子郵件收發(fā)設(shè)備、游戲控制臺、平板計算機、可穿戴設(shè)備或者這些設(shè)備中的任意幾種設(shè)備的組合。

上述裝置中各個單元的功能和作用的實現(xiàn)過程具體詳見上述方法中對應(yīng)步驟的實現(xiàn)過程,在此不再贅述。

對于裝置實施例而言,由于其基本對應(yīng)于方法實施例,所以相關(guān)之處參見方法實施例的部分說明即可。以上所描述的裝置實施例僅僅是示意性的,其中所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網(wǎng)絡(luò)單元上??梢愿鶕?jù)實際的需要選擇其中的部分或者全部模塊來實現(xiàn)本申請方案的目的。本領(lǐng)域普通技術(shù)人員在不付出創(chuàng)造性勞動的情況下,即可以理解并實施。

以上圖6描述了數(shù)據(jù)寫入裝置的內(nèi)部功能模塊和結(jié)構(gòu)示意,其實質(zhì)上的執(zhí)行主體可以為一種電子設(shè)備,包括:

處理器;

用于存儲處理器可執(zhí)行指令的存儲器;

其中,所述處理器被配置為:

獲取用戶通過單條數(shù)據(jù)接口提交的單條數(shù)據(jù);

將所述單條數(shù)據(jù)添加到緩存隊列;

在控制器觸發(fā)設(shè)定指令的情況下,將所述緩存隊列中所有單條數(shù)據(jù)批量發(fā)送到服務(wù)端。

類似的,以上圖7描述了數(shù)據(jù)采集裝置的內(nèi)部功能模塊和結(jié)構(gòu)示意,其實質(zhì)上的執(zhí)行主體可以為一種電子設(shè)備,包括:

獲取用戶通過單條數(shù)據(jù)接口提交的單條數(shù)據(jù);

將所述單條數(shù)據(jù)添加到緩存隊列;

在控制器觸發(fā)設(shè)定指令的情況下,將所述緩存隊列中所有單條數(shù)據(jù)批量寫入到存儲設(shè)備。

類似的,以上圖8描述了數(shù)據(jù)采集裝置的內(nèi)部功能模塊和結(jié)構(gòu)示意,其實質(zhì)上的執(zhí)行主體可以為一種電子設(shè)備,包括:

獲取用戶通過批量數(shù)據(jù)接口提交的數(shù)據(jù)隊列;所述數(shù)據(jù)隊列中保存有至少一條的單條數(shù)據(jù);

將所述數(shù)據(jù)隊列中的數(shù)據(jù)寫入到存儲設(shè)備;

在事件監(jiān)聽器觸發(fā)設(shè)定指令的情況下,將所述數(shù)據(jù)隊列中未寫入到存儲設(shè)備的數(shù)據(jù)批量寫入到所述存儲設(shè)備。

類似的,以上圖9描述了數(shù)據(jù)采集裝置的內(nèi)部功能模塊和結(jié)構(gòu)示意,其實質(zhì)上的執(zhí)行主體可以為一種電子設(shè)備,包括:

獲取用戶通過批量數(shù)據(jù)接口提交的數(shù)據(jù)隊列;所述數(shù)據(jù)隊列中保存有至少一條的單條數(shù)據(jù);

將所述數(shù)據(jù)隊列中的數(shù)據(jù)發(fā)送到服務(wù)端;

在事件監(jiān)聽器觸發(fā)設(shè)定指令的情況下,將所述數(shù)據(jù)隊列中未發(fā)送到服務(wù)端的數(shù)據(jù)批量發(fā)送到所述服務(wù)端。

在上述電子設(shè)備的實施例中,應(yīng)理解,該處理器可以是中央處理單元(英文:centralprocessingunit,簡稱:cpu),還可以是其他通用處理器、數(shù)字信號處理器(英文:digitalsignalprocessor,簡稱:dsp)、專用集成電路(英文:applicationspecificintegratedcircuit,簡稱:asic)等。通用處理器可以是微處理器或者該處理器也可以是任何常規(guī)的處理器等,而前述的存儲器可以是只讀存儲器(英文:read-onlymemory,縮寫:rom)、隨機存取存儲器(英文:randomaccessmemory,簡稱:ram)、快閃存儲器、硬盤或者固態(tài)硬盤。結(jié)合本發(fā)明實施例所公開的方法的步驟可以直接體現(xiàn)為硬件處理器執(zhí)行完成,或者用處理器中的硬件及軟件模塊組合執(zhí)行完成。

本說明書中的各個實施例均采用遞進的方式描述,各個實施例之間相同相似的部分互相參見即可,每個實施例重點說明的都是與其他實施例的不同之處。尤其,對于電子設(shè)備實施例而言,由于其基本相似于方法實施例,所以描述的比較簡單,相關(guān)之處參見方法實施例的部分說明即可。

本領(lǐng)域技術(shù)人員在考慮說明書及實踐這里公開的發(fā)明后,將容易想到本申請的其它實施方案。本申請旨在涵蓋本申請的任何變型、用途或者適應(yīng)性變化,這些變型、用途或者適應(yīng)性變化遵循本申請的一般性原理并包括本申請未公開的本技術(shù)領(lǐng)域中的公知常識或慣用技術(shù)手段。說明書和實施例僅被視為示例性的,本申請的真正范圍和精神由下面的權(quán)利要求指出。

應(yīng)當(dāng)理解的是,本申請并不局限于上面已經(jīng)描述并在附圖中示出的精確結(jié)構(gòu),并且可以在不脫離其范圍進行各種修改和改變。本申請的范圍僅由所附的權(quán)利要求來限制。

當(dāng)前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1