使用客戶端-服務(wù)器架構(gòu)的流處理的制作方法
【專利摘要】使用流處理對請求進行響應(yīng)的方法能夠包括從服務(wù)器接收服務(wù)器請求,其中,所述服務(wù)器被配置成響應(yīng)于客戶端請求而生成服務(wù)器請求,并生成與服務(wù)器請求相關(guān)聯(lián)的請求。該方法能夠包括響應(yīng)于服務(wù)器請求而將從服務(wù)器請求導(dǎo)出的流處理請求發(fā)送到第一流處理節(jié)點。該流處理請求能夠包括請求標(biāo)識符。響應(yīng)于從第二流處理節(jié)點接收到包括流處理結(jié)果和請求標(biāo)識符的創(chuàng)建顯影消息,能夠使流處理結(jié)果與服務(wù)器請求相關(guān)。能夠?qū)⒅付魈幚斫Y(jié)果的寫響應(yīng)消息發(fā)送到服務(wù)器。
【專利說明】使用客戶端-服務(wù)器架構(gòu)的流處理
【技術(shù)領(lǐng)域】
[0001]在本說明書內(nèi)公開的一個或多個實施方式涉及流處理。
【背景技術(shù)】
[0002]在常規(guī)數(shù)據(jù)分析中,針對靜態(tài)數(shù)據(jù)應(yīng)用查詢。一般地,流處理指的是其中能夠評估被稱為數(shù)據(jù)流或流的變化數(shù)據(jù)的數(shù)據(jù)處理技術(shù)。盡管能夠隨時間推移而修改或更新查詢,能夠通過對變化數(shù)據(jù)流應(yīng)用大體上靜態(tài)的查詢來評估數(shù)據(jù)流。在某些情況下,被查詢的數(shù)據(jù)流能夠快速地改變。例如,能夠?qū)⒁u估的數(shù)據(jù)流視為諸如實時或近實時信息的持續(xù)信息流。與數(shù)據(jù)可存儲在數(shù)據(jù)庫或其他數(shù)據(jù)存儲系統(tǒng)內(nèi)的靜態(tài)數(shù)據(jù)進行操作相反,實現(xiàn)流處理的節(jié)點能夠?qū)?shù)據(jù)流進行操作。
【發(fā)明內(nèi)容】
[0003]在本說明書內(nèi)公開的一個或多個實施方式涉及流處理,并且更特別地涉及使用客戶端-服務(wù)器型架構(gòu)的流處理。
[0004]實施方式能夠包括使用流處理來對請求進行響應(yīng)的方法。該方法能夠包括接收來自服務(wù)器的服務(wù)器請求,其中該服務(wù)器被配置成響應(yīng)于客戶端請求而生成服務(wù)器請求,并且生成與服務(wù)器請求相關(guān)聯(lián)的請求標(biāo)識符。響應(yīng)于服務(wù)器請求,能夠向第一流處理節(jié)點發(fā)送從服務(wù)器請求導(dǎo)出的流處理請求。該流處理請求能夠包括請求標(biāo)識符。響應(yīng)于接收來自第二流處理節(jié)點的包括流處理結(jié)果和請求標(biāo)識符的創(chuàng)建響應(yīng)消息,能夠使用處理器使流處理結(jié)果與服務(wù)器請求相關(guān)。能夠向服務(wù)器發(fā)送包括流處理結(jié)果的寫響應(yīng)消息。
[0005]另一實施方式能夠包括使用流處理對請求進行響應(yīng)的方法。該方法能夠包括響應(yīng)于客戶端請求來分配用于處置客戶端請求的處理線程并在該處理線程內(nèi)建立返回連接。能夠向流服務(wù)器發(fā)送從客戶端請求導(dǎo)出的服務(wù)器請求。能夠?qū)⒘鞣?wù)器配置成與多個流處理節(jié)點交互。服務(wù)器請求能夠包括指定處理線程的線程標(biāo)識符。能夠?qū)⒂糜谔幹每蛻舳苏埱蟮奶幚砭€程保持在使來自流服務(wù)器的寫響應(yīng)消息待決的空閑狀態(tài)。響應(yīng)于接收來自流服務(wù)器的包括流處理結(jié)果和線程標(biāo)識符的寫響應(yīng)消息,能夠使用處理器使由線程標(biāo)識符指定的處理線程返回至活動狀態(tài)。能夠通過返回連接將包括流處理結(jié)果的客戶端響應(yīng)發(fā)送到客戶端。
[0006]另一實施方式能夠包括用于使用流處理對請求進行響應(yīng)的系統(tǒng)。該系統(tǒng)能夠包括具有用其體現(xiàn)的計算機可讀程序代碼的計算機可讀存儲介質(zhì)和被耦合到計算機可讀存儲介質(zhì)的處理器。響應(yīng)于執(zhí)行計算機可讀程序代碼,能夠?qū)⒃撎幚砥髋渲贸蓤?zhí)行可執(zhí)行操作??蓤?zhí)行操作能夠包括接收來自服務(wù)器的服務(wù)器請求,其中服務(wù)器被配置成響應(yīng)于客戶端請求而生成服務(wù)器請求,生成與服務(wù)器請求相關(guān)聯(lián)的請求標(biāo)識符,并且響應(yīng)于服務(wù)器請求而向第一流處理節(jié)點發(fā)送從服務(wù)器請求導(dǎo)出的流處理請求。該流處理請求能夠包括請求標(biāo)識符。響應(yīng)于接收來自第二流處理節(jié)點的包括流處理結(jié)果和請求標(biāo)識符的創(chuàng)建響應(yīng)消息,能夠使流處理結(jié)果與服務(wù)器請求相關(guān)。能夠向服務(wù)器發(fā)送包括流處理結(jié)果的寫響應(yīng)消息。[0007]另一實施方式能夠包括用于使用流處理對請求進行響應(yīng)的系統(tǒng)。該系統(tǒng)能夠包括具有用其體現(xiàn)的計算機可讀程序代碼的計算機可讀存儲介質(zhì)和被耦合到計算機可讀存儲介質(zhì)的處理器。響應(yīng)于執(zhí)行計算機可讀程序代碼,能夠?qū)⒃撎幚砥髋渲贸蓤?zhí)行可執(zhí)行操作??蓤?zhí)行操作能夠包括:響應(yīng)于客戶端請求而分配用于處置客戶端請求的處理線程,在該處理線程內(nèi)建立返回連接,并向被配置成與多個流處理節(jié)點交互的流服務(wù)器發(fā)送從客戶端請求導(dǎo)出的服務(wù)器請求。服務(wù)器請求能夠包括指定處理線程的線程標(biāo)識符??蓤?zhí)行操作還能夠包括將用于處理客戶端請求的處理線程保持在使來自流服務(wù)器的寫響應(yīng)消息待決的空閑狀態(tài),并且響應(yīng)于從流服務(wù)器接收包括流處理結(jié)果和線程標(biāo)識符的寫響應(yīng)消息,而使由線程標(biāo)識符指定的線程返回至活動狀態(tài)。能夠通過返回連接向客戶端發(fā)送包括流處理結(jié)果的客戶端響應(yīng)。
[0008]另一實施方式能夠包括用于使用流處理對請求進行響應(yīng)的計算機程序產(chǎn)品。該計算機程序產(chǎn)品能夠包括具有用其體現(xiàn)的計算機可讀程序代碼的計算機可讀存儲介質(zhì)。該計算機可讀程序代碼能夠包括被配置成接收來自服務(wù)器的服務(wù)器請求的計算機可讀程序代碼,其中,所述服務(wù)器被配置成響應(yīng)于客戶端請求而生成服務(wù)器請求,并且計算機可讀程序代碼被配置成生成與服務(wù)器請求相關(guān)聯(lián)的請求標(biāo)識符。該計算機可讀程序代碼還能夠包括計算機可讀程序代碼,其被配置成響應(yīng)于服務(wù)器請求而向第一流處理節(jié)點發(fā)送從服務(wù)器請求導(dǎo)出的流處理請求。該流處理請求能夠包括請求標(biāo)識符。該計算機可讀程序代碼能夠包括計算機可讀程序代碼,其被配置成響應(yīng)于接收來自第二流處理節(jié)點的包括流處理結(jié)果和請求標(biāo)識符的創(chuàng)建響應(yīng)消息而使流處理結(jié)果與服務(wù)器請求相關(guān)。該計算機可讀程序代碼還能夠包括被配置成向服務(wù)器發(fā)送包括流處理結(jié)果的寫響應(yīng)消息的計算機可讀程序代碼。
【專利附圖】
【附圖說明】
[0009]圖1是圖示出示例性數(shù)據(jù)處理系統(tǒng)的第一框圖。
[0010]圖2是圖示出根據(jù)在本說明內(nèi)公開的實施方式的用于流處理的系統(tǒng)的框圖。
[0011]圖3是圖示出根據(jù)在本說明書內(nèi)公開的另一實施方式的用于流處理的系統(tǒng)的框圖。
[0012]圖4是圖示出根據(jù)在本說明書內(nèi)公開的另一實施方式的使用流處理對請求進行響應(yīng)的方法的流程圖。
[0013]圖5是圖示出根據(jù)在本說明書內(nèi)公開的另一實施方式的使用流處理對請求進行響應(yīng)的方法的流程圖。
【具體實施方式】
[0014]如本領(lǐng)域的技術(shù)人員將認識到的,可以將本發(fā)明的各方面體現(xiàn)為系統(tǒng)、方法或計算機程序產(chǎn)品。因此,本公開可以具體實現(xiàn)為以下完全硬件實施方式、完全軟件實施方式(包括固件、駐留軟件、微代碼等)或?qū)④浖陀布矫娼M合的實施方式的形式,在本文中一般地可將其全部稱為“電路”、“模塊”或“系統(tǒng)”。此外,本發(fā)明的各方面還可采取在一個或多個計算機可讀介質(zhì)中體現(xiàn)的計算機程序產(chǎn)品的形式,該計算機可讀介質(zhì)具有在其上面體現(xiàn)的、例如存儲的計算機可讀程序代碼。
[0015]可利用一個或多個計算機可讀介質(zhì)的任何組合。計算機可讀介質(zhì)可以是計算機可讀信號介質(zhì)或計算機可讀存儲介質(zhì)。計算機可讀存儲介質(zhì)例如可以是一但不限于一電、磁、光、電磁、紅外線、或半導(dǎo)體的系統(tǒng)、裝置或器件,或者任意以上的組合。計算機可讀存儲介質(zhì)的更多具體的例子(非窮舉的列表)包括:具有一個或多個導(dǎo)線的電連接、便攜式計算機盤、硬盤、隨機存取存儲器(RAM)、只讀存儲器(ROM)、可擦式可編程只讀存儲器(EPROM或閃存)、光纖、便攜式緊湊盤只讀存儲器(CD-ROM)、光存儲器件、磁存儲器件、或者上述的任意合適的組合。在本文件的上下文中,計算機可讀存儲介質(zhì)可以是任何包含或存儲程序的有形介質(zhì),該程序可以被指令執(zhí)行系統(tǒng)、裝置或者器件使用或者與其結(jié)合使用。
[0016]計算機可讀信號介質(zhì)可以包括具有在其中體現(xiàn)(例如在基帶中或作為載波的一部分)的計算機可讀程序代碼的傳播數(shù)據(jù)信號。此類傳播信號可以采取多種形式中的任何一個,包括但不限于電磁、光或其任意適當(dāng)?shù)慕M合。計算機可讀的信號介質(zhì)還可以是計算機可讀存儲介質(zhì)以外的任何計算機可讀介質(zhì),該計算機可讀介質(zhì)可以發(fā)送、傳播或者傳輸用于由指令執(zhí)行系統(tǒng)、裝置或者器件使用或者與其結(jié)合使用的程序。
[0017]計算機可讀介質(zhì)上包含的程序代碼可以用任何適當(dāng)?shù)慕橘|(zhì)傳輸,包括一但不限于——無線、有線、光纖、電纜、RF等等,或者上述的任意合適的組合??梢砸砸环N或多種程序設(shè)計語言的任意組合來編寫用于執(zhí)行本發(fā)明操作的計算機程序代碼,所述程序設(shè)計語言包括面向?qū)ο蟮某绦蛟O(shè)計語言-諸如Java?、Smalltalk、C++等,還包括常規(guī)的過程式程序設(shè)計語言-諸如“C”語言或類似的程序設(shè)計語言。程序代碼可以完全地在用戶計算機上執(zhí)行、部分地在用戶計算機上執(zhí)行、作為一個獨立的軟件包執(zhí)行、部分在用戶計算機上部分在遠程計算機上執(zhí)行、或者完全在遠程計算機或服務(wù)器上執(zhí)行。在后一情形中,遠程計算機可以通過任意種類的網(wǎng)絡(luò)一包括局域網(wǎng)(LAN)或廣域網(wǎng)(WAN)—連接到用戶計算機,或者,可以連接到外部計算機(例如利用因特網(wǎng)服務(wù)提供商來通過因特網(wǎng)連接)。
[0018]下面將參照根據(jù)本發(fā)明實施方式的方法、裝置(系統(tǒng))和計算機程序產(chǎn)品的流程圖和/或框圖描述了本發(fā)明的各方面。將理解的是,可以由計算機程序指令來實現(xiàn)流程圖和/或方框圖的每個方框以及流程圖和/或方框圖中的方框的組合。這些計算機程序指令可以提供給通用計算機、專用計算機或其他可編程數(shù)據(jù)處理裝置的處理器,從而生產(chǎn)出一種機器,使得這些計算機程序指令在通過計算機、可編程數(shù)據(jù)處理裝置或其他設(shè)備的處理器執(zhí)行時,產(chǎn)生實現(xiàn)流程圖和/或框圖中的一個或多個方框中規(guī)定的功能/動作的裝置。
[0019]也可以把這些計算機程序指令存儲在計算機可讀介質(zhì)中,這些指令使得計算機、其他可編程數(shù)據(jù)處理裝置、或其他設(shè)備以特定方式工作,從而,存儲在計算機可讀介質(zhì)中的指令就產(chǎn)生出包括實現(xiàn)流程圖和/或框圖中的一個或多個方框中規(guī)定的功能/動作的指令的制造品(article of manufacture)0
[0020]也可以把計算機程序指令加載到計算機、其他可編程數(shù)據(jù)處理裝置、或其他設(shè)備上,使得在計算機、其他可編程數(shù)據(jù)處理裝置或其他設(shè)備上執(zhí)行一系列操作步驟,以產(chǎn)生計算機實現(xiàn)的過程,從而使得在計算機或其他可編程裝置上執(zhí)行的指令能夠提供實現(xiàn)流程圖和/或框圖中的方框中規(guī)定的功能/操作的過程。
[0021]附圖中的流程圖和框圖顯示了根據(jù)本發(fā)明的多個實施方式的系統(tǒng)、方法和計算機程序產(chǎn)品的可能實現(xiàn)的體系架構(gòu)、功能和操作。在這點上,流程圖或框圖中的每個方框可以代表一個模塊、程序段或代碼的一部分,所述模塊、程序段或代碼的一部分包含一個或多個用于實現(xiàn)規(guī)定的邏輯功能的可執(zhí)行指令。還應(yīng)注意的是,在有些作為替換的實現(xiàn)中,方框中所標(biāo)注的功能也可以以不同于附圖中所標(biāo)注的順序發(fā)生。例如,兩個連續(xù)的方框?qū)嶋H上可以基本并行地執(zhí)行,它們有時也可以按相反的順序執(zhí)行,這依所涉及的功能而定。還應(yīng)注意的是,框圖和/或流程圖中的每個方框、以及框圖和/或流程圖中的方框的組合,可以用執(zhí)行規(guī)定的功能或動作的專用的基于硬件的系統(tǒng)來實現(xiàn),或者可以用專用硬件與計算機指令的組合來實現(xiàn)。
[0022]在本說明書內(nèi)公開的一個或多個實施方式涉及流處理,并且更特別地涉及使用客戶端-服務(wù)器型架構(gòu)的流處理。根據(jù)本文公開的一個或多個實施方式,能夠?qū)崿F(xiàn)一種在流處理系統(tǒng)內(nèi)結(jié)合超文本傳輸協(xié)議(HTTP)服務(wù)器的功能的系統(tǒng)。如在本說明書內(nèi)描述了HTTP服務(wù)器功能的包括在不必重新設(shè)計現(xiàn)有HTTP服務(wù)器的情況下促進流處理技術(shù)在更多常規(guī)系統(tǒng)內(nèi)的使用。流處理系統(tǒng)能夠作為可用于通過客戶端-服務(wù)器型架構(gòu)發(fā)布的服務(wù)請求的Web Service (網(wǎng)絡(luò)服務(wù))進行操作。
[0023]圖1是圖示出示例性數(shù)據(jù)處理系統(tǒng)(系統(tǒng))100的第一框圖。系統(tǒng)100能夠包括通過系統(tǒng)總線115被耦合到存儲器元件110的至少一個處理器105。這樣,系統(tǒng)100能夠?qū)⒊绦虼a存儲在存儲器元件110內(nèi)。處理器105能夠經(jīng)由系統(tǒng)總線115執(zhí)行從存儲器元件110訪問的程序代碼。在一個方面,例如,能夠?qū)⑾到y(tǒng)100實現(xiàn)為適合于存儲和/或執(zhí)行程序代碼的計算機。然而,應(yīng)認識到,能夠以包括能夠執(zhí)行在本說明書內(nèi)描述的功能的處理器和存儲器的任何系統(tǒng)的形式來實現(xiàn)系統(tǒng)100。
[0024]存儲器元件110能夠包括一個或多個物理存儲器件,諸如,例如本地存儲器120和一個或多個大容量存儲器件125。本地存儲器120指的是一般地在程序代碼的實際執(zhí)行期間使用的隨機存取存儲器或其他非持久性存儲器件。能夠?qū)⒋笕萘看鎯ζ骷?25實現(xiàn)為硬盤驅(qū)動器或其他持久性數(shù)據(jù)存儲器件。系統(tǒng)100還能夠包括一個或多個高速緩沖存儲器(未示出),其提供至少某些程序代碼的臨時存儲,以便減少在執(zhí)行期間必須從大容量存儲器件125檢索程序代碼的次數(shù)。
[0025]能夠可選地將被描述為輸入設(shè)備130和輸出設(shè)備135的輸入/輸出(I/O)設(shè)備率禹合到系統(tǒng)100。輸入設(shè)備130的示例能夠包括但不限于例如鍵盤、諸如鼠標(biāo)之類的定點設(shè)備等。輸出設(shè)備135的示例能夠包括但不限于例如監(jiān)視器或顯示器、揚聲器等。能夠直接地或通過中間I/O控制器將輸入設(shè)備130和/或輸出設(shè)備135耦合到系統(tǒng)100。還能夠?qū)⒕W(wǎng)絡(luò)適配器140耦合到系統(tǒng)100以使得系統(tǒng)100能夠通過中間私用或公共網(wǎng)絡(luò)被耦合到其他系統(tǒng)、計算機系統(tǒng)、遠程打印機和/或遠程存儲設(shè)備。調(diào)制解調(diào)器、電纜調(diào)制解調(diào)器以及以太網(wǎng)卡是能夠與系統(tǒng)100 —起使用的不同類型的網(wǎng)絡(luò)適配器130的示例。
[0026]如在圖1中所示,存儲器元件110能夠存儲應(yīng)用程序145。應(yīng)認識到的是系統(tǒng)100還能夠執(zhí)行能夠促進應(yīng)用程序145的執(zhí)行的操作系統(tǒng)(未示出)。能夠由系統(tǒng)100、例如由處理器105來執(zhí)行以可執(zhí)行程序代碼的形式實現(xiàn)的應(yīng)用程序145。響應(yīng)于執(zhí)行應(yīng)用程序145,能夠?qū)⑾到y(tǒng)100配置成執(zhí)行如在本文中更詳細地描述的一個或多個操作。
[0027]在一個方面,例如,系統(tǒng)100能夠表示客戶端數(shù)據(jù)處理系統(tǒng)。在那種情況下,應(yīng)用程序145能夠表示客戶端應(yīng)用程序,其在被執(zhí)行時將系統(tǒng)100配置成執(zhí)行在本文中參考“客戶端”所述的各種功能??蛻舳说氖纠軌虬ǖ幌抻趥€人計算機、便攜式計算機、移動電話等。
[0028]在另一方面,系統(tǒng)100能夠表不服務(wù)器。例如,系統(tǒng)100能夠表不HTTP服務(wù)器,在那種情況下,應(yīng)用程序145在被執(zhí)行時能夠?qū)⑾到y(tǒng)100配置成執(zhí)行HTTP服務(wù)器操作。在另一方面,系統(tǒng)100能夠表示流處理系統(tǒng)的流處理節(jié)點,諸如將在本說明書內(nèi)更詳細地描述的流處理節(jié)點或HTTP流服務(wù)器。相應(yīng)地,應(yīng)用程序145在被執(zhí)行時能夠?qū)⑾到y(tǒng)100配置成視情況而執(zhí)行HTTP流服務(wù)器和/或流處理節(jié)點操作。
[0029]圖2是圖示出根據(jù)在本說明內(nèi)公開的實施方式的用于流處理的系統(tǒng)200的框圖。一般地,諸如系統(tǒng)200之類的流處理系統(tǒng)能夠接收并處理一個或多個數(shù)據(jù)流。
[0030]數(shù)據(jù)流能夠指的是能夠是持續(xù)數(shù)據(jù)流或近持續(xù)數(shù)據(jù)流的數(shù)據(jù)流。在某些情況下,數(shù)據(jù)流能夠是如能夠從被配置成連續(xù)地輸出讀數(shù)或測量的從傳感器接收的實時數(shù)據(jù)流。在另一示例中,數(shù)據(jù)流能夠是被實時地或近實時地更新和發(fā)送、指定證券價格的市場數(shù)據(jù)。數(shù)據(jù)流的其他示例能夠包括直播新聞饋送內(nèi)容,無論是文本、音頻、視覺還是視聽形式、診斷數(shù)據(jù)、天氣數(shù)據(jù)等。一般地,數(shù)據(jù)流表示相對持續(xù)數(shù)據(jù)流,其并不與一般地用基于因特網(wǎng)的網(wǎng)站找到或?qū)崿F(xiàn)的常規(guī)客戶端-服務(wù)器請求響應(yīng)型信息流相對應(yīng)或相符合。一般地,數(shù)據(jù)流是單向的,并且從產(chǎn)生數(shù)據(jù)流的特定節(jié)點流出。
[0031]如所示,系統(tǒng)200能夠包括多個流處理節(jié)點205、210、215、220和225。每個流處理節(jié)點205-225能夠通過網(wǎng)絡(luò)而被通信鏈接。能夠?qū)⒘魈幚砉?jié)點205和210分別地配置成接收數(shù)據(jù)流230和235。在一個方面,數(shù)據(jù)流230和/或235能夠源自于系統(tǒng)200外部。一般地,能夠?qū)⒘魈幚砉?jié)點、諸如從在系統(tǒng)外部的源接收數(shù)據(jù)流的流處理節(jié)點205和210。能夠?qū)⒚總€流處理節(jié)點205-225配置成異步地進行操作。例如,能夠?qū)⒚總€流處理節(jié)點205-225配置成包括單獨處理器并具有單獨的工作隊列。
[0032]流處理節(jié)點205能夠?qū)?shù)據(jù)流230應(yīng)用數(shù)據(jù)處理技術(shù)以確定一個或多個度量或從數(shù)據(jù)流230提取數(shù)據(jù)。能夠?qū)⑺玫亩攘亢?或提取數(shù)據(jù)轉(zhuǎn)發(fā)到每個流處理節(jié)點215和220,如以輸出數(shù)據(jù)流的形式所示。同樣地,流處理節(jié)點210能夠?qū)?shù)據(jù)流235應(yīng)用數(shù)據(jù)處理技術(shù),以確定一個或多個度量或從數(shù)據(jù)流235提取數(shù)據(jù)。能夠?qū)⑺玫亩攘亢?或提取數(shù)據(jù)轉(zhuǎn)發(fā)到每個流處理節(jié)點215和220,如以輸出數(shù)據(jù)流的形式所示。
[0033]流處理節(jié)點215能夠?qū)牧魈幚砉?jié)點205和210接收到的輸出數(shù)據(jù)流應(yīng)用數(shù)據(jù)處理技術(shù),并將一個或多個確定的度量和/或提取的數(shù)據(jù)以另一輸出數(shù)據(jù)流的形式輸出到流處理節(jié)點225。同樣地,流處理節(jié)點220能夠從流處理節(jié)點205和210接收到的輸出數(shù)據(jù)流應(yīng)用數(shù)據(jù)處理技術(shù),并將一個或多個確定的度量和/或提取的數(shù)據(jù)以另一輸出數(shù)據(jù)流的形式輸出到流處理節(jié)點225。
[0034]流處理節(jié)點225能夠基于從流處理節(jié)點215和220中的每個接收到的數(shù)據(jù)來進行最后判定或確定最后結(jié)果。還能夠?qū)⒘魈幚砉?jié)點225配置成將信息(例如結(jié)果)發(fā)送到目的地或其他數(shù)據(jù)處理系統(tǒng)。被配置成在系統(tǒng)外部發(fā)送信息的流處理系統(tǒng)的流處理節(jié)點能夠稱為“匯點”(sink)。
[0035]在實施方式中,作為流處理系統(tǒng)的系統(tǒng)200能夠特征在于需要存儲由流處理節(jié)點205-225處理的很少(如果有的話)的數(shù)據(jù)。在符合客戶端-服務(wù)器架構(gòu)的常規(guī)系統(tǒng)內(nèi),能夠接收并存儲大量的數(shù)據(jù)。通常,數(shù)據(jù)被存儲在數(shù)據(jù)庫內(nèi)。然后能夠針對數(shù)據(jù)庫執(zhí)行查詢,從而要求服務(wù)器具有大量的長期或固定儲存器。
[0036]比較起來,系統(tǒng)200能夠在不必保存來自數(shù)據(jù)流230和/或235的數(shù)據(jù)的情況下對接收數(shù)據(jù)流230和235進行操作。能夠?qū)⒚總€流處理節(jié)點205-225配置成接收數(shù)據(jù)流、對該數(shù)據(jù)流執(zhí)行處理,并生成能夠被發(fā)送至或提供給一個或多個其他節(jié)點的輸出數(shù)據(jù)流。此夕卜,應(yīng)認識到的是能夠存儲如由流處理節(jié)點205-225中的一個或多個確定的一個或多個中間結(jié)果和/或最后結(jié)果,如果這樣期望的話。
[0037]由流處理節(jié)點205-225產(chǎn)生的各種數(shù)據(jù)流能夠在輸出的每個相應(yīng)數(shù)據(jù)流內(nèi)包括請求或其他消息。該消息例如允許流處理節(jié)點205-225傳送與流處理節(jié)點205-225的系統(tǒng)級功能或操作狀態(tài)有關(guān)的特定操作數(shù)據(jù)和/或指令。
[0038]在一個方面,能夠在不同的數(shù)據(jù)處理系統(tǒng)內(nèi)實現(xiàn)每個流處理節(jié)點205-225。然而,在本說明書內(nèi)公開的一個或多個實施方式并不意圖在這方面受到限制。例如,在另一方面,能夠在同一數(shù)據(jù)處理系統(tǒng)內(nèi)實現(xiàn)流處理節(jié)點205-225中的一個或多個。例如,能夠在單個數(shù)據(jù)處理系統(tǒng)內(nèi)實現(xiàn)諸如流處理節(jié)點215和流處理節(jié)點220之類的兩個或更多流處理節(jié)點。
[0039]如圖2中所示,系統(tǒng)200能夠從流處理節(jié)點225(匯點)接收流處理節(jié)點205和210(源)內(nèi)的數(shù)據(jù)流并發(fā)送結(jié)果。系統(tǒng)200不同于其中來自客戶端的請求被節(jié)點接收且該節(jié)點向客戶端返回響應(yīng)的常規(guī)客戶端-服務(wù)器系統(tǒng)。通過從接收到請求的同一節(jié)點向客戶端提供響應(yīng),能夠保持客戶端和服務(wù)器之間的連接或通信鏈路形式的密切關(guān)系(affinity)。在常規(guī)流處理系統(tǒng)內(nèi),如參考圖2舉例說明的,數(shù)據(jù)流入一個或多個流處理節(jié)點中,并從一個或多個不同的流處理節(jié)點離開。相應(yīng)地,保持與客戶端的密切關(guān)系以支持在客戶端-服務(wù)器型系統(tǒng)中使用的請求-響應(yīng)性的交易模型在常規(guī)流處理系統(tǒng)的情況下是不可行的。
[0040]為了使流處理系統(tǒng)表現(xiàn)得像遵守客戶端-服務(wù)器模型或架構(gòu)的Web服務(wù)器,必須在客戶端與源和流處理系統(tǒng)的匯點與客戶端之間保持密切關(guān)系,使得匯點知道結(jié)果將被發(fā)送到的特定客戶端。在一個實施方式中,能夠通過在流處理節(jié)點之間傳播客戶端上下文信息來保持與請求客戶端的密切關(guān)系,使得不丟失流處理節(jié)點與客戶端和/或客戶端請求之間的關(guān)聯(lián)。例如,為了保持向請求客戶端提供響應(yīng)的能力,由每個流處理節(jié)點205-225產(chǎn)生的輸出能夠包括用于發(fā)起被執(zhí)行的流處理的特定客戶端請求的上下文信息。當(dāng)保持密切關(guān)系(例如用于識別客戶端和向哪里發(fā)送響應(yīng)的接收客戶端請求的上下文信息)時,流處理系統(tǒng)能夠確定向哪里發(fā)送客戶端響應(yīng)。
[0041]圖3是圖示出根據(jù)在本說明內(nèi)公開的實施方式的用于流處理的系統(tǒng)300的框圖。如所示,系統(tǒng)300能夠包括HTTP服務(wù)器305、HTTP流服務(wù)器(流服務(wù)器)310以及標(biāo)記為1-N的一個或多個流處理節(jié)點,其中“N”是大于或等于一的整數(shù)值。應(yīng)認識到的是雖然系統(tǒng)300被示為包括三個處理節(jié)點,例如流處理節(jié)點1、2、...、N,但系統(tǒng)300能夠包括較少的流處理節(jié)點,例如I或2個,或者被配置成用于如參考圖2所述的流處理的更多流處理節(jié)點。HTTP服務(wù)器305、流服務(wù)器310以及流處理節(jié)點1、2.....N能夠通過網(wǎng)絡(luò)被通信鏈接。
[0042]一般地,系統(tǒng)300圖示出其中能夠使用客戶端上下文信息來保持請求客戶端(未示出)、例如發(fā)布客戶端請求的客戶端與系統(tǒng)300的源和匯點之間的密切關(guān)系。在系統(tǒng)300內(nèi),能夠?qū)⒘鞣?wù)器310配置成充當(dāng)源和匯點兩者以輔助處理HTTP請求。隨著流處理的發(fā)
生而通過從HTTP服務(wù)器305、到流服務(wù)器310、以及在系統(tǒng)300的流處理節(jié)點1、2.....N之
間傳遞客戶端上下文信息,能夠使流處理結(jié)果與原始客戶端請求相關(guān)并返回給客戶端。如
所討論的,能夠?qū)⒚總€流處理節(jié)點1、2.....N配置成異步地操作。HTTP服務(wù)器305和流服
務(wù)器310的合作操作,這允許系統(tǒng)300至少向諸如客戶端之類的外部系統(tǒng)呈現(xiàn)為異步系統(tǒng)。[0043]能夠?qū)TTP服務(wù)器305配置成從客戶端接收客戶端請求315。客戶端請求15能夠請求能夠由諸如系統(tǒng)300之類的流處理系統(tǒng)來計算或確定的數(shù)據(jù)。在一個方面,HTTP服務(wù)器305能夠分配處理線程以處置客戶端請求315的處理。能夠由HTTP服務(wù)器305內(nèi)的線程標(biāo)識符來識別用于處理客戶端請求315的處理線程。
[0044]在處理線程內(nèi),HTTP服務(wù)器305能夠創(chuàng)建到客戶端的返回連接320。例如,能夠?qū)TTP服務(wù)器305配置成創(chuàng)建返回連接320以返回TCP/IP套接字的形式用于從HTTP服務(wù)器305向客戶端發(fā)送客戶端響應(yīng)375。HTTP服務(wù)器305例如能夠使用客戶端地址和端口來創(chuàng)建返回連接320。應(yīng)認識到的是,用于處置也負責(zé)創(chuàng)建返回連接320的客戶端請求315的線程有效地存儲返回連接320。例如,HTTP服務(wù)器305內(nèi)的處理線程能夠存儲或包括返回連接信息,例如建立返回連接320所需的信息。
[0045]HTTP服務(wù)器305還能夠向流服務(wù)器310提交服務(wù)器請求325。服務(wù)器請求325能夠包括客戶端上下文信息。在實施方式中,由服務(wù)器請求325指定的客戶端上下文信息能夠包括某些或所有客戶端請求。在一個方面,客戶端上下文信息還能夠包括返回連接信息,例如返回連接參考或識別與客戶端的返回連接320的其他信息。在一個示例中,能夠由線程標(biāo)識符來指定或作為線程標(biāo)識符來發(fā)送返回連接信息,該線程標(biāo)識符指定處置客戶端請求315的HTTP服務(wù)器305內(nèi)的處理線程。通過HTTP服務(wù)器305提供客戶端上下文信息,流服務(wù)器310能夠保持與客戶端的密切關(guān)系,盡管并不直接從客戶端接收任何客戶端請求。
[0046]在一個示例中,能夠以“處置”方法的形式來實現(xiàn)服務(wù)器請求325。HTTP服務(wù)器305能夠創(chuàng)建指定客戶端上下文信息的請求對象和響應(yīng)對象。例如,該請求對象能夠包括整個的客戶端請求、客戶端請求的一部分、諸如cookies的客戶端請求的一個或多個參數(shù)和/或其他相關(guān)客戶端信息。響應(yīng)對象能夠指定用于客戶端請求的返回連接信息。例如,該響應(yīng)對象能夠指定返回TCP/IP套接字的客戶端地址和端口。在另一示例中,如所述,響應(yīng)對象能夠指定線程標(biāo)識符。
[0047]能夠?qū)⒄埱髮ο蠛晚憫?yīng)對象從HTTP服務(wù)器305傳遞至一個或多個其他處理節(jié)點,例如流服務(wù)器310。響應(yīng)于客戶端請求315和返回連接320的創(chuàng)建,HTTP服務(wù)器305能夠調(diào)用處置方法并向流服務(wù)器310傳遞一個或多個自變量,例如請求對象和響應(yīng)對象。在實施方式中,能夠?qū)TTP服務(wù)器305配置成阻止處置方法直至處置方法返回為止。例如,能夠使得在其內(nèi)部執(zhí)行處置方法的處理線程為空閑。
[0048]能夠使用多種已知編程技術(shù)中的任何一個來使HTTP服務(wù)器305內(nèi)的處理線程空閑。例如,能夠使用條件變量來使處理線程空閑。空閑的處理線程有效地等待條件變量的值改變,從而進入睡眠或空閑狀態(tài)。當(dāng)事件發(fā)生時,諸如就從流服務(wù)器310接收流處理結(jié)果形式的處置方法的返回,活動的另一處理線程能夠用信號通知正在等待可用于變成活動的條件的空閑處理線程。相應(yīng)地,空閑線程能夠喚醒并重新開始活動。
[0049]能夠?qū)⒘鞣?wù)器310配置成填充從HTTP服務(wù)器305接收到的響應(yīng)對象作為服務(wù)器請求325的一部分。當(dāng)處置方法返回時,例如,當(dāng)流服務(wù)器310向HTTP服務(wù)器305發(fā)送回已填充響應(yīng)對象時,能夠?qū)TTP服務(wù)器305配置成向客戶端發(fā)送回客戶端響應(yīng)375。
[0050]繼續(xù),響應(yīng)于服務(wù)器請求325,流服務(wù)器310能夠執(zhí)行生成請求標(biāo)識符的創(chuàng)建請求標(biāo)識符操作330。流服務(wù)器310例如能夠創(chuàng)建唯一地識別或?qū)?yīng)于服務(wù)器請求325和因此的客戶端請求315的請求標(biāo)識符。在實施方式中,能夠使用散列函數(shù)來創(chuàng)建能夠是整數(shù)值的請求標(biāo)識符。例如,流服務(wù)器310能夠使從請求對象、響應(yīng)對象或從請求對象和響應(yīng)對象兩者導(dǎo)出的客戶端上下文信息散列。
[0051]流服務(wù)器305能夠執(zhí)行存儲操作335,其中,流服務(wù)器310能夠與在服務(wù)器請求325內(nèi)接收到的客戶端上下文信息相關(guān)聯(lián)地存儲請求標(biāo)識符。例如,流服務(wù)器310能夠?qū)⒖蛻舳松舷挛男畔⒒蚱湟徊糠执鎯υ诖鎯τ诖鎯ζ髦械纳舷挛脑~典內(nèi)。根據(jù)請求標(biāo)識符,能夠?qū)ι舷挛脑~典設(shè)置秘鑰。相應(yīng)地,能夠使用請求標(biāo)識符來索引到上下文詞典,以在需要時檢索關(guān)聯(lián)客戶端上下文信息。存儲的客戶端上下文信息能夠包括響應(yīng)對象和/或線程標(biāo)識
符。例如,響應(yīng)于從流處理節(jié)點1、2.....N接收到包括請求標(biāo)識符的任何流處理結(jié)果,流服
務(wù)器310能夠基于流處理結(jié)果內(nèi)的請求標(biāo)識符,使接收到的流處理結(jié)果與適當(dāng)?shù)姆?wù)器請求、客戶端、客戶端請求和/或返回連接信息相關(guān)。
[0052]已生成并存儲請求標(biāo)識符,能夠?qū)⒘鞣?wù)器310配置成生成流處理請求340并將
其發(fā)送到流處理節(jié)點I。在一個示例中,流處理請求340能夠是在流處理節(jié)點1、2.....N
之間從流服務(wù)器310傳遞的“呈現(xiàn)”方法。該呈現(xiàn)方法能夠包括多個參數(shù),其包括統(tǒng)一資源標(biāo)識符(URI)或統(tǒng)一資源定位符(URL)用于識別流服務(wù)器310、客戶端請求315或其一部分(例如,諸如cookies之類的客戶端請求315的參數(shù))以及由流服務(wù)器310生成的請求標(biāo)識符。
[0053]如所示,能夠?qū)⒘魈幚砉?jié)點I配置成接收被表示為“其他數(shù)據(jù)流”的數(shù)據(jù)流,以示
出除在流處理節(jié)點1、2.....N之間生成數(shù)據(jù)流之外,流處理節(jié)點1、2.....N中的一個或多
個還能夠從外部節(jié)點(例如另一系統(tǒng)、傳感器等)接收數(shù)據(jù)流。在任何情況下,能夠?qū)⒘魈幚砉?jié)點1、2.....N中的每一個配置成至少處理來自系統(tǒng)300的另一流處理節(jié)點的輸出數(shù)據(jù)流。
[0054]響應(yīng)于接收到流處理請求340,能夠?qū)⒘魈幚砉?jié)點I配置成執(zhí)行一個或多個流處理功能并生成部分響應(yīng)。來自流處理節(jié)點I的部分響應(yīng)(被稱為部分響應(yīng)I)能夠包括在從流處理器節(jié)點I生成并發(fā)送到流處理節(jié)點2的另一流處理請求345內(nèi)。例如,流處理節(jié)點I能夠生成并發(fā)送流處理請求345。能夠以另一呈現(xiàn)方式的形式來實現(xiàn)流處理請求345,該另一呈現(xiàn)方法具有諸如流服務(wù)器310的URI或URL、客戶端請求315或其一部分、由流服務(wù)器310生成的請求標(biāo)識符以及部分響應(yīng)I之類的自變量。
[0055]響應(yīng)于接收到流處理請求345,能夠?qū)⒘魈幚砉?jié)點2配置成執(zhí)行一個或多個流處理功能并生成部分響應(yīng)。在本示例中,來自流處理節(jié)點2的部分響應(yīng)(被稱為部分響應(yīng)2)能夠包括在能夠從流處理節(jié)點2生成并發(fā)送到流處理節(jié)點N的另一流處理請求350內(nèi)。例如,流處理節(jié)點2能夠生成并發(fā)送流處理請求350。能夠以另一呈現(xiàn)方式的形式來實現(xiàn)流處理請求350,該另一呈現(xiàn)方法具有諸如流服務(wù)器310的URI或URL、客戶端請求315或其一部分、由流服務(wù)器310生成的請求標(biāo)識符、部分響應(yīng)I以及部分響應(yīng)2之類的自變量。
[0056]響應(yīng)于接收到流處理請求350,能夠?qū)⒘魈幚砉?jié)點N配置成執(zhí)行一個或多個流處理功能并生成部分響應(yīng)。來自流處理節(jié)點N的部分響應(yīng)(被稱為部分響應(yīng)N)能夠包括在能夠從流處理節(jié)點N發(fā)送到流服務(wù)器310的創(chuàng)建響應(yīng)消息355內(nèi)。創(chuàng)建響應(yīng)消息355能夠包括或指定例如請求標(biāo)識符和響應(yīng)主體。能夠?qū)⒃擁憫?yīng)主體視為對客戶端請求315的完全響應(yīng),例如作為回答的流處理結(jié)果。更特別地,響應(yīng)主體能夠包括部分響應(yīng)1、部分響應(yīng)2.....部分響應(yīng)N,從而形成流處理結(jié)果。[0057]在另一實施方式中,并不是每個節(jié)點都需要貢獻被包括在流處理結(jié)果內(nèi)的部分響應(yīng)。例如,能夠?qū)⒁粋€或多個流處理節(jié)點配置成生成能夠被其他“下游”流處理節(jié)點使用或消耗的中間結(jié)果。該中間結(jié)果不需要包括在流處理結(jié)果內(nèi)。然而,在此意義上,仍能將此類流處理節(jié)點描述為向流處理結(jié)果貢獻部分響應(yīng)。
[0058]應(yīng)認識到的是能夠?qū)⒅T如流處理節(jié)點1、流處理節(jié)點2至流處理節(jié)點N之類的系統(tǒng)300的各種節(jié)點配置或編程為將輸出指引到特定其他節(jié)點。例如,能夠?qū)⒘魈幚砉?jié)點I配置成將能夠包括流處理請求345的輸出數(shù)據(jù)流指引到流處理節(jié)點2。能夠?qū)⒘魈幚砉?jié)點2配置成將能夠包括流處理請求350的輸出數(shù)據(jù)流指引到流處理節(jié)點N。能夠?qū)⒘魈幚砉?jié)點N配置為流處理節(jié)點中的最后一個,并且同樣地能夠?qū)⑵渑渲脼橄蛄鞣?wù)器310發(fā)送創(chuàng)建響應(yīng)消息355。
[0059]繼續(xù),響應(yīng)于接收到創(chuàng)建響應(yīng)消息355,能夠?qū)⒘鞣?wù)器310配置成執(zhí)行檢索響應(yīng)操作360。檢索響應(yīng)操作360能夠重新調(diào)用先前存儲的客戶端上下文信息。如所述,創(chuàng)建響應(yīng)消息355能夠指定請求標(biāo)識符,其能夠用來索引到上下文詞典中以檢索存儲的客戶端上下文信息。
[0060]流服務(wù)器310還能夠生成寫響應(yīng)消息365并將其發(fā)送到HTTP服務(wù)器305。流服務(wù)器310能夠生成寫響應(yīng)消息365,該寫響應(yīng)消息365能夠指定例如線程標(biāo)識符之類的檢索客戶端上下文信息以及響應(yīng)主體。例如,流服務(wù)器305能夠在從上下文詞典檢索的客戶端上下文信息的響應(yīng)對象部分內(nèi)填充如在從流處理節(jié)點N檢索的響應(yīng)主體中指定的流處理結(jié)果,并將所得的消息以寫響應(yīng)消息365的形式轉(zhuǎn)發(fā)至HTTP服務(wù)器305。如所述,寫響應(yīng)消息365還能夠指定線程標(biāo)識符。在實施方式中,能夠在被存儲在上下文詞典內(nèi)的響應(yīng)對象內(nèi)包括線程標(biāo)識符。在這方面,線程標(biāo)識在其中的響應(yīng)主體填充之前能夠已經(jīng)在響應(yīng)對象內(nèi)。
[0061]在實施方式中,能夠?qū)戫憫?yīng)消息365視為處置方法對HTTP服務(wù)器305的返回。響應(yīng)于接收到寫響應(yīng)消息365,能夠?qū)TTP服務(wù)器305配置成停止阻止處置方法并繼續(xù)操作以對客戶端請求315進行響應(yīng)。如所述,例如,HTTP服務(wù)器305能夠根據(jù)在寫響應(yīng)消息365內(nèi)接收到的線程標(biāo)識符的確定而喚醒空閑處理線程。已喚醒由線程標(biāo)識符指定的處理線程的HTTP服務(wù)器305能夠繼續(xù)處理客戶端請求315以生成客戶端響應(yīng)375并將其發(fā)送到客戶端。如所述,處理線程包括或指定用于連接320的信息,HTTP服務(wù)器305能夠通過該返回連接320來發(fā)送客戶端響應(yīng)375。客戶端響應(yīng)375能夠包括如由系統(tǒng)300、例如由流處理節(jié)點N確定的流處理結(jié)果。
[0062]在圖3內(nèi),在每個節(jié)點下面向下延伸的矩形框指示其中在交易中涉及到節(jié)點或者節(jié)點正在處理交易的那部分時間。如所示,從接收到客戶端請求315的時間到發(fā)送客戶端響應(yīng)375的時間涉及到HTTP服務(wù)器305。與HTTP服務(wù)器305相比在較少的時間涉及到與
流處理節(jié)點1、2.....N交互的流服務(wù)器310。與流服務(wù)器310相比在較少的時間涉及到每
個流處理節(jié)點1、2.....N。
[0063]圖4是圖示出根據(jù)在本說明書內(nèi)公開的另一實施方式的、使用流處理對請求進行響應(yīng)的方法400的流程圖。能夠用參考圖1-3所述的系統(tǒng)來實現(xiàn)方法400。更特別地,方法400圖示出能夠用參考圖3所述的HTTP服務(wù)器實現(xiàn)的處理的方法。
[0064]方法400能夠在步驟405中開始,其中HTTP服務(wù)器能夠從客戶端接收客戶端請求。在步驟410中,HTTP服務(wù)器能夠確定當(dāng)前所使用的許多處理線程是否超過處理線程的閾值數(shù)目。當(dāng)正在使用的處理線程的數(shù)目超過處理線程的閾值數(shù)目時,方法400能夠前進至步驟415。在步驟415中,HTTP服務(wù)器能夠拒絕輸入的客戶端請求或者簡單地不進行響應(yīng)。通過限制可用處理線程的數(shù)目,HTTP服務(wù)器能夠防止流處理系統(tǒng)的泛洪。在步驟415之后,方法400能夠環(huán)回至步驟405以進一步處理客戶端請求。當(dāng)在HTTP服務(wù)器內(nèi)所使用的處理線程的數(shù)目不超過處理線程的閾值數(shù)目時,方法400能夠前進至步驟420。
[0065]在步驟420中,響應(yīng)于客戶端請求,HTTP服務(wù)器能夠分配處理線程以處置客戶端請求。在一方面,HTTP服務(wù)器能夠創(chuàng)建新的處理線程并分配新創(chuàng)建的處理線程以處置客戶端請求。在另一方面,HTTP服務(wù)器能夠分配可用處理線程以處置客戶端請求。
[0066]在步驟425中,響應(yīng)于客戶端請求,HTTP服務(wù)器能夠與客戶端建立返回連接。HTTP服務(wù)器能夠在分配的處理線程內(nèi)創(chuàng)建返回連接。如所述,能夠由線程標(biāo)識符來指定處理線程。在步驟430中,HTTP服務(wù)器能夠向流服務(wù)器發(fā)送服務(wù)器請求。例如,HTTP服務(wù)器能夠?qū)崿F(xiàn)在分配的處理線程上執(zhí)行的處置方法。該服務(wù)器請求能夠包括例如客戶端請求或其一部分以及線程標(biāo)識符。
[0067]在步驟435中,HTTP服務(wù)器能夠開始等待來自流服務(wù)器的結(jié)果。在實施方式中,HTTP服務(wù)器能夠使分配給客戶端請求的處理線程空閑。如參考圖3所討論的,例如,HTTP服務(wù)器能夠在對客戶端進行響應(yīng)之前等待來自流服務(wù)器的流處理結(jié)果,例如處置方法的返回。相應(yīng)地,HTTP服務(wù)器能夠至少相對于客戶端請求進入等待狀態(tài),其中,分配給客戶端請求的處理線程被保持在空閑狀態(tài),直至從流服務(wù)器接收到響應(yīng)。然而,HTTP服務(wù)器能夠在等待來自流服務(wù)器的響應(yīng)的同時繼續(xù)服務(wù)于來自其他接收客戶端請求。
[0068]在步驟440中,響應(yīng)于從流服務(wù)器接收到指定線程標(biāo)識符的寫響應(yīng)消息,HTTP服務(wù)器能夠使由線程標(biāo)識符指定的處理線程、例如空閑的處理線程返回至活動狀態(tài)。如所討論的,寫響應(yīng)消息能夠包括響應(yīng)對象,其還能夠包括來自流處理節(jié)點的流處理結(jié)果和線程標(biāo)識符。HTTP服務(wù)器能夠?qū)⒂删€程標(biāo)識符指定的空閑線程返回活動狀態(tài)。應(yīng)認識到的是由于HTTP服務(wù)器能夠同時地服務(wù)于多個客戶端請求并具有多個未解決服務(wù)器請求,所以HTTP服務(wù)器能夠具有同時存在的超過一個空閑處理線程。相應(yīng)地,HTTP服務(wù)器能夠選擇由寫響應(yīng)消息中的線程標(biāo)識符指定的所述多個空閑處理線程中的一個。HTTP服務(wù)器能夠響應(yīng)于接收到用于該處理線程的流處理結(jié)果,而使所選空閑處理線程返回至活動狀態(tài)。在步驟445中,HTTP服務(wù)器能夠通過在已激活處理線程內(nèi)指定的返回連接,將指定由流處理節(jié)點確定的流處理結(jié)果的客戶端響應(yīng)發(fā)送到客戶端。
[0069]應(yīng)認識到的是當(dāng)發(fā)生錯誤時,例如在預(yù)定或最小時間量內(nèi)沒有從流服務(wù)器接收到寫響應(yīng)消息,能夠?qū)TTP服務(wù)器配置成釋放分配以處置客戶端請求的處理線程,使得處理線程可用于其他處理任務(wù)。例如,在最小時間量到期之后,HTTP服務(wù)器能夠假定在流服務(wù)器和/或流處理節(jié)點中的一個或多個內(nèi)發(fā)生錯誤,使得來自流服務(wù)器的寫響應(yīng)消息將不會出現(xiàn)。
[0070]圖5是圖示出根據(jù)在本說明書內(nèi)公開的另一實施方式的使用流處理對請求進行響應(yīng)的方法500的流程圖。能夠用參考圖1-3所述的系統(tǒng)來實現(xiàn)方法500。更特別地,方法500圖示出能夠用參考圖3所述的流服務(wù)器實現(xiàn)的處理的方法。例如能夠與方法400同時地執(zhí)行方法500。更特別地,能夠在處理線程為空閑的或者HTTP服務(wù)器內(nèi)的處置方法被阻止的同時執(zhí)行方法500。[0071]方法500能夠在步驟505中開始,其中流服務(wù)器能夠從HTTP服務(wù)器接收服務(wù)器請求。例如,能夠?qū)⒘鞣?wù)器配置成在端口上偵聽來自HTTP服務(wù)器的服務(wù)器請求。在步驟510中,流服務(wù)器能夠確定上下文詞典中的條目的數(shù)目是否小于條目的閾值數(shù)目。當(dāng)上下文詞典中的條目的數(shù)目小于條目的閾值數(shù)目時,方法500能夠前進至步驟515。當(dāng)上下文詞典中的條目的數(shù)目小于條目的閾值數(shù)目時,方法500能夠前進至步驟520。
[0072]在步驟515中,流服務(wù)器能夠拒絕從HTTP服務(wù)器接收到的服務(wù)器請求。限制上下文詞典中的條目的數(shù)目能夠幫助防止流處理系統(tǒng)被客戶端請求過載。在步驟515之后,方法500能夠環(huán)回至步驟505以繼續(xù)處理來自HTTP服務(wù)器的其他服務(wù)器請求。
[0073]在步驟520中,流服務(wù)器能夠響應(yīng)于其中指定的客戶端上下文信息的服務(wù)器請求而生成請求標(biāo)識符。在步驟525中,流服務(wù)器能夠存儲請求標(biāo)識符和客戶端上下文信息。如所述,例如,流服務(wù)器能夠?qū)⒖蛻舳松舷挛男畔⒆鳛槟軌蚴褂谜埱髽?biāo)識符設(shè)置關(guān)鍵字或編索引的條目存儲在上下文詞典內(nèi)。
[0074]在步驟530中,流服務(wù)器能夠生成流處理請求。流服務(wù)器能夠在流處理請求內(nèi)包括請求標(biāo)識符。能夠?qū)⒄埱髽?biāo)識符包括在由每個流處理節(jié)點生成的輸出數(shù)據(jù)內(nèi)。識別信息的傳播允許使流處理結(jié)果與客戶端請求相關(guān),并且還允許流處理系統(tǒng)與客戶端保持密切關(guān)系O
[0075]在步驟535中,流服務(wù)器能夠?qū)⒘魈幚碚埱蟀l(fā)送到第一流處理節(jié)點。在步驟540中,流服務(wù)器能夠從響應(yīng)于客戶端請求而正在執(zhí)行的流處理中涉及到的最后或最終的流處理節(jié)點,接收作為輸出數(shù)據(jù)流的一部分的創(chuàng)建響應(yīng)消息。如所述,創(chuàng)建響應(yīng)消息能夠指定來自流處理節(jié)點的請求標(biāo)識符和流處理結(jié)果。
[0076]在步驟545中,流服務(wù)器能夠檢索客戶端上下文信息。例如,流服務(wù)器能夠使用來自創(chuàng)建響應(yīng)消息的請求標(biāo)識符從上下文詞典檢索客戶端上下文信息。在步驟550中,流服務(wù)器能夠向HTTP服務(wù)器發(fā)送返回寫響應(yīng)消息。如所述,流服務(wù)器能夠利用從上下文詞典檢索的客戶端上下文信息來確定要將寫響應(yīng)消息指引到那里??蛻舳松舷挛男畔⒛軌虬ň€程標(biāo)識符,流服務(wù)器能夠?qū)⑵浒ㄔ诎l(fā)送到HTTP服務(wù)器的寫響應(yīng)消息內(nèi)。相應(yīng)地,HTTP服務(wù)器能夠按照響應(yīng)對象內(nèi)的指定將包括來自流處理系統(tǒng)的流處理結(jié)果的客戶端響應(yīng)發(fā)送回到客戶端。
[0077]在步驟555中,流服務(wù)器能夠刪除對應(yīng)于所處理的請求標(biāo)識符的上下文詞典中的條目,從而減少上下文詞典中的條目的數(shù)目。應(yīng)認識到的是雖然圖5中未示出,但能夠在流服務(wù)器內(nèi)實現(xiàn)其他錯誤處置程序。例如,在一個方面,能夠在預(yù)定或最小時間量之后刪除或清除上下文詞典中的條目。在該最小時間量到期之后,流服務(wù)器能夠認為在流處理節(jié)點中的一個或多個內(nèi)發(fā)生錯誤,并且創(chuàng)建響應(yīng)消息將不會出現(xiàn)。
[0078]在此使用的術(shù)語僅是為了描述特定實施方式,而并不旨在限制本發(fā)明。本文所使用的單數(shù)形式“一”、“一個”和“該”意圖也包括復(fù)數(shù)形式,除非上下文另外明確地指出。還將理解,當(dāng)在說明書中使用時,術(shù)語“包括”和/或“包含”指明存在所述的特征、整數(shù)、步驟、操作、元件和/或組件,但不排除存在或附加一個或多個其他特征、整數(shù)、步驟、操作、元件和/或組件。
[0079]以下權(quán)利要求中的所有裝置或步驟加功能元件的相應(yīng)結(jié)構(gòu)、材料、動作以及等效物(如果有的話)意圖包括用于與其他權(quán)利要求要素相結(jié)合地執(zhí)行功能的任何結(jié)構(gòu)、材料或動作,如具體地要求保護的那樣。呈現(xiàn)本發(fā)明的說明是為了示出和描述的作用,但不是窮盡性的或?qū)⒈景l(fā)明限制于所公開的形式。在不脫離本發(fā)明的范圍的情況下,許多修改和變化對本領(lǐng)域普通技術(shù)人員來說是明顯的。選擇和描述實施方式是為了最佳地解釋本發(fā)明的原理和實際應(yīng)用,并使得本領(lǐng)域普通技術(shù)人員能針對適于考慮的特定用途的具有各種修改的各種實施方式理解本發(fā)明。
【權(quán)利要求】
1.一種使用流處理對請求進行響應(yīng)的方法,所述方法包括: 接收來自服務(wù)器的服務(wù)器請求,其中所述服務(wù)器被配置成響應(yīng)于客戶端請求而生成所述服務(wù)器請求; 生成與所述服務(wù)器請求相關(guān)聯(lián)的請求標(biāo)識符; 響應(yīng)于所述服務(wù)器請求,向第一流處理節(jié)點發(fā)送從所述服務(wù)器請求導(dǎo)出的流處理請求,其中所述流處理請求包括所述請求標(biāo)識符; 響應(yīng)于接收來自第二流處理節(jié)點的包括流處理結(jié)果和所述請求標(biāo)識符的創(chuàng)建響應(yīng)消息,使用處理器來使所述流處理結(jié)果與所述服務(wù)器請求相關(guān);以及 向所述服務(wù)器發(fā)送包括所述流處理結(jié)果的寫響應(yīng)消息。
2.根據(jù)權(quán)利要求1所述的方法,還包括: 響應(yīng)于接收所述寫響應(yīng)消息,向所述客戶端發(fā)送包括所述流處理結(jié)果的客戶端響應(yīng)。
3.根據(jù)權(quán)利要求1所述的方法,所述方法還包括: 在所述第一流處理節(jié)點和所述第二流處理節(jié)點之間傳播所述流處理請求,其中處置所述流處理請求的每個流處理節(jié)點貢獻部分響應(yīng)。
4.根據(jù)權(quán)利要求1所述的方法,其中所述服務(wù)器請求包括客戶端上下文信息,所述方法還包括: 通過從所述客戶端上下文信息生成所述請求標(biāo)識符來使所述流處理請求與所述服務(wù)器請求相關(guān);以及 與所述客戶端上下文信息相關(guān)聯(lián)地存儲所述請求標(biāo)識符。
5.根據(jù)權(quán)利要求4所述的方法,其中所述客戶端上下文信息包括指定所述服務(wù)器內(nèi)的正在處置所述客戶端請求的處理線程的線程標(biāo)識符。
6.根據(jù)權(quán)利要求5所述的方法,還包括: 響應(yīng)于接收來自所述第二流處理節(jié)點的所述創(chuàng)建響應(yīng)消息,根據(jù)所述創(chuàng)建響應(yīng)消息中包括的所述請求標(biāo)識符和存儲的所述客戶端上下文信息,使所述流處理結(jié)果與所述服務(wù)器請求相關(guān);以及 在所述寫響應(yīng)消息內(nèi)向所述服務(wù)器提供所述流處理結(jié)果和所述線程標(biāo)識符。
7.根據(jù)權(quán)利要求1所述的方法,還包括: 將所述服務(wù)器選擇成支持超文本傳輸協(xié)議(HTTP )的服務(wù)器。
8.根據(jù)權(quán)利要求1所述的方法,還包括: 響應(yīng)于所述客戶端請求,分配用于處置所述客戶端請求的處理線程; 建立與發(fā)送所述客戶端請求的客戶端的返回連接,其中所述返回連接與所述處理線程相關(guān)聯(lián);以及 發(fā)送至少包括所述客戶端請求的一部分和指定所述處理線程的線程標(biāo)識符的所述服務(wù)器請求。
9.根據(jù)權(quán)利要求8所述的方法,還包括: 使所述處理線程空閑,直到所述寫響應(yīng)消息被接收。
10.根據(jù)權(quán)利要求9所述的方法,還包括: 響應(yīng)于接收所述寫響應(yīng)消息,其中寫響應(yīng)消息包括所述線程標(biāo)識符,根據(jù)所述線程標(biāo)識符使所述流處理結(jié)果與所述客戶端請求相關(guān);以及使得由所述線程標(biāo)識符指定的所述處理線程能夠?qū)λ隹蛻舳苏埱筮M行響應(yīng)。
11.一種使用流處理對請求進行響應(yīng)的方法,所述方法包括: 響應(yīng)于客戶端請求,分配用于處置所述客戶端請求的處理線程; 在所述處理線程內(nèi)建立返回連接; 向被配置成與多個流處理節(jié)點交互的流服務(wù)器發(fā)送從所述客戶端請求導(dǎo)出的服務(wù)器請求,其中所述服務(wù)器請求包括指定所述處理線程的線程標(biāo)識符; 將用于處置所述客戶端請求的所述處理線程保持在使來自所述流服務(wù)器的寫響應(yīng)消息待決的空閑狀態(tài); 響應(yīng)于接收來自所述流服務(wù)器的包括流處理結(jié)果和所述線程標(biāo)識符的所述寫響應(yīng)消息,使用處理器將由所述線程標(biāo)識符指定的所述處理線程返回至活動狀態(tài);以及通過所述返回連接將包括所述流處理結(jié)果的客戶端響應(yīng)發(fā)送到客戶端。
12.根據(jù)權(quán)利要求11所述的方法,還包括: 在所述服務(wù)器請求內(nèi)包括所述客戶端請求的至少一部分。
13.根據(jù)權(quán)利要求12所述的方法,還包括: 根據(jù)所述線程標(biāo)識符從多個空閑處理線程中選擇將要返回到活動狀態(tài)的所述處理線程。
14.根據(jù)權(quán)利要求12所述的方法,其中所述流服務(wù)器發(fā)起在多個流處理節(jié)點之間傳播的流處理請求,以及` 其中每個流處理節(jié)點接收用于所述客戶端請求的識別信息。
15.根據(jù)權(quán)利要求14所述的方法,其中每個所述流處理節(jié)點異步地操作并且貢獻部分結(jié)果以產(chǎn)生將被返回至所述流服務(wù)器的流處理結(jié)果。
16.一種用于使用流處理對請求進行響應(yīng)的系統(tǒng),所述系統(tǒng)包括: 計算機可讀存儲介質(zhì),具有以其體現(xiàn)的計算機可讀程序代碼;以及 處理器,被耦合到所述計算機可讀存儲介質(zhì),其中響應(yīng)于執(zhí)行所述計算機可讀程序代碼,所述處理器被配置成執(zhí)行可執(zhí)行操作,包括: 接收來自服務(wù)器的服務(wù)器請求,其中所述服務(wù)器被配置成響應(yīng)于客戶端請求而生成所述服務(wù)器請求; 生成與所述服務(wù)器請求相關(guān)聯(lián)的請求標(biāo)識符; 響應(yīng)于所述服務(wù)器請求,向第一流處理節(jié)點發(fā)送從所述服務(wù)器請求導(dǎo)出的流處理請求,其中所述流處理請求包括所述請求標(biāo)識符; 響應(yīng)于接收來自第二流處理節(jié)點的包括流處理結(jié)果和所述請求標(biāo)識符的創(chuàng)建響應(yīng)消息,使所述流處理結(jié)果與所述服務(wù)器請求相關(guān);以及 向所述服務(wù)器發(fā)送包括所述流處理結(jié)果的寫響應(yīng)消息。
17.根據(jù)權(quán)利要求16所述的系統(tǒng),其中所述處理器還被配置成執(zhí)行可執(zhí)行操作,包括: 響應(yīng)于接收所述寫響應(yīng)消息,向所述客戶端發(fā)送包括所述流處理結(jié)果的客戶端響應(yīng)。
18.根據(jù)權(quán)利要求17所述的系統(tǒng),其中所述處理器還被配置成執(zhí)行可執(zhí)行操作,包括: 在所述第一流處理節(jié)點和所述第二流處理節(jié)點之間傳播所述流處理請求,其中處置所述流處理請求的每個流處理節(jié)點貢獻部分響應(yīng)。
19.根據(jù)權(quán)利要求17所述的系統(tǒng),其中所述服務(wù)器請求包括客戶端上下文信息,其中所述處理器還被配置成執(zhí)行可執(zhí)行操作,包括: 通過從所述客戶端上下文信息生成所述請求標(biāo)識符來使所述流處理請求與所述服務(wù)器請求相關(guān);以及 與所述客戶端上下文信息相關(guān)聯(lián)地存儲所述請求標(biāo)識符。
20.一種用于使用流處理對請求進行響應(yīng)的系統(tǒng),所述系統(tǒng)包括: 計算機可讀存儲介質(zhì),具有以其體現(xiàn)的計算機可讀程序代碼;以及 處理器,被耦合到所述計算機可讀存儲介質(zhì),其中響應(yīng)于執(zhí)行所述計算機可讀程序代碼,所述處理器被配置成執(zhí)行可執(zhí)行操作,包括: 響應(yīng)于客戶端請求,分配用于處置所述客戶端請求的處理線程; 在所述處理線程內(nèi)建立返回連接; 向被配置成與多個流處理節(jié)點交互的流服務(wù)器發(fā)送從所述客戶端請求導(dǎo)出的服務(wù)器請求,其中所述服務(wù)器請求包括指定所述處理線程的線程標(biāo)識符; 將用于處置所述客戶端請求的所述處理線程保持在使來自所述流服務(wù)器的寫響應(yīng)消息待決的空閑狀態(tài); 響應(yīng)于接收來自所述流服務(wù)器的包括流處理結(jié)果和所述線程標(biāo)識符的寫響應(yīng)消息,將由所述線程標(biāo)識符指定的所述處理線程返回至活動狀態(tài);以及 通過所述返回連接向所述客戶端發(fā)送包括所述流處理結(jié)果的客戶端響應(yīng)。`
21.根據(jù)權(quán)利要求20所述的系統(tǒng),其中所述處理器還被配置成執(zhí)行可執(zhí)行操作,包括: 在所述服務(wù)器請求內(nèi)包括所述客戶端請求的至少一部分。
22.根據(jù)權(quán)利要求21所述的系統(tǒng),其中所述處理器還被配置成執(zhí)行可執(zhí)行操作,包括: 根據(jù)所述線程標(biāo)識符從多個空閑處理線程中選擇將要返回到活動狀態(tài)的所述處理線程。
23.一種用于使用流處理對請求進行響應(yīng)的計算機程序產(chǎn)品,所述計算機程序產(chǎn)品包括: 計算機可讀存儲介質(zhì),具有以其體現(xiàn)的計算機可讀程序代碼,所述計算機可讀程序代碼包括: 被配置成從服務(wù)器接收服務(wù)器請求的計算機可讀程序代碼,其中所述服務(wù)器被配置成響應(yīng)于客戶端請求而生成所述服務(wù)器請求; 被配置成生成與所述服務(wù)器請求相關(guān)聯(lián)的請求標(biāo)識符的計算機可讀程序代碼; 被配置成響應(yīng)于所述服務(wù)器請求而向第一流處理節(jié)點發(fā)送從所述服務(wù)器請求導(dǎo)出的流處理請求的計算機可讀程序代碼,并且其中所述流處理請求包括所述請求標(biāo)識符; 被配置成響應(yīng)于接收來自第二流處理節(jié)點的包括流處理結(jié)果和所述請求標(biāo)識符的創(chuàng)建響應(yīng)消息、而使所述流處理結(jié)果與所述服務(wù)器請求相關(guān)的計算機可讀程序代碼;以及被配置成向所述服務(wù)器發(fā)送包括所述流處理結(jié)果的寫響應(yīng)消息的計算機可讀程序代碼。
24.根據(jù)權(quán)利要求23所述的計算機程序產(chǎn)品,其中所述計算機可讀程序代碼還包括: 被配置成在所述第一流處理節(jié)點和所述第二流處理節(jié)點之間傳播所述流處理請求的計算機可讀程序代碼,其中處置流處理請求的每個流處理節(jié)點貢獻部分響應(yīng)。
25.根據(jù)權(quán)利要求23所述的計算機程序產(chǎn)品,其中所述服務(wù)器請求包括客戶端上下文信息,其中所述計算機可讀程序代碼還包括: 被配置成通過從所述客戶端上下文信息生成所述請求標(biāo)識符來使所述流處理請求與所述服務(wù)器請求相關(guān)的計算機可讀程序代碼;以及 被配置成與所述客戶端上下文信息相關(guān)聯(lián)地存儲所述請求標(biāo)識符的計算機可讀程序代碼。
【文檔編號】H04N21/237GK103733568SQ201280040235
【公開日】2014年4月16日 申請日期:2012年8月20日 優(yōu)先權(quán)日:2011年8月18日
【發(fā)明者】Y·樸, K·S·薩比爾 申請人:國際商業(yè)機器公司