一種實時數(shù)據(jù)庫訂閱系統(tǒng)及方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種數(shù)據(jù)處理技術(shù),尤其是涉及一種效率高、成本低的實時數(shù)據(jù)庫訂閱系統(tǒng)及方法。
【背景技術(shù)】
[0002]傳統(tǒng)的實時數(shù)據(jù)庫系統(tǒng)中,客戶端請求的位號數(shù)據(jù)多采用直接查詢或整體訂閱,由服務(wù)自己保存整個訂閱信息的方式。直接查詢效率低下,且不支持變化上送,浪費網(wǎng)絡(luò)流量;整體訂閱是目前大多數(shù)實時數(shù)據(jù)庫采用的方法,雖然支持變化上送,但訂閱信息量較大的時候,難以維護訂閱信息,并且當訂閱服務(wù)異?;蛑貑⒑?,客戶端需重新訂閱,浪費時間,并且這種方案在主備冗余時,兩個訂閱服務(wù)互相不知曉對方,客戶端整體向2個訂閱服務(wù)訂閱位號數(shù)據(jù),上送時由客戶端判斷采用哪個數(shù)據(jù),浪費空間效率,增加了客戶端成本。
【發(fā)明內(nèi)容】
[0003]本發(fā)明主要是解決現(xiàn)有技術(shù)中位號訂閱系統(tǒng)存在浪費網(wǎng)絡(luò)流量、浪費空間效率、增加成本的問題,提供了一種效率高、成本低的實時數(shù)據(jù)庫訂閱系統(tǒng)。
[0004]本發(fā)明還提供了一種實時數(shù)據(jù)庫訂閱方法。
[0005]本發(fā)明的上述技術(shù)問題主要是通過下述技術(shù)方案得以解決的:一種實時數(shù)據(jù)庫訂閱系統(tǒng),包括若干客戶端、主服務(wù)器、緩存數(shù)據(jù)庫,所述主服務(wù)器包括若干實時數(shù)據(jù)庫、位號訂閱分發(fā)服務(wù)模塊,客戶端通過系統(tǒng)總線分別與位號訂閱分發(fā)服務(wù)模塊連接,實時數(shù)據(jù)庫分別與位號訂閱分發(fā)服務(wù)模塊連接,位號訂閱分發(fā)服務(wù)模塊與緩存數(shù)據(jù)庫連接;
客戶端:發(fā)起或取消訂閱請求,存儲有訂閱位號數(shù)據(jù)塊;
位號訂閱分發(fā)服務(wù)模塊:接受實時數(shù)據(jù)庫實時變化上送的數(shù)據(jù)和客戶端訂閱或取消訂閱請求,并建立有η個數(shù)據(jù)槽,用于存放客戶端的訂閱信息;
緩沖數(shù)據(jù)庫:建立有η個數(shù)據(jù)槽,用于存放客戶端的訂閱信息。該緩存數(shù)據(jù)庫采用分布式key-value緩存數(shù)據(jù)庫,又名NoSQL (Not only SQL)數(shù)據(jù)庫,一種可以快速存取字符或二進制數(shù)據(jù)結(jié)構(gòu)的索引數(shù)據(jù)庫,支持冗余和分布式。本發(fā)明系統(tǒng)將訂閱信息分槽放置,細分訂閱信息,使每塊的信息最小化,解決了訂閱信息的冗余和存儲問題,即使服務(wù)器離線或宕機,訂閱信息依舊存儲在緩存數(shù)據(jù)庫中,在冗余服務(wù)下,使用分槽算法有效減少因客戶端訂閱位號的改變而進行同步的數(shù)據(jù)量。分槽存放的算法降低了時間復(fù)雜度,使服務(wù)達到了百萬級別的訂閱訪問量,比現(xiàn)有的集中存儲,順序遍歷的訪問方式提高了很大的效率。
[0006]作為一種優(yōu)選方案,還包括有若干備服務(wù)器,備服務(wù)器包括有若干實時數(shù)據(jù)庫、位號訂閱分發(fā)服務(wù)模塊,客戶端通過系統(tǒng)總線分別與位號訂閱分發(fā)服務(wù)模塊連接,實時數(shù)據(jù)庫分別與位號訂閱分發(fā)服務(wù)模塊連接,位號訂閱分發(fā)服務(wù)模塊與分布式緩存數(shù)據(jù)庫連接。備服務(wù)器具有一個或多個,它包括的實時數(shù)據(jù)庫與主服務(wù)器、其他備服務(wù)器的實時數(shù)據(jù)庫是一樣的,即主服務(wù)器、若干服務(wù)器的位號訂閱分發(fā)服務(wù)連接至同樣的實時數(shù)據(jù)庫。本方案結(jié)構(gòu)構(gòu)成了多服務(wù)并存的熱備模式:客戶端不必在意位號訂閱分發(fā)服務(wù)模塊的數(shù)量以及它的健康狀態(tài),只要有一個位號訂閱分發(fā)服務(wù)模塊存在就可以提供服務(wù),提高了數(shù)據(jù)上送和訂閱成功的可靠性,與傳統(tǒng)的主備切換存在不能服務(wù)的空檔期相比,安全性進一步提高。同時本方案使得網(wǎng)絡(luò)和計算量負載平均,當存在2個或以上的位號訂閱分發(fā)服務(wù)模塊分布于不同服務(wù)器時,變化數(shù)據(jù)可以通過不同服務(wù)器經(jīng)過不同位號訂閱分發(fā)服務(wù)模塊發(fā)送至客戶端,提高了上送效率和資源利用率,與傳統(tǒng)的備服務(wù)器完全不工作的閑置狀態(tài)相比,充分利用了現(xiàn)有資源。另外,由于訂閱信息放置在分布式緩存系統(tǒng)中,增加了主備訂閱服務(wù)間的同步,并使同一時間只會有一個訂閱服務(wù)向客戶端發(fā)生變化數(shù)據(jù),減少了 50%的數(shù)據(jù)上送量,直接降低了客戶端成本和網(wǎng)絡(luò)成本。
[0007]一種實時數(shù)據(jù)庫訂閱方法,包括訂閱步驟、取消訂閱步驟、變化上送步驟;
訂閱步驟包括:處理客戶請求訂閱位號得到要放入的數(shù)據(jù)槽號,將訂閱位號和客戶端信息寫入到緩存數(shù)據(jù)庫數(shù)據(jù)槽內(nèi),最后告知實時數(shù)據(jù)庫該位號需要變化上送;
取消訂閱步驟包括:處理客戶請求訂閱位號得到數(shù)據(jù)槽號,查看本地數(shù)據(jù)槽中是否有該位號,如果存在則刪除與該客戶端信息的關(guān)聯(lián),并同步緩存數(shù)據(jù)庫數(shù)據(jù)槽;
變化上送步驟包括:實時數(shù)據(jù)庫對已經(jīng)訂閱的位號進行變化數(shù)據(jù)上送,在訂閱分發(fā)服務(wù)模塊收到位號數(shù)據(jù)后,處理該位號得到數(shù)據(jù)槽號,查看緩存數(shù)據(jù)庫數(shù)據(jù)槽中是否存在該位號,如果存在該位號,遍歷該位號所關(guān)聯(lián)的所有客戶端,依次將數(shù)據(jù)發(fā)送給客戶端,如不存在,則停止上送,丟棄數(shù)據(jù)。本發(fā)明將訂閱信息分槽放置,細分訂閱信息,使每塊的信息最小化,解決了訂閱信息的冗余和存儲問題,即使服務(wù)器離線或宕機,訂閱信息依舊存儲在緩存數(shù)據(jù)庫中,在冗余服務(wù)下,使用分槽算法有效減少因客戶端訂閱位號的改變而進行同步的數(shù)據(jù)量。分槽存放的算法降低了時間復(fù)雜度,使服務(wù)達到了百萬級別的訂閱訪問量,比現(xiàn)有的集中存儲,順序遍歷的訪問方式提高了很大的效率。
[0008]作為一種優(yōu)選方案,訂閱步驟、取消訂閱步驟和變化上送步驟中處理客戶請求訂閱位號的過程為:將訂閱位號哈希,得到一個哈希值S,將哈希值s余除一個整數(shù)n,得到整數(shù)值a,整數(shù)值a對應(yīng)數(shù)據(jù)槽號。這里的整數(shù)η與建立的η個數(shù)據(jù)槽相對應(yīng)。η根據(jù)網(wǎng)絡(luò)用戶和帶寬的需要進行設(shè)定。
[0009]作為一種優(yōu)選方案,訂閱步驟中還包括同步過程,同步過程為:
a.在得到數(shù)據(jù)槽號后,查看本地數(shù)據(jù)槽和緩存數(shù)據(jù)庫數(shù)據(jù)槽的數(shù)字簽名是否一致;本地數(shù)據(jù)槽指服務(wù)器數(shù)據(jù)槽。
[0010]b.若一致,則將訂閱位號和客戶端信息寫入本地數(shù)據(jù)槽,同時重新計算本地數(shù)據(jù)槽數(shù)字簽名并存入本地數(shù)據(jù)槽,然后同步本地數(shù)據(jù)槽和緩存數(shù)據(jù)庫數(shù)據(jù)槽內(nèi)容;這里同步本地數(shù)據(jù)槽和緩存數(shù)據(jù)庫數(shù)據(jù)槽內(nèi)容即上述訂閱步驟中的將訂閱位號和客戶端信息寫入到緩存數(shù)據(jù)庫數(shù)據(jù)槽內(nèi),另外還將數(shù)字簽名也寫入到緩存數(shù)據(jù)庫數(shù)據(jù)槽內(nèi)。
[0011]c.若不一致,則刪除本地數(shù)據(jù)槽內(nèi)容,本地數(shù)據(jù)槽載入緩存數(shù)據(jù)庫數(shù)據(jù)槽內(nèi)容,然后繼續(xù)步驟b。
[0012]作為一種優(yōu)選方案,取消訂閱步驟中還包括查看該位號是否還有其他客戶端關(guān)聯(lián),如有則不做其他操作,保存后通過不緩存數(shù)據(jù)庫,如沒有則刪除該位號的所有信息,并告知實時數(shù)據(jù)庫停止該位號變化上送。
[0013]因此,本發(fā)明的優(yōu)點是:1.將訂閱信息分槽放置,細分訂閱信息,使每塊的信息最小化,解決了訂閱信息的冗余和存儲問題,即使服務(wù)器離線或宕機,訂閱信息依舊存儲在緩存數(shù)據(jù)庫中,在冗余服務(wù)下,使用分槽算法有效減少因客戶端訂閱位號的改變而進行同步的數(shù)據(jù)量。分槽存放的算法降低了時間復(fù)雜度,使服務(wù)達到了百萬級別的訂閱訪問量,比現(xiàn)有的集中存儲,順序遍歷的訪問方式提高了很大的效率。2.多服務(wù)并存的熱備模式,客戶端不必在意位號訂閱分發(fā)服務(wù)模塊的數(shù)量以及它的健康狀態(tài),只要有一個位號訂閱分發(fā)服務(wù)模塊存在就可以提供服務(wù),提高了數(shù)據(jù)上送和訂閱成功的可靠性,與傳統(tǒng)的主備切換存在不能服務(wù)的空檔期相比,安全性進一步提高。3.網(wǎng)絡(luò)和計算量負載平均,當存在2個或以上的位號訂閱分發(fā)服務(wù)模塊分布于不同服務(wù)器時,變化數(shù)據(jù)可以通過不同服務(wù)器經(jīng)過不同位號訂閱分發(fā)服務(wù)模塊發(fā)送至客戶端,提高了上送效率和資源利用率,與傳統(tǒng)的備服務(wù)器完全不工作的閑置狀態(tài)相比,充分利用了現(xiàn)有資源。4.由于訂閱信息放置在分布式緩存系統(tǒng)中,增加了主備訂閱服務(wù)間的同步,并使同一時間只會有一個訂閱服務(wù)向客戶端發(fā)生變化數(shù)據(jù),減少了 50%的數(shù)據(jù)上送量,直接降低了客戶端成本和網(wǎng)絡(luò)成本。
【附圖說明】
[0014]附圖1是本發(fā)明系統(tǒng)的一種結(jié)構(gòu)框架示意圖;
附圖2是本發(fā)明方法中訂閱步驟的一種流程示意圖;
附圖3是本發(fā)明方法中取消訂閱步驟的一種流程示意圖;
附圖4是本發(fā)明方法中變化上送步驟的一種流程示意圖。
[0015]1-客戶端2-主服務(wù)器3-備服務(wù)器4-緩存數(shù)據(jù)庫5-位號訂閱分發(fā)服務(wù)模塊6-實時數(shù)據(jù)庫。
【具體實施方式】
[0016]下面通過實施例,并結(jié)合附圖,對本發(fā)明的技術(shù)方案作進一步具體的說明。
[0017]實施例:
本實施例一種實時數(shù)據(jù)庫訂閱系統(tǒng),如圖1所示,包括若