本發(fā)明涉及賽事信息綜合處理系統(tǒng),特別涉及基于網(wǎng)絡(luò)通信技術(shù)的賽事信息綜合處理系統(tǒng)。
背景技術(shù):
隨著經(jīng)濟(jì)的發(fā)展和社會(huì)的推動(dòng),大型綜合體育賽事已經(jīng)成為一項(xiàng)重要的社會(huì)活動(dòng)。早期的綜合性體育賽事作為單純的體育競(jìng)技,采用較為簡(jiǎn)單傳統(tǒng)的計(jì)時(shí)記分方式,耗費(fèi)較多時(shí)間和人力,精確度和效率都比較低,人們希望能有一套高效的系統(tǒng),一方面可以省去人工計(jì)量和人工計(jì)算等步驟,提高精確度,另一方面可以以高效的方式完成工作,加快比賽節(jié)奏,使比賽節(jié)奏更加緊湊,更具觀賞性。由于以上需求的出現(xiàn),同時(shí)伴隨著全球信息化程度日漸增長(zhǎng),綜合性體育賽事體系的日漸成熟和完善,一套完整的綜合性體育賽事信息綜合處理系統(tǒng)應(yīng)運(yùn)而生,為綜合性體育賽事提供精確高效的服務(wù)。
賽事信息綜合處理系統(tǒng)發(fā)展至今,仍然存在著一些問(wèn)題,雖然計(jì)算機(jī)技術(shù)和網(wǎng)絡(luò)通信技術(shù)的發(fā)展使得系統(tǒng)日趨完善,但仍舊有新的問(wèn)題暴露出來(lái),解決這些問(wèn)題才能使得賽事信息綜合處理系統(tǒng)更好的服務(wù)于大型綜合體育賽事,是推進(jìn)系統(tǒng)發(fā)展的關(guān)鍵步驟。主要存在的問(wèn)題有以下幾個(gè)方面:第一,同時(shí)處理多個(gè)用戶(hù)的數(shù)據(jù)請(qǐng)求時(shí)容易發(fā)生阻塞的情況;第二,由于采取的數(shù)據(jù)存儲(chǔ)和傳輸格式解析速度較慢,使得整個(gè)系統(tǒng)效率相對(duì)比較低;第三,數(shù)據(jù)不經(jīng)過(guò)校驗(yàn)直接上傳到信息處理模塊進(jìn)行存儲(chǔ)和統(tǒng)計(jì),容易因源數(shù)據(jù)的錯(cuò)誤而導(dǎo)致一系列負(fù)面影響;第四,信息發(fā)布的手段比較局限,使得一部分用戶(hù)在對(duì)相關(guān)信息進(jìn)行獲取時(shí)受到限制,非常不方便。第五,由于該系統(tǒng)功能較多,整體系統(tǒng)龐大而復(fù)雜,成本較高。
技術(shù)實(shí)現(xiàn)要素:
目的:為了克服以上不足,本發(fā)明提供一種信息及時(shí)、內(nèi)容豐富、數(shù)據(jù)準(zhǔn)確、發(fā)布廣泛的基于網(wǎng)絡(luò)通信技術(shù)的賽事信息綜合處理系統(tǒng),用于采集和統(tǒng)計(jì)來(lái)自所有單項(xiàng)賽事的競(jìng)賽數(shù)據(jù),發(fā)布比賽日程和結(jié)果,向運(yùn)動(dòng)員、教練員、競(jìng)賽官員、工作人員以及新聞媒體乃至社會(huì)公眾提供更多、更細(xì)、更加方便快捷的賽事信息服務(wù)。
本發(fā)明的技術(shù)方案如下:
基于網(wǎng)絡(luò)通信技術(shù)的賽事信息綜合處理系統(tǒng),包括賽事信息采集模塊、賽事信息處理模塊和賽事信息發(fā)布模塊,其中,
所述賽事信息采集模塊采集所有單項(xiàng)的競(jìng)賽實(shí)時(shí)成績(jī)數(shù)據(jù)并生成json文件,根據(jù)ftp通信協(xié)議通過(guò)數(shù)據(jù)交換中心上傳至賽事信息處理模塊;
所述賽事信息處理模塊收到競(jìng)賽信息數(shù)據(jù)文件后將競(jìng)賽實(shí)時(shí)成績(jī)數(shù)據(jù)文件存入文件服務(wù)器,并將與綜合數(shù)據(jù)相關(guān)的json文件解析為數(shù)據(jù)對(duì)象寫(xiě)入賽事信息處理模塊的數(shù)據(jù)庫(kù)服務(wù)器中,方便其他模塊對(duì)綜合數(shù)據(jù)進(jìn)行查詢(xún);
所述賽事信息發(fā)布模塊通過(guò)http協(xié)議向賽事信息處理模塊的文件服務(wù)器請(qǐng)求并獲取競(jìng)賽實(shí)時(shí)成績(jī)數(shù)據(jù),向數(shù)據(jù)庫(kù)服務(wù)器獲取綜合數(shù)據(jù),并把獲取的信息按照業(yè)務(wù)規(guī)則進(jìn)行展示。
優(yōu)選地,所述賽事信息采集模塊以json文件作為數(shù)據(jù)存儲(chǔ)傳輸?shù)拿浇?,通過(guò)現(xiàn)場(chǎng)以太網(wǎng)將各個(gè)競(jìng)賽單項(xiàng)實(shí)時(shí)成績(jī)序列化為json字符串,通過(guò)數(shù)據(jù)校驗(yàn)機(jī)制進(jìn)行校驗(yàn)后寫(xiě)入json文件,所述json文件通過(guò)數(shù)據(jù)交換中心上傳至賽事信息處理模塊的文件服務(wù)器。
優(yōu)選地,所述賽事信息處理模塊包括信息存儲(chǔ)子模塊和信息統(tǒng)計(jì)子模塊,其中,
所述信息存儲(chǔ)子模塊包括文件服務(wù)器,用于存儲(chǔ)接收的競(jìng)賽實(shí)時(shí)數(shù)據(jù),當(dāng)賽事信息發(fā)布模塊對(duì)競(jìng)賽實(shí)時(shí)數(shù)據(jù)發(fā)起查詢(xún)時(shí),可直接從文件服務(wù)器中將對(duì)應(yīng)的json文件下載至客戶(hù)端進(jìn)行解析;
所述信息統(tǒng)計(jì)子模塊包括數(shù)據(jù)庫(kù)服務(wù)器,用于存儲(chǔ)綜合業(yè)務(wù)數(shù)據(jù),從文件服務(wù)器中讀取json文件,將數(shù)據(jù)寫(xiě)入數(shù)據(jù)庫(kù)服務(wù)器中,并統(tǒng)計(jì)綜合獎(jiǎng)牌和積分信息寫(xiě)入數(shù)據(jù)庫(kù)服務(wù)器中,當(dāng)賽事信息發(fā)布模塊發(fā)起查詢(xún)時(shí),將查詢(xún)sql語(yǔ)句實(shí)例傳送至數(shù)據(jù)庫(kù)服務(wù)器進(jìn)行查詢(xún)并將返回的數(shù)據(jù)生成json字符串,發(fā)送至賽事信息發(fā)布模塊進(jìn)行信息發(fā)布展示。
優(yōu)選地,所述賽事信息發(fā)布模塊基于b/s架構(gòu),采用jquery框架,通過(guò)異步的ajax方法從賽事信息處理模塊獲取信息發(fā)布頁(yè)面所需數(shù)據(jù),并使用統(tǒng)一的數(shù)據(jù)結(jié)構(gòu)將信息發(fā)布至官網(wǎng)、客戶(hù)端和第三方網(wǎng)站。
優(yōu)選地,所述數(shù)據(jù)校驗(yàn)機(jī)制為在.net平臺(tái)下使用jsonschema對(duì)json文件的進(jìn)行校驗(yàn),將預(yù)先創(chuàng)建的小項(xiàng)jsonschema存儲(chǔ)在該項(xiàng)目賽事信息采集模塊的現(xiàn)場(chǎng)成績(jī)處理端,且每個(gè)小項(xiàng)按照該小項(xiàng)需要上傳的json文件類(lèi)型創(chuàng)建jsonschema,每個(gè)類(lèi)型文件創(chuàng)建唯一的jsonschema,其校驗(yàn)方式如下:
5a)當(dāng)賽事信息采集模塊將數(shù)據(jù)序列化為json字符串且尚未寫(xiě)入json文件時(shí),通過(guò)所傳參數(shù)在本地找到相應(yīng)jsonschema文件,將相應(yīng)的jsonschema文件讀入內(nèi)存中;
5b)通過(guò)jsonschemafactory類(lèi)的default()方法創(chuàng)建一個(gè)jsonschemafactory實(shí)例;
5c)使用jsonloader類(lèi)的fromstring()方法,將json字符串作為參數(shù)傳入,得到j(luò)son數(shù)據(jù)的jsonnode對(duì)象;
5d)使用jsonloader類(lèi)的fromstring()方法,將內(nèi)存中的jsonschema框架作為參數(shù)傳入,得到j(luò)sonschema的jsonnode對(duì)象;
5e)在5b)中的jsonschemafactory實(shí)例采用getjsonschema()方法通過(guò)傳入jsonschema的jsonnode對(duì)象產(chǎn)生實(shí)例化的jsonschema對(duì)象;
5f)實(shí)例化jsonschema對(duì)象通過(guò)validata()方法傳入json數(shù)據(jù)的jsonnode對(duì)象去驗(yàn)證json字符串是否符合jsonschema框架;
5g)當(dāng)返回的jsonschema對(duì)象中issuccess()方法返回值為1時(shí),證明該json字符串符合jsonschema框架,進(jìn)入5h),否則進(jìn)入5i);
5h)此時(shí)將序列化的json字符串存入新建的json文件中,完整且正確的json文件向下一級(jí)模塊進(jìn)行傳輸,結(jié)束校驗(yàn);
5i)返回查看源數(shù)據(jù)是否正確,重新生成新的json,返回5a)重新驗(yàn)證。
優(yōu)選地,所述數(shù)據(jù)交換中心包括數(shù)據(jù)分發(fā)模塊和配置管理模塊,其中,
所述數(shù)據(jù)分發(fā)模塊提供請(qǐng)求與數(shù)據(jù)的接收、緩存和分發(fā)服務(wù),數(shù)據(jù)接收線程接收到數(shù)據(jù)包時(shí)對(duì)其進(jìn)行解析,解析確認(rèn)其合法且消息頭標(biāo)識(shí)該數(shù)據(jù)需要轉(zhuǎn)發(fā),計(jì)算數(shù)據(jù)的字節(jié)數(shù),開(kāi)辟大于字節(jié)數(shù)的空間作為buffer,則將該數(shù)據(jù)加入到buffer緩沖隊(duì)列,數(shù)據(jù)發(fā)送線程遍歷sessionlist中接收端,將buffer中的數(shù)據(jù)以先進(jìn)先出的方式寫(xiě)入到接收端。
所述配置管理模塊對(duì)數(shù)據(jù)交換中心進(jìn)行配置管理,包括基礎(chǔ)數(shù)據(jù)管理和通信參數(shù)配置,配置管理數(shù)據(jù)庫(kù)中存放通信終端、數(shù)據(jù)類(lèi)型、消息路由三張表,用于對(duì)數(shù)據(jù)交換中心配置所需的參數(shù)進(jìn)行管理,賽前依據(jù)競(jìng)賽業(yè)務(wù)需求寫(xiě)入數(shù)據(jù),由技術(shù)運(yùn)行中心團(tuán)隊(duì)進(jìn)行統(tǒng)一的管理與維護(hù)。
本發(fā)明的有益效果:本發(fā)明提供基于網(wǎng)絡(luò)通信技術(shù)的賽事信息綜合處理系統(tǒng),應(yīng)用網(wǎng)絡(luò)通信技術(shù)、.net技術(shù)、數(shù)據(jù)存儲(chǔ)訪問(wèn)技術(shù)等相關(guān)技術(shù),結(jié)合面向?qū)ο笤O(shè)計(jì)思想,實(shí)現(xiàn)了對(duì)綜合性體育賽事所有單項(xiàng)競(jìng)賽信息的收集、存儲(chǔ)、統(tǒng)計(jì)和分發(fā)功能,實(shí)現(xiàn)了數(shù)據(jù)采集和分發(fā)的準(zhǔn)確性,簡(jiǎn)化了處理系統(tǒng)結(jié)構(gòu),提高了處理效率。
附圖說(shuō)明
圖1為本發(fā)明的主體結(jié)構(gòu)圖;
圖2為賽事信息采集模塊工作原理圖;
圖3為賽事信息處理模塊工作原理圖;
圖4為信息統(tǒng)計(jì)子模塊設(shè)計(jì)原理圖;
圖5為基于ajax的賽事信息發(fā)布數(shù)據(jù)請(qǐng)求流程圖;
圖6為jsonschema校驗(yàn)流程圖;
圖7為數(shù)據(jù)交換中心工作流程圖。
具體實(shí)施方式
為了使本技術(shù)領(lǐng)域的人員更好地理解本申請(qǐng)中的技術(shù)方案,下面將結(jié)合本申請(qǐng)實(shí)施例中的附圖,對(duì)本申請(qǐng)實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本申請(qǐng)一部分實(shí)施例,而不是全部的實(shí)施例?;诒旧暾?qǐng)中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都應(yīng)當(dāng)屬于本申請(qǐng)保護(hù)的范圍。
如圖1-7所示,基于網(wǎng)絡(luò)通信技術(shù)的賽事信息綜合處理系統(tǒng),包括賽事信息采集模塊、賽事信息處理模塊和賽事信息發(fā)布模塊,其中,
所述賽事信息采集模塊采集所有單項(xiàng)的競(jìng)賽實(shí)時(shí)成績(jī)數(shù)據(jù)并生成json文件,根據(jù)ftp通信協(xié)議通過(guò)數(shù)據(jù)交換中心上傳至賽事信息處理模塊;
所述賽事信息處理模塊收到競(jìng)賽信息數(shù)據(jù)文件后將競(jìng)賽實(shí)時(shí)成績(jī)數(shù)據(jù)文件存入文件服務(wù)器,并將與綜合數(shù)據(jù)相關(guān)的json文件解析為數(shù)據(jù)對(duì)象寫(xiě)入賽事信息處理模塊的數(shù)據(jù)庫(kù)服務(wù)器中,方便其他模塊對(duì)綜合數(shù)據(jù)進(jìn)行查詢(xún);
所述賽事信息發(fā)布模塊通過(guò)http協(xié)議向賽事信息處理模塊的文件服務(wù)器請(qǐng)求并獲取競(jìng)賽實(shí)時(shí)成績(jī)數(shù)據(jù),向數(shù)據(jù)庫(kù)服務(wù)器獲取綜合數(shù)據(jù),并把獲取的信息按照業(yè)務(wù)規(guī)則進(jìn)行展示。
優(yōu)選地,所述賽事信息采集模塊以json文件作為數(shù)據(jù)存儲(chǔ)傳輸?shù)拿浇?,通過(guò)現(xiàn)場(chǎng)以太網(wǎng)將各個(gè)競(jìng)賽單項(xiàng)實(shí)時(shí)成績(jī)序列化為json字符串,通過(guò)數(shù)據(jù)校驗(yàn)機(jī)制進(jìn)行校驗(yàn)后寫(xiě)入json文件,所述json文件通過(guò)數(shù)據(jù)交換中心上傳至賽事信息處理模塊的文件服務(wù)器。
如圖2所示,賽事信息采集模塊的信息采集原理如下:
賽事信息采集模塊的信息最初由計(jì)時(shí)記分設(shè)備(端)獲得,賽時(shí)打分設(shè)備交由當(dāng)值裁判使用,各個(gè)場(chǎng)地的計(jì)時(shí)記分設(shè)備通過(guò)無(wú)線ap或交換機(jī)以有線的方式將成績(jī)數(shù)據(jù)發(fā)送到計(jì)時(shí)記分端,計(jì)時(shí)記分端將數(shù)據(jù)按照udp消息報(bào)文進(jìn)行封裝并發(fā)送至現(xiàn)場(chǎng)成績(jī)處理端,現(xiàn)場(chǎng)成績(jī)處理端根據(jù)單項(xiàng)競(jìng)賽規(guī)則對(duì)分?jǐn)?shù)進(jìn)行初步核算并寫(xiě)入場(chǎng)館級(jí)數(shù)據(jù)庫(kù)中;在比賽結(jié)束或某些特定時(shí)間節(jié)點(diǎn),通過(guò)現(xiàn)場(chǎng)成績(jī)處理端從場(chǎng)館級(jí)數(shù)據(jù)庫(kù)中讀出數(shù)據(jù),將數(shù)據(jù)序列化為json字符串,在.net平臺(tái)下使用jsonschema對(duì)序列化數(shù)據(jù)的完整性和正確性進(jìn)行校驗(yàn),校驗(yàn)完成后數(shù)據(jù)以json字符串的形式生成json文件,并通過(guò)數(shù)據(jù)交換中心將數(shù)據(jù)文件上傳至賽事信息處理模塊進(jìn)行統(tǒng)計(jì),以json文件為載體將競(jìng)賽數(shù)據(jù)按照大項(xiàng)、階段、單元和類(lèi)型的分類(lèi)傳輸?shù)劫愂滦畔⑻幚砟K,易于實(shí)現(xiàn)數(shù)據(jù)的分類(lèi)管理,同時(shí)通過(guò)信息校驗(yàn)機(jī)制保證數(shù)據(jù)的準(zhǔn)確性。
優(yōu)選地,所述賽事信息處理模塊包括信息存儲(chǔ)子模塊和信息統(tǒng)計(jì)子模塊,其中,
所述信息存儲(chǔ)子模塊包括文件服務(wù)器,用于存儲(chǔ)接收的競(jìng)賽實(shí)時(shí)數(shù)據(jù),當(dāng)賽事信息發(fā)布模塊對(duì)競(jìng)賽實(shí)時(shí)數(shù)據(jù)發(fā)起查詢(xún)時(shí),可直接從文件服務(wù)器中將對(duì)應(yīng)的json文件下載至客戶(hù)端進(jìn)行解析;
所述信息統(tǒng)計(jì)子模塊包括數(shù)據(jù)庫(kù)服務(wù)器,用于存儲(chǔ)綜合業(yè)務(wù)數(shù)據(jù),從文件服務(wù)器中讀取json文件,將數(shù)據(jù)寫(xiě)入數(shù)據(jù)庫(kù)服務(wù)器中,并統(tǒng)計(jì)綜合獎(jiǎng)牌和積分信息寫(xiě)入數(shù)據(jù)庫(kù)服務(wù)器中,當(dāng)賽事信息發(fā)布模塊發(fā)起查詢(xún)時(shí),將查詢(xún)sql語(yǔ)句實(shí)例傳送至數(shù)據(jù)庫(kù)服務(wù)器進(jìn)行查詢(xún)并將返回的數(shù)據(jù)生成json字符串,發(fā)送至賽事信息發(fā)布模塊進(jìn)行信息發(fā)布展示。
如圖3所示,賽事信息處理模塊設(shè)計(jì)原理如下:
信息存儲(chǔ)子模塊的設(shè)計(jì)主要包括:文件服務(wù)器部署、信息存儲(chǔ)和信息存儲(chǔ)更新,所述文件服務(wù)器是一臺(tái)對(duì)中央存儲(chǔ)和數(shù)據(jù)文件管理負(fù)責(zé)的計(jì)算機(jī),用于存儲(chǔ)場(chǎng)館級(jí)json數(shù)據(jù)文件,享有固定ip和端口號(hào),由文件服務(wù)器管理者在文件服務(wù)器上創(chuàng)建域控制器,嚴(yán)格控制接入服務(wù)器的計(jì)算機(jī)的身份,創(chuàng)建用戶(hù)賬號(hào)并為用戶(hù)分配權(quán)限,通過(guò)資源管理器及其文件過(guò)濾組件限制讀寫(xiě)用戶(hù)僅能上傳json文件,并通過(guò)文件服務(wù)器的卷克隆和卷影復(fù)制功能來(lái)備份和還原數(shù)據(jù)。為提高文件存取速度,文件服務(wù)器根據(jù)各個(gè)單項(xiàng)的公共代碼分別設(shè)定不同的路徑,以多個(gè)文件夾的形式存儲(chǔ)不同項(xiàng)目競(jìng)賽實(shí)時(shí)成績(jī)文件。這樣的設(shè)計(jì)減少單一路徑下的文件數(shù)量,從而減少了文件查找的時(shí)間。賽事信息采集模塊各單項(xiàng)場(chǎng)館成績(jī)處理端預(yù)先配置其固定的文件上傳路徑,賽時(shí)生成帶有時(shí)間戳的json文件,文件以“大項(xiàng)公共代碼_小項(xiàng)代碼_競(jìng)賽階段_競(jìng)賽場(chǎng)次_成績(jī)類(lèi)型”命名,通過(guò)競(jìng)賽專(zhuān)網(wǎng)和數(shù)據(jù)交換中心,按照f(shuō)tp協(xié)議向賽事信息存儲(chǔ)子模塊的文件服務(wù)器上傳競(jìng)賽實(shí)時(shí)成績(jī)文件。當(dāng)賽事信息發(fā)布模塊需要文件時(shí),直接通過(guò)文件路徑獲取即可。每個(gè)json文件包含一個(gè)時(shí)間戳,賽事信息采集模塊需要更新同項(xiàng)目同階段同場(chǎng)次的比賽成績(jī)文件時(shí),只需產(chǎn)生一個(gè)新的json文件并上傳即可,該文件包含更新的數(shù)據(jù)和新的時(shí)間戳,賽事信息發(fā)布模塊用戶(hù)再次發(fā)起查詢(xún)時(shí),首先需要對(duì)比文件的時(shí)間戳,如果時(shí)間戳沒(méi)有更新,不需再次下載json文件,如果時(shí)間戳更新,則需要下載新的數(shù)據(jù)文件到本地并覆蓋掉之前的舊的json文件。
如圖4所示,信息統(tǒng)計(jì)子模塊主要包括數(shù)據(jù)庫(kù)管理系統(tǒng)和數(shù)據(jù)庫(kù)服務(wù)器,其中,所述數(shù)據(jù)庫(kù)管理系統(tǒng)用于存放后臺(tái)管理程序和數(shù)據(jù)庫(kù)操作參數(shù)化sql語(yǔ)句,所述數(shù)據(jù)庫(kù)服務(wù)器用于存放所有綜合業(yè)務(wù)數(shù)據(jù)。當(dāng)賽事信息處理模塊的文件服務(wù)器接收到成績(jī)類(lèi)型為獎(jiǎng)牌信息和記錄信息類(lèi)型的json文件時(shí),數(shù)據(jù)庫(kù)管理系統(tǒng)后臺(tái)管理程序被觸發(fā),flag被置為1表明收到數(shù)據(jù)或更新數(shù)據(jù),需要進(jìn)行數(shù)據(jù)庫(kù)服務(wù)器操作,同時(shí)將文件存儲(chǔ)路徑作為參數(shù)傳遞給后臺(tái)管理程序,程序根據(jù)傳遞進(jìn)來(lái)的文件路徑將文件加載,根據(jù)json屬性節(jié)點(diǎn)獲取數(shù)據(jù)庫(kù)操作的參數(shù),并將參數(shù)值傳給相應(yīng)的參數(shù)化sql語(yǔ)句合成數(shù)據(jù)庫(kù)操作語(yǔ)句實(shí)例,對(duì)數(shù)據(jù)庫(kù)服務(wù)器進(jìn)行寫(xiě)入或更新操作。此過(guò)程可以保證數(shù)據(jù)庫(kù)所存儲(chǔ)的數(shù)據(jù)都是最新數(shù)據(jù)。
本發(fā)明選用sqlserver2008r2作為數(shù)據(jù)庫(kù)管理系統(tǒng),在.net平臺(tái)下,數(shù)據(jù)訪問(wèn)基于該框架下的ado.net技術(shù)。ado.net是由microsoft提供的用于和數(shù)據(jù)源進(jìn)行交互的面向?qū)ο箢?lèi)庫(kù),提供了connection、command、datareader、dataadapter和dataset這五個(gè)主要的類(lèi)用來(lái)對(duì)數(shù)據(jù)庫(kù)進(jìn)行連接、控制、讀取、修改和存取更新等訪問(wèn)操作。該技術(shù)支持連接與斷開(kāi)兩種環(huán)境,在對(duì)數(shù)據(jù)庫(kù)的數(shù)據(jù)進(jìn)行編輯時(shí),可以不必保持持續(xù)的連接狀態(tài),從而節(jié)省網(wǎng)絡(luò)資源。
數(shù)據(jù)庫(kù)管理系統(tǒng)系統(tǒng)部署使用雙機(jī)熱備方式,同時(shí)監(jiān)聽(tīng)兩臺(tái)數(shù)據(jù)庫(kù)服務(wù)器,一旦主數(shù)據(jù)庫(kù)出現(xiàn)癱瘓狀態(tài)則即刻切換到備用數(shù)據(jù)庫(kù)繼續(xù)運(yùn)行,避免出現(xiàn)競(jìng)賽事故。
優(yōu)選地,所述賽事信息發(fā)布模塊基于b/s架構(gòu),采用jquery框架,通過(guò)異步的ajax方法從賽事信息處理模塊獲取信息發(fā)布頁(yè)面所需數(shù)據(jù),并使用統(tǒng)一的數(shù)據(jù)結(jié)構(gòu)將信息發(fā)布至官網(wǎng)、客戶(hù)端和第三方網(wǎng)站。
如圖5所示,所述賽事信息發(fā)布模塊設(shè)計(jì)原理如下:
賽事信息發(fā)布由信息發(fā)布客戶(hù)端(官方網(wǎng)站、第三方網(wǎng)站、移動(dòng)app)發(fā)起查詢(xún)并對(duì)結(jié)果進(jìn)行展示,信息發(fā)布的展示由兩個(gè)要素構(gòu)成:信息發(fā)布模板和信息發(fā)布數(shù)據(jù),其中,
所述信息發(fā)布模板由信息發(fā)布開(kāi)發(fā)人員根據(jù)信息發(fā)布需求,設(shè)計(jì)適于官方網(wǎng)站或各種終端瀏覽的頁(yè)面風(fēng)格模板,保存在終端本地,通過(guò)上述設(shè)計(jì)獲取本域或異域的信息發(fā)布數(shù)據(jù)并將json數(shù)據(jù)解析為對(duì)象,通過(guò)javascript腳本獲取本域的信息發(fā)布模板,將數(shù)據(jù)對(duì)象填入模板就能夠得到用戶(hù)所查頁(yè)面,實(shí)現(xiàn)靜態(tài)頁(yè)面動(dòng)態(tài)化,對(duì)賽事信息進(jìn)行發(fā)布。
用戶(hù)通過(guò)信息發(fā)布客戶(hù)端發(fā)起web請(qǐng)求,將所需數(shù)據(jù)的日期、類(lèi)型等參數(shù)發(fā)送到賽事信息發(fā)布模塊,賽事信息發(fā)布模塊根據(jù)參數(shù)向服務(wù)器發(fā)起ajax請(qǐng)求,其中,
當(dāng)賽事信息發(fā)布模塊用戶(hù)對(duì)實(shí)時(shí)數(shù)據(jù)首次發(fā)起查詢(xún)時(shí),根據(jù)用戶(hù)所查信息大小項(xiàng)代碼、競(jìng)賽階段和場(chǎng)次、類(lèi)型等信息生成所需文件名稱(chēng),到本地緩存目錄判斷該文件是否存在,如果不存在,以文件絕對(duì)路徑為參數(shù)創(chuàng)建一個(gè)隱藏的iframe對(duì)象并通過(guò)將execcommand方法屬性設(shè)為saveas進(jìn)行文件下載,接收到賽事信息處理模塊返回的數(shù)據(jù)文件后將文件存放至本地緩存目錄。此時(shí)數(shù)據(jù)與模板同源,不需要跨域,所以通過(guò)ajax方法設(shè)置type參數(shù)為get、url為文件路徑、datatype為json,將json文件中的字符串加載入內(nèi)存,在加載成功的回調(diào)函數(shù)內(nèi)通過(guò)jquery的parsejson方法將字符串解析為對(duì)象,填入模板進(jìn)行顯示。當(dāng)賽事信息發(fā)布模塊用戶(hù)對(duì)實(shí)時(shí)數(shù)據(jù)再次發(fā)起查詢(xún)時(shí),也需要做一次判斷,判斷到文件存在后再對(duì)比本地文件與服務(wù)器文件的時(shí)間戳,如果服務(wù)器產(chǎn)生了更新,則重新下載文件并覆蓋本地文件。
若向數(shù)據(jù)庫(kù)服務(wù)器請(qǐng)求綜合數(shù)據(jù),使用ajax方法請(qǐng)求所查數(shù)據(jù),數(shù)據(jù)存放在遠(yuǎn)程數(shù)據(jù)庫(kù)服務(wù)器上,需要使用jsonp屬性解決跨域問(wèn)題。分別將url、type、datatype、data參數(shù)設(shè)為數(shù)據(jù)庫(kù)服務(wù)器地址、get請(qǐng)求類(lèi)型、jsonp返回類(lèi)型、sql語(yǔ)句需傳入的參數(shù),數(shù)據(jù)庫(kù)服務(wù)器接收到請(qǐng)求后,由數(shù)據(jù)庫(kù)管理系統(tǒng)將接收到的參數(shù)與參數(shù)化sql語(yǔ)句和成為sql查詢(xún)語(yǔ)句實(shí)例,并根據(jù)此語(yǔ)句進(jìn)行數(shù)據(jù)庫(kù)查詢(xún),查詢(xún)結(jié)果以json字符串的形式返回并通過(guò)jquery的parsejson()方法反序列化為對(duì)象,填入模板進(jìn)行信息發(fā)布展示。
信息發(fā)布網(wǎng)站開(kāi)發(fā)設(shè)計(jì)人員通過(guò)上述設(shè)計(jì)獲取本域或異域的信息發(fā)布數(shù)據(jù)并將json數(shù)據(jù)解析為對(duì)象,通過(guò)javascript腳本獲取本域的信息發(fā)布模板,將數(shù)據(jù)對(duì)象填入模板就能夠得到用戶(hù)所查頁(yè)面,實(shí)現(xiàn)靜態(tài)頁(yè)面動(dòng)態(tài)化,對(duì)賽事信息進(jìn)行發(fā)布。
優(yōu)選地,所述數(shù)據(jù)校驗(yàn)機(jī)制為在.net平臺(tái)下使用jsonschema對(duì)json文件的進(jìn)行校驗(yàn),將預(yù)先創(chuàng)建的小項(xiàng)jsonschema存儲(chǔ)在該項(xiàng)目賽事信息采集模塊的現(xiàn)場(chǎng)成績(jī)處理端,且每個(gè)小項(xiàng)按照該小項(xiàng)需要上傳的json文件類(lèi)型創(chuàng)建jsonschema,每個(gè)類(lèi)型文件創(chuàng)建唯一的jsonschema,其校驗(yàn)方式如下:
5a)當(dāng)賽事信息采集模塊將數(shù)據(jù)序列化為json字符串且尚未寫(xiě)入json文件時(shí),通過(guò)所傳參數(shù)在本地找到相應(yīng)jsonschema文件,將相應(yīng)的jsonschema文件讀入內(nèi)存中;
5b)通過(guò)jsonschemafactory類(lèi)的default()方法創(chuàng)建一個(gè)jsonschemafactory實(shí)例;
5c)使用jsonloader類(lèi)的fromstring()方法,將json字符串作為參數(shù)傳入,得到j(luò)son數(shù)據(jù)的jsonnode對(duì)象;
5d)使用jsonloader類(lèi)的fromstring()方法,將內(nèi)存中的jsonschema框架作為參數(shù)傳入,得到j(luò)sonschema的jsonnode對(duì)象;
5e)在5b)中的jsonschemafactory實(shí)例采用getjsonschema()方法通過(guò)傳入jsonschema的jsonnode對(duì)象產(chǎn)生實(shí)例化的jsonschema對(duì)象;
5f)實(shí)例化jsonschema對(duì)象通過(guò)validata()方法傳入json數(shù)據(jù)的jsonnode對(duì)象去驗(yàn)證json字符串是否符合jsonschema框架;
5g)當(dāng)返回的jsonschema對(duì)象中issuccess()方法返回值為1時(shí),證明該json字符串符合jsonschema框架,進(jìn)入5h),否則進(jìn)入5i);
5h)此時(shí)將序列化的json字符串存入新建的json文件中,完整且正確的json文件向下一級(jí)模塊進(jìn)行傳輸,結(jié)束校驗(yàn);
5i)返回查看源數(shù)據(jù)是否正確,重新生成新的json,返回5a)重新驗(yàn)證。
jsonschema設(shè)計(jì)方法如下:
每個(gè)小項(xiàng)需建立本項(xiàng)目的jsonschema,以下述json成績(jī)字符串為例,設(shè)計(jì)該段數(shù)據(jù)的jsonschema。
某json成績(jī)字符串如下:
該段json成績(jī)字符串包括運(yùn)動(dòng)員姓名、運(yùn)動(dòng)員編號(hào)、代表團(tuán)、出場(chǎng)順序、名次和詳細(xì)成績(jī)信息,這些數(shù)據(jù)應(yīng)根據(jù)競(jìng)賽實(shí)況具有各自的類(lèi)型格式,某些數(shù)據(jù)需要設(shè)定最小值或最大值,某些屬性可能是不必要的,此json字符串對(duì)應(yīng)的jsonschema如下所示:
(1)頭部信息,第一行是jsonschema頭,提供了本文件的基本信息,“title”關(guān)鍵字提供了標(biāo)題,“description”關(guān)鍵字提供了關(guān)于該jsonschema文件或?qū)傩缘拿枋?,“type”關(guān)鍵字對(duì)數(shù)據(jù)的類(lèi)型進(jìn)行了約束;
(2)屬性約束信息:從“properties”關(guān)鍵字開(kāi)始定義了各屬性的值類(lèi)型、最大值和最小值約束,其中若存在“exclusiveminimum”關(guān)鍵字且其值為true,表示實(shí)例值嚴(yán)格意義上大于“minimum”關(guān)鍵字的值時(shí)實(shí)例有效,“minlength”關(guān)鍵字對(duì)字符串實(shí)例的字符長(zhǎng)度提供了約束。
(3)必要屬性信息:“required”關(guān)鍵字后存放必要屬性列表。
所述數(shù)據(jù)分發(fā)模塊提供請(qǐng)求與數(shù)據(jù)的接收、緩存和分發(fā)服務(wù),數(shù)據(jù)接收線程接收到數(shù)據(jù)包時(shí)對(duì)其進(jìn)行解析,解析確認(rèn)其合法且消息頭標(biāo)識(shí)該數(shù)據(jù)需要轉(zhuǎn)發(fā),計(jì)算數(shù)據(jù)的字節(jié)數(shù),開(kāi)辟大于字節(jié)數(shù)的空間作為buffer,則將該數(shù)據(jù)加入到buffer緩沖隊(duì)列,數(shù)據(jù)發(fā)送線程遍歷sessionlist中接收端,將buffer中的數(shù)據(jù)以先進(jìn)先出的方式寫(xiě)入到接收端。
所述配置管理模塊對(duì)數(shù)據(jù)交換中心進(jìn)行配置管理,包括基礎(chǔ)數(shù)據(jù)管理和通信參數(shù)配置,配置管理數(shù)據(jù)庫(kù)中存放通信終端、數(shù)據(jù)類(lèi)型、消息路由三張表,用于對(duì)數(shù)據(jù)交換中心配置所需的參數(shù)進(jìn)行管理,賽前依據(jù)競(jìng)賽業(yè)務(wù)需求寫(xiě)入數(shù)據(jù),由技術(shù)運(yùn)行中心團(tuán)隊(duì)進(jìn)行統(tǒng)一的管理與維護(hù)。
如圖7所示,本發(fā)明中數(shù)據(jù)交換中心工作流程:
7a)、數(shù)據(jù)交換中心首先獲取所有終端和路由規(guī)則,遍歷所有終端,收到終端的響應(yīng)后認(rèn)為該終端在線,與該終端建立連接并將該終端加入到在線等待隊(duì)列。
7b)、創(chuàng)建兩個(gè)線程分別用來(lái)接收和分發(fā),當(dāng)接收線程收到請(qǐng)求消息或數(shù)據(jù)包時(shí)對(duì)其進(jìn)行解析,分發(fā)線程根據(jù)數(shù)據(jù)分發(fā)路由規(guī)則判斷接收方是否在線等待。
7c)、若接收端在線,則向接收端發(fā)送數(shù)據(jù),若接收端處于離線狀態(tài),則將數(shù)據(jù)加入到緩存隊(duì)列中,經(jīng)過(guò)一個(gè)時(shí)延后再次對(duì)接收端狀態(tài)進(jìn)行判斷。
7d)、接收端接收到數(shù)據(jù)后向數(shù)據(jù)交換中心發(fā)送接收響應(yīng),數(shù)據(jù)交換中心將數(shù)據(jù)從緩存隊(duì)列中釋放。
對(duì)所公開(kāi)的實(shí)施例的上述說(shuō)明,使本領(lǐng)域?qū)I(yè)技術(shù)人員能夠?qū)崿F(xiàn)或使用本發(fā)明。對(duì)這些實(shí)施例的多種修改對(duì)本領(lǐng)域的專(zhuān)業(yè)技術(shù)人員來(lái)說(shuō)將是顯而易見(jiàn)的,本文中所定義的一般原理可以在不脫離本發(fā)明的精神或范圍的情況下,在其它實(shí)施例中實(shí)現(xiàn)。因此,本發(fā)明將不會(huì)被限制于本文所示的這些實(shí)施例,而是要符合與本文所公開(kāi)的原理和新穎特點(diǎn)相一致的最寬的范圍。