亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

基于Node的事件處理方法及相關服務端設備與流程

文檔序號:12176619閱讀:192來源:國知局
基于Node的事件處理方法及相關服務端設備與流程

本公開涉及事件處理技術領域,尤其涉及一種基于Node的事件處理方法及相關服務端設備。



背景技術:

Node是一個基于Google V8引擎建立的Javascript腳本運行平臺,應用于服務端,用于方便地搭建響應速度快、易于擴展的網(wǎng)絡應用。Node的一個主要特性為使用單線程處理方式,即同一時刻Node中只存在一個事件處理線程,所有Javascript代碼均由該事件處理線程執(zhí)行,可以避免多線程編程需要時刻注意狀態(tài)同步的問題,避免代碼在運行過程中出現(xiàn)死鎖現(xiàn)象,同時消除線程切換造成的性能開銷。

但是,單線程處理方式的引入,也使得Node只有在處理完當前事件后,才可以處理另一個事件,造成Node對密集計算事件的處理能力較差。具體的,所謂密集計算事件,即運算操作占用主要事件處理時間,其他操作(如,數(shù)據(jù)的讀/寫)所占時間很少甚至可以忽略不計的事件,如大循環(huán)、圖像處理等;有鑒于此,Node在處理所述密集計算事件時,運行于處理器中的事件處理線程需要被長時間占用來執(zhí)行具體的運算操作。

如圖1所示的信號流圖,基于Node的事件處理線程(運行于中央處理器(Central Processing Unit,CPU)中)在處理請求2對應的密集計算事件時,雖然先后接收到I/O設備返回的請求1對應的目標數(shù)據(jù),以及客戶端發(fā)送的請求3,但都無法處理,只能將其存入事件隊列,待請求2處理完成后,再先后從事件隊列中讀取并處理,將I/O設備返回的數(shù)據(jù)轉發(fā)給客戶端,通過異步調(diào)用方式通知I/O設備返回請求3對應的目標數(shù)據(jù),嚴重影響了服務端對客戶端的響應速度。

可見,現(xiàn)有基于Node的事件處理方法在遇到密集計算事件時,處理器資源被長時間占用,使得系統(tǒng)處于阻塞狀態(tài),系統(tǒng)整體性能下降。



技術實現(xiàn)要素:

為克服相關技術中存在的問題,本公開提供一種基于Node的事件處理方法及相關服務端設備。

本公開第一方面提供一種基于Node的事件處理方法,包括:

判斷待處理事件是否為密集計算事件;

如果所述待處理事件為密集計算事件,則調(diào)用輔助處理器,以觸發(fā)所述輔助處理器處理所述待處理事件;

通過回調(diào)函數(shù)獲取所述輔助處理器的處理結果。

結合第一方面,在第一方面第一種可行的實施方式中,所述輔助處理器包括:圖形處理器GPU。

結合第一方面,或者第一方面第一種可行的實施方式,在第一方面第二種可行的實施方式中,所述調(diào)用輔助處理器,包括:異步調(diào)用輔助處理器。

結合第一方面第二種可行的實施方式,在第一方面第三種可行的實施方式中,所述異步調(diào)用輔助處理器包括:

通過基于C語言的指令與所述輔助處理器交互,將所述待處理事件發(fā)送至所述輔助處理器。

結合第一方面,或者第一方面第一種可行的實施方式,在第一方面第四種可行的實施方式中,所述事件處理方法還包括:

檢測是否存在來自客戶端的密集計算請求;

在檢測到所述密集計算請求時,將其封裝為密集計算事件,并將所述密集計算事件存入事件隊列。

本公開第二方面提供一種基于Node的服務端設備,包括:主處理器和輔助處理器;

其中,所述主處理器包括:事件類型判斷單元和事件處理調(diào)度單元;

所述事件類型判斷單元用于,判斷待處理事件是否為密集計算事件;

所述事件處理調(diào)度單元用于,在所述待處理事件為密集計算事件時,調(diào)用所述輔助處理器,以觸發(fā)所述輔助處理器處理所述待處理事件;

