專(zhuān)利名稱(chēng)::一種數(shù)據(jù)庫(kù)緩存集中管理方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及一種數(shù)據(jù)庫(kù)緩存集中管理方法和系統(tǒng),屬于數(shù)據(jù)通信
技術(shù)領(lǐng)域:
。
背景技術(shù):
:集群(Cluster)是由兩臺(tái)或多臺(tái)節(jié)點(diǎn)機(jī)(服務(wù)器)構(gòu)成的一種松散耦合的計(jì)算節(jié)點(diǎn)集合,為用戶(hù)提供網(wǎng)絡(luò)服務(wù)或應(yīng)用程序(包括數(shù)據(jù)庫(kù)、Web服務(wù)和文件服務(wù)等)的單一客戶(hù)視圖,同時(shí)提供接近容錯(cuò)機(jī)的故障恢復(fù)能力。集群系統(tǒng)一般通過(guò)兩臺(tái)或多臺(tái)節(jié)點(diǎn)服務(wù)器系統(tǒng)通過(guò)相應(yīng)的硬件及軟件互連,每個(gè)集群節(jié)點(diǎn)都是運(yùn)行其自己進(jìn)程的獨(dú)立服務(wù)器。這些進(jìn)程可以彼此通信,對(duì)網(wǎng)絡(luò)客戶(hù)機(jī)來(lái)說(shuō)就像是形成了一個(gè)單一系統(tǒng),協(xié)同起來(lái)向用戶(hù)提供應(yīng)用程序、系統(tǒng)資源和數(shù)據(jù)。網(wǎng)絡(luò)負(fù)載均衡就是兩個(gè)或兩個(gè)以上的服務(wù)器組成群集,因特網(wǎng)(Internet)客戶(hù)端使用一個(gè)因特網(wǎng)協(xié)議(InternetProtocol,簡(jiǎn)稱(chēng)IP)地址或一組IP地址訪問(wèn)集群。網(wǎng)絡(luò)負(fù)載均衡使用某種分布式算法來(lái)將客戶(hù)端的請(qǐng)求映射到集群中的某臺(tái)主機(jī)上。簡(jiǎn)單的說(shuō),就是程序的一個(gè)拷貝運(yùn)行在集群內(nèi)的所有主機(jī)上,然后通過(guò)均衡技術(shù),將外部發(fā)送來(lái)的請(qǐng)求均勻地分配到對(duì)稱(chēng)結(jié)構(gòu)中的某臺(tái)服務(wù)器,而接受到請(qǐng)求的服務(wù)器都能獨(dú)立回應(yīng)客戶(hù)機(jī)的請(qǐng)求,網(wǎng)絡(luò)負(fù)載均衡則將工作負(fù)載在這些主機(jī)間進(jìn)行分配。需要注意的是,在集群部署下,各個(gè)服務(wù)器之間的數(shù)據(jù)庫(kù)要求一致。如果一臺(tái)數(shù)據(jù)庫(kù)中的數(shù)據(jù)發(fā)生改變,那么其他服務(wù)器上的數(shù)據(jù)庫(kù)也需要和它同步保持?jǐn)?shù)據(jù)一致,如圖1所示。圖1中,用戶(hù)訪問(wèn)集群對(duì)應(yīng)的IP地址,通過(guò)負(fù)載均衡將用戶(hù)的請(qǐng)求映射給服務(wù)器B,對(duì)服務(wù)器B上的數(shù)據(jù)庫(kù)進(jìn)行了修改,服務(wù)器A,服務(wù)器C,服務(wù)器D上的數(shù)據(jù)庫(kù)需要進(jìn)行同步,使得與服務(wù)器B保持一致。但是,集群中一般不進(jìn)行數(shù)據(jù)庫(kù)和服務(wù)器進(jìn)行分離,這是因?yàn)槿绻蟹?wù)器都公用一個(gè)數(shù)據(jù)庫(kù)的話,因?yàn)閷?duì)數(shù)據(jù)庫(kù)的相同的表不能同時(shí)進(jìn)行讀寫(xiě)操作,所以會(huì)產(chǎn)生阻塞影響性能,另一方面如果這個(gè)數(shù)據(jù)庫(kù)出現(xiàn)問(wèn)題,整個(gè)服務(wù)將完全不能運(yùn)行,保存在數(shù)據(jù)庫(kù)的數(shù)據(jù)將會(huì)完全丟失,產(chǎn)生比較嚴(yán)重的后果,也失去了集群通過(guò)冗余來(lái)提高可靠性的意義。數(shù)據(jù)庫(kù)緩存是指數(shù)據(jù)庫(kù)數(shù)據(jù)在內(nèi)存中的臨時(shí)容器,它包含了數(shù)據(jù)庫(kù)表數(shù)據(jù)在內(nèi)存中的拷貝,位于數(shù)據(jù)庫(kù)與數(shù)據(jù)訪問(wèn)層之間。對(duì)于查詢(xún)數(shù)據(jù)庫(kù)操作相當(dāng)頻繁的系統(tǒng),良好的緩存機(jī)制顯得尤為重要。應(yīng)用系統(tǒng)在進(jìn)行數(shù)據(jù)讀取時(shí),首先在緩存中查詢(xún),避免了數(shù)據(jù)庫(kù)調(diào)用的性能開(kāi)銷(xiāo),并且由于內(nèi)存操作比磁盤(pán)操作要快,從而也大大加快了數(shù)據(jù)庫(kù)數(shù)據(jù)的查詢(xún)速度。數(shù)據(jù)庫(kù)緩存是保證服務(wù)器性能的必要手段,在服務(wù)器中的位置如圖2所示。數(shù)據(jù)庫(kù)復(fù)制是一組數(shù)據(jù)庫(kù)技術(shù),由數(shù)據(jù)庫(kù)自身來(lái)實(shí)現(xiàn)。它將數(shù)據(jù)和數(shù)據(jù)庫(kù)對(duì)象從一個(gè)數(shù)據(jù)庫(kù)復(fù)制和分發(fā)到另外一個(gè)數(shù)據(jù)庫(kù),然后在數(shù)據(jù)庫(kù)之間進(jìn)行同步,以維持?jǐn)?shù)據(jù)庫(kù)之間的一致性。應(yīng)用系統(tǒng)在部署網(wǎng)絡(luò)負(fù)載均衡集群時(shí),一臺(tái)服務(wù)器的數(shù)據(jù)庫(kù)上的數(shù)據(jù)發(fā)生變化4時(shí),則可以通過(guò)數(shù)據(jù)庫(kù)復(fù)制技術(shù),使得其他服務(wù)器上的數(shù)據(jù)庫(kù)保持一致。數(shù)據(jù)庫(kù)緩存同步是指服務(wù)器上數(shù)據(jù)庫(kù)緩存和數(shù)據(jù)庫(kù)進(jìn)行同步,使得數(shù)據(jù)庫(kù)緩存與數(shù)據(jù)庫(kù)的內(nèi)容保持一致。在傳統(tǒng)的集群部署下,每個(gè)節(jié)點(diǎn)都包括一個(gè)數(shù)據(jù)庫(kù)。為了提高性能,各個(gè)節(jié)點(diǎn)上同時(shí)還包括一份數(shù)據(jù)庫(kù)緩存。當(dāng)數(shù)據(jù)庫(kù)同步時(shí),必須也對(duì)數(shù)據(jù)庫(kù)緩存進(jìn)行同步。但是,數(shù)據(jù)庫(kù)同步主要通過(guò)數(shù)據(jù)庫(kù)復(fù)制技術(shù),而數(shù)據(jù)庫(kù)復(fù)制技術(shù)不能保證其他服務(wù)器上的數(shù)據(jù)庫(kù)緩存和數(shù)據(jù)庫(kù)保持一致。因此,在部署集群的應(yīng)用下,需要使用其他一些額外的機(jī)制來(lái)保證數(shù)據(jù)庫(kù)緩存的同步,例如專(zhuān)利《分布式系統(tǒng)中緩存數(shù)據(jù)的同步配置方法與裝置》(專(zhuān)利申請(qǐng)?zhí)?00810127364.0)提出在數(shù)據(jù)庫(kù)內(nèi)容發(fā)生變化時(shí),觸發(fā)數(shù)據(jù)庫(kù)的觸發(fā)器,通過(guò)觸發(fā)器將數(shù)據(jù)庫(kù)緩存中的數(shù)據(jù)和數(shù)據(jù)庫(kù)進(jìn)行同步,例如可以每隔一段時(shí)間去監(jiān)視數(shù)據(jù)庫(kù)表是否發(fā)生變化,如果有變化則更新同步數(shù)據(jù)庫(kù)緩存。但是這類(lèi)方法都需要消耗相當(dāng)大的性能,特別是數(shù)據(jù)庫(kù)中每張表有很多記錄項(xiàng),如果某個(gè)記錄項(xiàng)中的數(shù)據(jù)發(fā)生改變,則所有服務(wù)器上的數(shù)據(jù)庫(kù)緩存都必須做相應(yīng)的改變,這樣很難保證同步的及時(shí)性。
發(fā)明內(nèi)容本發(fā)明的目的是提供一種數(shù)據(jù)庫(kù)緩存集中管理方法和系統(tǒng),避免對(duì)數(shù)據(jù)庫(kù)同步時(shí)需要對(duì)數(shù)據(jù)庫(kù)緩存進(jìn)行同步的問(wèn)題,節(jié)省系統(tǒng)資源。為實(shí)現(xiàn)上述目的,本發(fā)明提供了一種數(shù)據(jù)庫(kù)緩存集中管理方法,所述方法包括步驟Sl,數(shù)據(jù)庫(kù)服務(wù)器發(fā)送數(shù)據(jù)庫(kù)操作信息給數(shù)據(jù)庫(kù)緩存服務(wù)器;步驟S2,數(shù)據(jù)庫(kù)緩存服務(wù)器根據(jù)所述數(shù)據(jù)庫(kù)操作信息對(duì)數(shù)據(jù)庫(kù)緩存進(jìn)行相應(yīng)操作,并返回操作結(jié)果給數(shù)據(jù)庫(kù)服務(wù)器;步驟S3,數(shù)據(jù)庫(kù)服務(wù)器根據(jù)操作結(jié)果對(duì)數(shù)據(jù)庫(kù)進(jìn)行相應(yīng)操作。為了實(shí)現(xiàn)上述目的,本發(fā)明還提供了一種數(shù)據(jù)庫(kù)緩存集中管理系統(tǒng),所述系統(tǒng)包括一個(gè)或多個(gè)數(shù)據(jù)庫(kù)服務(wù)器和一個(gè)數(shù)據(jù)庫(kù)緩存服務(wù)器;所述數(shù)據(jù)庫(kù)服務(wù)器用于發(fā)送數(shù)據(jù)庫(kù)操作信息給數(shù)據(jù)庫(kù)緩存服務(wù)器,并根據(jù)數(shù)據(jù)庫(kù)緩存服務(wù)器返回的操作結(jié)果對(duì)數(shù)據(jù)庫(kù)進(jìn)行相應(yīng)操作所述數(shù)據(jù)庫(kù)緩存服務(wù)器與一個(gè)或多個(gè)數(shù)據(jù)庫(kù)服務(wù)器連接,用于緩存數(shù)據(jù)庫(kù)中的部分?jǐn)?shù)據(jù)庫(kù)表項(xiàng),用于根據(jù)所述數(shù)據(jù)庫(kù)操作信息對(duì)數(shù)據(jù)庫(kù)緩存進(jìn)行相應(yīng)操作,并返回操作結(jié)果給數(shù)據(jù)庫(kù)服務(wù)器。本發(fā)明通過(guò)對(duì)數(shù)據(jù)庫(kù)緩存進(jìn)行集中管理,對(duì)多臺(tái)數(shù)據(jù)庫(kù)服務(wù)器部署一臺(tái)統(tǒng)一的數(shù)據(jù)庫(kù)緩存服務(wù)器,不需要在每臺(tái)數(shù)據(jù)庫(kù)服務(wù)器上都維持一份數(shù)據(jù)庫(kù)緩存,在對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作前先對(duì)數(shù)據(jù)庫(kù)緩存進(jìn)行相應(yīng)操作,避免了對(duì)數(shù)據(jù)庫(kù)同步時(shí)再對(duì)多個(gè)數(shù)據(jù)庫(kù)緩存進(jìn)行同步的問(wèn)題,節(jié)約了系統(tǒng)資源。圖1為集群部署下的服務(wù)器和數(shù)據(jù)庫(kù)關(guān)系示意圖圖2為數(shù)據(jù)庫(kù)緩存在服務(wù)器中位置示意圖圖3為本發(fā)明一種數(shù)據(jù)庫(kù)緩存集中管理方法實(shí)施例一示意圖圖4為本發(fā)明一種數(shù)據(jù)庫(kù)緩存集中管理方法實(shí)施例二示意圖圖5為本發(fā)明一種數(shù)據(jù)庫(kù)緩存集中管理系統(tǒng)實(shí)施例示意圖圖6為本發(fā)明一種數(shù)據(jù)庫(kù)緩存集中管理系統(tǒng)部署拓?fù)涫疽鈭D具體實(shí)施例方式本發(fā)明的目的是提供一種數(shù)據(jù)庫(kù)緩存集中管理方法和系統(tǒng),避免對(duì)數(shù)據(jù)庫(kù)同步時(shí)需要對(duì)數(shù)據(jù)庫(kù)緩存進(jìn)行同步的問(wèn)題,節(jié)省系統(tǒng)資源。下面結(jié)合附圖對(duì)本發(fā)明進(jìn)行說(shuō)明,本發(fā)明提供了一種數(shù)據(jù)庫(kù)緩存集中管理方法,圖3給出了本發(fā)明一種數(shù)據(jù)庫(kù)緩存集中管理方法實(shí)施例一示意圖,所述方法包括步驟Sl,數(shù)據(jù)庫(kù)服務(wù)器發(fā)送數(shù)據(jù)庫(kù)操作信息給數(shù)據(jù)庫(kù)緩存服務(wù)器;所述數(shù)據(jù)庫(kù)服務(wù)器上包括數(shù)據(jù)庫(kù),所述緩存服務(wù)器用于緩存數(shù)據(jù)庫(kù)中的部分表項(xiàng),與一臺(tái)或多臺(tái)數(shù)據(jù)庫(kù)服務(wù)器連接。所述數(shù)據(jù)庫(kù)操作信息可以包括數(shù)據(jù)庫(kù)表名、數(shù)據(jù)庫(kù)表項(xiàng)主鍵、數(shù)據(jù)庫(kù)操作碼和數(shù)據(jù)庫(kù)表項(xiàng)。步驟S2,數(shù)據(jù)庫(kù)緩存服務(wù)器根據(jù)所述數(shù)據(jù)庫(kù)操作信息對(duì)數(shù)據(jù)庫(kù)緩存進(jìn)行相應(yīng)操作,并返回操作結(jié)果給數(shù)據(jù)庫(kù)服務(wù)器;步驟S3,數(shù)據(jù)庫(kù)服務(wù)器根據(jù)操作結(jié)果對(duì)數(shù)據(jù)庫(kù)進(jìn)行相應(yīng)操作。本發(fā)明通過(guò)對(duì)數(shù)據(jù)庫(kù)緩存進(jìn)行集中管理,對(duì)多臺(tái)數(shù)據(jù)庫(kù)服務(wù)器部署一臺(tái)統(tǒng)一的數(shù)據(jù)庫(kù)緩存服務(wù)器,不需要在每臺(tái)數(shù)據(jù)庫(kù)服務(wù)器上都維持一份數(shù)據(jù)庫(kù)緩存,在對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作前先對(duì)數(shù)據(jù)庫(kù)緩存進(jìn)行相應(yīng)操作,避免了對(duì)數(shù)據(jù)庫(kù)同步時(shí)再對(duì)多個(gè)數(shù)據(jù)庫(kù)緩存進(jìn)行同步的問(wèn)題,節(jié)約了系統(tǒng)資源。在進(jìn)行添加操作時(shí),所述數(shù)據(jù)庫(kù)操作碼為添加操作碼;所述步驟S2具體可以為數(shù)據(jù)庫(kù)緩存服務(wù)器根據(jù)數(shù)據(jù)庫(kù)表名和數(shù)據(jù)庫(kù)表項(xiàng)主鍵將數(shù)據(jù)庫(kù)表項(xiàng)添加到數(shù)據(jù)庫(kù)緩存中,并返回添加成功的響應(yīng)給數(shù)據(jù)庫(kù)服務(wù)器;所述步驟S3具體可以為數(shù)據(jù)庫(kù)服務(wù)器收到添加成功的響應(yīng)后,在數(shù)據(jù)庫(kù)中進(jìn)行添加操作。例如在進(jìn)行添加操作時(shí),數(shù)據(jù)庫(kù)服務(wù)器可以按照如下格式發(fā)送TCP報(bào)文給數(shù)據(jù)庫(kù)緩存服務(wù)器數(shù)據(jù)庫(kù)表名數(shù)據(jù)庫(kù)表項(xiàng)主鍵數(shù)據(jù)庫(kù)操作碼數(shù)據(jù)庫(kù)表項(xiàng)(添加操作碼)數(shù)據(jù)庫(kù)表項(xiàng)主鍵是數(shù)據(jù)庫(kù)中唯一標(biāo)識(shí)數(shù)據(jù)庫(kù)表項(xiàng)的值,可以為數(shù)據(jù)庫(kù)表項(xiàng)的通用唯一識(shí)別碼(UniversallyUniqueIdentifier,簡(jiǎn)稱(chēng)UUID)。數(shù)據(jù)庫(kù)緩存服務(wù)器收到消息后,按如上格式解析出數(shù)據(jù)庫(kù)表名和數(shù)據(jù)庫(kù)主鍵,組成數(shù)據(jù)庫(kù)緩存中的關(guān)鍵字(key)值,將這條數(shù)據(jù)庫(kù)表項(xiàng)加入到數(shù)據(jù)庫(kù)緩存的哈希(Hash)表中,并發(fā)送一個(gè)添加成功的響應(yīng)給數(shù)據(jù)庫(kù)服務(wù)器。數(shù)據(jù)庫(kù)服務(wù)器收到添加成功的響應(yīng)后將數(shù)據(jù)庫(kù)表項(xiàng)添加到數(shù)據(jù)庫(kù)中。在進(jìn)行查詢(xún)操作時(shí),所述數(shù)據(jù)庫(kù)操作碼為查詢(xún)操作碼,所述數(shù)據(jù)庫(kù)表項(xiàng)為空;所述步驟S2具體可以為數(shù)據(jù)庫(kù)緩存服務(wù)器根據(jù)數(shù)據(jù)庫(kù)表名和數(shù)據(jù)庫(kù)表項(xiàng)主鍵6在數(shù)據(jù)庫(kù)緩存中查詢(xún)是否存在對(duì)應(yīng)的數(shù)據(jù)庫(kù)表項(xiàng),如果查詢(xún)到則返回查詢(xún)結(jié)果給數(shù)據(jù)庫(kù)服務(wù)器,否則發(fā)送查詢(xún)失敗的響應(yīng)給數(shù)據(jù)庫(kù)服務(wù)器;所述步驟S3具體可以為數(shù)據(jù)庫(kù)服務(wù)器在收到查詢(xún)結(jié)果后,直接返回查詢(xún)結(jié)果;在收到查詢(xún)失敗的響應(yīng)后,在數(shù)據(jù)庫(kù)服務(wù)器上進(jìn)行查詢(xún),并將查詢(xún)到的數(shù)據(jù)庫(kù)表項(xiàng)添加到數(shù)據(jù)庫(kù)緩存中。例如在進(jìn)行查詢(xún)操作時(shí),數(shù)據(jù)庫(kù)服務(wù)器可以按照如下格式發(fā)送TCP報(bào)文給數(shù)據(jù)庫(kù)緩存服務(wù)器數(shù)據(jù)庫(kù)表名數(shù)據(jù)庫(kù)表項(xiàng)主鍵數(shù)據(jù)庫(kù)操作碼數(shù)據(jù)庫(kù)表項(xiàng)(查詢(xún)操作碼)(為空)數(shù)據(jù)庫(kù)緩存服務(wù)器收到消息后,按如上格式解析出數(shù)據(jù)庫(kù)表名和數(shù)據(jù)庫(kù)主鍵,組成key值,查詢(xún)數(shù)據(jù)庫(kù)緩存中的Hash表中,如果查詢(xún)到則將查詢(xún)結(jié)果發(fā)送給數(shù)據(jù)庫(kù)服務(wù)器,否則發(fā)送一個(gè)查詢(xún)失敗的響應(yīng)給數(shù)據(jù)庫(kù)服務(wù)器。數(shù)據(jù)庫(kù)服務(wù)器在收到查詢(xún)結(jié)果后,直接返回查詢(xún)結(jié)果;在收到查詢(xún)失敗的響應(yīng)后,在數(shù)據(jù)庫(kù)服務(wù)器上進(jìn)行查詢(xún),并按照上面的格式將查詢(xún)到的數(shù)據(jù)庫(kù)表項(xiàng)添加到數(shù)據(jù)庫(kù)緩存中。在進(jìn)行刪除操作時(shí),所述數(shù)據(jù)庫(kù)操作碼為刪除操作碼,所述數(shù)據(jù)庫(kù)表項(xiàng)為空;所述步驟S2具體可以為數(shù)據(jù)庫(kù)緩存服務(wù)器根據(jù)數(shù)據(jù)庫(kù)表名和數(shù)據(jù)庫(kù)表項(xiàng)主鍵在數(shù)據(jù)庫(kù)緩存中進(jìn)行刪除操作,并返回刪除成功的響應(yīng)給數(shù)據(jù)庫(kù)服務(wù)器;所述步驟S3具體可以為數(shù)據(jù)庫(kù)服務(wù)器收到刪除成功的響應(yīng)后,在數(shù)據(jù)庫(kù)中進(jìn)行刪除操作。例如在進(jìn)行刪除操作時(shí),數(shù)據(jù)庫(kù)服務(wù)器可以按照如下格式發(fā)送TCP報(bào)文給數(shù)據(jù)庫(kù)緩存服務(wù)器數(shù)據(jù)庫(kù)表名數(shù)據(jù)庫(kù)表項(xiàng)主鍵數(shù)據(jù)庫(kù)操作碼數(shù)據(jù)庫(kù)表項(xiàng)(刪除操作碼)(為空)數(shù)據(jù)庫(kù)緩存服務(wù)器收到消息后,按如上格式解析出數(shù)據(jù)庫(kù)表名和數(shù)據(jù)庫(kù)主鍵,組成key值,查詢(xún)數(shù)據(jù)庫(kù)緩存的Hash表,如果查詢(xún)到則從Hash表中刪除掉該表項(xiàng),否則不進(jìn)行任何操作,并發(fā)送一個(gè)刪除成功的響應(yīng)給數(shù)據(jù)庫(kù)服務(wù)器。數(shù)據(jù)庫(kù)服務(wù)器收到刪除成功的響應(yīng)后從數(shù)據(jù)庫(kù)中刪除相應(yīng)表項(xiàng)。在進(jìn)行修改操作時(shí),所述數(shù)據(jù)庫(kù)操作碼為修改操作碼;所述步驟S2具體為數(shù)據(jù)庫(kù)緩存服務(wù)器根據(jù)數(shù)據(jù)庫(kù)表名和數(shù)據(jù)庫(kù)表項(xiàng)主鍵在數(shù)據(jù)庫(kù)緩存中查詢(xún)是否存在對(duì)應(yīng)的數(shù)據(jù)庫(kù)表項(xiàng),如果查詢(xún)到則修改對(duì)應(yīng)的數(shù)據(jù)庫(kù)表項(xiàng),并發(fā)送修改成功的響應(yīng)給數(shù)據(jù)庫(kù)服務(wù)器,否則發(fā)送修改失敗的響應(yīng)給數(shù)據(jù)庫(kù)服務(wù)器;所述步驟S3具體為數(shù)據(jù)庫(kù)服務(wù)器在收到修改成功的響應(yīng)后,在數(shù)據(jù)庫(kù)中進(jìn)行修改操作;在收到修改失敗的響應(yīng)后,在數(shù)據(jù)庫(kù)服務(wù)器上進(jìn)行修改操作,并將修改的數(shù)據(jù)庫(kù)表項(xiàng)添加到數(shù)據(jù)庫(kù)緩存中。例如在進(jìn)行修改操作時(shí),數(shù)據(jù)庫(kù)服務(wù)器可以按照如下格式發(fā)送TCP報(bào)文給數(shù)據(jù)庫(kù)7<table>tableseeoriginaldocumentpage8</column></row><table>數(shù)據(jù)庫(kù)緩存服務(wù)器收到消息后,按如上格式解析出數(shù)據(jù)庫(kù)表名和數(shù)據(jù)庫(kù)主鍵,組成key值,查詢(xún)數(shù)據(jù)庫(kù)緩存中的Hash表中,如果查詢(xún)到則將數(shù)據(jù)庫(kù)緩存的Hash表中的數(shù)據(jù)庫(kù)表項(xiàng)更新為數(shù)據(jù)庫(kù)操作信息中的數(shù)據(jù)庫(kù)表項(xiàng),并發(fā)送修改成功的響應(yīng)給數(shù)據(jù)庫(kù)服務(wù)器,否則發(fā)送一個(gè)修改失敗的響應(yīng)給數(shù)據(jù)庫(kù)服務(wù)器。數(shù)據(jù)庫(kù)服務(wù)器在收到修改成功的響應(yīng)后,在數(shù)據(jù)庫(kù)中進(jìn)行修改操作;在收到修改失敗的響應(yīng)后,在數(shù)據(jù)庫(kù)服務(wù)器上進(jìn)行修改操作,并將修改的數(shù)據(jù)庫(kù)表項(xiàng)添加到數(shù)據(jù)庫(kù)緩存中。圖4給出了本發(fā)明一種數(shù)據(jù)庫(kù)緩存集中管理方法實(shí)施例二示意圖,本實(shí)施例除了包括方法實(shí)施例一的步驟外,在所述步驟SI之前還包括步驟S4:數(shù)據(jù)庫(kù)服務(wù)器判斷與數(shù)據(jù)庫(kù)緩存服務(wù)器連接是否正常,如果是則執(zhí)行步驟Sl,否則直接對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作。數(shù)據(jù)庫(kù)緩存服務(wù)器和數(shù)據(jù)庫(kù)服務(wù)器之間通常使用TCP連接,如果連接出現(xiàn)中斷,數(shù)據(jù)庫(kù)緩存服務(wù)器會(huì)檢測(cè)到,此時(shí)通常它會(huì)把所有的緩存都清空掉。當(dāng)連接恢復(fù)時(shí)再繼續(xù)對(duì)數(shù)據(jù)庫(kù)服務(wù)器中的數(shù)據(jù)進(jìn)行緩存。在常見(jiàn)的部署中,數(shù)據(jù)庫(kù)緩存服務(wù)器和數(shù)據(jù)庫(kù)服務(wù)器是通過(guò)交換機(jī)直接連接的,很少出現(xiàn)網(wǎng)絡(luò)連接中斷的問(wèn)題。如果出現(xiàn)連接中斷,一般是由于數(shù)據(jù)庫(kù)緩存服務(wù)器出現(xiàn)故障或者斷電引起的,在重啟數(shù)據(jù)庫(kù)緩存服務(wù)器或更換新機(jī)器后,緩存將被清空,正常工作后對(duì)數(shù)據(jù)庫(kù)服務(wù)器中的數(shù)據(jù)進(jìn)行緩存。本發(fā)明還提供了一種數(shù)據(jù)庫(kù)緩存集中管理系統(tǒng),圖5給出了本發(fā)明一種數(shù)據(jù)庫(kù)緩存集中管理系統(tǒng)實(shí)施例示意圖,所述系統(tǒng)包括一個(gè)或多個(gè)數(shù)據(jù)庫(kù)服務(wù)器和一個(gè)數(shù)據(jù)庫(kù)緩存服務(wù)器;所述數(shù)據(jù)庫(kù)服務(wù)器用于發(fā)送數(shù)據(jù)庫(kù)操作信息給數(shù)據(jù)庫(kù)緩存服務(wù)器,并根據(jù)數(shù)據(jù)庫(kù)緩存服務(wù)器返回的操作結(jié)果對(duì)數(shù)據(jù)庫(kù)進(jìn)行相應(yīng)操作所述數(shù)據(jù)庫(kù)操作信息可以包括數(shù)據(jù)庫(kù)表名、數(shù)據(jù)庫(kù)表項(xiàng)主鍵、數(shù)據(jù)庫(kù)操作碼和數(shù)據(jù)庫(kù)表項(xiàng)。所述數(shù)據(jù)庫(kù)緩存服務(wù)器與一個(gè)或多個(gè)數(shù)據(jù)庫(kù)服務(wù)器連接,用于緩存數(shù)據(jù)庫(kù)中的部分?jǐn)?shù)據(jù)庫(kù)表項(xiàng),用于根據(jù)所述數(shù)據(jù)庫(kù)操作信息對(duì)數(shù)據(jù)庫(kù)緩存進(jìn)行相應(yīng)操作,并返回操作結(jié)果給數(shù)據(jù)庫(kù)服務(wù)器。所述數(shù)據(jù)庫(kù)服務(wù)器還可以用于在發(fā)送數(shù)據(jù)庫(kù)操作信息給數(shù)據(jù)庫(kù)緩存服務(wù)器之前判斷與數(shù)據(jù)庫(kù)緩存服務(wù)器連接是否正常,如果是發(fā)送數(shù)據(jù)庫(kù)操作信息給數(shù)據(jù)庫(kù)緩存服務(wù)器,否則直接對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作。在進(jìn)行添加操作時(shí),所述數(shù)據(jù)庫(kù)操作碼為添加操作碼;數(shù)據(jù)庫(kù)緩存服務(wù)器可以用于根據(jù)數(shù)據(jù)庫(kù)表名和數(shù)據(jù)庫(kù)表項(xiàng)主鍵將數(shù)據(jù)庫(kù)表項(xiàng)添加到數(shù)據(jù)庫(kù)緩存中,并返回添加成功的響應(yīng)給數(shù)據(jù)庫(kù)服務(wù)器;數(shù)據(jù)庫(kù)服務(wù)器可以用于收到添加成功的響應(yīng)后,在數(shù)據(jù)庫(kù)中進(jìn)行添加操作。在進(jìn)行查詢(xún)操作時(shí),所述數(shù)據(jù)庫(kù)操作碼為查詢(xún)操作碼,所述數(shù)據(jù)庫(kù)表項(xiàng)為空;數(shù)據(jù)庫(kù)緩存服務(wù)器可以用于根據(jù)數(shù)據(jù)庫(kù)表名和數(shù)據(jù)庫(kù)表項(xiàng)主鍵在數(shù)據(jù)庫(kù)緩存中查詢(xún)是否存在對(duì)應(yīng)的數(shù)據(jù)庫(kù)表項(xiàng),如果查詢(xún)到則返回查詢(xún)結(jié)果給數(shù)據(jù)庫(kù)服務(wù)器,否則發(fā)送查詢(xún)失敗的響應(yīng)給數(shù)據(jù)庫(kù)服務(wù)器;數(shù)據(jù)庫(kù)服務(wù)器可以用于在收到查詢(xún)結(jié)果后,直接返回查詢(xún)結(jié)果;在收到查詢(xún)失敗的響應(yīng)后,在數(shù)據(jù)庫(kù)服務(wù)器上進(jìn)行查詢(xún),并將查詢(xún)到的數(shù)據(jù)庫(kù)表項(xiàng)添加到數(shù)據(jù)庫(kù)緩存中。在進(jìn)行刪除操作時(shí),所述數(shù)據(jù)庫(kù)操作碼為刪除操作碼,所述數(shù)據(jù)庫(kù)表項(xiàng)為空;數(shù)據(jù)庫(kù)緩存服務(wù)器可以用于根據(jù)數(shù)據(jù)庫(kù)表名和數(shù)據(jù)庫(kù)表項(xiàng)主鍵在數(shù)據(jù)庫(kù)緩存中進(jìn)行刪除操作,并返回刪除成功的響應(yīng)給數(shù)據(jù)庫(kù)服務(wù)器;數(shù)據(jù)庫(kù)服務(wù)器可以用于收到刪除成功的響應(yīng)后,在數(shù)據(jù)庫(kù)中進(jìn)行刪除操作。在進(jìn)行修改操作時(shí),所述數(shù)據(jù)庫(kù)操作碼為修改操作碼;數(shù)據(jù)庫(kù)緩存服務(wù)器可以用于根據(jù)數(shù)據(jù)庫(kù)表名和數(shù)據(jù)庫(kù)表項(xiàng)主鍵在數(shù)據(jù)庫(kù)緩存中查詢(xún)是否存在對(duì)應(yīng)的數(shù)據(jù)庫(kù)表項(xiàng),如果查詢(xún)到則修改對(duì)應(yīng)的數(shù)據(jù)庫(kù)表項(xiàng),并發(fā)送修改成功的響應(yīng)給數(shù)據(jù)庫(kù)服務(wù)器,否則發(fā)送修改失敗的響應(yīng)給數(shù)據(jù)庫(kù)服務(wù)器;數(shù)據(jù)庫(kù)服務(wù)器可以用于在收到修改成功的響應(yīng)后,在數(shù)據(jù)庫(kù)中進(jìn)行修改操作;在收到修改失敗的響應(yīng)后,在數(shù)據(jù)庫(kù)服務(wù)器上進(jìn)行修改操作,并將修改的數(shù)據(jù)庫(kù)表項(xiàng)添加到數(shù)據(jù)庫(kù)緩存中。圖6給出了本發(fā)明一種數(shù)據(jù)庫(kù)緩存集中管理系統(tǒng)部署拓?fù)涫疽鈭D,本拓?fù)溆腥缦绿卣?.部署了網(wǎng)絡(luò)負(fù)載均衡集群,即多臺(tái)數(shù)據(jù)庫(kù)服務(wù)器;2.每臺(tái)數(shù)據(jù)庫(kù)服務(wù)器上都部署有數(shù)據(jù)庫(kù);3.部署1臺(tái)數(shù)據(jù)庫(kù)緩存服務(wù)器;4.數(shù)據(jù)庫(kù)服務(wù)器與數(shù)據(jù)庫(kù)緩存服務(wù)器直接連接;5.數(shù)據(jù)庫(kù)之間通過(guò)數(shù)據(jù)庫(kù)復(fù)制技術(shù)保持?jǐn)?shù)據(jù)庫(kù)一致本發(fā)明通過(guò)對(duì)數(shù)據(jù)庫(kù)緩存進(jìn)行集中管理,對(duì)多臺(tái)數(shù)據(jù)庫(kù)服務(wù)器部署一臺(tái)統(tǒng)一的數(shù)據(jù)庫(kù)緩存服務(wù)器,不需要在每臺(tái)數(shù)據(jù)庫(kù)服務(wù)器上都維持一份數(shù)據(jù)庫(kù)緩存,在對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作前先對(duì)數(shù)據(jù)庫(kù)緩存進(jìn)行相應(yīng)操作,避免了對(duì)數(shù)據(jù)庫(kù)同步時(shí)再對(duì)多個(gè)數(shù)據(jù)庫(kù)緩存進(jìn)行同步的問(wèn)題,節(jié)約了系統(tǒng)資源。同時(shí),將緩存由數(shù)據(jù)庫(kù)緩存服務(wù)器集中管理,例如可以保存在一張巨大的Hash表中,提高了查詢(xún)數(shù)據(jù)庫(kù)緩存的性能。數(shù)據(jù)庫(kù)緩存的統(tǒng)一管理,也減少了不必要的緩存冗余,為每臺(tái)服務(wù)器大大節(jié)約了寶貴的內(nèi)存資源。最后應(yīng)說(shuō)明的是以上實(shí)施例僅用以說(shuō)明本發(fā)明的技術(shù)方案,而非對(duì)其限制;盡管參照前述實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)的說(shuō)明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解其依然可以對(duì)前述各實(shí)施例所記載的技術(shù)方案進(jìn)行修改,或者對(duì)其中部分技術(shù)特征進(jìn)行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實(shí)施例技術(shù)方案的精神和范圍。權(quán)利要求一種數(shù)據(jù)庫(kù)緩存集中管理方法,其特征在于,所述方法包括步驟S1,數(shù)據(jù)庫(kù)服務(wù)器發(fā)送數(shù)據(jù)庫(kù)操作信息給數(shù)據(jù)庫(kù)緩存服務(wù)器;步驟S2,數(shù)據(jù)庫(kù)緩存服務(wù)器根據(jù)所述數(shù)據(jù)庫(kù)操作信息對(duì)數(shù)據(jù)庫(kù)緩存進(jìn)行相應(yīng)操作,并返回操作結(jié)果給數(shù)據(jù)庫(kù)服務(wù)器;步驟S3,數(shù)據(jù)庫(kù)服務(wù)器根據(jù)操作結(jié)果對(duì)數(shù)據(jù)庫(kù)進(jìn)行相應(yīng)操作。2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述數(shù)據(jù)庫(kù)操作信息包括數(shù)據(jù)庫(kù)表名、數(shù)據(jù)庫(kù)表項(xiàng)主鍵、數(shù)據(jù)庫(kù)操作碼和數(shù)據(jù)庫(kù)表項(xiàng)。3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述數(shù)據(jù)庫(kù)操作碼為添加操作碼;所述步驟S2具體為數(shù)據(jù)庫(kù)緩存服務(wù)器根據(jù)數(shù)據(jù)庫(kù)表名和數(shù)據(jù)庫(kù)表項(xiàng)主鍵將數(shù)據(jù)庫(kù)表項(xiàng)添加到數(shù)據(jù)庫(kù)緩存中,并返回添加成功的響應(yīng)給數(shù)據(jù)庫(kù)服務(wù)器;所述步驟S3具體為數(shù)據(jù)庫(kù)服務(wù)器收到添加成功的響應(yīng)后,在數(shù)據(jù)庫(kù)中進(jìn)行添加操作。4.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述數(shù)據(jù)庫(kù)操作碼為查詢(xún)操作碼,所述數(shù)據(jù)庫(kù)表項(xiàng)為空;所述步驟S2具體為數(shù)據(jù)庫(kù)緩存服務(wù)器根據(jù)數(shù)據(jù)庫(kù)表名和數(shù)據(jù)庫(kù)表項(xiàng)主鍵在數(shù)據(jù)庫(kù)緩存中查詢(xún)是否存在對(duì)應(yīng)的數(shù)據(jù)庫(kù)表項(xiàng),如果查詢(xún)到則返回查詢(xún)結(jié)果給數(shù)據(jù)庫(kù)服務(wù)器,否則發(fā)送查詢(xún)失敗的響應(yīng)給數(shù)據(jù)庫(kù)服務(wù)器;所述步驟S3具體為數(shù)據(jù)庫(kù)服務(wù)器在收到查詢(xún)結(jié)果后,直接返回查詢(xún)結(jié)果;在收到查詢(xún)失敗的響應(yīng)后,在數(shù)據(jù)庫(kù)服務(wù)器上進(jìn)行查詢(xún),并將查詢(xún)到的數(shù)據(jù)庫(kù)表項(xiàng)添加到數(shù)據(jù)庫(kù)緩存中。5.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述數(shù)據(jù)庫(kù)操作碼為刪除操作碼,所述數(shù)據(jù)庫(kù)表項(xiàng)為空;所述步驟S2具體為數(shù)據(jù)庫(kù)緩存服務(wù)器根據(jù)數(shù)據(jù)庫(kù)表名和數(shù)據(jù)庫(kù)表項(xiàng)主鍵在數(shù)據(jù)庫(kù)緩存中進(jìn)行刪除操作,并返回刪除成功的響應(yīng)給數(shù)據(jù)庫(kù)服務(wù)器;所述步驟S3具體為數(shù)據(jù)庫(kù)服務(wù)器收到刪除成功的響應(yīng)后,在數(shù)據(jù)庫(kù)中進(jìn)行刪除操作。6.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述數(shù)據(jù)庫(kù)操作碼為修改操作碼;所述步驟S2具體為數(shù)據(jù)庫(kù)緩存服務(wù)器根據(jù)數(shù)據(jù)庫(kù)表名和數(shù)據(jù)庫(kù)表項(xiàng)主鍵在數(shù)據(jù)庫(kù)緩存中查詢(xún)是否存在對(duì)應(yīng)的數(shù)據(jù)庫(kù)表項(xiàng),如果查詢(xún)到則修改對(duì)應(yīng)的數(shù)據(jù)庫(kù)表項(xiàng),并發(fā)送修改成功的響應(yīng)給數(shù)據(jù)庫(kù)服務(wù)器,否則發(fā)送修改失敗的響應(yīng)給數(shù)據(jù)庫(kù)服務(wù)器;所述步驟S3具體為數(shù)據(jù)庫(kù)服務(wù)器在收到修改成功的響應(yīng)后,在數(shù)據(jù)庫(kù)中進(jìn)行添加操作;在收到修改失敗的響應(yīng)后,在數(shù)據(jù)庫(kù)服務(wù)器上進(jìn)行添加操作,并將修改的數(shù)據(jù)庫(kù)表項(xiàng)添加到數(shù)據(jù)庫(kù)緩存中。7.根據(jù)權(quán)利要求1-6所述的任一方法,其特征在于,所述步驟Sl之前還包括步驟S4:數(shù)據(jù)庫(kù)服務(wù)器判斷與數(shù)據(jù)庫(kù)緩存服務(wù)器連接是否正常,如果是則執(zhí)行步驟Sl,否則直接對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作。8.—種數(shù)據(jù)庫(kù)緩存集中管理系統(tǒng),其特征在于,所述系統(tǒng)包括一個(gè)或多個(gè)數(shù)據(jù)庫(kù)服務(wù)器和一個(gè)數(shù)據(jù)庫(kù)緩存服務(wù)器;所述數(shù)據(jù)庫(kù)服務(wù)器用于發(fā)送數(shù)據(jù)庫(kù)操作信息給數(shù)據(jù)庫(kù)緩存服務(wù)器,并根據(jù)數(shù)據(jù)庫(kù)緩存服務(wù)器返回的操作結(jié)果對(duì)數(shù)據(jù)庫(kù)進(jìn)行相應(yīng)操作所述數(shù)據(jù)庫(kù)緩存服務(wù)器與一個(gè)或多個(gè)數(shù)據(jù)庫(kù)服務(wù)器連接,用于緩存數(shù)據(jù)庫(kù)中的部分?jǐn)?shù)據(jù)庫(kù)表項(xiàng),用于根據(jù)所述數(shù)據(jù)庫(kù)操作信息對(duì)數(shù)據(jù)庫(kù)緩存進(jìn)行相應(yīng)操作,并返回操作結(jié)果給數(shù)據(jù)庫(kù)服務(wù)器。9.根據(jù)權(quán)利要求8所述的系統(tǒng),其特征在于,所述數(shù)據(jù)庫(kù)服務(wù)器還用于在發(fā)送數(shù)據(jù)庫(kù)操作信息給數(shù)據(jù)庫(kù)緩存服務(wù)器之前判斷與數(shù)據(jù)庫(kù)緩存服務(wù)器連接是否正常,如果是發(fā)送數(shù)據(jù)庫(kù)操作信息給數(shù)據(jù)庫(kù)緩存服務(wù)器,否則直接對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作。全文摘要本發(fā)明提供了一種數(shù)據(jù)庫(kù)緩存集中管理方法和系統(tǒng)。所述方法包括步驟S1,數(shù)據(jù)庫(kù)服務(wù)器發(fā)送數(shù)據(jù)庫(kù)操作信息給數(shù)據(jù)庫(kù)緩存服務(wù)器;步驟S2,數(shù)據(jù)庫(kù)緩存服務(wù)器根據(jù)所述數(shù)據(jù)庫(kù)操作信息對(duì)數(shù)據(jù)庫(kù)緩存進(jìn)行相應(yīng)操作,并返回操作結(jié)果給數(shù)據(jù)庫(kù)服務(wù)器;步驟S3,數(shù)據(jù)庫(kù)服務(wù)器根據(jù)操作結(jié)果對(duì)數(shù)據(jù)庫(kù)進(jìn)行相應(yīng)操作。本發(fā)明通過(guò)對(duì)數(shù)據(jù)庫(kù)緩存進(jìn)行集中管理,對(duì)多臺(tái)數(shù)據(jù)庫(kù)服務(wù)器部署一臺(tái)統(tǒng)一的數(shù)據(jù)庫(kù)緩存服務(wù)器,不需要在每臺(tái)數(shù)據(jù)庫(kù)服務(wù)器上都維持一份數(shù)據(jù)庫(kù)緩存,在對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作前先對(duì)數(shù)據(jù)庫(kù)緩存進(jìn)行相應(yīng)操作,避免了對(duì)數(shù)據(jù)庫(kù)同步時(shí)再對(duì)多個(gè)數(shù)據(jù)庫(kù)緩存進(jìn)行同步的問(wèn)題,節(jié)約了系統(tǒng)資源。文檔編號(hào)H04L29/08GK101706781SQ200910093368公開(kāi)日2010年5月12日申請(qǐng)日期2009年9月29日優(yōu)先權(quán)日2009年9月29日發(fā)明者毛琦申請(qǐng)人:北京星網(wǎng)銳捷網(wǎng)絡(luò)技術(shù)有限公司