国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      數(shù)據(jù)處理方法、裝置及系統(tǒng)的制作方法

      文檔序號(hào):7799562閱讀:179來源:國(guó)知局
      數(shù)據(jù)處理方法、裝置及系統(tǒng)的制作方法
      【專利摘要】本發(fā)明公開了一種數(shù)據(jù)處理方法、裝置及系統(tǒng),屬于數(shù)據(jù)存儲(chǔ)領(lǐng)域。所述方法包括:數(shù)據(jù)發(fā)布平臺(tái)從后端數(shù)據(jù)庫(kù)獲取后端數(shù)據(jù)庫(kù)的日志記錄;數(shù)據(jù)發(fā)布平臺(tái)從日志記錄中獲取數(shù)據(jù)更改事件;數(shù)據(jù)發(fā)布平臺(tái)將數(shù)據(jù)更改事件提供給緩存系統(tǒng),所述緩存系統(tǒng)根據(jù)所述數(shù)據(jù)更改事件對(duì)緩存的數(shù)據(jù)進(jìn)行處理。本發(fā)明解決了已經(jīng)緩存在緩存系統(tǒng)中的數(shù)據(jù)在MySQL數(shù)據(jù)庫(kù)中發(fā)生了變化,則客戶端從緩存系統(tǒng)中讀取到的數(shù)據(jù)將是舊數(shù)據(jù)或者錯(cuò)誤數(shù)據(jù)的問題;達(dá)到了緩存系統(tǒng)可以同步更新數(shù)據(jù)或刪除掉發(fā)生變化的數(shù)據(jù),不會(huì)向客戶端提供舊數(shù)據(jù)或者錯(cuò)誤數(shù)據(jù)的效果。
      【專利說明】數(shù)據(jù)處理方法、裝置及系統(tǒng)
      【技術(shù)領(lǐng)域】
      [0001]本發(fā)明涉及數(shù)據(jù)存儲(chǔ)領(lǐng)域,特別涉及一種數(shù)據(jù)處理方法、裝置及系統(tǒng)。
      【背景技術(shù)】
      [0002]MySQL數(shù)據(jù)庫(kù)是一種在互聯(lián)網(wǎng)行業(yè)應(yīng)用非常廣泛的數(shù)據(jù)庫(kù)。但由于MySQL數(shù)據(jù)庫(kù)是一種磁盤數(shù)據(jù)庫(kù),無法提供快速高性能的服務(wù),使得單純的MySQL無法應(yīng)對(duì)幾何倍速增長(zhǎng)的數(shù)據(jù)訪問壓力。
      [0003]為了解決數(shù)據(jù)訪問壓力,相關(guān)技術(shù)中采用緩存系統(tǒng)來加速數(shù)據(jù)訪問速度。請(qǐng)參考圖1,其示出了相關(guān)技術(shù)中一種數(shù)據(jù)庫(kù)系統(tǒng)的結(jié)構(gòu)示意圖。該數(shù)據(jù)庫(kù)系統(tǒng)包括:緩存系統(tǒng)120和MySQL數(shù)據(jù)庫(kù)140。其中,MySQL數(shù)據(jù)庫(kù)140用于在后端存儲(chǔ)全部數(shù)據(jù)。而緩存系統(tǒng)120則在接收到客戶端的數(shù)據(jù)訪問后,檢測(cè)本地是否緩存有該數(shù)據(jù),若未緩存有該數(shù)據(jù),則將該數(shù)據(jù)從MySQL數(shù)據(jù)庫(kù)140讀取至本地緩存,并對(duì)數(shù)據(jù)訪問做出響應(yīng)。也即,緩存系統(tǒng)120會(huì)將頻繁訪問的熱點(diǎn)數(shù)據(jù)緩存在本地。由于MySQL數(shù)據(jù)庫(kù)140中的數(shù)據(jù)存儲(chǔ)在磁盤中,而緩存系統(tǒng)120中的數(shù)據(jù)存儲(chǔ)在內(nèi)存中,所以緩存系統(tǒng)120可以提供快速高性能的服務(wù)。
      [0004]在實(shí)現(xiàn)本發(fā)明的過程中,發(fā)明人發(fā)現(xiàn)現(xiàn)有技術(shù)至少存在以下問題:由于MySQL數(shù)據(jù)庫(kù)140中的數(shù)據(jù)是隨時(shí)在變化的。如果已經(jīng)緩存在緩存系統(tǒng)120中的數(shù)據(jù)在MySQL數(shù)據(jù)庫(kù)140中發(fā)生了變化,則客戶端從緩存系統(tǒng)120中讀取到的數(shù)據(jù)將是舊數(shù)據(jù)或者錯(cuò)誤數(shù)據(jù)。雖然緩存系統(tǒng)120提供了緩存的數(shù)據(jù)在預(yù)定時(shí)間內(nèi)失效的機(jī)制,但是該機(jī)制無法完全解決上述問題。

      【發(fā)明內(nèi)容】

      [0005]為了解決已經(jīng)緩存在緩存系統(tǒng)中的數(shù)據(jù)在MySQL數(shù)據(jù)庫(kù)中發(fā)生了變化,則客戶端從緩存系統(tǒng)中讀取到的數(shù)據(jù)將是舊數(shù)據(jù)或者錯(cuò)誤數(shù)據(jù)的問題,本發(fā)明實(shí)施例提供了一種數(shù)據(jù)處理方法、裝置及系統(tǒng)。所述技術(shù)方案如下:
      [0006]第一方面,提供了一種數(shù)據(jù)處理方法,所述方法包括:
      [0007]從后端數(shù)據(jù)庫(kù)獲取所述后端數(shù)據(jù)庫(kù)的日志記錄;
      [0008]從所述日志記錄中獲取數(shù)據(jù)更改事件;
      [0009]將所述數(shù)據(jù)更改事件提供給緩存系統(tǒng),以便所述緩存系統(tǒng)根據(jù)所述數(shù)據(jù)更改事件對(duì)緩存的數(shù)據(jù)進(jìn)行處理。
      [0010]可選地,所述從所述后端數(shù)據(jù)庫(kù)獲取所述后端數(shù)據(jù)庫(kù)的日志記錄之前,還包括:
      [0011]向所述后端數(shù)據(jù)庫(kù)注冊(cè)賬戶,所述賬戶擁有復(fù)制所述后端數(shù)據(jù)庫(kù)的日志記錄的權(quán)限;
      [0012]通過所述賬戶向所述后端數(shù)據(jù)庫(kù)發(fā)送日志記錄獲取請(qǐng)求。
      [0013]可選地,所述將所述數(shù)據(jù)更改事件提供給緩存系統(tǒng),包括:
      [0014]將所述數(shù)據(jù)更改事件保存在中繼日志記錄中;
      [0015]接收所述緩存系統(tǒng)對(duì)所述數(shù)據(jù)更改事件的訂閱請(qǐng)求;[0016]根據(jù)所述訂閱請(qǐng)求向所述緩存系統(tǒng)發(fā)布所述數(shù)據(jù)更改事件。
      [0017]可選地,所述根據(jù)所述訂閱請(qǐng)求向所述緩存系統(tǒng)發(fā)布所述數(shù)據(jù)更改事件,包括:
      [0018]根據(jù)所述訂閱請(qǐng)求將所述數(shù)據(jù)更改事件發(fā)布在預(yù)先設(shè)置的訂閱器中;
      [0019]和/ 或,
      [0020]根據(jù)所述訂閱請(qǐng)求將所述數(shù)據(jù)更改事件發(fā)布在通用消息隊(duì)列中。
      [0021]第二方面,提供了一種數(shù)據(jù)處理方法,所述方法包括:
      [0022]從數(shù)據(jù)發(fā)布平臺(tái)獲取數(shù)據(jù)更改事件,所述數(shù)據(jù)更改事件是所述數(shù)據(jù)發(fā)布平臺(tái)從后端數(shù)據(jù)庫(kù)獲取所述后端數(shù)據(jù)庫(kù)的日志記錄后,從所述日志記錄中獲取的;
      [0023]根據(jù)所述數(shù)據(jù)更改事件對(duì)緩存的數(shù)據(jù)進(jìn)行處理。
      [0024]可選地,所述從數(shù)據(jù)發(fā)布平臺(tái)獲取數(shù)據(jù)更改事件,包括:
      [0025]向所述數(shù)據(jù)發(fā)布平臺(tái)訂閱所述數(shù)據(jù)更改事件;
      [0026]獲取所述數(shù)據(jù)發(fā)布平臺(tái)根據(jù)所述訂閱請(qǐng)求發(fā)布的所述數(shù)據(jù)更改事件。
      [0027]可選地,所述獲取所述數(shù)據(jù)發(fā)布平臺(tái)根據(jù)所述訂閱請(qǐng)求發(fā)布的所述數(shù)據(jù)更改記錄,包括:
      [0028]從預(yù)先設(shè)置的訂閱器中獲取所述數(shù)據(jù)發(fā)布平臺(tái)根據(jù)所述訂閱請(qǐng)求發(fā)布的所述數(shù)據(jù)更改事件;
      [0029]和/ 或,
      [0030]從通用消息隊(duì)列中獲取所述數(shù)據(jù)發(fā)布平臺(tái)根據(jù)所述訂閱請(qǐng)求發(fā)布的所述數(shù)據(jù)更改事件。
      [0031]可選地,所述根據(jù)所述數(shù)據(jù)更改事件對(duì)緩存的數(shù)據(jù)進(jìn)行處理,包括:
      [0032]根據(jù)所述數(shù)據(jù)更改事件對(duì)緩存的數(shù)據(jù)進(jìn)行更新處理;
      [0033]和/ 或,
      [0034]根據(jù)所述數(shù)據(jù)更改事件對(duì)緩存的數(shù)據(jù)進(jìn)行刪除處理。
      [0035]第三方面,提供了一種數(shù)據(jù)處理裝置,所述裝置包括:
      [0036]記錄獲取模塊,用于從后端數(shù)據(jù)庫(kù)獲取所述后端數(shù)據(jù)庫(kù)的日志記錄;
      [0037]事件提取模塊,用于從所述日志記錄中獲取數(shù)據(jù)更改事件;
      [0038]事件提供模塊,用于將所述數(shù)據(jù)更改事件提供給緩存系統(tǒng),以便所述緩存系統(tǒng)根據(jù)所述數(shù)據(jù)更改事件對(duì)緩存的數(shù)據(jù)進(jìn)行處理。
      [0039]可選地,所述裝置,還包括:
      [0040]賬戶注冊(cè)模塊和請(qǐng)求發(fā)送模塊;
      [0041]所述賬戶注冊(cè)模塊,用于向所述后端數(shù)據(jù)庫(kù)注冊(cè)賬戶,所述賬戶擁有復(fù)制所述后端數(shù)據(jù)庫(kù)的日志記錄的權(quán)限;
      [0042]所述請(qǐng)求發(fā)送模塊,用于通過所述賬戶向所述后端數(shù)據(jù)庫(kù)發(fā)送日志記錄獲取請(qǐng)求。
      [0043]可選地,所述事件提供模塊,包括:
      [0044]事件保存單元、訂閱接收單元和事件發(fā)布單元;
      [0045]所述事件保存單元,用于將所述數(shù)據(jù)更改事件保存在中繼日志記錄中;
      [0046]所述訂閱接收單元,用于接收所述緩存系統(tǒng)對(duì)所述數(shù)據(jù)更改事件的訂閱請(qǐng)求;
      [0047]所述事件發(fā)布單元,用于根據(jù)所述訂閱請(qǐng)求向所述緩存系統(tǒng)發(fā)布所述數(shù)據(jù)更改事件。
      [0048]可選地,所述事件發(fā)布單元,包括:
      [0049]第一發(fā)布子單元,和/或,第二發(fā)布子單元;
      [0050]所述第一發(fā)布子單元,用于根據(jù)所述訂閱請(qǐng)求將所述數(shù)據(jù)更改事件發(fā)布在預(yù)先設(shè)置的訂閱器中;
      [0051]所述第二發(fā)布子單元,用于根據(jù)所述訂閱請(qǐng)求將所述數(shù)據(jù)更改事件發(fā)布在通用消息隊(duì)列中。
      [0052]第四方面,提供了一種數(shù)據(jù)處理裝置,所述裝置,包括:
      [0053]事件獲取模塊,用于從數(shù)據(jù)發(fā)布平臺(tái)獲取數(shù)據(jù)更改事件,所述數(shù)據(jù)更改記錄是所述數(shù)據(jù)發(fā)布平臺(tái)從后端數(shù)據(jù)庫(kù)獲取所述后端數(shù)據(jù)庫(kù)的日志記錄后,從所述日志記錄中獲取的;
      [0054]數(shù)據(jù)處理模塊,用于根據(jù)所述數(shù)據(jù)更改事件對(duì)緩存的數(shù)據(jù)進(jìn)行處理。
      [0055]可選地,所述事件獲取模塊,包括:
      [0056]事件訂閱單元和事件獲取單元;
      [0057]所述事件訂閱單元,用于向所述數(shù)據(jù)發(fā)布平臺(tái)訂閱所述數(shù)據(jù)更改事件;
      [0058]所述事件獲取單元,用于獲取所述數(shù)據(jù)發(fā)布平臺(tái)根據(jù)所述訂閱請(qǐng)求發(fā)布的所述數(shù)據(jù)更改事件。
      [0059]可選地,所述事件獲取單元,包括:
      [0060]第一獲取子單元,和/或,第二獲取子單元;
      [0061]所述第一獲取子單元,用于從預(yù)先設(shè)置的訂閱器中獲取所述數(shù)據(jù)發(fā)布平臺(tái)根據(jù)所述訂閱請(qǐng)求發(fā)布的所述數(shù)據(jù)更改事件;
      [0062]所述第二獲取子單元,用于從通用消息隊(duì)列中獲取所述數(shù)據(jù)發(fā)布平臺(tái)根據(jù)所述訂閱請(qǐng)求發(fā)布的所述數(shù)據(jù)更改事件。
      [0063]可選地,所述數(shù)據(jù)處理模塊,包括:更新處理單元,和/或,刪除處理單元;
      [0064]所述更新處理單元,用于根據(jù)所述數(shù)據(jù)更改事件對(duì)緩存的數(shù)據(jù)進(jìn)行更新處理;
      [0065]所述刪除處理單元,用于根據(jù)所述數(shù)據(jù)更改事件對(duì)緩存的數(shù)據(jù)進(jìn)行刪除處理。
      [0066]第五方面,提供了一種數(shù)據(jù)處理系統(tǒng),所述系統(tǒng)包括:數(shù)據(jù)發(fā)布平臺(tái)、緩存系統(tǒng)和后端數(shù)據(jù)庫(kù);所述數(shù)據(jù)發(fā)布平臺(tái)分別與所述緩存系統(tǒng)和所述后端數(shù)據(jù)庫(kù)相連,所述緩存系統(tǒng)和所述后端數(shù)據(jù)庫(kù)相連;
      [0067]所述數(shù)據(jù)發(fā)布平臺(tái),包括如上第三方面所述的數(shù)據(jù)處理裝置;
      [0068]所述緩存系統(tǒng),包括如上第四方面所述的數(shù)據(jù)處理裝置。
      [0069]本發(fā)明實(shí)施例提供的技術(shù)方案帶來的有益效果是:
      [0070]通過由數(shù)據(jù)發(fā)布平臺(tái)從后端數(shù)據(jù)庫(kù)獲取后端數(shù)據(jù)庫(kù)的日志記錄,從日志記錄中獲取數(shù)據(jù)更改事件,將數(shù)據(jù)更改事件提供給緩存系統(tǒng),由緩存系統(tǒng)根據(jù)數(shù)據(jù)更改事件對(duì)緩存的數(shù)據(jù)進(jìn)行處理;解決了已經(jīng)緩存在緩存系統(tǒng)中的數(shù)據(jù)在MySQL數(shù)據(jù)庫(kù)中發(fā)生了變化,則客戶端從緩存系統(tǒng)中讀取到的數(shù)據(jù)將是舊數(shù)據(jù)或者錯(cuò)誤數(shù)據(jù)的問題;達(dá)到了緩存系統(tǒng)可以同步更新數(shù)據(jù)或刪除掉發(fā)生變化的數(shù)據(jù),不會(huì)向客戶端提供舊數(shù)據(jù)或者錯(cuò)誤數(shù)據(jù)的效果。
      【專利附圖】

      【附圖說明】[0071]為了更清楚地說明本發(fā)明實(shí)施例中的技術(shù)方案,下面將對(duì)實(shí)施例描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
      [0072]圖1是【背景技術(shù)】提供的數(shù)據(jù)庫(kù)系統(tǒng)的結(jié)構(gòu)示意圖;
      [0073]圖2是本發(fā)明實(shí)施例提供的數(shù)據(jù)處理方法所涉及的實(shí)施環(huán)境的結(jié)構(gòu)示意圖;
      [0074]圖3是本發(fā)明一個(gè)實(shí)施例提供的數(shù)據(jù)處理方法的方法流程圖;
      [0075]圖4是本發(fā)明另一實(shí)施例提供的數(shù)據(jù)處理方法的方法流程圖;
      [0076]圖5是本發(fā)明一個(gè)實(shí)施例提供的數(shù)據(jù)處理系統(tǒng)的結(jié)構(gòu)方框圖;
      [0077]圖6是本發(fā)明另一實(shí)施例提供的數(shù)據(jù)處理系統(tǒng)的結(jié)構(gòu)方框圖。
      【具體實(shí)施方式】
      [0078]為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附圖對(duì)本發(fā)明實(shí)施方式作進(jìn)一步地詳細(xì)描述。
      [0079]請(qǐng)參考圖2,其示出了本發(fā)明實(shí)施例提供的數(shù)據(jù)處理方法所涉及的實(shí)施環(huán)境的結(jié)構(gòu)示意圖。該實(shí)施環(huán)境包括數(shù)據(jù)發(fā)布平臺(tái)220、緩存系統(tǒng)240和后端數(shù)據(jù)庫(kù)260。
      [0080]數(shù)據(jù)發(fā)布平臺(tái)220是本發(fā)明實(shí)施例中新增的系統(tǒng),用于獲取后端數(shù)據(jù)庫(kù)260中的數(shù)據(jù)變化事件。數(shù)據(jù)發(fā)布平臺(tái)220通過有線網(wǎng)絡(luò)或無線網(wǎng)絡(luò)與所述緩存系統(tǒng)240相連。
      [0081]緩存系統(tǒng)240用于緩存后端數(shù)據(jù)庫(kù)260中的數(shù)據(jù)來提高性能。該緩存系統(tǒng)240可以是分布式內(nèi)存對(duì)象緩存系統(tǒng)Memcached。緩存系統(tǒng)240通過有線網(wǎng)絡(luò)或無線網(wǎng)絡(luò)與所述后端數(shù)據(jù)庫(kù)260相連。
      [0082]后端數(shù)據(jù)庫(kù)260用于存儲(chǔ)數(shù)據(jù)。后端數(shù)據(jù)庫(kù)260需要有日志記錄和日志復(fù)制功能。該后端數(shù)據(jù)庫(kù)260可以是MySQL數(shù)據(jù)庫(kù)。
      [0083]請(qǐng)參考圖3,其示出了本發(fā)明一個(gè)實(shí)施例提供的數(shù)據(jù)處理方法的方法流程圖。該數(shù)據(jù)處理方法應(yīng)用于圖2所示的實(shí)施環(huán)境中,所述方法包括:
      [0084]步驟301,數(shù)據(jù)發(fā)布平臺(tái)從后端數(shù)據(jù)庫(kù)獲取后端數(shù)據(jù)庫(kù)的日志記錄;
      [0085]步驟302,數(shù)據(jù)發(fā)布平臺(tái)從日志記錄中獲取數(shù)據(jù)更改事件;
      [0086]數(shù)據(jù)更改事件包括:數(shù)據(jù)插入事件、數(shù)據(jù)刪除事件和數(shù)據(jù)更新事件。
      [0087]步驟303,數(shù)據(jù)發(fā)布平臺(tái)將數(shù)據(jù)更改事件提供給緩存系統(tǒng);
      [0088]步驟304,緩存系統(tǒng)從數(shù)據(jù)發(fā)布平臺(tái)獲取數(shù)據(jù)更改事件;
      [0089]其中,數(shù)據(jù)更改事件是數(shù)據(jù)發(fā)布平臺(tái)從后端數(shù)據(jù)庫(kù)獲取后端數(shù)據(jù)庫(kù)的日志記錄后,從日志記錄中獲取到的。
      [0090]步驟305,緩存系統(tǒng)根據(jù)數(shù)據(jù)更改事件對(duì)緩存的數(shù)據(jù)進(jìn)行處理。
      [0091]綜上所述,本實(shí)施例提供的數(shù)據(jù)處理方法,通過由數(shù)據(jù)發(fā)布平臺(tái)從后端數(shù)據(jù)庫(kù)獲取后端數(shù)據(jù)庫(kù)的日志記錄,從日志記錄中獲取數(shù)據(jù)更改事件,將數(shù)據(jù)更改事件提供給緩存系統(tǒng),由緩存系統(tǒng)根據(jù)數(shù)據(jù)更改事件對(duì)緩存的數(shù)據(jù)進(jìn)行處理;解決了已經(jīng)緩存在緩存系統(tǒng)中的數(shù)據(jù)在MySQL數(shù)據(jù)庫(kù)中發(fā)生了變化,則客戶端從緩存系統(tǒng)中讀取到的數(shù)據(jù)將是舊數(shù)據(jù)或者錯(cuò)誤數(shù)據(jù)的問題;達(dá)到了緩存系統(tǒng)可以同步更新數(shù)據(jù)或刪除掉發(fā)生變化的數(shù)據(jù),不會(huì)向客戶端提供丨H數(shù)據(jù)或者錯(cuò)誤數(shù)據(jù)的效果。[0092]需要補(bǔ)充說明的是,上述步驟301至步驟303可以單獨(dú)實(shí)現(xiàn)成為數(shù)據(jù)發(fā)布平臺(tái)側(cè)的數(shù)據(jù)處理方法,上述步驟304和步驟305可以單獨(dú)實(shí)現(xiàn)成為緩存系統(tǒng)側(cè)的數(shù)據(jù)處理方法。
      [0093]請(qǐng)參考圖4,其示出了本發(fā)明另一實(shí)施例提供的數(shù)據(jù)處理方法的方法流程圖。該數(shù)據(jù)處理方法應(yīng)用于圖2所示的實(shí)施環(huán)境中,所述方法包括:
      [0094]步驟401,數(shù)據(jù)發(fā)布平臺(tái)向后端數(shù)據(jù)庫(kù)注冊(cè)賬戶,該賬戶擁有復(fù)制后端數(shù)據(jù)庫(kù)的日志記錄的權(quán)限;
      [0095]后端數(shù)據(jù)庫(kù)在運(yùn)行過程中會(huì)產(chǎn)生日志記錄。該日志記錄中包括了數(shù)據(jù)更改事件。數(shù)據(jù)更改事件包括:數(shù)據(jù)插入事件、數(shù)據(jù)刪除事件和數(shù)據(jù)更新事件。比如,在表中插入了一個(gè)數(shù)據(jù),則數(shù)據(jù)插入事件將記錄該數(shù)據(jù)的標(biāo)識(shí)和具體取值。又比如,在表中刪除了一個(gè)數(shù)據(jù),則數(shù)據(jù)刪除事件會(huì)記錄該數(shù)據(jù)的標(biāo)識(shí)和具體取值。再比如,在表中更新了一個(gè)數(shù)據(jù),則數(shù)據(jù)更新事件會(huì)記錄該數(shù)據(jù)的標(biāo)識(shí)、變更前的取值和變更后的取值。當(dāng)然,日志記錄還記錄了數(shù)據(jù)更改事件之外的其它事件。
      [0096]數(shù)據(jù)發(fā)布平臺(tái)為了獲取后端數(shù)據(jù)庫(kù)的日志記錄。首先向后端數(shù)據(jù)庫(kù)注冊(cè)賬戶,該賬戶擁有復(fù)制后端數(shù)據(jù)庫(kù)的日志記錄的權(quán)限。數(shù)據(jù)發(fā)布平臺(tái)可以偽裝成后端數(shù)據(jù)庫(kù)的從數(shù)據(jù)庫(kù),從后端數(shù)據(jù)庫(kù)中復(fù)制日志記錄。
      [0097]以后端數(shù)據(jù)庫(kù)為MySQL數(shù)據(jù)庫(kù)為例,MySQL數(shù)據(jù)庫(kù)在運(yùn)行過程中會(huì)生成二進(jìn)制日志記錄,利用MySQL提供的Binlog功能可以復(fù)制MySQL數(shù)據(jù)庫(kù)的二進(jìn)制日志記錄。為此,數(shù)據(jù)發(fā)布平臺(tái)中可以啟動(dòng)一個(gè)Binlog抓取線程,該Binlog抓取線程用于連接到MySQL數(shù)據(jù)庫(kù)抓取日志記錄。首先該Binlog抓取線程向MySQL數(shù)據(jù)庫(kù)創(chuàng)建一個(gè)復(fù)制用戶,該復(fù)制用戶被授予了 REPLICATION SLAVE權(quán)限,也即復(fù)制MySQL數(shù)據(jù)庫(kù)的日志記錄的權(quán)限。
      [0098]步驟402,數(shù)據(jù)發(fā)布平臺(tái)通過該賬戶向后端數(shù)據(jù)庫(kù)發(fā)送日志記錄獲取請(qǐng)求。
      [0099]日志記錄獲取請(qǐng)求中可以攜帶:后端數(shù)據(jù)庫(kù)的標(biāo)識(shí)、日志文件的文件名和日志文件的偏移量。如果數(shù)據(jù)發(fā)布平臺(tái)是第一次獲取日志記錄,則該偏移量可以為O ;如果數(shù)據(jù)發(fā)布平臺(tái)不是第一次獲取日志記錄,則該偏移量可以從數(shù)據(jù)發(fā)布平臺(tái)已經(jīng)獲取過的日志記錄的位置繼續(xù)開始。比如,數(shù)據(jù)發(fā)布平臺(tái)已經(jīng)獲取過1000條日志記錄,則可以向后端數(shù)據(jù)庫(kù)獲取第1001條開始的日志記錄。
      [0100]步驟403,數(shù)據(jù)發(fā)布平臺(tái)從后端數(shù)據(jù)庫(kù)獲取后端數(shù)據(jù)庫(kù)的日志記錄;
      [0101 ] 后端數(shù)據(jù)庫(kù)根據(jù)日志記錄獲取請(qǐng)求將日志記錄發(fā)送給數(shù)據(jù)發(fā)布平臺(tái),數(shù)據(jù)發(fā)布平臺(tái)接收該日志記錄。
      [0102]步驟404,數(shù)據(jù)發(fā)布平臺(tái)從日志記錄中獲取數(shù)據(jù)更改事件;
      [0103]由于日志記錄中還記載了數(shù)據(jù)更改事件之外的其它事件,所以數(shù)據(jù)發(fā)布平臺(tái)從日志記錄中只提取數(shù)據(jù)更改事件,而丟棄其它事件。
      [0104]步驟405,數(shù)據(jù)發(fā)布平臺(tái)將數(shù)據(jù)更改事件保存在中繼日志記錄中;
      [0105]數(shù)據(jù)發(fā)布平臺(tái)將提取到的數(shù)據(jù)更改事件保存在中繼日志記錄中。中繼日志記錄由數(shù)據(jù)發(fā)布平臺(tái)創(chuàng)建,且中繼日志記錄可以有不止一個(gè)。數(shù)據(jù)發(fā)布平臺(tái)在寫中繼日志記錄時(shí),首先創(chuàng)建新的中繼日志記錄,然后在這個(gè)中繼日志記錄中寫入數(shù)據(jù)更改事件,若該中繼日志記錄的記錄條數(shù)或者數(shù)據(jù)大小達(dá)到了預(yù)設(shè)閾值,則數(shù)據(jù)發(fā)布平臺(tái)新建另一個(gè)中繼日志記錄繼續(xù)記錄。
      [0106]步驟406,緩存系統(tǒng)向數(shù)據(jù)發(fā)布平臺(tái)訂閱數(shù)據(jù)更改事件;[0107]數(shù)據(jù)發(fā)布平臺(tái)需要將數(shù)據(jù)更改事件提供給緩存系統(tǒng)。具體地,數(shù)據(jù)發(fā)布平臺(tái)可以將數(shù)據(jù)更改事件以訂閱的方式提供給緩存系統(tǒng)。緩存系統(tǒng)向數(shù)據(jù)發(fā)布平臺(tái)訂閱數(shù)據(jù)更改事件,對(duì)應(yīng)地,數(shù)據(jù)發(fā)布平臺(tái)接收緩存系統(tǒng)對(duì)數(shù)據(jù)更改事件的訂閱請(qǐng)求。
      [0108]由于緩存系統(tǒng)可能為多個(gè),每個(gè)緩存系統(tǒng)緩存后端數(shù)據(jù)庫(kù)中的一部分?jǐn)?shù)據(jù)。也即,緩存系統(tǒng)并不是對(duì)所有的數(shù)據(jù)更改事件都感興趣。所以,緩存系統(tǒng)在向數(shù)據(jù)發(fā)布平臺(tái)發(fā)送訂閱請(qǐng)求時(shí),訂閱請(qǐng)求可以攜帶緩存系統(tǒng)所關(guān)注的數(shù)據(jù)更改事件。比如,訂閱請(qǐng)求中指定了日志記錄偏移量,緩存系統(tǒng)只訂閱該日志記錄偏移量之后的數(shù)據(jù)更改事件。又比如,訂閱請(qǐng)求中指定了某一張表,緩存系統(tǒng)只訂閱該表所對(duì)應(yīng)的數(shù)據(jù)更改事件。再比如,訂閱請(qǐng)求中指定了一部分鍵值,緩存系統(tǒng)只訂閱該部分鍵值所對(duì)應(yīng)的數(shù)據(jù)更改事件。甚至,訂閱請(qǐng)求中指定了一部分字段,緩存系統(tǒng)只訂閱該部分字段所對(duì)應(yīng)的數(shù)據(jù)更改事件。
      [0109]步驟407,數(shù)據(jù)發(fā)布平臺(tái)根據(jù)訂閱請(qǐng)求向緩存系統(tǒng)發(fā)布數(shù)據(jù)更改事件。
      [0110]數(shù)據(jù)發(fā)布平臺(tái)可以針對(duì)每個(gè)緩存系統(tǒng)分別啟動(dòng)一個(gè)發(fā)布線程,該發(fā)布線程用來為對(duì)應(yīng)的緩存系統(tǒng)發(fā)布數(shù)據(jù)更改事件。
      [0111]具體地,本步驟可以采用如下兩種方式中的任意一種實(shí)現(xiàn):
      [0112]第一,數(shù)據(jù)發(fā)布平臺(tái)根據(jù)訂閱請(qǐng)求將數(shù)據(jù)更改事件發(fā)布在預(yù)先設(shè)置的訂閱器中;
      [0113]比如,數(shù)據(jù)發(fā)布平臺(tái)自身提供訂閱器,然后通過該訂閱器將數(shù)據(jù)更改事件提供給緩存系統(tǒng)。
      [0114]第二,數(shù)據(jù)發(fā)布平臺(tái)根據(jù)訂閱請(qǐng)求將數(shù)據(jù)更改事件發(fā)布在通用消息隊(duì)列中。
      [0115]比如,數(shù)據(jù)發(fā)布平臺(tái)將數(shù)據(jù)更改事件發(fā)布在rabbitMQ (rabbit Message Queue,rabbit消息隊(duì)列)中。
      [0116]由于通用消息隊(duì)列支持的編程語言較為廣泛,可以支持不同的緩存系統(tǒng)的需求。
      [0117]步驟408,緩存系統(tǒng)獲取數(shù)據(jù)發(fā)布平臺(tái)根據(jù)訂閱請(qǐng)求發(fā)布的數(shù)據(jù)更改事件;
      [0118]對(duì)應(yīng)地,本步驟也可以采用如下兩種方式中的任意一種實(shí)現(xiàn):
      [0119]第一,緩存系統(tǒng)從數(shù)據(jù)發(fā)布平臺(tái)預(yù)先設(shè)置的訂閱器中獲取數(shù)據(jù)發(fā)布平臺(tái)根據(jù)訂閱請(qǐng)求發(fā)布的數(shù)據(jù)更改事件;
      [0120]第二,緩存系統(tǒng)從通用消息隊(duì)列中獲取數(shù)據(jù)發(fā)布平臺(tái)根據(jù)訂閱請(qǐng)求發(fā)布的數(shù)據(jù)更改事件。
      [0121]步驟409,緩存系統(tǒng)根據(jù)數(shù)據(jù)更改事件對(duì)緩存的數(shù)據(jù)進(jìn)行處理。
      [0122]在緩存系統(tǒng)得到數(shù)據(jù)更改事件之后,有2種不同的處理方式:
      [0123]第一,緩存系統(tǒng)根據(jù)數(shù)據(jù)更改事件對(duì)緩存的數(shù)據(jù)進(jìn)行更新處理;
      [0124]由于每個(gè)數(shù)據(jù)更改事件中都有涉及到的數(shù)據(jù)的標(biāo)識(shí),所以緩存系統(tǒng)可以根據(jù)該標(biāo)識(shí)掃描本地是否緩存有該數(shù)據(jù)。
      [0125]若掃描結(jié)果為未緩存有該數(shù)據(jù),則表明該數(shù)據(jù)從未被緩存過,或者該數(shù)據(jù)被緩存一段后自動(dòng)失效了,已經(jīng)被緩存系統(tǒng)自動(dòng)清除。
      [0126]若掃描結(jié)果為緩存有該數(shù)據(jù),則表明該數(shù)據(jù)已經(jīng)緩存過了,則緩存系統(tǒng)在數(shù)據(jù)更改事件是數(shù)據(jù)刪除事件時(shí),將該數(shù)據(jù)從本地緩存中刪除;在數(shù)據(jù)更改事件是數(shù)據(jù)更新事件時(shí),將該數(shù)據(jù)更新為變更后的取值。
      [0127]第二,緩存系統(tǒng)根據(jù)數(shù)據(jù)更改事件對(duì)緩存的數(shù)據(jù)進(jìn)行刪除處理。
      [0128]由于每個(gè)數(shù)據(jù)更改事件中都有涉及到的數(shù)據(jù)的標(biāo)識(shí),所以緩存系統(tǒng)可以根據(jù)該標(biāo)識(shí)掃描本地是否緩存有該數(shù)據(jù)。
      [0129]若掃描結(jié)果為未緩存有該數(shù)據(jù),則表明該數(shù)據(jù)從未被緩存過,或者該數(shù)據(jù)被緩存一段后自動(dòng)失效了,已經(jīng)被緩存系統(tǒng)自動(dòng)清除。
      [0130]若掃描結(jié)果為緩存有該數(shù)據(jù),則表明該數(shù)據(jù)已經(jīng)緩存過了,則緩存系統(tǒng)不論數(shù)據(jù)更改事件是何種事件,均將該數(shù)據(jù)從本地緩存中刪除。當(dāng)下次接收到客戶端針對(duì)該數(shù)據(jù)的訪問請(qǐng)求時(shí),緩存系統(tǒng)重新向后端數(shù)據(jù)庫(kù)獲取該數(shù)據(jù)的最新取值。
      [0131]綜上所述,本實(shí)施例提供的數(shù)據(jù)處理方法,通過由數(shù)據(jù)發(fā)布平臺(tái)從后端數(shù)據(jù)庫(kù)獲取后端數(shù)據(jù)庫(kù)的日志記錄,從日志記錄中獲取數(shù)據(jù)更改事件,將數(shù)據(jù)更改事件提供給緩存系統(tǒng),由緩存系統(tǒng)根據(jù)數(shù)據(jù)更改事件對(duì)緩存的數(shù)據(jù)進(jìn)行處理;解決了已經(jīng)緩存在緩存系統(tǒng)中的數(shù)據(jù)在MySQL數(shù)據(jù)庫(kù)中發(fā)生了變化,則客戶端從緩存系統(tǒng)中讀取到的數(shù)據(jù)將是舊數(shù)據(jù)或者錯(cuò)誤數(shù)據(jù)的問題;達(dá)到了緩存系統(tǒng)可以同步更新數(shù)據(jù)或刪除掉發(fā)生變化的數(shù)據(jù),不會(huì)向客戶端提供丨H數(shù)據(jù)或者錯(cuò)誤數(shù)據(jù)的效果。
      [0132]本實(shí)施例提供的數(shù)據(jù)處理方法,還通過提供了兩種不同的數(shù)據(jù)更改事件的發(fā)布方法,使得適合不同的緩存系統(tǒng)的訂閱,提高了該數(shù)據(jù)處理方法的適用性。
      [0133]本實(shí)施例提供的數(shù)據(jù)處理方法,還通過提供了緩存系統(tǒng)在獲取數(shù)據(jù)更改事件后,緩存系統(tǒng)對(duì)緩存的數(shù)據(jù)的兩種不同的數(shù)據(jù)處理方式,可以適應(yīng)不同的具體場(chǎng)景。其中,第一種數(shù)據(jù)處理方式使緩存系統(tǒng)緩存到最新的數(shù)據(jù),能夠保證客戶端訪問數(shù)據(jù)時(shí)的性能和準(zhǔn)確性。而第二種數(shù)據(jù)處理方式的處理邏輯則較為簡(jiǎn)單,對(duì)數(shù)據(jù)在緩存系統(tǒng)和后端數(shù)據(jù)庫(kù)的鍵值表現(xiàn)方式不相同時(shí)也能夠較好地使用。
      [0134]需要補(bǔ)充說明的是,上述步驟401、步驟402、步驟403、步驟404、步驟405和步驟407可以單獨(dú)實(shí)現(xiàn)成為數(shù)據(jù)發(fā)布平臺(tái)側(cè)的數(shù)據(jù)處理方法,上述步驟406、步驟408和步驟409可以單獨(dú)實(shí)現(xiàn)成為緩存系統(tǒng)側(cè)的數(shù)據(jù)處理方法。
      [0135]請(qǐng)參考圖5,其示出了本發(fā)明一個(gè)實(shí)施例提供的數(shù)據(jù)處理系統(tǒng)的結(jié)構(gòu)方框圖。該數(shù)據(jù)處理系統(tǒng)包括數(shù)據(jù)發(fā)布平臺(tái)520、緩存系統(tǒng)540和后端數(shù)據(jù)庫(kù)560。數(shù)據(jù)發(fā)布平臺(tái)520分別與緩存系統(tǒng)540和后端數(shù)據(jù)庫(kù)560相連,緩存系統(tǒng)540和后端數(shù)據(jù)庫(kù)560相連。
      [0136]數(shù)據(jù)發(fā)布平臺(tái)520包括一數(shù)據(jù)處理裝置,該數(shù)據(jù)處理裝置可以通過軟件、硬件或者兩者的結(jié)合實(shí)現(xiàn)成為數(shù)據(jù)發(fā)布平臺(tái)的全部或者一部分。該數(shù)據(jù)處理裝置,包括:記錄獲取模塊522、事件獲取模塊524和事件提供模塊526。
      [0137]記錄獲取模塊522,用于從后端數(shù)據(jù)庫(kù)獲取所述后端數(shù)據(jù)庫(kù)的日志記錄;
      [0138]事件提取模塊524,用于從所述日志記錄中獲取數(shù)據(jù)更改事件;
      [0139]事件提供模塊526,用于將所述數(shù)據(jù)更改事件提供給緩存系統(tǒng)540,以便所述緩存系統(tǒng)540根據(jù)所述數(shù)據(jù)更改事件對(duì)緩存的數(shù)據(jù)進(jìn)行處理。
      [0140]緩存系統(tǒng)540包括一數(shù)據(jù)處理裝置,該數(shù)據(jù)處理裝置可以通過軟件、硬件或者兩者的結(jié)合實(shí)現(xiàn)成為數(shù)據(jù)發(fā)布平臺(tái)的全部或者一部分。該數(shù)據(jù)處理裝置,包括:事件獲取模塊542和數(shù)據(jù)處理模塊544 ;
      [0141]事件獲取模塊542,用于從數(shù)據(jù)發(fā)布平臺(tái)獲取數(shù)據(jù)更改事件,所述數(shù)據(jù)更改記錄是所述數(shù)據(jù)發(fā)布平臺(tái)從后端數(shù)據(jù)庫(kù)獲取所述后端數(shù)據(jù)庫(kù)的日志記錄后,從所述日志記錄中獲取的;
      [0142]數(shù)據(jù)處理模塊544,用于根據(jù)所述數(shù)據(jù)更改事件對(duì)緩存的數(shù)據(jù)進(jìn)行處理。[0143]綜上所述,本實(shí)施例提供的數(shù)據(jù)處理系統(tǒng),通過由數(shù)據(jù)發(fā)布平臺(tái)從后端數(shù)據(jù)庫(kù)獲取后端數(shù)據(jù)庫(kù)的日志記錄,從日志記錄中獲取數(shù)據(jù)更改事件,將數(shù)據(jù)更改事件提供給緩存系統(tǒng),由緩存系統(tǒng)根據(jù)數(shù)據(jù)更改事件對(duì)緩存的數(shù)據(jù)進(jìn)行處理;解決了已經(jīng)緩存在緩存系統(tǒng)中的數(shù)據(jù)在MySQL數(shù)據(jù)庫(kù)中發(fā)生了變化,則客戶端從緩存系統(tǒng)中讀取到的數(shù)據(jù)將是舊數(shù)據(jù)或者錯(cuò)誤數(shù)據(jù)的問題;達(dá)到了緩存系統(tǒng)可以同步更新數(shù)據(jù)或刪除掉發(fā)生變化的數(shù)據(jù),不會(huì)向客戶端提供丨H數(shù)據(jù)或者錯(cuò)誤數(shù)據(jù)的效果。
      [0144]請(qǐng)參考圖6,其示出了本發(fā)明另一實(shí)施例提供的數(shù)據(jù)發(fā)布系統(tǒng)的結(jié)構(gòu)方框圖。該數(shù)據(jù)處理系統(tǒng)包括數(shù)據(jù)發(fā)布平臺(tái)520、緩存系統(tǒng)540和后端數(shù)據(jù)庫(kù)560。數(shù)據(jù)發(fā)布平臺(tái)520分別與緩存系統(tǒng)540和后端數(shù)據(jù)庫(kù)560相連,緩存系統(tǒng)540和后端數(shù)據(jù)庫(kù)560相連。
      [0145]數(shù)據(jù)發(fā)布平臺(tái)520包括一數(shù)據(jù)處理裝置,該數(shù)據(jù)處理裝置可以通過軟件、硬件或者兩者的結(jié)合實(shí)現(xiàn)成為數(shù)據(jù)發(fā)布平臺(tái)的全部或者一部分。該數(shù)據(jù)處理裝置,包括:記錄獲取模塊522、事件獲取模塊524和事件提供模塊526。
      [0146]記錄獲取模塊522,用于從后端數(shù)據(jù)庫(kù)獲取所述后端數(shù)據(jù)庫(kù)的日志記錄;
      [0147]事件提取模塊524,用于從所述日志記錄中獲取數(shù)據(jù)更改事件;
      [0148]事件提供模塊526,用于將所述數(shù)據(jù)更改事件提供給緩存系統(tǒng)540,以便所述緩存系統(tǒng)540根據(jù)所述數(shù)據(jù)更改事件對(duì)緩存的數(shù)據(jù)進(jìn)行處理。
      [0149]可選地,數(shù)據(jù)發(fā)布平臺(tái)520還包括:賬戶注冊(cè)模塊521a和請(qǐng)求發(fā)送模塊521b ;
      [0150]所述賬戶注冊(cè)模塊521a,用于向所述后端數(shù)據(jù)庫(kù)注冊(cè)賬戶,所述賬戶擁有復(fù)制所述后端數(shù)據(jù)庫(kù)的日志記錄的權(quán)限;
      [0151]所述請(qǐng)求發(fā)送模塊52 Ib,用于通過所述賬戶向所述后端數(shù)據(jù)庫(kù)發(fā)送日志記錄獲取請(qǐng)求。
      [0152]可選地,所述事件提供模塊526,包括:事件保存單元526a、訂閱接收單元526b和事件發(fā)布單元526c ;
      [0153]所述事件保存單元526a,用于將所述數(shù)據(jù)更改事件保存在中繼日志記錄中;
      [0154]所述訂閱接收單元526b,用于接收所述緩存系統(tǒng)對(duì)所述數(shù)據(jù)更改事件的訂閱請(qǐng)求;
      [0155]所述事件發(fā)布單元526c,用于根據(jù)所述訂閱請(qǐng)求向所述緩存系統(tǒng)發(fā)布所述數(shù)據(jù)更改事件。
      [0156]可選地,所述事件發(fā)布單元526c,包括:第一發(fā)布子單元,和/或,第二發(fā)布子單元(圖中未示出);
      [0157]所述第一發(fā)布子單元,用于根據(jù)所述訂閱請(qǐng)求將所述數(shù)據(jù)更改事件發(fā)布在預(yù)先設(shè)置的訂閱器中;
      [0158]所述第二發(fā)布子單元,用于根據(jù)所述訂閱請(qǐng)求將所述數(shù)據(jù)更改事件發(fā)布在通用消息隊(duì)列中。
      [0159]緩存系統(tǒng)540包括一數(shù)據(jù)處理裝置,該數(shù)據(jù)處理裝置可以通過軟件、硬件或者兩者的結(jié)合實(shí)現(xiàn)成為數(shù)據(jù)發(fā)布平臺(tái)的全部或者一部分。該數(shù)據(jù)處理裝置,包括:事件獲取模塊542和數(shù)據(jù)處理模塊544 ;
      [0160]事件獲取模塊542,用于從數(shù)據(jù)發(fā)布平臺(tái)獲取數(shù)據(jù)更改事件,所述數(shù)據(jù)更改記錄是所述數(shù)據(jù)發(fā)布平臺(tái)從后端數(shù)據(jù)庫(kù)獲取所述后端數(shù)據(jù)庫(kù)的日志記錄后,從所述日志記錄中獲取的;
      [0161]數(shù)據(jù)處理模塊544,用于根據(jù)所述數(shù)據(jù)更改事件對(duì)緩存的數(shù)據(jù)進(jìn)行處理。
      [0162]可選地,所述事件獲取模塊542,包括:事件訂閱單元542a和事件獲取單元542b ;
      [0163]所述事件訂閱單元542a,用于向所述數(shù)據(jù)發(fā)布平臺(tái)訂閱所述數(shù)據(jù)更改事件;
      [0164]所述事件獲取單元542b,用于獲取所述數(shù)據(jù)發(fā)布平臺(tái)根據(jù)所述訂閱請(qǐng)求發(fā)布的所述數(shù)據(jù)更改事件。
      [0165]可選地,所述事件獲取單元542,包括:第一獲取子單元,和/或,第二獲取子單元(圖中未示出);
      [0166]所述第一獲取子單元,用于從預(yù)先設(shè)置的訂閱器中獲取所述數(shù)據(jù)發(fā)布平臺(tái)根據(jù)所述訂閱請(qǐng)求發(fā)布的所述數(shù)據(jù)更改事件;
      [0167]所述第二獲取子單元,用于從通用消息隊(duì)列中獲取所述數(shù)據(jù)發(fā)布平臺(tái)根據(jù)所述訂閱請(qǐng)求發(fā)布的所述數(shù)據(jù)更改事件。
      [0168]可選地,所述數(shù)據(jù)處理模塊544,包括:更新處理單元544a,和/或,刪除處理單元544b ;
      [0169]所述更新處理單元544a,用于根據(jù)所述數(shù)據(jù)更改事件對(duì)緩存的數(shù)據(jù)進(jìn)行更新處理;
      [0170]所述刪除處理單元544b,用于根據(jù)所述數(shù)據(jù)更改事件對(duì)緩存的數(shù)據(jù)進(jìn)行刪除處理。
      [0171]綜上所述,本實(shí)施例提供的數(shù)據(jù)處理系統(tǒng),通過由數(shù)據(jù)發(fā)布平臺(tái)從后端數(shù)據(jù)庫(kù)獲取后端數(shù)據(jù)庫(kù)的日志記錄,從日志記錄中獲取數(shù)據(jù)更改事件,將數(shù)據(jù)更改事件提供給緩存系統(tǒng),由緩存系統(tǒng)根據(jù)數(shù)據(jù)更改事件對(duì)緩存的數(shù)據(jù)進(jìn)行處理;解決了已經(jīng)緩存在緩存系統(tǒng)中的數(shù)據(jù)在MySQL數(shù)據(jù)庫(kù)中發(fā)生了變化,則客戶端從緩存系統(tǒng)中讀取到的數(shù)據(jù)將是舊數(shù)據(jù)或者錯(cuò)誤數(shù)據(jù)的問題;達(dá)到了緩存系統(tǒng)可以同步更新數(shù)據(jù)或刪除掉發(fā)生變化的數(shù)據(jù),不會(huì)向客戶端提供丨H數(shù)據(jù)或者錯(cuò)誤數(shù)據(jù)的效果。
      [0172]本實(shí)施例提供的數(shù)據(jù)處理系統(tǒng),還通過提供了兩種不同的數(shù)據(jù)更改事件的發(fā)布方式,使得適合不同的緩存系統(tǒng)的訂閱,提高了該數(shù)據(jù)處理系統(tǒng)的適用性。
      [0173]本實(shí)施例提供的數(shù)據(jù)處理系統(tǒng),還通過提供了緩存系統(tǒng)在獲取數(shù)據(jù)更改事件后,緩存系統(tǒng)對(duì)緩存的數(shù)據(jù)的兩種不同的數(shù)據(jù)處理方式,可以適應(yīng)不同的具體場(chǎng)景。其中,第一種數(shù)據(jù)處理方式使緩存系統(tǒng)緩存到最新的數(shù)據(jù),能夠保證客戶端訪問數(shù)據(jù)時(shí)的性能和準(zhǔn)確性。而第二種數(shù)據(jù)處理方式的處理邏輯則較為簡(jiǎn)單,對(duì)數(shù)據(jù)在緩存系統(tǒng)和后端數(shù)據(jù)庫(kù)的鍵值表現(xiàn)方式不相同時(shí)也能夠較好地使用。
      [0174]需要說明的是:上述實(shí)施例提供的數(shù)據(jù)處理裝置在處理緩存的數(shù)據(jù)時(shí),僅以上述各功能模塊的劃分進(jìn)行舉例說明,實(shí)際應(yīng)用中,可以根據(jù)需要而將上述功能分配由不同的功能模塊完成,即將設(shè)備的內(nèi)部結(jié)構(gòu)劃分成不同的功能模塊,以完成以上描述的全部或者部分功能。另外,上述實(shí)施例提供的數(shù)據(jù)處理裝置與數(shù)據(jù)處理方法實(shí)施例屬于同一構(gòu)思,其具體實(shí)現(xiàn)過程詳見方法實(shí)施例,這里不再贅述。
      [0175]上述本發(fā)明實(shí)施例序號(hào)僅僅為了描述,不代表實(shí)施例的優(yōu)劣。
      [0176]本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例的全部或部分步驟可以通過硬件來完成,也可以通過程序來指令相關(guān)的硬件完成,所述的程序可以存儲(chǔ)于一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中,上述提到的存儲(chǔ)介質(zhì)可以是只讀存儲(chǔ)器,磁盤或光盤等。
      [0177]以上所述僅為本發(fā)明的較佳實(shí)施例,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
      【權(quán)利要求】
      1.一種數(shù)據(jù)處理方法,其特征在于,所述方法包括: 從后端數(shù)據(jù)庫(kù)獲取所述后端數(shù)據(jù)庫(kù)的日志記錄; 從所述日志記錄中獲取數(shù)據(jù)更改事件; 將所述數(shù)據(jù)更改事件提供給緩存系統(tǒng),以便所述緩存系統(tǒng)根據(jù)所述數(shù)據(jù)更改事件對(duì)緩存的數(shù)據(jù)進(jìn)行處理。
      2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述從所述后端數(shù)據(jù)庫(kù)獲取所述后端數(shù)據(jù)庫(kù)的日志記錄之前,還包括: 向所述后端數(shù)據(jù)庫(kù)注冊(cè)賬戶,所述賬戶擁有復(fù)制所述后端數(shù)據(jù)庫(kù)的日志記錄的權(quán)限; 通過所述賬戶向所述后端數(shù)據(jù)庫(kù)發(fā)送日志記錄獲取請(qǐng)求。
      3.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述將所述數(shù)據(jù)更改事件提供給緩存系統(tǒng),包括: 將所述數(shù)據(jù)更改事件保存在中繼日志記錄中; 接收所述緩存系統(tǒng)對(duì)所述數(shù)據(jù)更改事件的訂閱請(qǐng)求; 根據(jù)所述訂閱請(qǐng)求向所述緩存系統(tǒng)發(fā)布所述數(shù)據(jù)更改事件。
      4.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述根據(jù)所述訂閱請(qǐng)求向所述緩存系統(tǒng)發(fā)布所述數(shù)據(jù)更改事件,包括: 根據(jù)所述訂閱請(qǐng)求將所述數(shù)據(jù)更改事件發(fā)布在預(yù)先設(shè)置的訂閱器中; 和/或, 根據(jù)所述訂閱請(qǐng)求將所述數(shù)據(jù)更改事件發(fā)布在通用消息隊(duì)列中。
      5.一種數(shù)據(jù)處理方法,其特征在于,所述方法包括: 從數(shù)據(jù)發(fā)布平臺(tái)獲取數(shù)據(jù)更改事件,所述數(shù)據(jù)更改事件是所述數(shù)據(jù)發(fā)布平臺(tái)從后端數(shù)據(jù)庫(kù)獲取所述后端數(shù)據(jù)庫(kù)的日志記錄后,從所述日志記錄中獲取的; 根據(jù)所述數(shù)據(jù)更改事件對(duì)緩存的數(shù)據(jù)進(jìn)行處理。
      6.根據(jù)權(quán)利要求5所述的方法,其特征在于,所述從數(shù)據(jù)發(fā)布平臺(tái)獲取數(shù)據(jù)更改事件,包括: 向所述數(shù)據(jù)發(fā)布平臺(tái)訂閱所述數(shù)據(jù)更改事件; 獲取所述數(shù)據(jù)發(fā)布平臺(tái)根據(jù)所述訂閱請(qǐng)求發(fā)布的所述數(shù)據(jù)更改事件。
      7.根據(jù)權(quán)利要求6所述的方法,其特征在于,所述獲取所述數(shù)據(jù)發(fā)布平臺(tái)根據(jù)所述訂閱請(qǐng)求發(fā)布的所述數(shù)據(jù)更改記錄,包括: 從預(yù)先設(shè)置的訂閱器中獲取所述數(shù)據(jù)發(fā)布平臺(tái)根據(jù)所述訂閱請(qǐng)求發(fā)布的所述數(shù)據(jù)更改事件; 和/或, 從通用消息隊(duì)列中獲取所述數(shù)據(jù)發(fā)布平臺(tái)根據(jù)所述訂閱請(qǐng)求發(fā)布的所述數(shù)據(jù)更改事件。
      8.根據(jù)權(quán)利要求5至7任一所述的方法,其特征在于,所述根據(jù)所述數(shù)據(jù)更改事件對(duì)緩存的數(shù)據(jù)進(jìn)行處理,包括: 根據(jù)所述數(shù)據(jù)更改事件對(duì)緩存的數(shù)據(jù)進(jìn)行更新處理; 和/或, 根據(jù)所述數(shù)據(jù)更改事件對(duì)緩存的數(shù)據(jù)進(jìn)行刪除處理。
      9.一種數(shù)據(jù)處理裝置,其特征在于,所述裝置包括: 記錄獲取模塊,用于從后端數(shù)據(jù)庫(kù)獲取所述后端數(shù)據(jù)庫(kù)的日志記錄; 事件提取模塊,用于從所述日志記錄中獲取數(shù)據(jù)更改事件; 事件提供模塊,用于將所述數(shù)據(jù)更改事件提供給緩存系統(tǒng),以便所述緩存系統(tǒng)根據(jù)所述數(shù)據(jù)更改事件對(duì)緩存的數(shù)據(jù)進(jìn)行處理。
      10.根據(jù)權(quán)利要求9所述的裝置,其特征在于,所述裝置,還包括: 賬戶注冊(cè)模塊和請(qǐng)求發(fā)送模塊; 所述賬戶注冊(cè)模塊,用于向所述后端數(shù)據(jù)庫(kù)注冊(cè)賬戶,所述賬戶擁有復(fù)制所述后端數(shù)據(jù)庫(kù)的日志記錄的權(quán)限; 所述請(qǐng)求發(fā)送模塊,用于通過所述賬戶向所述后端數(shù)據(jù)庫(kù)發(fā)送日志記錄獲取請(qǐng)求。
      11.根據(jù)權(quán)利要求9所述的裝置,其特征在于,所述事件提供模塊,包括: 事件保存單元、訂閱接收單元和事件發(fā)布單元; 所述事件保存單元,用于將所述數(shù)據(jù)更改事件保存在中繼日志記錄中; 所述訂閱接收單元,用于接收所述緩存系統(tǒng)對(duì)所述數(shù)據(jù)更改事件的訂閱請(qǐng)求; 所述事件發(fā)布單元,用于根據(jù)所述訂閱請(qǐng)求向所述緩存系統(tǒng)發(fā)布所述數(shù)據(jù)更改事件。
      12.根據(jù)權(quán)利要求11所述的裝置,其特征在于,所述事件發(fā)布單元,包括: 第一發(fā)布子單元,和/或,第二發(fā)布子單元; 所述第一發(fā)布子單元,用于根據(jù)所述訂閱請(qǐng)求將所述數(shù)據(jù)更改事件發(fā)布在預(yù)先設(shè)置的訂閱器中; 所述第二發(fā)布子單元,用于根據(jù)所述訂閱請(qǐng)求將所述數(shù)據(jù)更改事件發(fā)布在通用消息隊(duì)列中。
      13.一種數(shù)據(jù)處理裝置,其特征在于,所述裝置,包括: 事件獲取模塊,用于從數(shù)據(jù)發(fā)布平臺(tái)獲取數(shù)據(jù)更改事件,所述數(shù)據(jù)更改記錄是所述數(shù)據(jù)發(fā)布平臺(tái)從后端數(shù)據(jù)庫(kù)獲取所述后端數(shù)據(jù)庫(kù)的日志記錄后,從所述日志記錄中獲取的;數(shù)據(jù)處理模塊,用于根據(jù)所述數(shù)據(jù)更改事件對(duì)緩存的數(shù)據(jù)進(jìn)行處理。
      14.根據(jù)權(quán)利要求13所述的裝置,其特征在于,所述事件獲取模塊,包括: 事件訂閱單元和事件獲取單元; 所述事件訂閱單元,用于向所述數(shù)據(jù)發(fā)布平臺(tái)訂閱所述數(shù)據(jù)更改事件; 所述事件獲取單元,用于獲取所述數(shù)據(jù)發(fā)布平臺(tái)根據(jù)所述訂閱請(qǐng)求發(fā)布的所述數(shù)據(jù)更改事件。
      15.根據(jù)權(quán)利要求14 所述的裝置,其特征在于,所述事件獲取單元,包括: 第一獲取子單元,和/或,第二獲取子單元; 所述第一獲取子單元,用于從預(yù)先設(shè)置的訂閱器中獲取所述數(shù)據(jù)發(fā)布平臺(tái)根據(jù)所述訂閱請(qǐng)求發(fā)布的所述數(shù)據(jù)更改事件; 所述第二獲取子單元,用于從通用消息隊(duì)列中獲取所述數(shù)據(jù)發(fā)布平臺(tái)根據(jù)所述訂閱請(qǐng)求發(fā)布的所述數(shù)據(jù)更改事件。
      16.根據(jù)權(quán)利要求13至15任一所述的裝置,其特征在于,所述數(shù)據(jù)處理模塊,包括:更新處理單元,和/或,刪除處理單元; 所述更新處理單元,用于根據(jù)所述數(shù)據(jù)更改事件對(duì)緩存的數(shù)據(jù)進(jìn)行更新處理;所述刪除處理單元,用于根據(jù)所述數(shù)據(jù)更改事件對(duì)緩存的數(shù)據(jù)進(jìn)行刪除處理。
      17.一種數(shù)據(jù)處理系統(tǒng),其特征在于,所述系統(tǒng)包括:數(shù)據(jù)發(fā)布平臺(tái)、緩存系統(tǒng)和后端數(shù)據(jù)庫(kù);所述數(shù)據(jù)發(fā)布平臺(tái)分別與所述緩存系統(tǒng)和所述后端數(shù)據(jù)庫(kù)相連,所述緩存系統(tǒng)和所述后端數(shù)據(jù)庫(kù)相連; 所述數(shù)據(jù)發(fā)布平臺(tái),包括如權(quán)利要求9到權(quán)利要求12任一所述的數(shù)據(jù)處理裝置; 所述緩存系統(tǒng),包括如權(quán)利要求13至16任一所述的數(shù)據(jù)處理裝置。
      【文檔編號(hào)】H04L29/08GK103929472SQ201410107750
      【公開日】2014年7月16日 申請(qǐng)日期:2014年3月21日 優(yōu)先權(quán)日:2014年3月21日
      【發(fā)明者】喻先兵 申請(qǐng)人:珠海多玩信息技術(shù)有限公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1