所述輔助處理器用于,在被調(diào)用后,處理所述待處理事件,并通過回調(diào)函數(shù)將處理結果返回至所述主處理器。

結合第二方面,在第二方面第一種可行的實施方式中,所述輔助處理器包括:圖形處理器GPU。

結合第二方面,或者第二方面第一種可行的實施方式,在第二方面第二種可行的實施方式中,為實現(xiàn)調(diào)用所述輔助處理器,所述事件處理調(diào)度單元被配置為:異步調(diào)用輔助處理器。

結合第二方面第二種可行的實施方式,在第二方面第三種可行的實施方式中,為實現(xiàn)異步調(diào)用所述輔助處理器,所述事件處理調(diào)度單元被配置為:

通過基于C語言的指令與所述輔助處理器交互,將所述待處理事件發(fā)送至所述輔助處理器。

結合第二方面,或者第二方面第一種可行的實施方式,在第二方面第四種可行的實施方式中,所述服務端設備還包括:

密集計算事件監(jiān)聽器,用于檢測是否存在來自客戶端的密集計算請求,在檢測到所述密集計算請求時,將其封裝為密集計算事件,并將所述密集計算事件存入事件隊列,以待所述事件類型判斷單元讀取并處理。

由上述技術方案可知,本公開中基于Node的事件處理線程在遇到密集計算事件時,調(diào)用輔助處理器,并由該輔助處理器來執(zhí)行該密集計算事件,從而主處理器可以繼續(xù)讀取并處理下一個待處理事件,避免密集計算事件相關的大量運算操作長時間占用事件處理線程,提高事件處理線程對密集計算事件的處理效率,避免阻塞現(xiàn)象,進而提高相關設備或系統(tǒng)的性能。

應當理解的是,以上的一般描述和后文的細節(jié)描述僅是示例性和解釋性的,并不能限制本公開。

附圖說明

此處的附圖被并入說明書中并構成本說明書的一部分,示出了符合本發(fā)明的實施例,并與說明書一起用于解釋本發(fā)明的原理。

圖1是現(xiàn)有基于Node的事件處理方法的信號流圖。

圖2是根據(jù)一示例性實施例示出的基于Node的事件處理方法的流程圖。

圖3是根據(jù)一示例性實施例示出的基于Node的事件處理方法的信號流圖。

圖4是根據(jù)一示例性實施例示出的一種基于Node的服務端設備的框圖。

圖5是根據(jù)一示例性實施例示出的另一種基于Node的服務端設備的框圖。

具體實施方式

這里將詳細地對示例性實施例進行說明,其示例表示在附圖中。下面的描述涉及附圖時,除非另有表示,不同附圖中的相同數(shù)字表示相同或相似的要素。以下示例性實施例中所描述的實施方式并不代表與本發(fā)明相一致的所有實施方式。相反,它們僅是與如所附權利要求書中所詳述的、本發(fā)明的一些方面相一致的裝置和方法的例子。

圖2是根據(jù)一示例性實施例示出的一種基于Node的事件處理方法的流程圖。參照圖2,該方法包括以下步驟。

S11、獲取待處理事件;

S12、判斷所述待處理事件是否為密集計算事件,如果是,則執(zhí)行步驟S13,否則執(zhí)行步驟S14。

上述密集計算事件,即運算操作占用主要事件處理時間,其他操作(如,數(shù)據(jù)的讀/寫)所占時間很少甚至可以忽略不計的事件,如大循環(huán)、圖像處理等事件。

S13、如果所述待處理事件為密集計算事件,則調(diào)用輔助處理器,以觸發(fā)所述輔助處理器處理所述待處理事件,并通過回調(diào)函數(shù)獲取所述輔助處理器的處理結果。

