欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種具有狀態(tài)一致性的市場數(shù)據(jù)實時廣播系統(tǒng)及方法

文檔序號:7780679閱讀:700來源:國知局
一種具有狀態(tài)一致性的市場數(shù)據(jù)實時廣播系統(tǒng)及方法
【專利摘要】本發(fā)明涉及網(wǎng)絡(luò)數(shù)據(jù)實時廣播領(lǐng)域,具體是一種具有狀態(tài)一致性的市場數(shù)據(jù)實時廣播系統(tǒng)及方法,所述的實時廣播系統(tǒng)同時被部署在主機和備機上或部署在一主多備機上,主機工作頁面內(nèi)存中日志區(qū)存放了所有的業(yè)務(wù)處理原始數(shù)據(jù),廣播模塊負責(zé)實時掃描工作頁面內(nèi)存數(shù)據(jù)區(qū)的市場數(shù)據(jù),建立索引、對數(shù)據(jù)流定序,狀態(tài)機根據(jù)當(dāng)前服務(wù)器是主機還是備機,處于恢復(fù)狀態(tài)還是活躍狀態(tài)等信息,跟蹤服務(wù)狀態(tài),并控制廣播數(shù)據(jù)是否可以向市場發(fā)布,讓廣播模塊能夠更高效的處理內(nèi)存數(shù)據(jù)。本發(fā)明同現(xiàn)有技術(shù)相比,其優(yōu)點在于:在服務(wù)器端建立能夠快速定位數(shù)據(jù)及其狀態(tài)的緩存結(jié)構(gòu),在保障較高的吞吐量的同時保證較低的響應(yīng)延時,避免單點網(wǎng)絡(luò)瓶頸,提高市場穩(wěn)定性。
【專利說明】一種具有狀態(tài)一致性的市場數(shù)據(jù)實時廣播系統(tǒng)及方法
[【技術(shù)領(lǐng)域】]
[0001]本發(fā)明涉及網(wǎng)絡(luò)數(shù)據(jù)實時廣播領(lǐng)域,尤其涉及高并發(fā)訪問與低延時響應(yīng)之間的均衡技術(shù)以及數(shù)據(jù)發(fā)布狀態(tài)一致性相關(guān)技術(shù),具體是一種具有狀態(tài)一致性的市場數(shù)據(jù)實時廣播系統(tǒng)及方法。
[【背景技術(shù)】]
[0002]實時的數(shù)據(jù)廣播系統(tǒng)處理請求時不僅要能夠承受高并發(fā)訪問量,還要能低延時地進行響應(yīng),廣播系統(tǒng)發(fā)布的數(shù)據(jù)對象有公共消息和私有消息兩種,公共消息發(fā)布到全市場,私有消息只會發(fā)送給相關(guān)的幾個客戶端,因此,當(dāng)產(chǎn)生一條廣播數(shù)據(jù)時,它需要被發(fā)送的對象包括了全市場客戶端都需要的公共消息和業(yè)務(wù)直接參與方的私有消息。當(dāng)一條廣播消息被生成時,其需要以較低的延時發(fā)布到市場,在發(fā)布的瞬間,網(wǎng)絡(luò)發(fā)送所有公共消息和私有消息的時間需求,在發(fā)布的時點趨近于O。因此,當(dāng)市場規(guī)模逐步增大的時候,服務(wù)器待發(fā)布的數(shù)據(jù)壓力在瞬間被無限放大,當(dāng)突破網(wǎng)絡(luò)的承受能力時,便會導(dǎo)致?lián)砣?,甚至使得服?wù)器不能對外提供服務(wù),這屬于常見的單點網(wǎng)絡(luò)瓶頸,其所引起的問題是像金融這樣具有高穩(wěn)定性要求的市場中所不允許發(fā)生的。
[0003]現(xiàn)有技術(shù)中是使用多點網(wǎng)絡(luò)發(fā)送技術(shù)解決單點網(wǎng)絡(luò)瓶頸的問題,采用多個發(fā)布服務(wù)器之間互相協(xié)作的方式來分散數(shù)據(jù)發(fā)布的壓力到多個發(fā)布點,對于每一個發(fā)布服務(wù)器來說,隨著負荷的增加,仍然存在潛在的單點網(wǎng)絡(luò)瞬間產(chǎn)生的瓶頸問題,但是可以擴展服務(wù)器的規(guī)模來緩解壓力。當(dāng)發(fā)布點變得越來越多的時候,服務(wù)器之間同步與協(xié)作的管理會變得越來越復(fù)雜,管理與維護的難度、成本會大幅增加。
[0004]在某些領(lǐng)域,比如金融市場,數(shù)據(jù)廣播系統(tǒng)還需要保證所發(fā)布的數(shù)據(jù)具有狀態(tài)一致性,即數(shù)據(jù)必須是完整連續(xù)的,而且還不能重復(fù)乃至發(fā)生回溯現(xiàn)象。由于業(yè)務(wù)服務(wù)系統(tǒng)是實時連續(xù)對外服務(wù)的,這就要求廣播系統(tǒng)也要能將市場業(yè)務(wù)數(shù)據(jù)實時發(fā)布,即廣播系統(tǒng)必須提供連續(xù)服務(wù)能力。常見的熱備方式可以保證服務(wù)器的連續(xù)服務(wù)能力,在這種方式下,持久化的消息或者實時網(wǎng)絡(luò)同步可以保證主備機之間的數(shù)據(jù)一致性。對于廣播系統(tǒng)來說,除此之外,它還需具備狀態(tài)一致性,即在故障恢復(fù)后保證特定的敏感數(shù)據(jù)不會在客戶端出現(xiàn)亂序的狀態(tài)。
[0005]為了使廣播系統(tǒng)具備狀態(tài)一致性,一種常見的做法是在服務(wù)器端建立狀態(tài)數(shù)據(jù)庫保存每條數(shù)據(jù)對應(yīng)于每個客戶端的發(fā)布狀態(tài),在發(fā)布數(shù)據(jù)時,根據(jù)數(shù)據(jù)庫中的狀態(tài)來控制發(fā)送的數(shù)據(jù)和客戶端,該數(shù)據(jù)庫的規(guī)模是數(shù)據(jù)量與客戶端數(shù)目的笛卡爾積,但這種數(shù)據(jù)庫在業(yè)務(wù)量大的系統(tǒng)中會是一個海量數(shù)據(jù),頻繁的查詢會大大增加服務(wù)器的響應(yīng)延時。
[
【發(fā)明內(nèi)容】
]
[0006]本發(fā)明的目的就是為了解決當(dāng)市場規(guī)模逐步增大時,服務(wù)器遭遇單點網(wǎng)絡(luò)瓶頸,從而導(dǎo)致有高穩(wěn)定性要求的市場擁塞,使服務(wù)器不能對外服務(wù)的技術(shù)問題,實現(xiàn)實時數(shù)據(jù)廣播系統(tǒng)處理請求時不僅能承受高并發(fā)訪問量還能低延時地進行響應(yīng),并保證廣播數(shù)據(jù)在客戶端所發(fā)布的數(shù)據(jù)具有狀態(tài)一致性,數(shù)據(jù)完整連續(xù),不會出現(xiàn)亂序的狀態(tài)。
[0007]為了實現(xiàn)上述目的,提供一種具有狀態(tài)一致性的市場數(shù)據(jù)實時廣播系統(tǒng),所述的實時廣播系統(tǒng)同時被部署在主機和備機上或部署在一主多備機上,主機工作頁面內(nèi)存中日志區(qū)存放了所有的業(yè)務(wù)處理原始數(shù)據(jù),這些數(shù)據(jù)由一定的同步機制在備機上產(chǎn)生,工作頁面內(nèi)存的數(shù)據(jù)區(qū)則是業(yè)務(wù)處理產(chǎn)生的數(shù)據(jù),廣播系統(tǒng)需要發(fā)布的數(shù)據(jù)也處于其中,主備機上的廣播數(shù)據(jù)由狀態(tài)機進行管理,對于備機上產(chǎn)生的廣播數(shù)據(jù)由其控制不對外發(fā)布,對于廣播模塊而言,它負責(zé)實時掃描工作頁面內(nèi)存數(shù)據(jù)區(qū)的市場數(shù)據(jù),并建立索引、對數(shù)據(jù)流定序,狀態(tài)機根據(jù)當(dāng)前服務(wù)器是主機還是備機,當(dāng)前處于恢復(fù)狀態(tài)還是活躍狀態(tài)等信息,跟蹤服務(wù)狀態(tài),并控制廣播數(shù)據(jù)是否可以向市場發(fā)布,每個主機上都有一個發(fā)送模塊將廣播數(shù)據(jù)發(fā)布到市場,它將耗費性能的網(wǎng)絡(luò)數(shù)據(jù)發(fā)送工作獨立開來,從而讓廣播模塊能夠更高效的處理內(nèi)存數(shù)據(jù)。
[0008]所述的實時廣播系統(tǒng)包括數(shù)據(jù)索引模塊、請求處理模塊和數(shù)據(jù)推送模塊,所述的數(shù)據(jù)索引模塊對業(yè)務(wù)系統(tǒng)產(chǎn)生的待發(fā)布數(shù)據(jù)建立索引,快速地根據(jù)條件獲取到待發(fā)布的數(shù)據(jù),業(yè)務(wù)系統(tǒng)產(chǎn)生的待發(fā)布數(shù)據(jù)存放于一片共享內(nèi)存中,稱之為工作頁面內(nèi)存,數(shù)據(jù)索引模塊作為一個后臺異步進程存在,它的工作由一個定時器驅(qū)動,在每一個定時喚醒的周期點開始掃描工作頁面內(nèi)存數(shù)據(jù)區(qū),數(shù)據(jù)索引模塊并不對原始的數(shù)據(jù)進行任何修改,它的主要職責(zé)是對這些數(shù)據(jù)建立可用于查詢的索引,并對其定序,同時,它按照數(shù)據(jù)類型將數(shù)據(jù)分為多個數(shù)據(jù)流,并相應(yīng)地建立多個索引區(qū),索引區(qū)建立在系統(tǒng)共享內(nèi)存中,從而當(dāng)數(shù)據(jù)索引模塊發(fā)生故障重啟時,索引區(qū)并不會丟失,它可以繼續(xù)上次的處理結(jié)果往下工作,在建立索引的同時,同一數(shù)據(jù)流會被按自然數(shù)遞增順序編號,形成一個連續(xù)的序列,以保證數(shù)據(jù)可以被順序發(fā)布,或者客戶端可以自查并發(fā)現(xiàn)自己所丟失的數(shù)據(jù),在掃描的過程中,數(shù)據(jù)索引模塊以業(yè)務(wù)處理的事務(wù)為單位,處理完一個事務(wù)的數(shù)據(jù)才會處理下一個,保證市場所接收的數(shù)據(jù)是完整的,而非某個業(yè)務(wù)過程的其中一個片段;所述的請求處理模塊處理來自客戶端的主動獲取數(shù)據(jù)請求,根據(jù)數(shù)據(jù)流定位到索引區(qū)中的內(nèi)容,對于公共消息來說,它們由客戶端主動獲取,為避免產(chǎn)生不必要的流量及保證數(shù)據(jù)完整連續(xù),客戶端都會維護一個自身的狀態(tài),即記錄自身已經(jīng)獲取到的每一種數(shù)據(jù)流中的廣播數(shù)據(jù),客戶端可以查詢最大值以決定是否需要向服務(wù)器獲取數(shù)據(jù);所述的數(shù)據(jù)推送模塊用于服務(wù)器主動推送具有高優(yōu)先級的消息,數(shù)據(jù)索引模塊在處理待發(fā)布數(shù)據(jù)時,當(dāng)遇到這類消息時會實時觸發(fā)推送模塊,為避免干擾對客戶端主動請求處理的效率,這類消息在不同模塊間采用專用的路由線路,考慮到對于廣播數(shù)據(jù)的下發(fā)高并發(fā)的壓力,推送數(shù)據(jù)也是經(jīng)由緩沖池,再由獨立的數(shù)據(jù)發(fā)送進程進行對外發(fā)布。
[0009]所述的實時廣播系統(tǒng)還包括狀態(tài)機模塊,狀態(tài)機模塊是數(shù)據(jù)發(fā)布的一致性的重要保證,它被同時部署在主備機上,主要解決當(dāng)主機發(fā)生故障切換時獲取市場數(shù)據(jù)狀態(tài)及一致性相關(guān)控制,狀態(tài)機包括了初始化、恢復(fù)、活躍三種狀態(tài),且只有在活躍狀態(tài)下,廣播模塊才可以對外發(fā)布數(shù)據(jù),主機上狀態(tài)機的狀態(tài)流轉(zhuǎn)是由業(yè)務(wù)處理的狀態(tài)決定的,當(dāng)業(yè)務(wù)模塊處于恢復(fù)階段時,廣播狀態(tài)機同樣處于恢復(fù)狀態(tài),當(dāng)業(yè)務(wù)模塊結(jié)束重演開始對外服務(wù)時,會產(chǎn)生特定的消息,廣播模塊處理該消息時使狀態(tài)機進入活躍狀態(tài),無論是進程故障還是服務(wù)器故障,狀態(tài)機都按照這樣的規(guī)則切換狀態(tài),因此,在恢復(fù)期產(chǎn)生的高優(yōu)先級消息并不會被推送到客戶端,保證數(shù)據(jù)發(fā)布狀態(tài)一致。[0010]所述的數(shù)據(jù)索引模塊由一個定時器驅(qū)動,數(shù)據(jù)索引模塊以業(yè)務(wù)處理的事務(wù)為單位處理數(shù)據(jù),從而保證自身數(shù)據(jù)處理的事務(wù)性,每個處理周期主要包括以下步驟:
[0011]a.數(shù)據(jù)索引模塊從狀態(tài)機讀取上一個處理周期的進度情況,如當(dāng)前數(shù)據(jù)流已處理到哪個事務(wù);
[0012]b.掃描工作頁面內(nèi)存數(shù)據(jù)區(qū)讀取下一個業(yè)務(wù)處理事務(wù)的數(shù)據(jù);
[0013]c.將讀取到的數(shù)據(jù)按照消息類型分類到相應(yīng)的廣播流,為每條新數(shù)據(jù)分配編號,及在共享內(nèi)存索引區(qū)維護一個編號到數(shù)據(jù)本身的索引關(guān)系;
[0014]d.如果所處理的記錄不是一個推送消息,跳至f步,否則繼續(xù);
[0015]e.判斷狀態(tài)機是否處于活躍狀態(tài),是則將消息推送到主機對外接口的待發(fā)布隊列,否則不發(fā)送;
[0016]f.更新狀態(tài)機,記錄本次處理的進度,即已處理到的事務(wù)號,如果狀態(tài)機中的最大事務(wù)號較低,則更新為當(dāng)前值;
[0017]g.當(dāng)廣播處于恢復(fù)階段時,如果當(dāng)前處理的事務(wù)號已經(jīng)不落后于狀態(tài)機所維護的事務(wù)號,說明已完成歷史數(shù)據(jù)的恢復(fù),將狀態(tài)機切換到活躍狀態(tài),即允許后續(xù)的數(shù)據(jù)發(fā)布;
[0018]h.一個處理周期結(jié)束,進程進入休眠狀態(tài),等待下一次定時器喚醒。
[0019]所述的客戶端主動獲取數(shù)據(jù)時根據(jù)下列方法請求廣播系統(tǒng)下發(fā)市場數(shù)據(jù):
[0020]a.客戶端初始啟動,此時客戶端并沒有任何數(shù)據(jù),獲取數(shù)據(jù)的過程如下:
[0021](I)客戶端發(fā)起請求向廣播系統(tǒng)查詢并獲得當(dāng)前某廣播流的最大編號,記為N ;
[0022](2)客戶端發(fā)起請求向廣播系統(tǒng)拉取該廣播流序號區(qū)間為〈1,N〉之間的所有廣播數(shù)據(jù);
[0023](3)廣播系統(tǒng)拉模塊收到請求并驗證合理性,將所請求的數(shù)據(jù)打包,放入待發(fā)隊列回復(fù)一個請求成功的響應(yīng);
[0024](4)廣播系統(tǒng)拉模塊以異步方式觸發(fā)主機接口進程下發(fā)廣播數(shù)據(jù);
[0025]b.客戶端在實時交易階段連續(xù)獲取廣播數(shù)據(jù)
[0026]該場景下主要流程與初始啟動相同,所不同的是所請求的范圍為客戶端所獲取的當(dāng)前最大編號M和廣播系統(tǒng)可用數(shù)據(jù)的最大編號N之間的數(shù)據(jù),即〈M,N〉;
[0027]c.異常情況,客戶端部分廣播數(shù)據(jù)丟失
[0028]此時,客戶端的廣播數(shù)據(jù)因為被誤刪或其它的意外而變得不連續(xù),從而對后續(xù)交易決策產(chǎn)生了影響,此時客戶端需要發(fā)送重傳請求拉取該段數(shù)據(jù)。
[0029]所述的數(shù)據(jù)索引模塊在處理工作頁面內(nèi)存中數(shù)據(jù)記錄時,對于一些可以定向發(fā)送的數(shù)據(jù),則會進行主動下推,雖然一條下推的數(shù)據(jù)只會發(fā)送給有限的市場參與者,但是由于廣播系統(tǒng)服務(wù)于千萬個客戶端,在交易高峰期可能會產(chǎn)生一定規(guī)模的數(shù)據(jù)風(fēng)暴,因此要采取緩沖式發(fā)送機制,與客戶端主動獲取時一樣,數(shù)據(jù)推送同樣是在狀態(tài)機標示活躍狀態(tài)時才被執(zhí)行,具體流程如下:
[0030](I)數(shù)據(jù)索引模塊通過異步進程通信機制發(fā)送消息到廣播推送模塊;
[0031](2)廣播推送模塊接到消息用非阻塞的方式將消息加入待發(fā)送隊列;
[0032](3)推送模塊的執(zhí)行主線逐條處理隊列中的消息,將消息加入發(fā)送消息體;
[0033](4)如果發(fā)送數(shù)據(jù)量比較大超出消息體的容量時則拆成多個發(fā)送數(shù)據(jù)消息;
[0034](5)將待發(fā)送數(shù)據(jù)消息加入的主機接口待發(fā)送隊列;[0035](6)待發(fā)送隊列作為廣播系統(tǒng)與主機接口模塊的中介,由主機接口模塊以一定的定時頻率處理并推送數(shù)據(jù)到市場。
[0036]所述的廣播系統(tǒng)故障處理方法如下:
[0037]( I)故障場景一:業(yè)務(wù)處理進程發(fā)生故障重啟:
[0038]當(dāng)業(yè)務(wù)處理進程發(fā)生故障并重啟時,所有共享內(nèi)存數(shù)據(jù)都不會丟失,由于廣播數(shù)據(jù)的產(chǎn)生是基于事務(wù)的,所以業(yè)務(wù)進程恢復(fù)后不需要重新產(chǎn)生,與此同時,不會有新的業(yè)務(wù)數(shù)據(jù)被處理,也就不會產(chǎn)生新的廣播數(shù)據(jù),廣播模塊會停止下發(fā)數(shù)據(jù),直到業(yè)務(wù)進程切換到正常工作模式;
[0039](2)故障場景二:廣播系統(tǒng)發(fā)生重啟;
[0040]當(dāng)廣播系統(tǒng)發(fā)生了重啟時,因為廣播模塊索引區(qū)和狀態(tài)機內(nèi)存都是無事務(wù)保證的,數(shù)據(jù)索引模塊重啟后會首先清除索引區(qū)并重置狀態(tài)機,然后數(shù)據(jù)索引模塊重新對工作頁面內(nèi)存數(shù)據(jù)建立索引,狀態(tài)機則重新經(jīng)歷初始化、恢復(fù)、活躍的狀態(tài),從而保證數(shù)據(jù)一致;
[0041](3)故障場景三:主機發(fā)生故障,備機接管:
[0042]由于備機處理的速度小于主處理,因此在切換瞬間,備處理機仍有一部分數(shù)據(jù)需要處理且不需要發(fā)送,備處理機上的數(shù)據(jù)索引模塊在處理完這部分數(shù)據(jù)后,才能將狀態(tài)機切到活躍狀態(tài),才能通知推送模塊發(fā)送數(shù)據(jù),有效保證了廣播數(shù)據(jù)不回流;
[0043](4)故障場景四:主機失敗后進行主備切換,之后僅存的主機發(fā)生重啟:
[0044]主機重啟之后狀態(tài)機進入恢復(fù)狀態(tài),在此階段生成的所有廣播數(shù)據(jù)皆不發(fā)送,直到切到活躍狀態(tài),從而保證數(shù)據(jù)不回流,達到一致性。
[0045]一種采用具有狀態(tài)一致性的市場數(shù)據(jù)實時廣播系統(tǒng)的廣播方法,將公共消息和私有消息的發(fā)布方式加以區(qū)分,公共消息由客戶端采用定時拉取的方式,私有消息則實時推送,此時,公共消息發(fā)送給客戶端的時間點被隨機分布在客戶端的定時周期tf內(nèi),而私有數(shù)據(jù)的發(fā)送時間為tg,對于一條廣播消息,單位時間的待發(fā)布數(shù)據(jù)數(shù)目V’滿足以下條件:
[0046]V,= (n+g)/Max (tg, tf)
[0047]在一個確定的系統(tǒng)中,tf與g均為常數(shù),且g的值非常小,在證券交易系統(tǒng)中g(shù) —般為交易雙方,即2,此時,tg的值幾乎為O,遠小于tf,因此有:
[0048]V,=(n+g)/tf
[0049]在每一個系統(tǒng)中tf是一個可以根據(jù)系統(tǒng)壓力進行配置的常數(shù),取值越大,廣播系統(tǒng)發(fā)布數(shù)據(jù)的壓力越小,系統(tǒng)性能的伸縮性更強。
[0050]本發(fā)明同現(xiàn)有技術(shù)相比,其優(yōu)點在于:
[0051]1.在服務(wù)器端建立能夠快速定位數(shù)據(jù)及其狀態(tài)的緩存結(jié)構(gòu),在客戶端維護其自身的狀態(tài)來提高快速響應(yīng)的能力,在保障較高的吞吐量的同時,還可以保證較低的響應(yīng)延時;
[0052]2.通過弱化服務(wù)器端的數(shù)據(jù)推送能力,加強客戶端的主動獲取能力,從而在服務(wù)器與客戶端之間合理地均衡分散數(shù)據(jù)發(fā)布與獲取的壓力,以避免單點網(wǎng)絡(luò)瓶頸,提高市場的穩(wěn)定性;
[0053]3.在服務(wù)器端建立廣播狀態(tài)機和在客戶端維護自身數(shù)據(jù)狀態(tài),由一個廣播狀態(tài)機控制數(shù)據(jù)產(chǎn)生、恢復(fù)、發(fā)布的時序,從而保證在故障恢復(fù)后數(shù)據(jù)發(fā)布的狀態(tài)一致性;[0054]4.可用于一主一備的環(huán)境,還可以擴展到基于橫向切分的具有多臺主機的分布式環(huán)境中。
[【專利附圖】

【附圖說明】]
[0055]圖1為實時廣播系統(tǒng)部署環(huán)境示意圖;
[0056]圖2為實時廣播系統(tǒng)功能模塊示意圖;
[0057]圖3為Indexer索引模塊建立索引流程圖;
[0058]圖4為客戶端數(shù)據(jù)拉取流程圖;
[0059]圖5為廣播系統(tǒng)主動推送數(shù)據(jù)流程圖;
[0060]圖6為廣播系統(tǒng)業(yè)務(wù)處理進程發(fā)生故障重啟場景示意圖;
[0061]圖7為廣播系統(tǒng)主備機切換場景示意圖;
[0062]指定圖1作為本發(fā)明的摘要附圖。
[【具體實施方式】]
[0063]下面結(jié)合附圖對本發(fā)明作進一步說明,這種系統(tǒng)的結(jié)構(gòu)和原理對本專業(yè)的人來說是非常清楚的。應(yīng)當(dāng)理解,此處所描述的具體實施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
[0064]本發(fā)明所述的實時廣播系統(tǒng)不僅可以提供較高的吞吐量,還可以保證較低的響應(yīng)延時,其中狀態(tài)機模塊是數(shù)據(jù)發(fā)布的一致性的重要保證,它被同時部署在主備機上,主要解決當(dāng)主機發(fā)生故障切換時獲取市場數(shù)據(jù)狀態(tài)及一致性相關(guān)控制。
[0065]實施例1
[0066]如圖1所示,圖1是本發(fā)明中實時廣播系統(tǒng)的部署環(huán)境,該廣播系統(tǒng)同時部署在主機和備機上,在可靠性要求特別高的環(huán)境中,甚至可以部署在一主多備上。圖中的主機工作頁面內(nèi)存中日志區(qū)存放了所有的業(yè)務(wù)處理原始數(shù)據(jù),這些數(shù)據(jù)由一定的同步機制在備機上產(chǎn)生,工作頁面內(nèi)存的數(shù)據(jù)區(qū)則是業(yè)務(wù)處理產(chǎn)生的數(shù)據(jù),廣播系統(tǒng)需要發(fā)布的數(shù)據(jù)也處于其中。主備機上的廣播數(shù)據(jù)由狀態(tài)機進行管理,對于備機上產(chǎn)生的廣播數(shù)據(jù)由其空制不對外發(fā)布,對于廣播模塊而言,它負責(zé)實時掃描工作頁面內(nèi)存數(shù)據(jù)區(qū)的市場數(shù)據(jù),并建立索弓丨、對數(shù)據(jù)流定序。狀態(tài)機根據(jù)當(dāng)前服務(wù)器是主機還是備機,當(dāng)前處于恢復(fù)狀態(tài)還是活躍狀態(tài)等信息,跟蹤服務(wù)狀態(tài),并控制廣播數(shù)據(jù)是否可以向市場發(fā)布等。每個主機上都有一個發(fā)送模塊將廣播數(shù)據(jù)發(fā)布到市場,它將耗費性能的網(wǎng)絡(luò)數(shù)據(jù)發(fā)送工作獨立開來,從而讓廣播模塊能夠更高效的處理內(nèi)存數(shù)據(jù)。
[0067]實施例2
[0068]圖2是本發(fā)明所提出的實時廣播系統(tǒng)各功能模塊,Indexer (數(shù)據(jù)索引模塊)是廣播數(shù)據(jù)發(fā)布的源頭,它定期處理工作頁面內(nèi)存所產(chǎn)生的新數(shù)據(jù),并將這些數(shù)據(jù)分類到不同的數(shù)據(jù)流,并進行定序編號,在處理的過程中,如果遇到需要推送的數(shù)據(jù),它還要將數(shù)據(jù)的索引以進程間通信的方式告知數(shù)據(jù)推送模塊,以便加入其任務(wù)隊列。為了避免進程間通信阻塞工作進程,進程間通信采用了任務(wù)隊列加異步通知的方式。數(shù)據(jù)推送模塊以非阻塞的方式處理來自Indexer (數(shù)據(jù)索引模塊)的消息,并將它們放入任務(wù)隊列,以便后續(xù)處理,原本的數(shù)據(jù)推送任務(wù)并不會因為處理Indexer (數(shù)據(jù)索引模塊)的消息而被打斷。主機對外接口是廣播模塊與交易平臺外的一個接口層,它接收客戶端的各類請求并產(chǎn)生相應(yīng)的任務(wù)放到拉模塊的隊列中,因此,請求處理模塊就被從網(wǎng)絡(luò)連接中解放出來,只需負責(zé)處理隊列中的任務(wù)。
[0069]狀態(tài)機一方面維護著一份Indexer (數(shù)據(jù)索引模塊)每次處理的最新事務(wù)編號,該編號將用于故障重演時判斷是否重演結(jié)束的標志之一;另一方面它反應(yīng)了整個廣播系統(tǒng)的狀態(tài),其狀態(tài)作為廣播模塊判斷數(shù)據(jù)是否可以發(fā)送的依據(jù)。
[0070]無論是數(shù)據(jù)推送模塊還是請求模塊,它們的數(shù)據(jù)發(fā)送都是經(jīng)過主機對外接口統(tǒng)一發(fā)布,通過將數(shù)據(jù)處理與數(shù)據(jù)發(fā)送相互獨立開來,各司其職,大大提高了發(fā)布的能力。
[0071]實施例3
[0072]圖3是本發(fā)明中的Indexer模塊(數(shù)據(jù)索引模塊)的主要工作流程,Indexer (數(shù)據(jù)索引模塊)由一個定時器驅(qū)動,Indexer (數(shù)據(jù)索引模塊)以業(yè)務(wù)處理的事務(wù)為單位處理數(shù)據(jù),從而保證自身數(shù)據(jù)處理的事務(wù)性,每個處理周期主要包括以下步驟:
[0073](I) Indexer (數(shù)據(jù)索引模塊)從狀態(tài)機讀取上一個處理周期的進度情況,如當(dāng)前數(shù)據(jù)流已處理到哪個事務(wù);
[0074](2)掃描工作頁面內(nèi)存數(shù)據(jù)區(qū)讀取下一個業(yè)務(wù)處理事務(wù)的數(shù)據(jù);
[0075](3)將讀取到的數(shù)據(jù)按照消息類型分類到相應(yīng)的廣播流,為每條新數(shù)據(jù)分配編號,及在共享內(nèi)存索引區(qū)維護一個編號到數(shù)據(jù)本身的索引關(guān)系;
[0076](4)如果所處理的記錄不是一個推送消息,跳到第6)步,否則繼續(xù);
[0077](5)判斷狀態(tài)機是否處于活躍狀態(tài),是則將消息推送到主機對外接口的待發(fā)布隊列,否則不發(fā)送;
[0078](6)更新狀態(tài)機,記錄本次處理的進度,即已處理到的事務(wù)號。如果狀態(tài)機中的最大事務(wù)號較低,則更新為當(dāng)前值;
[0079](7)當(dāng)廣播處于恢復(fù)階段時,如果當(dāng)前處理的事務(wù)號已經(jīng)不落后于狀態(tài)機所維護的事務(wù)號,說明已完成歷史數(shù)據(jù)的恢復(fù),將狀態(tài)機切換到活躍狀態(tài),即允許后續(xù)的數(shù)據(jù)發(fā)布;
[0080](8) 一個處理周期結(jié)束,進程進入休眠狀態(tài),等待下一次定時器喚醒。
[0081]實施例4
[0082]圖4是客戶端拉取廣播數(shù)據(jù)的一次完整的交互序列的流程圖,為抽象出核心模塊之間的數(shù)據(jù)流轉(zhuǎn)邏輯,主機接口及響應(yīng)路由模塊均略去??蛻舳酥鲃荧@取數(shù)據(jù)時可根據(jù)自身需要請求廣播系統(tǒng)下發(fā)市場數(shù)據(jù),主要有以下幾個場景:
[0083]a.客戶端初始啟動,此時客戶端并沒有任何數(shù)據(jù),獲取數(shù)據(jù)的過程如下:
[0084](I)客戶端發(fā)起請求向廣播系統(tǒng)查詢并獲得當(dāng)前某廣播流的最大編號,記為N ;
[0085](2)客戶端發(fā)起請求向廣播系統(tǒng)拉取該廣播流序號區(qū)間為〈1,N〉之間的所有廣播數(shù)據(jù);
[0086](3)廣播系統(tǒng)拉模塊收到請求并驗證合理性,將所請求的數(shù)據(jù)打包,放入待發(fā)隊列回復(fù)一個請求成功的響應(yīng);
[0087](4)廣播系統(tǒng)拉模塊以異步方式觸發(fā)主機接口進程下發(fā)廣播數(shù)據(jù);
[0088]b.客戶端在實時交易階段連續(xù)獲取廣播數(shù)據(jù)
[0089]該場景下主要流程與初始啟動相同,所不同的是所請求的范圍為客戶端所獲取的當(dāng)前最大編號M和廣播系統(tǒng)可用數(shù)據(jù)的最大編號N之間的數(shù)據(jù),即〈M,N〉;
[0090]c.異常情況,客戶端部分廣播數(shù)據(jù)丟失
[0091]此時,客戶端的廣播數(shù)據(jù)因為被誤刪或其它的意外而變得不連續(xù),從而對后續(xù)交易決策產(chǎn)生了影響。
[0092]如表1所示,客戶端的廣播序列〈8,10>已經(jīng)丟失,此時客戶端需要發(fā)送重傳請求拉取該段數(shù)據(jù)。
[0093]表1客戶端廣播數(shù)據(jù)序列編號示意表
[0094]
【權(quán)利要求】
1.一種具有狀態(tài)一致性的市場數(shù)據(jù)實時廣播系統(tǒng),其特征在于所述的實時廣播系統(tǒng)同時被部署在主機和備機上或部署在一主多備機上,主機工作頁面內(nèi)存中日志區(qū)存放了所有的業(yè)務(wù)處理原始數(shù)據(jù),這些數(shù)據(jù)由一定的同步機制在備機上產(chǎn)生,工作頁面內(nèi)存的數(shù)據(jù)區(qū)則是業(yè)務(wù)處理產(chǎn)生的數(shù)據(jù),廣播系統(tǒng)需要發(fā)布的數(shù)據(jù)也處于其中,主備機上的廣播數(shù)據(jù)由狀態(tài)機進行管理,對于備機上產(chǎn)生的廣播數(shù)據(jù)由其控制不對外發(fā)布,對于廣播模塊而言,它負責(zé)實時掃描工作頁面內(nèi)存數(shù)據(jù)區(qū)的市場數(shù)據(jù),并建立索引、對數(shù)據(jù)流定序,狀態(tài)機根據(jù)當(dāng)前服務(wù)器是主機還是備機,當(dāng)前處于恢復(fù)狀態(tài)還是活躍狀態(tài)等信息,跟蹤服務(wù)狀態(tài),并控制廣播數(shù)據(jù)是否可以向市場發(fā)布,每個主機上都有一個發(fā)送模塊將廣播數(shù)據(jù)發(fā)布到市場,它將耗費性能的網(wǎng)絡(luò)數(shù)據(jù)發(fā)送工作獨立開來,從而讓廣播模塊能夠更高效的處理內(nèi)存數(shù)據(jù)。
2.如權(quán)利要求1所述的一種具有狀態(tài)一致性的市場數(shù)據(jù)實時廣播系統(tǒng),其特征在于所述的實時廣播系統(tǒng)包括數(shù)據(jù)索引模塊、請求處理模塊和數(shù)據(jù)推送模塊,所述的數(shù)據(jù)索引模塊對業(yè)務(wù)系統(tǒng)產(chǎn)生的待發(fā)布數(shù)據(jù)建立索引,快速地根據(jù)條件獲取到待發(fā)布的數(shù)據(jù),業(yè)務(wù)系統(tǒng)產(chǎn)生的待發(fā)布數(shù)據(jù)存放于一片共享內(nèi)存中,稱之為工作頁面內(nèi)存,數(shù)據(jù)索引模塊作為一個后臺異步進程存在,它的工作由一個定時器驅(qū)動,在每一個定時喚醒的周期點開始掃描工作頁面內(nèi)存數(shù)據(jù)區(qū),數(shù)據(jù)索引模塊并不對原始的數(shù)據(jù)進行任何修改,它的主要職責(zé)是對這些數(shù)據(jù)建立可用于查詢的索引,并對其定序,同時,它按照數(shù)據(jù)類型將數(shù)據(jù)分為多個數(shù)據(jù)流,并相應(yīng)地建立多個索引區(qū),索引區(qū)建立在系統(tǒng)共享內(nèi)存中,從而當(dāng)數(shù)據(jù)索引模塊發(fā)生故障重啟時,索引區(qū)并不會丟失,它可以繼續(xù)上次的處理結(jié)果往下工作,在建立索引的同時,同一數(shù)據(jù)流會被按自然數(shù)遞增順序編號,形成一個連續(xù)的序列,以保證數(shù)據(jù)可以被順序發(fā)布,或者客戶端可以自查并發(fā)現(xiàn)自己所丟失的數(shù)據(jù),在掃描的過程中,數(shù)據(jù)索引模塊以業(yè)務(wù)處理的事務(wù)為單位,處理完一個事務(wù)的數(shù)據(jù)才會處理下一個,保證市場所接收的數(shù)據(jù)是完整的,而非某個業(yè)務(wù)過程的其中一個片段;所述的請求處理模塊處理來自客戶端的主動獲取數(shù)據(jù)請求,根據(jù)數(shù)據(jù)流定位到索引區(qū)中的內(nèi)容,對于公共消息來說,它們由客戶端主動獲取,為避免產(chǎn)生不必要的流量及保證數(shù)據(jù)完整連續(xù),客戶端都會維護一個自身的狀態(tài),即記錄自身已經(jīng)獲取到的每一種數(shù)據(jù)流中的廣播數(shù)據(jù),客戶端可以查詢最大值以決定是否需要向服務(wù)器獲取數(shù)據(jù);所述的數(shù)據(jù)推送模塊用于服務(wù)器主動推送具有高優(yōu)先級的消息,數(shù)據(jù)索引模塊在處理待發(fā)布數(shù)據(jù)時,當(dāng)遇到這類消息時會實時觸發(fā)推送模塊,為避免干擾對客戶端主動請求處理的效率,這類消息在不同模塊間采用專用的路由線路,考慮到對于廣播數(shù)據(jù)的下發(fā)高并發(fā)的壓力,推送數(shù)據(jù)也是經(jīng)由緩沖池,再由獨立的數(shù)據(jù)發(fā)送進程進行對外發(fā)布。
3.如權(quán)利要求1所述的一種具有狀態(tài)一致性的市場數(shù)據(jù)實時廣播系統(tǒng),其特征在于所述的實時廣播系統(tǒng)還包括狀態(tài)機模塊,狀態(tài)機模塊是數(shù)據(jù)發(fā)布的一致性的重要保證,它被同時部署在主備機上,主要解決當(dāng)主機發(fā)生故障切換時獲取市場數(shù)據(jù)狀態(tài)及一致性相關(guān)控制,狀態(tài)機包括了初始化、恢復(fù)、活躍三種狀態(tài),且只有在活躍狀態(tài)下,廣播模塊才可以對外發(fā)布數(shù)據(jù),主機上狀態(tài)機的狀態(tài)流轉(zhuǎn)是由業(yè)務(wù)處理的狀態(tài)決定的,當(dāng)業(yè)務(wù)模塊處于恢復(fù)階段時,廣播狀態(tài)機同樣處于恢復(fù)狀態(tài),當(dāng)業(yè)務(wù)模塊結(jié)束重演開始對外服務(wù)時,會產(chǎn)生特定的消息,廣播模塊處理該消息時使狀態(tài)機進入活躍狀態(tài),無論是進程故障還是服務(wù)器故障,狀態(tài)機都按照這樣的規(guī)則切換狀態(tài),因此,在恢復(fù)期產(chǎn)生的高優(yōu)先級消息并不會被推送到客戶端,保證數(shù)據(jù)發(fā)布狀態(tài)一致。
4.如權(quán)利要求2所述的一種具有狀態(tài)一致性的市場數(shù)據(jù)實時廣播系統(tǒng),其特征在于所述的數(shù)據(jù)索引模塊由一個定時器驅(qū)動,數(shù)據(jù)索引模塊以業(yè)務(wù)處理的事務(wù)為單位處理數(shù)據(jù),從而保證自身數(shù)據(jù)處理的事務(wù)性,每個處理周期主要包括以下步驟: a.數(shù)據(jù)索引模塊從狀態(tài)機讀取上一個處理周期的進度情況,如當(dāng)前數(shù)據(jù)流已處理到哪個事務(wù); b.掃描工作頁面內(nèi)存數(shù)據(jù)區(qū)讀取下一個業(yè)務(wù)處理事務(wù)的數(shù)據(jù); c.將讀取到的數(shù)據(jù)按照消息類型分類到相應(yīng)的廣播流,為每條新數(shù)據(jù)分配編號,及在共享內(nèi)存索引區(qū)維護一個編號到數(shù)據(jù)本身的索引關(guān)系; d.如果所處理的記錄不是一個推送消息,跳至f步,否則繼續(xù); e.判斷狀態(tài)機是否處于活躍狀態(tài),是則將消息推送到主機對外接口的待發(fā)布隊列,否則不發(fā)送; f.更新狀態(tài)機,記錄本次處理的進度,即已處理到的事務(wù)號,如果狀態(tài)機中的最大事務(wù)號較低,則更新為當(dāng)前值; g.當(dāng)廣播處于恢復(fù)階段時,如果當(dāng)前處理的事務(wù)號已經(jīng)不落后于狀態(tài)機所維護的事務(wù)號,說明已完成歷史數(shù)據(jù)的恢復(fù),將狀態(tài)機切換到活躍狀態(tài),即允許后續(xù)的數(shù)據(jù)發(fā)布; h.—個處理周期結(jié)束,進程進入休眠狀態(tài),等待下一次定時器喚醒。
5.如權(quán)利要求2所述的一種具有狀態(tài)一致性的市場數(shù)據(jù)實時廣播系統(tǒng),其特征在于所述的客戶端主動獲取數(shù)據(jù)時根據(jù)下列方法請求廣播系統(tǒng)下發(fā)市場數(shù)據(jù): a.客戶端初始啟動,此時客戶端并沒有任何數(shù)據(jù),獲取數(shù)據(jù)的過程如下: (O客戶端發(fā)起請求向廣播系統(tǒng)查詢并獲得當(dāng)前某廣播流的最大編號,記為N ; (2)客戶端發(fā)起請求向廣播系統(tǒng)拉取該廣播流序號區(qū)間為<1,N>之間的所有廣播數(shù)據(jù); (3)廣播系統(tǒng)拉模塊收到請求并驗證合理性,將所請求的數(shù)據(jù)打包,放入待發(fā)隊列回復(fù)一個請求成功的響應(yīng); (4)廣播系統(tǒng)拉模塊以異步方式觸發(fā)主機接口進程下發(fā)廣播數(shù)據(jù); b.客戶端在實時交易階段連續(xù)獲取廣播數(shù)據(jù) 該場景下主要流程與初始啟動相同,所不同的是所請求的范圍為客戶端所獲取的當(dāng)前最大編號M和廣播系統(tǒng)可用數(shù)據(jù)的最大編號N之間的數(shù)據(jù),即〈M,N〉; c.異常情況,客戶端部分廣播數(shù)據(jù)丟失 此時,客戶端的廣播數(shù)據(jù)因為被誤刪或其它的意外而變得不連續(xù),從而對后續(xù)交易決策產(chǎn)生了影響,此時客戶端需要發(fā)送重傳請求拉取該段數(shù)據(jù)。
6.如權(quán)利要求2所述的一種具有狀態(tài)一致性的市場數(shù)據(jù)實時廣播系統(tǒng),其特征在于所述的數(shù)據(jù)索引模塊在處理工作頁面內(nèi)存中數(shù)據(jù)記錄時,對于一些可以定向發(fā)送的數(shù)據(jù),則會進行主動下推,雖然一條下推的數(shù)據(jù)只會發(fā)送給有限的市場參與者,但是由于廣播系統(tǒng)服務(wù)于千萬個客戶端,在交易高峰期可能會產(chǎn)生一定規(guī)模的數(shù)據(jù)風(fēng)暴,因此要采取緩沖式發(fā)送機制,與客戶端主動獲取時一樣,數(shù)據(jù)推送同樣是在狀態(tài)機標示活躍狀態(tài)時才被執(zhí)行,具體流程如下: (I)數(shù)據(jù)索引模塊通過異步進程通信機制發(fā)送消息到廣播推送模塊;(2)廣播推送模塊接到消息用非阻塞的方式將消息加入待發(fā)送隊列; (3)推送模塊的執(zhí)行主線逐條處理隊列中的消息,將消息加入發(fā)送消息體; (4)如果發(fā)送數(shù)據(jù)量比較大超出消息體的容量時則拆成多個發(fā)送數(shù)據(jù)消息; (5)將待發(fā)送數(shù)據(jù)消息加入的主機接口待發(fā)送隊列; (6)待發(fā)送隊列作為廣播系統(tǒng)與主機接口模塊的中介,由主機接口模塊以一定的定時頻率處理并推送數(shù)據(jù)到市場。
7.如權(quán)利要求1或2所述的一種具有狀態(tài)一致性的市場數(shù)據(jù)實時廣播系統(tǒng),其特征在于所述的廣播系統(tǒng)故障處理方法如下: (1)故障場景一:業(yè)務(wù)處理進程發(fā)生故障重啟: 當(dāng)業(yè)務(wù)處理進程發(fā)生故障并重啟時,所有共享內(nèi)存數(shù)據(jù)都不會丟失,由于廣播數(shù)據(jù)的產(chǎn)生是基于事務(wù)的,所以業(yè)務(wù)進程恢復(fù)后不需要重新產(chǎn)生,與此同時,不會有新的業(yè)務(wù)數(shù)據(jù)被處理,也就不會產(chǎn)生新的廣播數(shù)據(jù),廣播模塊會停止下發(fā)數(shù)據(jù),直到業(yè)務(wù)進程切換到正常工作模式; (2)故障場景二:廣播系統(tǒng)發(fā)生重啟; 當(dāng)廣播系統(tǒng)發(fā)生了重啟時,因為廣播模塊索引區(qū)和狀態(tài)機內(nèi)存都是無事務(wù)保證的,數(shù)據(jù)索引模塊重啟后會首先清除索引區(qū)并重置狀態(tài)機,然后數(shù)據(jù)索引模塊重新對工作頁面內(nèi)存數(shù)據(jù)建立索引,狀態(tài)機則重新經(jīng)歷初始化、恢復(fù)、活躍的狀態(tài),從而保證數(shù)據(jù)一致; (3)故障場景三:主機發(fā)生故障,備機接管: 由于備機處理的速度小于主處理,因此`在切換瞬間,備處理機仍有一部分數(shù)據(jù)需要處理且不需要發(fā)送,備處理機上的數(shù)據(jù)索引模塊在處理完這部分數(shù)據(jù)后,才能將狀態(tài)機切到活躍狀態(tài),才能通知推送模塊發(fā)送數(shù)據(jù),有效保證了廣播數(shù)據(jù)不回流; (4)故障場景四:主機失敗后進行主備切換,之后僅存的主機發(fā)生重啟: 主機重啟之后狀態(tài)機進入恢復(fù)狀態(tài),在此階段生成的所有廣播數(shù)據(jù)皆不發(fā)送,直到切到活躍狀態(tài),從而保證數(shù)據(jù)不回流,達到一致性。
8.—種如權(quán)利要求1所述的具有狀態(tài)一致性的市場數(shù)據(jù)實時廣播系統(tǒng)的廣播方法,其特征在于將公共消息和私有消息的發(fā)布方式加以區(qū)分,公共消息由客戶端采用定時拉取的方式,私有消息則實時推送,此時,公共消息發(fā)送給客戶端的時間點被隨機分布在客戶端的定時周期tf內(nèi),而私有數(shù)據(jù)的發(fā)送時間為tg,對于一條廣播消息,單位時間的待發(fā)布數(shù)據(jù)數(shù)目V’滿足以下條件:
V,= (n+g) /Max (tg, tf) 在一個確定的系統(tǒng)中,tf與g均為常數(shù),且g的值非常小,在證券交易系統(tǒng)中g(shù) —般為交易雙方,即2,此時,tg的值幾乎為O,遠小于tf,因此有:
V’ =(n+g)/tf 在每一個系統(tǒng)中tf是一個可以根據(jù)系統(tǒng)壓力進行配置的常數(shù),取值越大,廣播系統(tǒng)發(fā)布數(shù)據(jù)的壓力越小,系統(tǒng)性能的伸縮性更強。
【文檔編號】H04L29/08GK103634411SQ201310689144
【公開日】2014年3月12日 申請日期:2013年12月16日 優(yōu)先權(quán)日:2013年12月16日
【發(fā)明者】黃成 , 武劍鋒, 王泊, 蔣衛(wèi), 何希圣, 黃寅飛, 白碩 申請人:上海證券交易所
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
锦州市| 金湖县| 库车县| 民乐县| 哈尔滨市| 新绛县| 大兴区| 郴州市| 眉山市| 新乐市| 贡觉县| 延吉市| 焉耆| 常山县| 陆丰市| 平阳县| 揭阳市| 丹凤县| 门源| 苏尼特左旗| 斗六市| 蒙自县| 济南市| 象山县| 三河市| 余江县| 兴仁县| 延川县| 洪洞县| 枣庄市| 舒兰市| 澄城县| 兰州市| 湘阴县| 石楼县| 自治县| 汶川县| 柳河县| 开远市| 黄冈市| 石狮市|