1.一種基于非阻塞隊列的展示數(shù)據(jù)實時推送系統(tǒng),其特征在于, 其系統(tǒng)架構(gòu)主要包括:WEB組件、數(shù)據(jù)路由、公共監(jiān)聽器、會話監(jiān)聽器、數(shù)據(jù)池以及緩存管理器六個技術(shù)組件;其中, WEB組件負(fù)責(zé)與客戶端瀏覽器通訊,WEB組件接受瀏覽器的http請求,數(shù)據(jù)路由接收WEB組件的請求,并判斷請求類型,將請求轉(zhuǎn)發(fā)到對應(yīng)的監(jiān)聽器;公共監(jiān)聽器負(fù)責(zé)監(jiān)聽回調(diào)全局?jǐn)?shù)據(jù),接受數(shù)據(jù)路由轉(zhuǎn)發(fā)過來的請求,并在數(shù)據(jù)發(fā)生變化時,響應(yīng)請求;所述會話監(jiān)聽器負(fù)責(zé)監(jiān)聽回調(diào)明細(xì)數(shù)據(jù),接受數(shù)據(jù)路由轉(zhuǎn)發(fā)過來的請求;所述數(shù)據(jù)池負(fù)責(zé)生成數(shù)據(jù)索引,調(diào)用緩存管理器進(jìn)行數(shù)據(jù)存儲;所述緩存管理器負(fù)責(zé)接收數(shù)據(jù),執(zhí)行序列化,并根據(jù)緩存級別進(jìn)行存儲,根據(jù)數(shù)據(jù)索引提供反序列化之后的數(shù)據(jù)。
2. 根據(jù)權(quán)利要求1所述一種基于非阻塞隊列的展示數(shù)據(jù)實時推送系統(tǒng),其特征在于, WEB組件接受瀏覽器的http請求,從http請求中獲取參數(shù),并調(diào)用其他技術(shù)組件;其他技術(shù)組件返回請求內(nèi)容后,按照格式組裝返回請求內(nèi)容發(fā)回給瀏覽器。
3.根據(jù)權(quán)利要求2所述一種基于非阻塞隊列的展示數(shù)據(jù)實時推送系統(tǒng)和方法,其特征在于, 所述數(shù)據(jù)路由負(fù)責(zé)接收WEB組件的請求,存儲監(jiān)聽器的請求路由表,并根據(jù)請求的參數(shù)判斷請求類型,根據(jù)請求路由表轉(zhuǎn)發(fā)到對應(yīng)的監(jiān)聽器。
4.根據(jù)權(quán)利要求3所述一種基于非阻塞隊列的展示數(shù)據(jù)實時推送系統(tǒng),其特征在于, 當(dāng)全局?jǐn)?shù)據(jù)有任何變化時,觸發(fā)公共監(jiān)聽器啟動,內(nèi)建非阻塞監(jiān)聽隊列;當(dāng)數(shù)據(jù)池中數(shù)據(jù)有變化時,數(shù)據(jù)池會主動把數(shù)據(jù)索引放入非阻塞監(jiān)聽隊列。
5.根據(jù)權(quán)利要求4所述一種基于非阻塞隊列的展示數(shù)據(jù)實時推送系統(tǒng),其特征在于, 當(dāng)請求需要監(jiān)聽的明細(xì)數(shù)據(jù)發(fā)生變化時,會觸發(fā)會話監(jiān)聽器中的對應(yīng)監(jiān)聽線程;接受數(shù)據(jù)路由轉(zhuǎn)發(fā)過來的請求,單獨(dú)建立線程,創(chuàng)建非阻塞監(jiān)聽隊列,進(jìn)行監(jiān)聽;在數(shù)據(jù)池中的數(shù)據(jù)發(fā)生變化時,數(shù)據(jù)池主動把數(shù)據(jù)索引放入非阻塞監(jiān)聽隊列,會話監(jiān)聽器響應(yīng)請求。
6.根據(jù)權(quán)利要求5所述一種基于非阻塞隊列的展示數(shù)據(jù)實時推送系統(tǒng),其特征在于, 所述數(shù)據(jù)池負(fù)責(zé)接收系統(tǒng)中其他組件的計算結(jié)果,建立計算結(jié)果的數(shù)據(jù)索引,并分發(fā)到對應(yīng)的監(jiān)聽器中;計算結(jié)果序列化后,通過緩存管理器進(jìn)行數(shù)據(jù)存儲;當(dāng)監(jiān)聽器被觸發(fā)時,持有數(shù)據(jù)索引從數(shù)據(jù)池中獲取數(shù)據(jù),數(shù)據(jù)池根據(jù)數(shù)據(jù)索引,從緩存管理器中獲取數(shù)據(jù)響應(yīng)請求。
7.一種基于非阻塞隊列的展示數(shù)據(jù)實時推送方法,其特征在于, 利用非阻塞隊列監(jiān)聽公共數(shù)據(jù)的產(chǎn)生,并根據(jù)請求的會話信息,將計算結(jié)果數(shù)據(jù)有區(qū)別的實時主動推送到瀏覽器進(jìn)行展示;具體過程包括如下步驟:
1)客戶端瀏覽器發(fā)起請求,請求獲取實時計算結(jié)果數(shù)據(jù);
2)WEB組件接受請求,并從請求中獲取必要的參數(shù),組裝后,調(diào)用數(shù)據(jù)路由;進(jìn)行全局監(jiān)聽或個性化監(jiān)聽。
8.根據(jù)權(quán)利要求7所述的一種基于非阻塞隊列的展示數(shù)據(jù)實時推送方法,其特征在于, 所述全局監(jiān)聽包括如下步驟:
支線過程a1:數(shù)據(jù)路由根據(jù)請求監(jiān)聽的內(nèi)容,根據(jù)請求路由表判斷此請求,需要路由到公共監(jiān)聽器;
支線過程a2:公共監(jiān)聽器接受請求后,把請求加入到回調(diào)列表中;當(dāng)數(shù)據(jù)池發(fā)送數(shù)據(jù)索引到監(jiān)聽器后,監(jiān)聽器調(diào)用數(shù)據(jù)池,獲取數(shù)據(jù);
支線過程a3:數(shù)據(jù)池根據(jù)傳入的索引信息,調(diào)用緩存管理器獲取數(shù)據(jù);
支線過程a4:緩存管理器根據(jù)傳入的索引信息,反序列化數(shù)據(jù)后,返回給公共監(jiān)聽器;
支線過程a5:公共監(jiān)聽器把從緩存管理器獲取的數(shù)據(jù)返回給WEB組件;
支線過程a6:WEB組件接受數(shù)據(jù)后,根據(jù)約定的格式組裝數(shù)據(jù)并返回給瀏覽器。
9.根據(jù)權(quán)利要求8所述的一種基于非阻塞隊列的展示數(shù)據(jù)實時推送方法,其特征在于, 所述個性化監(jiān)聽包括如下步驟:
支線過程b1:數(shù)據(jù)路由根據(jù)請求監(jiān)聽的內(nèi)容,根據(jù)請求路由表判斷此請求需要路由到會話監(jiān)聽器;
支線過程b2:會話監(jiān)聽器接受請求后,根據(jù)請求中攜帶的會話ID,獲取對應(yīng)的非阻塞監(jiān)聽隊列;當(dāng)數(shù)據(jù)池發(fā)送數(shù)據(jù)索引到監(jiān)聽器后,監(jiān)聽器調(diào)用數(shù)據(jù)池,獲取數(shù)據(jù);
支線過程b3:數(shù)據(jù)池根據(jù)傳入的數(shù)據(jù)索引,調(diào)用緩存管理器獲取數(shù)據(jù);
支線過程b4:緩存管理器根據(jù)傳入的索引信息,反序列化數(shù)據(jù)后,返回給會話監(jiān)聽器;
支線過程b5:會話監(jiān)聽器把從緩存管理器獲取的數(shù)據(jù)返回給WEB組件;
支線過程b6:WEB組件接受數(shù)據(jù)后,根據(jù)約定的格式組裝數(shù)據(jù)并返回給瀏覽器。
10.根據(jù)權(quán)利要求9所述的一種基于非阻塞隊列的展示數(shù)據(jù)實時推送方法,其特征在于, 支線過程b2中,若獲取不到,則為新的會話,創(chuàng)建非阻塞監(jiān)聽隊列,把請求加入到新創(chuàng)建監(jiān)聽隊列的回調(diào)列表中;若能獲取到,則直接把請求加入到對應(yīng)監(jiān)聽隊列的回調(diào)列表中。