上述輔助處理器可以為具有通用計算能力的任一處理器,優(yōu)選計算能力強的處理器。本申請實施例中,基于Node的事件處理線程在確認待處理事件為密集計算事件時,不再在該事件處理線程內(nèi)處理該密集計算事件,也即不再如現(xiàn)有技術一樣由該事件處理線程所在的主處理器(如CPU)執(zhí)行密集計算事件相關的大量運算操作,而是調(diào)用輔助處理器,并由該輔助處理器來執(zhí)行該密集計算事件,從而主處理器可以繼續(xù)讀取并處理下一個待處理事件,避免密集計算事件相關的大量運算操作長時間占用事件處理線程??梢?,本實施例提供的事件處理方法相當于將密集計算事件委托給更擅長執(zhí)行運算操作的輔助處理器,擅長復雜邏輯處理的主處理器只負責事件循環(huán)隊列的調(diào)度,可以提高各個硬件資源的利用率,從而可以整體提高相關設備或系統(tǒng)(如Node服務器)的性能。

主處理器在通過回調(diào)函數(shù)獲取輔助處理器對密集計算事件的處理結果后,可以通過運行該回調(diào)函數(shù)完成該密集計算事件的后續(xù)處理邏輯(如編輯數(shù)據(jù)格式等),并將回調(diào)函數(shù)的處理結果反饋給發(fā)送相應密集計算請求的客戶端。

S14、如果所述待處理事件不是密集計算事件,則采用現(xiàn)有的事件處理方法處理所述待處理事件。

對于密集計算事件之外的其他類型的事件,可仍由主處理器基于現(xiàn)有技術中基于Node的事件處理方法;例如,采用非阻塞I/O方式處理I/O請求事件。

為更直觀的說明本實施例與現(xiàn)有技術的區(qū)別,圖3示出了相對于圖1所示信號流圖,對于相同的3個請求,當采用本申請所述的事件處理方法時的信號流。

參照圖3,運行于CPU(主處理器)中的事件處理線程在開始處理請求2對應的事件時,確定請求2對應的事件(當前的待處理事件)為密集計算事件,故調(diào)用輔助處理器,即將密集計算事件委托給輔助處理器來處理;在輔助處理器處理請求2的同時,事件處理線程可以繼續(xù)處理下一個事件,即將I/O設備返回的請求1對應的目標數(shù)據(jù)及時將其反饋至客戶端;對于請求3,無論其發(fā)起時輔助處理設備是否已完成對請求2的處理,都可以及時通知I/O設備返回請求3對應的目標數(shù)據(jù)。因此,圖3所示信號流圖中不存在圖1所示的阻塞現(xiàn)象。

由以上描述可知,本實施例提供的事件處理方法,基于Node的事件處理線程在遇到密集計算事件時,調(diào)用輔助處理器,并由該輔助處理器來執(zhí)行該密集計算事件,從而主處理器可以繼續(xù)讀取并處理下一個待處理事件,避免密集計算事件相關的大量運算操作長時間占用事件處理線程,提高事件處理線程對密集計算事件的處理效率,避免阻塞現(xiàn)象,進而提高相關設備或系統(tǒng)的性能。

在本申請一個可行的實施例中,上述通過回調(diào)函數(shù)獲取所述輔助處理器的處理結果,具體可以為:主處理器在調(diào)用輔助處理器時,將待處理的密集計算事件和回調(diào)函數(shù)的指針(即該回調(diào)函數(shù)的地址)一并發(fā)送至輔助處理器,從而輔助處理器在得到處理結果后,可以根據(jù)該指針尋址到回調(diào)函數(shù),進而將處理結果輸入該回調(diào)函數(shù)返回至主處理器。

在本申請另一個可行的實施例中,上述輔助處理器具體可以采用圖形處理器(Graphics Processing Unit,GPU)。

GPU中設置有大量的執(zhí)行單元,具有強于CPU數(shù)倍的計算能力;因此,相對于現(xiàn)有事件處理方法,本實施例利用GPU處理密集計算事件,可以用更少的時間完成相同的計算任務,從而可以更快的向事件處理線程返回處理結果,進一步提高相關設備或系統(tǒng)的整體性能。

在本申請又一個可行的實施例中,上述步驟S13所述的調(diào)用輔助處理器,可以為:異步調(diào)用所述輔助處理器。更具體的,可以通過如下方式實現(xiàn)異步調(diào)用所述輔助處理器:通過基于C語言的指令與所述輔助處理器交互,將所述密集計算事件發(fā)送至所述輔助處理器;即,通過在主處理器中設置基于C語言的擴展模塊,實現(xiàn)主處理器與輔助處理器的應用程序編程接口(Application Programming Interface,API)進行關聯(lián)。

