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