一種業務數據的處理方法、裝置及服務器的制造方法
【專利說明】一種業務數據的處理方法、裝置及服務器
[0001]本申請要求申請日為2014年10月28日、申請號為201410586667.4、發明名稱為《一種業務數據的處理方法、裝置及服務器》的中國發明專利申請的優先權。
技術領域
[0002]本發明涉及數據處理技術領域,尤其涉及一種業務數據的處理方法、裝置及服務器。
【背景技術】
[0003]在實時監控的場景下,通常只會關注最新時間段的業務數據,根據業務需求可以是最近30分鐘、最近I小時、甚至于最近幾個小時的數據。
[0004]對于業務數據的處理方式,一種方式是,服務器端把業務數據持久化到數據庫或者文件,客戶端頁面發出查詢條件,服務器端接收到查詢條件后再查詢數據庫(或文件),返回數據結果并傳遞給客戶端頁面。這種處理方法的問題在于,當查詢的結果數據很多,并發查詢很頻繁時,查詢壓力會很大,同時因不斷往數據庫(或文件)寫入數據,會造成讀寫互鎖爭搶資源,讀寫都會產生比較大的延遲,降低了性能。
[0005]另一種做法是服務器端把業務數據寫入內存,客戶端查詢發起的查詢請求時,都是從內存中進行查詢然后返回查詢結果。這種做法的缺點在于,由于業務數據都實時地存儲于內存之中,一旦服務異常終止之后,內存中的數據會全部消失,導致無法正常查詢。
【發明內容】
[0006]鑒于上述問題,提出了本發明以便提供一種克服上述問題或者至少部分地解決上述問題的一種業務數據的處理方法、裝置及服務器。
[0007]基于上述問題,本發明實施例提供的一種業務數據的處理方法,包括:
[0008]將業務數據寫入持久存儲的存儲實體中時,將所述業務數據寫入到緩存中;
[0009]當接收到業務數據查詢請求時,從所述緩存中讀取對應的業務數據并返回。
[0010]本發明實施例提供的一種業務數據的處理裝置,包括:
[0011]第一寫入模塊,用于將業務數據寫入持久存儲的存儲實體中;
[0012]第二寫入模塊,用于在將業務數據寫入持久存儲的存儲實體中時,將所述業務數據寫入到緩存中;
[0013]查詢模塊,用于當接收到業務數據查詢請求時,從所述緩存中讀取對應的業務數據并返回。
[0014]本發明實施例提供的服務器,包括本發明實施例提供的上述業務數據的處理裝置。
[0015]本發明實施例的有益效果包括:
[0016]本發明實施例提供的上述業務數據的處理方法,在將業務數據持久化即將業務數據寫入持久存儲的存儲實體中的同時,還需要將同樣的業務數據寫入到緩存中,這樣,在保證持久存儲的存儲實體中的業務數據與緩存中業務數據一致的前提下,當接收到業務數據查詢請求時,這樣無論并發量多大,可以直接到緩存中查詢對應的業務數據,而不必去持久存儲的存儲實體中查找,既避免了頻繁查詢持久存儲的存儲實體導致的讀寫互鎖爭搶資源降低性能的問題,同時又將業務數據及時地持久化,避免了服務發生異常時的業務數據的丟失的冋題。
[0017]上述說明僅是本發明技術方案的概述,為了能夠更清楚了解本發明的技術手段,而可依照說明書的內容予以實施,并且為了讓本發明的上述和其它目的、特征和優點能夠更明顯易懂,以下特舉本發明的【具體實施方式】。
【附圖說明】
[0018]通過閱讀下文優選實施方式的詳細描述,各種其他的優點和益處對于本領域普通技術人員將變得清楚明了。附圖僅用于示出優選實施方式的目的,而并不認為是對本發明的限制。而且在整個附圖中,用相同的參考符號表示相同的部件。在附圖中:
[0019]圖1為本發明實施例提供的業務數據的處理方法的流程示意圖;
[0020]圖2為本發明實施例提供的步驟S12的具體流程示意圖;
[0021]圖3為本發明實施例提供的實例的流程示意圖;
[0022]圖4為本發明實施例提供的業務數據的處理裝置的結構示意圖。
【具體實施方式】
[0023]下面將參照附圖更詳細地描述本公開的示例性實施例。雖然附圖中顯示了本公開的示例性實施例,然而應當理解,可以以各種形式實現本公開而不應被這里闡述的實施例所限制。相反,提供這些實施例是為了能夠更透徹地理解本公開,并且能夠將本公開的范圍完整的傳達給本領域的技術人員。
[0024]下面結合說明書附圖,對本發明實施例提供的一種業務數據的處理方法、裝置及服務器的【具體實施方式】進行說明。
[0025]本發明實施例提供的一種業務數據的處理方法,如圖1所示,具體包括以下步驟:
[0026]S11、將業務數據寫入持久存儲的存儲實體中時,將所述業務數據寫入到緩存中;
[0027]S12、當接收到業務數據查詢請求時,從所述緩存中讀取對應的業務數據并返回。
[0028]在本發明實施例中,持久存儲的存儲實體可以是任何可實現持久存儲(相對于臨時存儲而言)功能的實體,不限定于軟件、硬件或者軟硬件結合的形式。在本發明實施例中,該持久存儲的存儲實體包括但不限于例如數據庫或文件等。
[0029]業務數據存儲在緩存中時,可以采用緩存隊列的方式,本發明實施例對于采用何種具體存儲方式并不限定。同樣,本發明實施例對于持久存儲的存儲實體中的采用何種具體的存儲方式也不并不限定。
[0030]本發明實施例提供的上述業務數據的處理方法,在將業務數據持久化即將業務數據寫入持久存儲的存儲實體中的同時,還需要將同樣的業務數據寫入到緩存中,這樣,在保證持久存儲的存儲實體中的業務數據與緩存中業務數據一致的前提下,當接收到業務數據查詢請求時,這樣無論并發量多大,可以直接到緩存中查詢對應的業務數據,而不必去持久存儲的存儲實體中查找,既避免了頻繁查詢持久存儲的存儲實體導致的讀寫互鎖爭搶資源降低性能的問題,同時又將業務數據及時地持久化,避免了服務發生異常時的業務數據的丟失的冋題。
[0031]進一步地,上述步驟Sll中,將業務數據寫入持久存儲的存儲實體的步驟,具體可以通過下述過程實現:
[0032]對用戶的業務請求進行監聽;
[0033]當接收到用戶發出業務請求時,根據該請求的定義形式反序列化數據對象;
[0034]序列化是將數據對象狀態轉換為可保持或傳輸的格式的數據(一般為數據流)過程。反序列化是與之相反的一個過程,即將網絡數據流轉換為數據對象。
[0035]為了包含用戶發出的業務請求的數據流轉換成數據對象,需要按照該請求定義的形式將其轉變成數據對象。具體的反序列化的實施方法,可以參照現有技術。
[0036]將數據對象放入到持久存儲的存儲實體中保存。
[0037]用戶的業務請求包括但不限于HTTP請求,還可以是采用其他協議類型的業務請求。
[0038]較佳地,在根據該請求的定義形式反序列化數據對象之前,還可以包括對請求內容是否合法的檢查的步驟,如果合法,再進行反序列化數據對象的操作。
[0039]進一步地,上述業務數據的處理方法,還可以根據業務數據所屬業務的需求,預先確定緩存中業務數據中熱數據的生命周期,該熱數據是指緩存中滿足業務查詢請求的數據。
[0040]在實時監控系統的場景下,通常只會關注最新時間段的業務數據,根據業務需求可以是最近30分鐘、最近I小時、甚至于最近幾個小時的數據,這部分被關注的數據或者說是可以滿足業務查詢需求的數據,在本發明實施例中稱之為熱數據,當業務數據失去時效性后,稱之為冷數據。隨著時間的推移,熱數據會變為冷數據,最新接收到的數據變為熱數據。
[0041]熱數據的生命周期可以根據業務數據所屬的業務需求來確定,具體如何確定可參考現有技術。
[0042]進一步地,本發明實施例提供的上述業務數據的處理方法,還可以根據熱數據的生命周期,在緩存中不斷刪除冷數據,即那些產生時間超過該熱數據的生命周期的數據。
[0043]在本發明實施例中,業務數據包含業務的各種維度、指標和時間戳,這個時間戳標志著業務數據的產生時間,并且,緩存中的數據是按照時間先后順序放入的,前面的業務數據的時間戳小于后面數據的時間戳,所以,在本發明實施例中,可以依照業務數據的時間戳來確定哪些業務數據是熱數據,哪些業務數據是冷數據并將冷數據刪除,具體來說,可以將緩存中保存的最后一行業務數據的時間戳減去熱數據的生命周期,得到冷數據的截止時間;
[0044]將緩存中時間戳在計算得到的冷數據的截止時間之前的所有業務數據刪除。
[0045]這樣,在緩存中不斷地刪除冷數據,保留熱數據,使得緩存中總保留著對查詢業務有用的最新的熱數據,既滿足了查詢請求,又可避免對緩存的過度占用。
[0046]進一步地,如圖2所示,步驟S12具體可以包括:
[0047]S121、當接收到業務數據查詢請求時,確定當前服務是否發生異常;
[0048]S122、若S121的確定結果為是,則從持久存儲的存儲實體中讀取對應的業務數據并返回;
[0049]S123、若S121的確定結果為否,則從緩存中讀取對應的業務數據并返回。
[0050]為了更好地說明本發明實施例提供的上述業務數據的處理方法,下面以一個簡單的實例對其進行說明:
[0051]該實例的流程圖如圖3所示,該流程包括下述步驟:
[0052]S21、流程開始時,初始化數據集合以及該方法執行期間需要使用的內部變量;
[0053]S22、開啟HTTP請求的監聽;
[0054]S23、判斷是否接收到HTTP請求;若是,執行S24,否則,繼續執行S22 ;
[0055]S24、接收到請求后判斷請求內容是否合法;如果合法,則執行S25 ;否則,繼續執行 S22 ;
[0056]S25、根據請求的定義形式反序列化成數據對象。
[0057]S26、把數據對象放入到數據庫隊列中,數據庫隊列包括業務的各種維度和指標以及時間戳。
[0058]本步驟S25在具體實施時,可以利用一個單獨的線程定時把數據庫隊列更新到數據庫,該線程按照定時周期性調用(幾秒或者幾十秒等等),更新完畢后刪除已更新的數據庫隊列成員。
[0059]S27、把數據對象同時放入到緩存隊列中;
[0060]因為數據是按照先后順序放入隊列的,所以前面數據的時間戳一定小于后面數據的時間戳,緩存隊列包括業務的各種維度和指標以及時間戳。
[0061]在本步驟S27