在本申請另一個可行的實施例中,上述基于Node的事件處理方法還包括如下步驟:

檢測是否存在來自客戶端的密集計算請求,如果檢測到密集計算請求,將其封裝為密集計算事件,并將所述密集計算事件存入事件隊列。

基于Node的事件處理方法,采用事件循環(huán)機制中,即事件處理線程循環(huán)檢測事件隊列中是否存在未處理事件,并逐個讀取并處理檢測到的未處理事件,即步驟S11實際是從事件隊列中獲取待處理事件;因此,本申請實施例可以在基于Node的設備或系統(tǒng)中設置對應密集計算請求的事件監(jiān)聽器,以實時檢測是否接收到來自客戶端的密集計算請求,如果檢測到密集計算請求,則將其封裝為密集計算事件并存入事件隊列,以待事件處理線程統(tǒng)一調(diào)度處理。

圖4是根據(jù)一示例性實施例示出的一種基于Node的服務端設備的框圖;例如,該服務端設備可以為Node服務器。參照圖4,該服務端設備至少包括主處理器100和輔助 處理器200。

其中,上述主處理器100一般為CPU,具體包括:事件類型判斷單元101和事件處理調(diào)度單元102。

該事件類型判斷單元101被配置為:判斷待處理事件是否為密集計算事件。

該事件處理調(diào)度單元102被配置為:在所述待處理事件為密集計算事件時,調(diào)用所述輔助處理器200,以觸發(fā)所述輔助處理器200處理所述待處理事件。

上述輔助處理器200用于,在被調(diào)用后,處理所述待處理事件,并通過回調(diào)函數(shù)將處理結果返回至所述主處理器100。

由以上技術方案可知,本實施例提供的基于Node的服務端設備中,事件處理線程在遇到密集計算事件時,調(diào)用輔助處理器,并由該輔助處理器來執(zhí)行該密集計算事件,從而主處理器可以繼續(xù)讀取并處理下一個待處理事件,避免密集計算事件相關的大量運算操作長時間占用事件處理線程,提高事件處理線程對密集計算事件的處理效率,避免阻塞現(xiàn)象,進而提高相關設備或系統(tǒng)的性能。

在本申請一個可行的實施例中,上述輔助處理器200具體可以為GPU(即,圖形處理器)。

在本申請另一個可行的實施例中,事件處理調(diào)度單元102調(diào)用輔助處理器200時,可以采用異步調(diào)用的方式;更具體的,可以通過基于C語言的指令與輔助處理器200交互,將所述密集計算事件發(fā)送至輔助處理器200。

參照圖5,本申請實例提供的另一種基于Node的服務端設備,還可以包括密集計算事件監(jiān)聽器300。該密集計算事件監(jiān)聽器300用于,檢測是否存在來自客戶端的密集計算請求,在檢測到所述密集計算請求時,將其封裝為密集計算事件,并將所述密集計算事件存入事件隊列,以待事件類型判斷單元101讀取并處理。

關于上述實施例中的裝置,其中各個部件執(zhí)行操作的具體方式已經(jīng)在有關該方法的實施例中進行了詳細描述,此處將不做詳細闡述說明。

本領域技術人員在考慮說明書及實踐這里公開的發(fā)明后,將容易想到本發(fā)明的其它實施方案。本申請旨在涵蓋本發(fā)明的任何變型、用途或者適應性變化,這些變型、用途或者適應性變化遵循本發(fā)明的一般性原理并包括本公開未公開的本技術領域中的公知常識或慣用技術手段。說明書和實施例僅被視為示例性的,本發(fā)明的真正范圍和精神由下面的權利要求指出。

應當理解的是,本發(fā)明并不局限于上面已經(jīng)描述并在附圖中示出的精確結構,并且可以在不脫離其范圍進行各種修改和改變。本發(fā)明的范圍僅由所附的權利要求來限制。

當前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1