技術(shù)領(lǐng)域
本發(fā)明涉及數(shù)據(jù)通信中的數(shù)據(jù)推送技術(shù),具體的說(shuō)是一種基于非阻塞隊(duì)列的展示數(shù)據(jù)實(shí)時(shí)推送系統(tǒng)和方法。
背景技術(shù):
目前,應(yīng)用服務(wù)器端和客戶(hù)端數(shù)據(jù)推送技術(shù)中,推送技術(shù)對(duì)于long-polling和websocket兩種數(shù)據(jù)推送實(shí)現(xiàn)方式存在較大不同, long-polling基于內(nèi)存共享,輪詢(xún)請(qǐng)求查詢(xún)內(nèi)存中的數(shù)據(jù);websocket基于實(shí)時(shí)監(jiān)聽(tīng),建立監(jiān)聽(tīng)后,當(dāng)數(shù)據(jù)變化后,實(shí)時(shí)調(diào)用接口推送。目前的推送技術(shù)對(duì)兩種方式的數(shù)據(jù)支持并不統(tǒng)一,常常要實(shí)現(xiàn)兩套后臺(tái),而且,websocket的推送方式,數(shù)據(jù)推送過(guò)于頻繁,會(huì)把服務(wù)器端網(wǎng)絡(luò)塞死,會(huì)影響到客戶(hù)端瀏覽器的正常運(yùn)行。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明針對(duì)目前技術(shù)發(fā)展的需求和不足之處,提供一種基于非阻塞隊(duì)列的展示數(shù)據(jù)實(shí)時(shí)推送系統(tǒng)和方法。
本發(fā)明所述一種基于非阻塞隊(duì)列的展示數(shù)據(jù)實(shí)時(shí)推送系統(tǒng)和方法,解決上述技術(shù)問(wèn)題采用的技術(shù)方案如下:所述一種基于非阻塞隊(duì)列的展示數(shù)據(jù)實(shí)時(shí)推送系統(tǒng),其系統(tǒng)架構(gòu)主要包括:WEB組件、數(shù)據(jù)路由、公共監(jiān)聽(tīng)器、會(huì)話監(jiān)聽(tīng)器、數(shù)據(jù)池以及緩存管理器六個(gè)技術(shù)組件;其中, WEB組件負(fù)責(zé)與客戶(hù)端瀏覽器通訊,WEB組件接受瀏覽器的http請(qǐng)求,數(shù)據(jù)路由接收WEB組件的請(qǐng)求,并判斷請(qǐng)求類(lèi)型,將請(qǐng)求轉(zhuǎn)發(fā)到對(duì)應(yīng)的監(jiān)聽(tīng)器;公共監(jiān)聽(tīng)器負(fù)責(zé)監(jiān)聽(tīng)回調(diào)全局?jǐn)?shù)據(jù),接受數(shù)據(jù)路由轉(zhuǎn)發(fā)過(guò)來(lái)的請(qǐng)求,并在數(shù)據(jù)發(fā)生變化時(shí),響應(yīng)請(qǐng)求;所述會(huì)話監(jiān)聽(tīng)器負(fù)責(zé)監(jiān)聽(tīng)回調(diào)明細(xì)數(shù)據(jù),接受數(shù)據(jù)路由轉(zhuǎn)發(fā)過(guò)來(lái)的請(qǐng)求;所述數(shù)據(jù)池負(fù)責(zé)生成數(shù)據(jù)索引,調(diào)用緩存管理器進(jìn)行數(shù)據(jù)存儲(chǔ);所述緩存管理器負(fù)責(zé)接收數(shù)據(jù),執(zhí)行序列化,并根據(jù)緩存級(jí)別進(jìn)行存儲(chǔ),根據(jù)數(shù)據(jù)索引提供反序列化之后的數(shù)據(jù)。
優(yōu)選的, WEB組件接受瀏覽器的http請(qǐng)求,從http請(qǐng)求中獲取參數(shù),并調(diào)用其他技術(shù)組件;其他技術(shù)組件返回請(qǐng)求內(nèi)容后,按照格式組裝返回請(qǐng)求內(nèi)容發(fā)回給瀏覽器。
優(yōu)選的,所述數(shù)據(jù)路由負(fù)責(zé)接收WEB組件的請(qǐng)求,存儲(chǔ)監(jiān)聽(tīng)器的請(qǐng)求路由表,并根據(jù)請(qǐng)求的參數(shù)判斷請(qǐng)求類(lèi)型,根據(jù)請(qǐng)求路由表轉(zhuǎn)發(fā)到對(duì)應(yīng)的監(jiān)聽(tīng)器。
優(yōu)選的,當(dāng)全局?jǐn)?shù)據(jù)有任何變化時(shí),觸發(fā)公共監(jiān)聽(tīng)器啟動(dòng),內(nèi)建非阻塞監(jiān)聽(tīng)隊(duì)列;當(dāng)數(shù)據(jù)池中數(shù)據(jù)有變化時(shí),數(shù)據(jù)池會(huì)主動(dòng)把數(shù)據(jù)索引放入非阻塞監(jiān)聽(tīng)隊(duì)列。
優(yōu)選的,當(dāng)請(qǐng)求需要監(jiān)聽(tīng)的明細(xì)數(shù)據(jù)發(fā)生變化時(shí),會(huì)觸發(fā)會(huì)話監(jiān)聽(tīng)器中的對(duì)應(yīng)監(jiān)聽(tīng)線程;接受數(shù)據(jù)路由轉(zhuǎn)發(fā)過(guò)來(lái)的請(qǐng)求,單獨(dú)建立線程,創(chuàng)建非阻塞監(jiān)聽(tīng)隊(duì)列,進(jìn)行監(jiān)聽(tīng);在數(shù)據(jù)池中的數(shù)據(jù)發(fā)生變化時(shí),數(shù)據(jù)池主動(dòng)把數(shù)據(jù)索引放入非阻塞監(jiān)聽(tīng)隊(duì)列,會(huì)話監(jiān)聽(tīng)器響應(yīng)請(qǐng)求。
優(yōu)選的,所述數(shù)據(jù)池負(fù)責(zé)接收系統(tǒng)中其他組件的計(jì)算結(jié)果,建立計(jì)算結(jié)果的數(shù)據(jù)索引,并分發(fā)到對(duì)應(yīng)的監(jiān)聽(tīng)器中;計(jì)算結(jié)果序列化后,通過(guò)緩存管理器進(jìn)行數(shù)據(jù)存儲(chǔ);當(dāng)監(jiān)聽(tīng)器被觸發(fā)時(shí),持有數(shù)據(jù)索引從數(shù)據(jù)池中獲取數(shù)據(jù),數(shù)據(jù)池根據(jù)數(shù)據(jù)索引,從緩存管理器中獲取數(shù)據(jù)響應(yīng)請(qǐng)求。
一種基于非阻塞隊(duì)列的展示數(shù)據(jù)實(shí)時(shí)推送方法,利用非阻塞隊(duì)列監(jiān)聽(tīng)公共數(shù)據(jù)的產(chǎn)生,并根據(jù)請(qǐng)求的會(huì)話信息,將計(jì)算結(jié)果數(shù)據(jù)有區(qū)別的實(shí)時(shí)主動(dòng)推送到瀏覽器進(jìn)行展示;具體過(guò)程包括如下步驟:
1)客戶(hù)端瀏覽器發(fā)起請(qǐng)求,請(qǐng)求獲取實(shí)時(shí)計(jì)算結(jié)果數(shù)據(jù);
2)WEB組件接受請(qǐng)求,并從請(qǐng)求中獲取必要的參數(shù),組裝后,調(diào)用數(shù)據(jù)路由;進(jìn)行全局監(jiān)聽(tīng)或個(gè)性化監(jiān)聽(tīng)。
優(yōu)選的,所述全局監(jiān)聽(tīng)包括如下步驟:
支線過(guò)程a1:數(shù)據(jù)路由根據(jù)請(qǐng)求監(jiān)聽(tīng)的內(nèi)容,根據(jù)請(qǐng)求路由表判斷此請(qǐng)求,需要路由到公共監(jiān)聽(tīng)器;
支線過(guò)程a2:公共監(jiān)聽(tīng)器接受請(qǐng)求后,把請(qǐng)求加入到回調(diào)列表中;當(dāng)數(shù)據(jù)池發(fā)送數(shù)據(jù)索引到監(jiān)聽(tīng)器后,監(jiān)聽(tīng)器調(diào)用數(shù)據(jù)池,獲取數(shù)據(jù);
支線過(guò)程a3:數(shù)據(jù)池根據(jù)傳入的索引信息,調(diào)用緩存管理器獲取數(shù)據(jù);
支線過(guò)程a4:緩存管理器根據(jù)傳入的索引信息,反序列化數(shù)據(jù)后,返回給公共監(jiān)聽(tīng)器;
支線過(guò)程a5:公共監(jiān)聽(tīng)器把從緩存管理器獲取的數(shù)據(jù)返回給WEB組件;
支線過(guò)程a6:WEB組件接受數(shù)據(jù)后,根據(jù)約定的格式組裝數(shù)據(jù)并返回給瀏覽器。
優(yōu)選的,所述個(gè)性化監(jiān)聽(tīng)包括如下步驟:
支線過(guò)程b1:數(shù)據(jù)路由根據(jù)請(qǐng)求監(jiān)聽(tīng)的內(nèi)容,根據(jù)請(qǐng)求路由表判斷此請(qǐng)求需要路由到會(huì)話監(jiān)聽(tīng)器;
支線過(guò)程b2:會(huì)話監(jiān)聽(tīng)器接受請(qǐng)求后,根據(jù)請(qǐng)求中攜帶的會(huì)話ID,獲取對(duì)應(yīng)的非阻塞監(jiān)聽(tīng)隊(duì)列;當(dāng)數(shù)據(jù)池發(fā)送數(shù)據(jù)索引到監(jiān)聽(tīng)器后,監(jiān)聽(tīng)器調(diào)用數(shù)據(jù)池,獲取數(shù)據(jù)。
支線過(guò)程b3:數(shù)據(jù)池根據(jù)傳入的數(shù)據(jù)索引,調(diào)用緩存管理器獲取數(shù)據(jù);
支線過(guò)程b4:緩存管理器根據(jù)傳入的索引信息,反序列化數(shù)據(jù)后,返回給會(huì)話監(jiān)聽(tīng)器;
支線過(guò)程b5:會(huì)話監(jiān)聽(tīng)器把從緩存管理器獲取的數(shù)據(jù)返回給WEB組件;
支線過(guò)程b6:WEB組件接受數(shù)據(jù)后,根據(jù)約定的格式組裝數(shù)據(jù)并返回給瀏覽器。
優(yōu)選的,支線過(guò)程b2中,若獲取不到,則為新的會(huì)話,創(chuàng)建非阻塞監(jiān)聽(tīng)隊(duì)列,把請(qǐng)求加入到新創(chuàng)建監(jiān)聽(tīng)隊(duì)列的回調(diào)列表中;若能獲取到,則直接把請(qǐng)求加入到對(duì)應(yīng)監(jiān)聽(tīng)隊(duì)列的回調(diào)列表中。
本發(fā)明所述一種基于非阻塞隊(duì)列的展示數(shù)據(jù)實(shí)時(shí)推送系統(tǒng)和方法與現(xiàn)有技術(shù)相比具有的有益效果是:本發(fā)明用于實(shí)時(shí)計(jì)算開(kāi)發(fā)過(guò)程中,展示應(yīng)用由服務(wù)器端向客戶(hù)端(瀏覽器)推送會(huì)話級(jí)別的實(shí)時(shí)計(jì)算結(jié)果數(shù)據(jù);能夠有效解決現(xiàn)有技術(shù)中存在的技術(shù)問(wèn)題,能夠避免重復(fù)開(kāi)發(fā)、提高開(kāi)發(fā)效率;可以在會(huì)話級(jí)別做到個(gè)性化的推送,有效的提高內(nèi)存的使用率,提高數(shù)據(jù)推送的實(shí)時(shí)性,進(jìn)而提高資源使用效率。
說(shuō)明書(shū)附圖
附圖1為所述基于非阻塞隊(duì)列的展示數(shù)據(jù)實(shí)時(shí)推送系統(tǒng)的運(yùn)行示意圖。
具體實(shí)施方式
為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚明白,以下結(jié)合具體實(shí)施例,對(duì)本發(fā)明所述一種基于非阻塞隊(duì)列的展示數(shù)據(jù)實(shí)時(shí)推送系統(tǒng)和方法進(jìn)一步詳細(xì)說(shuō)明。
為了解決在實(shí)時(shí)計(jì)算技術(shù)框架下,如何高效、準(zhǔn)確、在會(huì)話級(jí)別實(shí)現(xiàn)數(shù)據(jù)實(shí)時(shí)推送到客戶(hù)端的問(wèn)題,本發(fā)明公開(kāi)了一種基于非阻塞隊(duì)列的展示數(shù)據(jù)實(shí)時(shí)推送系統(tǒng)和方法,改進(jìn)了原有數(shù)據(jù)推送到瀏覽器的方式,由輪詢(xún)讀取共享內(nèi)存的方式,改為使用非阻塞監(jiān)聽(tīng)隊(duì)列作為核心技術(shù)進(jìn)行實(shí)現(xiàn)。本發(fā)明利用非阻塞隊(duì)列監(jiān)聽(tīng)公共數(shù)據(jù)的產(chǎn)生,在會(huì)話安全的情況下,并根據(jù)請(qǐng)求的會(huì)話信息,將計(jì)算結(jié)果數(shù)據(jù)有區(qū)別的實(shí)時(shí)主動(dòng)推送到瀏覽器進(jìn)行展示。
實(shí)施例:
本實(shí)施例所述一種基于非阻塞隊(duì)列的展示數(shù)據(jù)實(shí)時(shí)推送系統(tǒng),其系統(tǒng)架構(gòu)主要包括:WEB組件、數(shù)據(jù)路由、公共監(jiān)聽(tīng)器、會(huì)話監(jiān)聽(tīng)器、數(shù)據(jù)池以及緩存管理器技術(shù)六大組件;其中,所述WEB組件負(fù)責(zé)與客戶(hù)端瀏覽器通訊,WEB組件接受瀏覽器的http請(qǐng)求,數(shù)據(jù)路由接收WEB組件的請(qǐng)求,并判斷請(qǐng)求類(lèi)型,將請(qǐng)求轉(zhuǎn)發(fā)到對(duì)應(yīng)的監(jiān)聽(tīng)器;所述公共監(jiān)聽(tīng)器負(fù)責(zé)監(jiān)聽(tīng)回調(diào)全局?jǐn)?shù)據(jù),接受數(shù)據(jù)路由轉(zhuǎn)發(fā)過(guò)來(lái)的請(qǐng)求,并在數(shù)據(jù)發(fā)生變化時(shí),響應(yīng)請(qǐng)求;所述會(huì)話監(jiān)聽(tīng)器負(fù)責(zé)監(jiān)聽(tīng)回調(diào)明細(xì)數(shù)據(jù),接受數(shù)據(jù)路由轉(zhuǎn)發(fā)過(guò)來(lái)的請(qǐng)求;所述數(shù)據(jù)池負(fù)責(zé)生成數(shù)據(jù)索引,調(diào)用緩存管理器進(jìn)行數(shù)據(jù)存儲(chǔ);所述緩存管理器負(fù)責(zé)接收數(shù)據(jù),執(zhí)行序列化,并根據(jù)緩存級(jí)別進(jìn)行存儲(chǔ),根據(jù)數(shù)據(jù)索引提供反序列化之后的數(shù)據(jù)。
所述WEB組件負(fù)責(zé)與客戶(hù)端瀏覽器通訊。WEB組件接受瀏覽器的http請(qǐng)求,從http請(qǐng)求中獲取參數(shù),并調(diào)用其他技術(shù)組件;其他技術(shù)組件返回請(qǐng)求內(nèi)容后,按照格式組裝返回請(qǐng)求內(nèi)容發(fā)回給瀏覽器。這里,格式是各個(gè)項(xiàng)目實(shí)施時(shí)的約定格式,各個(gè)項(xiàng)目不同;通常都采用json數(shù)據(jù)格式。
所述數(shù)據(jù)路由負(fù)責(zé)接收WEB組件的請(qǐng)求,存儲(chǔ)監(jiān)聽(tīng)器的請(qǐng)求路由表,并根據(jù)請(qǐng)求的參數(shù)判斷請(qǐng)求類(lèi)型,根據(jù)請(qǐng)求路由表轉(zhuǎn)發(fā)到對(duì)應(yīng)的監(jiān)聽(tīng)器。由公共監(jiān)聽(tīng)器和會(huì)話監(jiān)聽(tīng)器啟動(dòng)時(shí),主動(dòng)注冊(cè)能夠監(jiān)聽(tīng)的信息到請(qǐng)求路由表中。
所述公共監(jiān)聽(tīng)器負(fù)責(zé)全局?jǐn)?shù)據(jù)的監(jiān)聽(tīng)回調(diào);當(dāng)全局?jǐn)?shù)據(jù)有任何變化時(shí)都會(huì)觸發(fā)公共監(jiān)聽(tīng)器;啟動(dòng)時(shí),內(nèi)建非阻塞監(jiān)聽(tīng)隊(duì)列,當(dāng)數(shù)據(jù)池中數(shù)據(jù)有變化時(shí),數(shù)據(jù)池會(huì)主動(dòng)把數(shù)據(jù)索引放入非阻塞監(jiān)聽(tīng)隊(duì)列。接受數(shù)據(jù)路由轉(zhuǎn)發(fā)過(guò)來(lái)的請(qǐng)求,并在數(shù)據(jù)發(fā)生變化時(shí),響應(yīng)請(qǐng)求。公共監(jiān)聽(tīng)器每次請(qǐng)求最長(zhǎng)保持時(shí)間為10秒,超過(guò)此時(shí)間的請(qǐng)求,會(huì)被主動(dòng)斷開(kāi),以保持監(jiān)聽(tīng)器的性能。所述全局?jǐn)?shù)據(jù)包括:監(jiān)聽(tīng)組件發(fā)生狀態(tài)變化的數(shù)據(jù)、抽象層次最高的匯總數(shù)據(jù)、需要廣播的明細(xì)數(shù)據(jù),全局?jǐn)?shù)據(jù)由數(shù)據(jù)池管理。
所述會(huì)話監(jiān)聽(tīng)器是根據(jù)會(huì)話創(chuàng)建的監(jiān)聽(tīng)器,負(fù)責(zé)明細(xì)數(shù)據(jù)的監(jiān)聽(tīng)回調(diào);當(dāng)請(qǐng)求需要監(jiān)聽(tīng)的明細(xì)數(shù)據(jù)發(fā)生變化時(shí),都會(huì)觸發(fā)會(huì)話監(jiān)聽(tīng)器中的對(duì)應(yīng)監(jiān)聽(tīng)線程;接受數(shù)據(jù)路由轉(zhuǎn)發(fā)過(guò)來(lái)的請(qǐng)求,單獨(dú)建立線程,創(chuàng)建非阻塞監(jiān)聽(tīng)隊(duì)列,進(jìn)行監(jiān)聽(tīng),并在數(shù)據(jù)池中的數(shù)據(jù)發(fā)生變化時(shí),數(shù)據(jù)池會(huì)主動(dòng)把數(shù)據(jù)索引放入非阻塞監(jiān)聽(tīng)隊(duì)列,會(huì)話監(jiān)聽(tīng)器此時(shí)會(huì)響應(yīng)請(qǐng)求。會(huì)話監(jiān)聽(tīng)器每次請(qǐng)求最長(zhǎng)保持時(shí)間為10秒,超過(guò)此時(shí)間的請(qǐng)求,會(huì)被主動(dòng)斷開(kāi),以保持監(jiān)聽(tīng)器的性能。所述明細(xì)數(shù)據(jù)是指除全局?jǐn)?shù)據(jù)外,其他數(shù)據(jù)池中的數(shù)據(jù),明細(xì)數(shù)據(jù)由數(shù)據(jù)池管理。
所述數(shù)據(jù)池負(fù)責(zé)接收系統(tǒng)中其他組件的計(jì)算結(jié)果,建立計(jì)算結(jié)果的數(shù)據(jù)索引,并分發(fā)到對(duì)應(yīng)的監(jiān)聽(tīng)器中,計(jì)算結(jié)果序列化后,通過(guò)緩存管理器進(jìn)行數(shù)據(jù)存儲(chǔ)。當(dāng)監(jiān)聽(tīng)器被觸發(fā)時(shí),持有數(shù)據(jù)索引從數(shù)據(jù)池中獲取數(shù)據(jù),數(shù)據(jù)池根據(jù)數(shù)據(jù)索引,從緩存管理器中獲取數(shù)據(jù)響應(yīng)請(qǐng)求。
所述緩存管理器負(fù)責(zé)接收數(shù)據(jù),執(zhí)行序列化,并根據(jù)緩存級(jí)別進(jìn)行存儲(chǔ),根據(jù)數(shù)據(jù)索引提供反序列化之后的數(shù)據(jù);緩存級(jí)別分三級(jí):本地文件存儲(chǔ),本地內(nèi)存存儲(chǔ),高速緩存存儲(chǔ)。緩存管理器存儲(chǔ)后的數(shù)據(jù)引用與傳入的索引信息建立鍵值對(duì),保存在內(nèi)存中。數(shù)據(jù)池持有索引信息調(diào)用緩存管理器獲取反序列化之后的數(shù)據(jù)。
采用本實(shí)施例所述展示數(shù)據(jù)實(shí)時(shí)推送系統(tǒng),實(shí)現(xiàn)一種展示數(shù)據(jù)實(shí)時(shí)推送方法,該方法具體實(shí)現(xiàn)過(guò)程包括如下步驟:
1)客戶(hù)端瀏覽器發(fā)起請(qǐng)求,請(qǐng)求獲取實(shí)時(shí)計(jì)算結(jié)果數(shù)據(jù);這里請(qǐng)求是long-polling或websocket技術(shù)實(shí)現(xiàn)的,long-polling實(shí)現(xiàn)是指通過(guò)rest風(fēng)格的http調(diào)用,通過(guò)輪詢(xún)的方式不間斷的獲取實(shí)時(shí)計(jì)算結(jié)果數(shù)據(jù); websocket實(shí)現(xiàn)是指通過(guò)建立瀏覽器和服務(wù)器端的socket連接,通過(guò)socket連接,服務(wù)器主動(dòng)推送數(shù)據(jù)到瀏覽器端;
2)WEB組件接受請(qǐng)求,并從請(qǐng)求中獲取必要的參數(shù),組裝后,調(diào)用數(shù)據(jù)路由;如附圖1所示:分為全局監(jiān)聽(tīng)和個(gè)性化監(jiān)聽(tīng)兩種監(jiān)聽(tīng)種類(lèi)。
所述全局監(jiān)聽(tīng)主要包括如下過(guò)程:支線過(guò)程a1、支線過(guò)程a2、支線過(guò)程a3、支線過(guò)程a4、支線過(guò)程a5以及支線過(guò)程a6;如附圖1所示:
支線過(guò)程a1:數(shù)據(jù)路由根據(jù)請(qǐng)求監(jiān)聽(tīng)的內(nèi)容,根據(jù)請(qǐng)求路由表判斷此請(qǐng)求,需要路由到公共監(jiān)聽(tīng)器。所述請(qǐng)求路由表的數(shù)據(jù)來(lái)源于公共監(jiān)聽(tīng)器和會(huì)話監(jiān)聽(tīng)器啟動(dòng)時(shí)的主動(dòng)注冊(cè);
支線過(guò)程a2:公共監(jiān)聽(tīng)器接受請(qǐng)求后,把請(qǐng)求加入到回調(diào)列表中;當(dāng)數(shù)據(jù)池發(fā)送數(shù)據(jù)索引到監(jiān)聽(tīng)器后,監(jiān)聽(tīng)器調(diào)用數(shù)據(jù)池,獲取數(shù)據(jù);
支線過(guò)程a3:數(shù)據(jù)池根據(jù)傳入的索引信息,調(diào)用緩存管理器獲取數(shù)據(jù);
支線過(guò)程a4:緩存管理器根據(jù)傳入的索引信息,反序列化數(shù)據(jù)后,返回給公共監(jiān)聽(tīng)器;
支線過(guò)程a5:公共監(jiān)聽(tīng)器把從緩存管理器獲取的數(shù)據(jù)返回給WEB組件;
支線過(guò)程a6:WEB組件接受數(shù)據(jù)后,根據(jù)約定的格式組裝數(shù)據(jù)并返回給瀏覽器。
所述個(gè)性化監(jiān)聽(tīng)主要包括如下過(guò)程:支線過(guò)程b1、支線過(guò)程b2、支線過(guò)程b3、支線過(guò)程b4、支線過(guò)程b5以及支線過(guò)程b6;如附圖1所示:
支線過(guò)程b1:數(shù)據(jù)路由根據(jù)請(qǐng)求監(jiān)聽(tīng)的內(nèi)容,根據(jù)請(qǐng)求路由表判斷此請(qǐng)求,需要路由到會(huì)話監(jiān)聽(tīng)器;
支線過(guò)程b2:會(huì)話監(jiān)聽(tīng)器接受請(qǐng)求后,根據(jù)請(qǐng)求中攜帶的會(huì)話ID,獲取對(duì)應(yīng)的非阻塞監(jiān)聽(tīng)隊(duì)列。若獲取不到,則為新的會(huì)話,創(chuàng)建非阻塞監(jiān)聽(tīng)隊(duì)列,把請(qǐng)求加入到新創(chuàng)建監(jiān)聽(tīng)隊(duì)列的回調(diào)列表中;若能獲取到,則直接把請(qǐng)求加入到對(duì)應(yīng)監(jiān)聽(tīng)隊(duì)列的回調(diào)列表中。當(dāng)數(shù)據(jù)池發(fā)送數(shù)據(jù)索引到監(jiān)聽(tīng)器后,監(jiān)聽(tīng)器調(diào)用數(shù)據(jù)池,獲取數(shù)據(jù)。
支線過(guò)程b3:數(shù)據(jù)池根據(jù)傳入的索引信息,調(diào)用緩存管理器獲取數(shù)據(jù);
支線過(guò)程b4:緩存管理器根據(jù)傳入的索引信息,反序列化數(shù)據(jù)后,返回給會(huì)話監(jiān)聽(tīng)器;
支線過(guò)程b5:會(huì)話監(jiān)聽(tīng)器把從緩存管理器獲取的數(shù)據(jù)返回給WEB組件;
支線過(guò)程b6:WEB組件接受數(shù)據(jù)后,根據(jù)約定的格式組裝數(shù)據(jù)并返回給瀏覽器。
上述具體實(shí)施方式僅是本發(fā)明的具體個(gè)案,本發(fā)明的專(zhuān)利保護(hù)范圍包括但不限于上述具體實(shí)施方式,任何符合本發(fā)明的權(quán)利要求書(shū)的且任何所屬技術(shù)領(lǐng)域的普通技術(shù)人員對(duì)其所做的適當(dāng)變化或替換,皆應(yīng)落入本發(fā)明的專(zhuān)利保護(hù)范圍。