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

使用web服務(wù)可靠消息通信協(xié)議的高效消息傳輸?shù)闹谱鞣椒?

文檔序號(hào):7627096閱讀:103來(lái)源:國(guó)知局
專利名稱:使用web服務(wù)可靠消息通信協(xié)議的高效消息傳輸?shù)闹谱鞣椒?br> 技術(shù)領(lǐng)域
本發(fā)明一般涉及Web服務(wù)可靠消息通信。特別地,本發(fā)明根據(jù)用于在兩個(gè)端點(diǎn)之間進(jìn)行流量控制和網(wǎng)線上的擁塞控制的Web服務(wù)可靠消息通信協(xié)議,提供一種消息的高效傳輸。
背景技術(shù)
通過(guò)允許一個(gè)計(jì)算機(jī)或設(shè)備(下文稱為“計(jì)算設(shè)備”或“計(jì)算系統(tǒng)”)使用電子消息通過(guò)網(wǎng)絡(luò)與另一計(jì)算系統(tǒng)進(jìn)行通信,計(jì)算機(jī)網(wǎng)絡(luò)增強(qiáng)了我們通信和訪問(wèn)信息的能力。當(dāng)在計(jì)算系統(tǒng)之間傳輸電子消息時(shí),電子消息常常會(huì)通過(guò)協(xié)議棧,它對(duì)電子消息內(nèi)的數(shù)據(jù)執(zhí)行操作(例如,語(yǔ)法分析、路由、流量控制、等等)。開(kāi)放系統(tǒng)互連(OSI)模型是用于實(shí)現(xiàn)協(xié)議棧的網(wǎng)絡(luò)框架的一個(gè)例子。
OSI模型將用于傳輸電子消息的操作分解成7個(gè)不同的層,每一層都被指定在數(shù)據(jù)傳輸過(guò)程中執(zhí)行某些操作。盡管協(xié)議??赡苣軌?qū)崿F(xiàn)每一個(gè)層,但是許多協(xié)議棧僅選擇性地實(shí)現(xiàn)若干層,以供在通過(guò)網(wǎng)絡(luò)傳輸數(shù)據(jù)中使用。當(dāng)數(shù)據(jù)從計(jì)算系統(tǒng)被發(fā)送時(shí),它始發(fā)于應(yīng)用層,并被向下傳遞到若干中間較低層,然后傳遞到網(wǎng)絡(luò)上。當(dāng)從網(wǎng)絡(luò)上接收數(shù)據(jù)時(shí),它進(jìn)入物理層,并被向上傳遞到若干較高中間層,最終在應(yīng)用層處被接收。應(yīng)用層——最上層——負(fù)責(zé)支持應(yīng)用程序和端點(diǎn)用戶處理。此外,在應(yīng)用層內(nèi),可能駐留有若干其它層(例如,簡(jiǎn)單開(kāi)放訪問(wèn)協(xié)議(SOAP)層)。大多數(shù)協(xié)議棧包括的另一個(gè)層是傳輸層。傳輸層的一個(gè)例子是傳輸控制協(xié)議(TCP)。
Web服務(wù)(WS)是發(fā)展計(jì)算系統(tǒng)之間的通信中的驅(qū)動(dòng)力量,并正在徹底地改變我們構(gòu)建和使用軟件的方式。Web服務(wù)讓?xiě)?yīng)用程序共享數(shù)據(jù)以及——更強(qiáng)大的是——從其它應(yīng)用程序調(diào)用各種能力,而無(wú)須考慮這些應(yīng)用程序是如何構(gòu)建的;它們?cè)谑裁床僮飨到y(tǒng)或平臺(tái)上運(yùn)行;以及使用什么設(shè)備來(lái)訪問(wèn)它們。Web服務(wù)是通過(guò)包括SOAP、XML(可擴(kuò)展標(biāo)記語(yǔ)言)、UDDI(統(tǒng)一、描述、發(fā)現(xiàn)和集成)、SWDL(Web服務(wù)描述語(yǔ)言)等工業(yè)標(biāo)準(zhǔn)協(xié)議的手段,通過(guò)因特網(wǎng)來(lái)調(diào)用的。盡管Web服務(wù)保持相互獨(dú)立,但它們可將自身松散地鏈接成執(zhí)行特定任務(wù)的協(xié)作組。
當(dāng)前的WS技術(shù)提供發(fā)起者(例如,客戶)和接受者(例如,服務(wù))之間的直接SOAP消息通信。在普通雙向消息通信實(shí)例中,SOAP請(qǐng)求消息從發(fā)起者被發(fā)送到接受者,響應(yīng)于此,SOAP回復(fù)消息被發(fā)送。端點(diǎn)之間的另一種形式的通信是單向消息,其中發(fā)起者向接受者發(fā)送消息,而沒(méi)有響應(yīng)。
新興的WS體系結(jié)構(gòu)的一個(gè)關(guān)鍵優(yōu)點(diǎn)是提供集成的、可互操作的解決方案的能力。但是,因?yàn)閃eb服務(wù)經(jīng)由諸如因特網(wǎng)等不可靠的通信信道,提供來(lái)自不同商務(wù)、發(fā)源及其它服務(wù)供應(yīng)者的各種服務(wù),所以WS的可靠性成為越來(lái)越重要的因素。WS的可靠性受到若干因素的影響,包括但不限于,Web服務(wù)端點(diǎn)的可靠性、訪問(wèn)Web服務(wù)所通過(guò)的通信信道的可靠性特征、性能和容錯(cuò)性特征、以及Web服務(wù)能處理并發(fā)客戶訪問(wèn)的程度。
人們?cè)噲D通過(guò)選擇可靠的傳輸協(xié)議在端點(diǎn)之間交換消息(例如,SOAP消息)來(lái)實(shí)現(xiàn)Web服務(wù)可靠消息通信。例如,可使用諸如消息隊(duì)列等可靠消息通信傳輸在發(fā)起者和接受者之間可靠地傳遞消息。消息排隊(duì)通信技術(shù)使不同系統(tǒng)上的應(yīng)用程序能通過(guò)將消息發(fā)送到隊(duì)列并從隊(duì)列讀取消息來(lái)相互通信,其中為可靠性起見(jiàn),這些隊(duì)列在發(fā)生失敗時(shí)持續(xù)存儲(chǔ)。
盡管排隊(duì)系統(tǒng)提供可用于可靠地?cái)y帶SOAP消息的傳輸,此類(lèi)系統(tǒng)仍有若干缺點(diǎn)。例如,這些系統(tǒng)為孤立地傳輸和處理請(qǐng)求(可能還有其響應(yīng))的異步操作提供解決方案。由此,就資源而言,這些系統(tǒng)通常是重量級(jí)的,它們涉及具有持久事務(wù)化消息存儲(chǔ)、并且部署、編程模型和管理復(fù)雜得多的多個(gè)中間方。所有這些對(duì)于可靠的直接通信來(lái)說(shuō)都是不必要的,還損害了將等待時(shí)間最小化的目標(biāo)。此外,該程序模型不直接支持請(qǐng)求-響應(yīng)式的編程或會(huì)話。由此,排隊(duì)通信模型和當(dāng)前“交互式”Web服務(wù)模型不同,并且不解決關(guān)鍵性的“連接”情形和“交互式”應(yīng)用程序。例如,它不太適用于以及時(shí)方式預(yù)期響應(yīng)的情形,或者需要在發(fā)起者和接受者之間共享分布式事務(wù)上下文的情形。
人們還試圖在基本不可靠的傳輸協(xié)議上定義可靠的傳輸層,例如,可靠HTTP或稱HTTPR。但是,困擾此解決方案以及排隊(duì)解決方案的一個(gè)常見(jiàn)問(wèn)題是僅當(dāng)為發(fā)起者和接受者之間的通信使用特定的可靠傳輸協(xié)議時(shí)才能實(shí)現(xiàn)可靠消息通信。Web服務(wù)的基本特性要求不依賴于特定供應(yīng)商平臺(tái)、實(shí)現(xiàn)語(yǔ)言和特定傳輸協(xié)議。在一般情形中,發(fā)起者可能不能使用特定協(xié)議向接受者直接發(fā)送消息(例如,接受者不支持該協(xié)議),或者該消息在離開(kāi)發(fā)送節(jié)點(diǎn)之后到達(dá)目標(biāo)節(jié)點(diǎn)之前,可能需要通過(guò)多個(gè)中繼段。根據(jù)特定中繼段中所涉及的兩個(gè)節(jié)點(diǎn)之間的連通性的特性,可能不得不選擇不提供可靠消息通信特征的合適的傳輸協(xié)議。
中間方還可能存在于協(xié)議棧中的不同層處,并因此不提供完全的端對(duì)端可靠性。例如,傳輸協(xié)議可能通過(guò)較低層的中間方(例如,IP層的中間方——例如IP路由器)來(lái)提供可靠性。但是,傳輸協(xié)議可能在SOAP中間方或應(yīng)用層處結(jié)束。由此,傳輸協(xié)議可能不能夠通過(guò)該中間方來(lái)提供可靠性,即,沒(méi)有通過(guò)應(yīng)用層的端對(duì)端可靠性。
近來(lái),例如WSReliableMessaging等Web服務(wù)的各種可靠消息通信協(xié)議(以下稱為“RM-WS協(xié)議”)為當(dāng)前可靠消息通信系統(tǒng)以上所標(biāo)識(shí)的缺陷提供解決方案。這些協(xié)議是在存在軟件組件、系統(tǒng)或網(wǎng)絡(luò)失敗時(shí)允許消息在端點(diǎn)應(yīng)用程序之間被可靠傳遞的傳輸不可知連接協(xié)議。因此,RM-WS協(xié)議提供發(fā)起者和接受者之間可靠的、端對(duì)端的、面向會(huì)話的通信的解決方案。
這些RM-WS協(xié)議類(lèi)似于TCP,因?yàn)門(mén)CP通過(guò)因特網(wǎng)協(xié)議(IP)路由器和多個(gè)網(wǎng)絡(luò),提供從TCP發(fā)送器到TCP接收器的可靠的、恰好一次的、按次序的字節(jié)流的傳輸。WS的可靠消息通信協(xié)議通過(guò)多個(gè)中間方(包括SOAP層中間方)、傳輸和連接,為消息提供相同和更多的傳輸方案(注意傳輸?shù)膯卧窍?,而不是字?jié))。盡管TCP和RM-WS協(xié)議都是“可靠”協(xié)議,因?yàn)镽M-WS駐留在OSI模型中的應(yīng)用層或SOAP層,所以無(wú)論使用什么傳輸協(xié)議來(lái)傳輸數(shù)據(jù),RM-WS協(xié)議都提供可靠的消息通信。由此,RM-WS協(xié)議不依賴于用于在端點(diǎn)之間傳輸消息的特定傳輸或其它協(xié)議。
盡管若干種RM-WS協(xié)議已經(jīng)存在了一段時(shí)間,這些協(xié)議規(guī)范仍有一些缺點(diǎn)和缺陷。例如,當(dāng)前這些協(xié)議沒(méi)有為端點(diǎn)之間消息的流量控制定義任何解決方案。通常,可靠消息交換中的接受者具有緩沖區(qū),所接收的消息被存儲(chǔ)在緩沖區(qū)中,以供向處理應(yīng)用程序傳遞。這解決了系統(tǒng)中的靈活性,因?yàn)椴恍枰幚響?yīng)用程序在消息一被接收到時(shí)即可用于對(duì)其進(jìn)行處理。但是,緩沖區(qū)的容量是有限的,因?yàn)槿魏蜗到y(tǒng)都只有有限的資源可用(受硬件和/軟件限制)。同樣,如果接收應(yīng)用程序處理消息的速率低于消息被發(fā)送和/或接收的速率,也可能產(chǎn)生問(wèn)題。在此情形中,接受者緩沖區(qū)將被填滿,且所接收到的消息不會(huì)從傳輸被讀取或可能被丟棄(即從傳輸讀取消息,但因?yàn)槿鄙倏臻g而未將其捕獲到緩沖區(qū)中的動(dòng)作);并因此沒(méi)有為該消息發(fā)送接收確認(rèn)。
消息丟棄是受典型RM-WS協(xié)議允許的,并且不被視為嚴(yán)重失敗;因?yàn)樵谌鄙賮?lái)自接受者的接收確認(rèn)時(shí),發(fā)起者將重試傳輸。但是,重試引起網(wǎng)絡(luò)和系統(tǒng)資源的浪費(fèi);因此產(chǎn)生對(duì)用于令發(fā)起者知道它可向接受者發(fā)送多少個(gè)消息而不會(huì)使它們被丟棄的高效機(jī)制的需求。
類(lèi)似于上述的流量控制問(wèn)題,網(wǎng)線上的擁塞控制也是一項(xiàng)議題。通常,通過(guò)網(wǎng)絡(luò)發(fā)送的消息是通過(guò)由各個(gè)節(jié)點(diǎn)(例如,路由器)橋接的若干傳輸連接來(lái)傳輸?shù)?。不同的傳輸連接可能有不同的速度(例如,從發(fā)起者到一節(jié)點(diǎn)的100mbps以太網(wǎng)連接,和從該節(jié)點(diǎn)到接受者的56kbps撥號(hào)連接)。由于各傳輸連接的速度差異,從節(jié)點(diǎn)到接受者的連接可能積滯,即該網(wǎng)絡(luò)不能取任何新內(nèi)容用于傳遞,因?yàn)槭紫刃枰∽咭恍﹥?nèi)容。這意味著在該節(jié)點(diǎn)能將傳入消息發(fā)送到目的地之前,它不得不減慢使其緩沖區(qū)傳入消息的分程傳輸。和其它計(jì)算資源類(lèi)似,在節(jié)點(diǎn)必須開(kāi)始丟棄新的傳入消息之前,它們僅能緩沖這些數(shù)量的消息。盡管緩沖是用于處理瞬時(shí)通信量峰值的可接受的技術(shù),但是為了將等待時(shí)間最小化,系統(tǒng)應(yīng)當(dāng)力爭(zhēng)將中間方中所發(fā)生的緩沖量最小化。此外,丟棄消息的其它原因包括節(jié)點(diǎn)的許多傳入鏈路都競(jìng)爭(zhēng)同一傳出鏈路,接受者處理請(qǐng)求緩慢,或者節(jié)點(diǎn)處活動(dòng)的突發(fā)。
無(wú)論網(wǎng)絡(luò)丟棄消息的原因是什么,如前所述,在可靠消息通信系統(tǒng)中,丟棄的消息需要被重試以確保傳遞。如果要求按次序的傳遞,那么對(duì)序列號(hào)大于丟棄消息的那些消息的處理將被延遲到丟棄消息被接收到之后,從而導(dǎo)致接受者方處理效率低下。此外,重試丟棄的消息導(dǎo)致從發(fā)起者到節(jié)點(diǎn)的鏈路上甚至更多的消息,這可能最終導(dǎo)致更多丟棄的消息——即,擁塞、性能障礙和資源浪費(fèi)。
因此,產(chǎn)生對(duì)不僅為流量控制進(jìn)行調(diào)節(jié)、而且會(huì)為網(wǎng)線上的擁塞適應(yīng)各種變化的解決方案。如可認(rèn)識(shí)到的,該問(wèn)題涉及在從發(fā)起者到接受者的路徑上使用多個(gè)節(jié)點(diǎn)(例如,路由器)的情形。同樣,該解決方案不應(yīng)考慮路由器的數(shù)量,因?yàn)樵摂?shù)量對(duì)發(fā)起者是未知的,并且實(shí)際上可能隨時(shí)間改變。此外,該解決方案還應(yīng)能夠適應(yīng)于網(wǎng)絡(luò)帶寬、性能和拓?fù)浣Y(jié)構(gòu)的改變。

發(fā)明內(nèi)容
根據(jù)本發(fā)明的實(shí)施例,當(dāng)前Web服務(wù)可靠消息通信協(xié)議的上述缺陷和缺點(diǎn)被克服。例如,本發(fā)明通過(guò)基于接受者可用的緩沖區(qū)大小動(dòng)態(tài)地確定用于發(fā)送消息的消息窗口大小,根據(jù)WS的可靠消息通信協(xié)議(RM-WS),解決在端點(diǎn)之間高效傳輸消息的問(wèn)題。此外,本發(fā)明根據(jù)RM-WS協(xié)議,通過(guò)調(diào)整用于將消息發(fā)送到端點(diǎn)的傳輸窗口以適應(yīng)于諸如網(wǎng)絡(luò)帶寬、性能和拓?fù)浣Y(jié)構(gòu)的變化等因素,解決控制網(wǎng)絡(luò)擁塞的問(wèn)題。
例如,一個(gè)針對(duì)流量控制的實(shí)施例根據(jù)RM-WS協(xié)議解決在應(yīng)用層建立發(fā)起者和接受者之間序列會(huì)話的問(wèn)題。包括所期望緩沖區(qū)大小的信息的消息通過(guò)序列會(huì)話被接收——接受者指示用于緩沖等待應(yīng)用程序處理的消息的可用存儲(chǔ)器的量的接受者緩沖區(qū)大小信息。此外,若干傳輸中(in-flight)消息被標(biāo)識(shí),根據(jù)RM-WS協(xié)議,它們是已被發(fā)送到接受者而沒(méi)有接收到對(duì)應(yīng)確認(rèn)的消息?;诮邮苷呔彌_區(qū)大小的信息和傳輸中消息的個(gè)數(shù),計(jì)算出表示為避免由于緩沖區(qū)過(guò)速而重新發(fā)送消息,可向接受者發(fā)送的消息個(gè)數(shù)的上限的消息窗口大小。
在另一個(gè)用于擁塞控制的示例性實(shí)施例中,本發(fā)明根據(jù)RM-WS協(xié)議,解決通過(guò)已建立的序列會(huì)話向接受者發(fā)送對(duì)應(yīng)于消息窗口大小的若干消息的問(wèn)題。該消息窗口大小表示在一根網(wǎng)線上向接受者發(fā)送的傳輸中消息的個(gè)數(shù)的上限?;谠撓⒋翱诖笮?,標(biāo)識(shí)出期望的消息傳輸時(shí)間,它定義在發(fā)送若干消息和接收對(duì)應(yīng)的確認(rèn)消息之間期望的時(shí)間限制。此后,提供關(guān)于在期望消息傳輸時(shí)間到期之前是否接收到對(duì)應(yīng)的確認(rèn)消息的指示,其中該指示為避免由于網(wǎng)絡(luò)擁塞而重新發(fā)送消息,被用于調(diào)整消息窗口大小和/或重試時(shí)間周期。
本發(fā)明的其它特征和優(yōu)點(diǎn)將在以下描述中闡述,且部分地可從該描述中變得顯而易見(jiàn),或可通過(guò)對(duì)本發(fā)明的實(shí)施中習(xí)得。本發(fā)明的特征和優(yōu)點(diǎn)能以在所附權(quán)利要求書(shū)中特別指出的手段及其組合的方式來(lái)實(shí)現(xiàn)和獲得。本發(fā)明的這些及其它特征將從以下描述和所附權(quán)利要求書(shū)中變得更加清楚,或可通過(guò)如下所述地實(shí)施本發(fā)明來(lái)習(xí)得。


為了描述可獲得本發(fā)明上述及其它優(yōu)點(diǎn)和特征的方式,將參考附圖中所示出的本發(fā)明的具體實(shí)施例來(lái)提供對(duì)以上所簡(jiǎn)述的發(fā)明更具體的描述。理解這些附圖僅示出本發(fā)明的若干典型實(shí)施例,且因此不應(yīng)被視為限制本發(fā)明的范圍,因此將通過(guò)使用附圖,來(lái)更加具體和詳細(xì)地描述和解釋本發(fā)明,附圖中圖1A根據(jù)本發(fā)明的示例性實(shí)施例,示出一種配置成為兩個(gè)端點(diǎn)之間的流量控制變化進(jìn)行調(diào)整的計(jì)算系統(tǒng);
圖1B根據(jù)本發(fā)明的示例性實(shí)施例,示出一種配置成適應(yīng)于網(wǎng)線上的擁塞變化的計(jì)算系統(tǒng);圖2根據(jù)本發(fā)明的示例性實(shí)施例,示出一種在端點(diǎn)之間高效傳輸消息的方法的流程圖;圖3根據(jù)本發(fā)明的示例性實(shí)施例,示出一種控制網(wǎng)絡(luò)擁塞的方法的流程圖;及圖4示出一種為本發(fā)明提供合適的操作環(huán)境的示例性系統(tǒng)。
具體實(shí)施例方式
本發(fā)明涉及用于在Web服務(wù)可靠消息通信協(xié)議的環(huán)境中進(jìn)行流量和擁塞控制的方法、系統(tǒng)和計(jì)算機(jī)程序產(chǎn)品。本發(fā)明的實(shí)施例可包括專用或通用計(jì)算機(jī),它包括各種計(jì)算機(jī)硬件,如以下將更詳細(xì)討論。
本發(fā)明涉及Web服務(wù)可靠消息通信協(xié)議(以下稱為“RM-WS”協(xié)議)的擴(kuò)展,它描述在存在軟件組件、系統(tǒng)或網(wǎng)絡(luò)失敗的情況下,允許消息在分布式應(yīng)用程序之間被可靠傳遞的協(xié)議。Web服務(wù)可靠消息通信協(xié)議便于消息從源(以下稱為“發(fā)起者”)到例如服務(wù)等目的地(以下稱為“接受者”)的成功傳輸,并確保出錯(cuò)情況是可檢測(cè)的。這些協(xié)議是傳輸不可知的,從而允許使用不同的網(wǎng)絡(luò)傳輸技術(shù)來(lái)實(shí)現(xiàn)它們。此外,可靠消息通信協(xié)議的各種實(shí)現(xiàn)對(duì)應(yīng)用程序隱藏間歇性的通信失敗,并可在系統(tǒng)失敗的情形中提供可恢復(fù)性。
若干示例性實(shí)施例通過(guò)基于接受者的可用緩沖區(qū)大小動(dòng)態(tài)確定用于發(fā)送消息的消息窗口大小,使用RM-WS協(xié)議來(lái)提供消息的高效傳輸。更特別地,本發(fā)明提供一種流量控制機(jī)制,其中接受者讓發(fā)起者知道接受者的緩沖區(qū)中有多少空間。接受者緩沖區(qū)大小的信息被包括在響應(yīng)消息中(例如,基礎(chǔ)結(jié)構(gòu)確認(rèn)響應(yīng)消息),發(fā)起者隨即使用該信息來(lái)計(jì)算消息窗口大小。此計(jì)算所得的窗口大小從而定義為避免由于緩沖區(qū)過(guò)速而重新發(fā)送消息,可向接受者發(fā)送的消息數(shù)量的上限。
圖1A示出上述示例性流量控制實(shí)施例。圖1A示出分布式網(wǎng)絡(luò)100,它包括發(fā)起者105和接受者120。在發(fā)起者105和接受者120之間建立有連接,用于根據(jù)RM-WS協(xié)議交換消息。一旦建立連接,接受者120即可周期性地在消息內(nèi)(例如,基礎(chǔ)結(jié)構(gòu)消息115)向發(fā)起者105發(fā)送關(guān)于其緩沖區(qū)大小的信息。接受者緩沖區(qū)大小的信息指示等待應(yīng)用程序135處理的已緩沖消息185的可用存儲(chǔ)器130的量。
注意,盡管基礎(chǔ)結(jié)構(gòu)消息115通常被用來(lái)向發(fā)起者105發(fā)送接受者緩沖區(qū)大小的信息,但是應(yīng)用層消息(例如,作為接受者的輸出被發(fā)送的消息)也可包括用于為接受者120標(biāo)識(shí)存儲(chǔ)器可用大小的擴(kuò)展。此外,根據(jù)RM-WS協(xié)議,基礎(chǔ)結(jié)構(gòu)消息115通常是確認(rèn)響應(yīng)消息;但是本發(fā)明不限于任何特定類(lèi)型的基礎(chǔ)結(jié)構(gòu)消息115。因此,在傳遞接受者緩沖區(qū)大小的信息中使用基礎(chǔ)結(jié)構(gòu)消息115——以及所提及的任何特定類(lèi)型的基礎(chǔ)結(jié)構(gòu)消息——僅是為說(shuō)明性目的而使用的,而不意味著限制或者縮小本發(fā)明的范圍,除非在所附權(quán)利要求書(shū)中明確聲明。
無(wú)論是什么類(lèi)型的消息,一接收到基礎(chǔ)結(jié)構(gòu)消息115內(nèi)對(duì)接受者緩沖區(qū)大小的指示,發(fā)起者105即可發(fā)送多達(dá)該緩沖區(qū)大小信息所指示的個(gè)數(shù)的消息。換言之,接受者的存儲(chǔ)器130已經(jīng)有在等待應(yīng)用程序135處理的若干已緩沖消息185。因此,在丟棄消息之前發(fā)起者105可向接受者120發(fā)送的最大消息個(gè)數(shù)是由存儲(chǔ)器130內(nèi)的可用緩沖區(qū)大小確定的。
注意,基礎(chǔ)結(jié)構(gòu)消息115內(nèi)的接受者緩沖區(qū)大小的信息是發(fā)起者105將向接受者120發(fā)送的消息個(gè)數(shù)的上限。但是,可基于諸如傳輸中消息的個(gè)數(shù)、之前接收到的確認(rèn)的個(gè)數(shù)、當(dāng)前正被確認(rèn)的消息的個(gè)數(shù)等因素來(lái)修改此上限。例如,發(fā)起者105可標(biāo)識(shí)若干傳輸中消息125,根據(jù)RM-WS協(xié)議,它們是已被發(fā)送到接受者,但沒(méi)有接收到對(duì)應(yīng)確認(rèn)的消息。這些傳輸中消息125可以是被接受者120丟棄或在線上丟失的消息。傳輸中消息125還可以是接受者120已接收到,但其確認(rèn)或被丟失或在下述計(jì)算之前,正在向發(fā)起者105運(yùn)送中的消息。另一種可能性是傳輸中消息125可能在網(wǎng)絡(luò)中的中間方(例如,路由器或SOAP中間方)被延遲。
無(wú)論如何,一知道傳輸中消息125的個(gè)數(shù),發(fā)起者105即可利用窗口大小計(jì)算模塊110,在計(jì)算消息窗口大小155時(shí),從可用接受者緩沖區(qū)大小減去傳輸中消息125的個(gè)數(shù)。如前所述,消息窗口大小155表示為避免由于緩沖區(qū)過(guò)速而重新發(fā)送消息,可向接受者120發(fā)送的消息個(gè)數(shù)的上限。
注意,基礎(chǔ)結(jié)構(gòu)消息115內(nèi)的緩沖區(qū)大小信息通常是以消息而不是字節(jié)為單位。類(lèi)似地,消息窗口大小155還可用若干消息為單位,而不是特定字節(jié)大小。此外,因?yàn)榘l(fā)起者105跟蹤其所發(fā)送的消息(例如,傳輸中消息125)個(gè)數(shù)以及接受者120的存儲(chǔ)器130中可用空間的數(shù)量,所以發(fā)起者總是知道在接受者120方有多少空間可用。因此,發(fā)起者105并不試圖估算處理應(yīng)用程序135的消息處理速率,而是依靠接受者120告訴它接受者可緩沖多少消息。這使窗口大小計(jì)算模塊110在任何處理速率(諸如恒定速率處理或隨機(jī)突發(fā)處理)下都可工作。
其它示例性實(shí)施例解決因基礎(chǔ)結(jié)構(gòu)消息115(例如,確認(rèn)響應(yīng)消息)不可靠(即,可能在從接受者向發(fā)起者運(yùn)送途中丟失)而產(chǎn)生的問(wèn)題。在這些實(shí)施例中,以及將在以下更詳細(xì)描述的是,根據(jù)特定RM-WS協(xié)議,當(dāng)消息窗口大小155等于0時(shí),發(fā)起者105可通過(guò)發(fā)送例如確認(rèn)請(qǐng)求消息,來(lái)周期性地試探可用空間。響應(yīng)于確認(rèn)請(qǐng)求消息,對(duì)應(yīng)的確認(rèn)響應(yīng)通常會(huì)包括當(dāng)前接受者緩沖區(qū)大小的信息。
注意,在消息窗口大小155的計(jì)算中,窗口大小計(jì)算模塊110可利用除了緩沖區(qū)大小信息和傳輸中消息125個(gè)數(shù)以外的其它信息。例如,當(dāng)基礎(chǔ)結(jié)構(gòu)消息115是確認(rèn)響應(yīng)消息時(shí),還可使用當(dāng)前正被確認(rèn)的消息個(gè)數(shù)來(lái)減小消息窗口大小155。此外,在批確認(rèn)的情形中,可能還需要使用先前接收到的確認(rèn)響應(yīng)的個(gè)數(shù)、根據(jù)示例性實(shí)施例,以下是可用來(lái)計(jì)算消息窗口大小155的一種算法的示例。在發(fā)起者105和接受者120之間的通信開(kāi)始時(shí),假設(shè)接收的窗口大小等于1,且傳輸中消息的個(gè)數(shù)等于0。此外,先前接收到的確認(rèn)也被設(shè)為0。在發(fā)起者105一方,該算法如下。如果消息窗口大小155大于0,則發(fā)起者105可發(fā)送一個(gè)消息;傳輸中消息計(jì)數(shù)遞增1;以及消息窗口大小155遞減1。
另一方面,如果接收的窗口大小等于0,示例性實(shí)施例阻塞消息發(fā)送,直至重新計(jì)算的窗口大小大于0。當(dāng)窗口大小大于0時(shí),前述過(guò)程被重復(fù)。
一接收到確認(rèn)響應(yīng)或基礎(chǔ)結(jié)構(gòu)消息115,該示例性算法即執(zhí)行以下步驟。首先,它將從消息115中提取接受者緩沖區(qū)大小信息。此外,窗口大小計(jì)算模塊110計(jì)算當(dāng)前正被確認(rèn)的消息的個(gè)數(shù)。同時(shí)計(jì)算模塊110需要確定新確認(rèn)的個(gè)數(shù),它等于當(dāng)前正被確認(rèn)的消息減去先前接收到的確認(rèn)。注意,對(duì)于RM-WS協(xié)議批處理確認(rèn)響應(yīng)的實(shí)例而言,此最后一個(gè)計(jì)算可能是需要的;但是,本發(fā)明不限于此類(lèi)批處理過(guò)程。因此,只是為說(shuō)明性目的而取先前接收到的確認(rèn)個(gè)數(shù)和當(dāng)前正被確認(rèn)的消息之差來(lái)計(jì)算新確認(rèn)的個(gè)數(shù),且不意味著限制或者縮小本發(fā)明的范圍,除非所附權(quán)利要求書(shū)中明確聲明。
但是,如果使用新確認(rèn)的個(gè)數(shù),則傳輸中消息125包括先前被發(fā)送的消息個(gè)數(shù)減去新確認(rèn)的個(gè)數(shù)。此外,先前接收到的確認(rèn)的個(gè)數(shù)變?yōu)榈扔诋?dāng)前正被確認(rèn)的消息(又是在批確認(rèn)的情形中)。最后,消息窗口大小155變?yōu)榈扔诮邮苷呔彌_區(qū)大小信息減去使用窗口大小計(jì)算模塊110計(jì)算所得的傳輸中消息125的個(gè)數(shù)。
以下實(shí)例示出上述消息窗口大小跟蹤過(guò)程。在此例中,發(fā)起者105向接受者120發(fā)送10個(gè)消息,并剛剛接收到對(duì)該10個(gè)消息的1個(gè)確認(rèn)115,該確認(rèn)包括指示接受者120能緩沖5個(gè)消息的接受者緩沖區(qū)大小信息。發(fā)起者105發(fā)送消息11到15,并停止發(fā)送更多的消息。接下來(lái),發(fā)起者105接收到對(duì)消息1到13的確認(rèn),以及接受者120的接收存儲(chǔ)器130中有5個(gè)空間可用的接受者緩沖區(qū)大小信息。知道對(duì)于接受者120而言有兩個(gè)消息是傳輸中消息125,發(fā)起者105將僅向接受者再發(fā)送3個(gè)消息,然后等待更多空間變?yōu)榭捎谩?br> 另一個(gè)示例性實(shí)施例在每連接的基礎(chǔ)上,有利地提供可動(dòng)態(tài)配置的存儲(chǔ)器130緩沖區(qū)大小。此特征解決系統(tǒng)資源平衡的問(wèn)題,從而可通過(guò)為具有很高(或很低)緩沖區(qū)需求的發(fā)起者105適當(dāng)?shù)胤峙浯鎯?chǔ)器130,來(lái)為每個(gè)連接最優(yōu)地實(shí)現(xiàn)流量。和為在接收方緩沖消息而進(jìn)行硬編碼存儲(chǔ)器分配的TCP不同,示例性實(shí)施例允許可基于諸如發(fā)起者105的處理速度、請(qǐng)求的復(fù)雜程度等因素來(lái)配置接受者120的存儲(chǔ)器130容量(即,為連接分配的總緩沖區(qū)大小)。
例如,已建立的到僅周期性地發(fā)送一個(gè)消息的發(fā)起者105的連接不會(huì)需要大量存儲(chǔ)器130用于緩沖消息185。因此,發(fā)起者105和接受者120之間可發(fā)生協(xié)商,以確定發(fā)起者105的特定需求,以及相應(yīng)的存儲(chǔ)器130的分配。此外,可為每個(gè)已建立的連接發(fā)生此協(xié)商過(guò)程,以在各個(gè)分布式設(shè)備之間恰當(dāng)?shù)仄胶獯鎯?chǔ)器130資源。
其它示例性實(shí)施例還通過(guò)調(diào)整用于向一端點(diǎn)發(fā)送消息的傳輸窗口和/或重試時(shí)間周期來(lái)提供擁塞控制,以適應(yīng)于諸如網(wǎng)絡(luò)帶寬、性能和拓?fù)浣Y(jié)構(gòu)中的變化等因素。該機(jī)制涉及測(cè)量從消息被發(fā)送的時(shí)間點(diǎn)到對(duì)應(yīng)確認(rèn)被接收到的時(shí)間所過(guò)去的往返時(shí)間。以下是擁塞控制過(guò)程如何工作的示例的簡(jiǎn)述。
首先,示例性實(shí)施例主動(dòng)尋求接近期望或最優(yōu)速率的近似速率。本發(fā)明通過(guò)例如指數(shù)增長(zhǎng)傳輸中消息個(gè)數(shù)直至找到失敗點(diǎn)來(lái)完成此項(xiàng)工作。失敗點(diǎn)下最后一個(gè)成功的速率是最接近最優(yōu)點(diǎn)的已知點(diǎn)。示例性實(shí)施例隨即重置并重試(例如,使用指數(shù)速率增長(zhǎng))將速率提高回最后的已知好點(diǎn),并使用逼近最優(yōu)速率的算法來(lái)從該處起進(jìn)行微調(diào)。
圖1B示出用于實(shí)現(xiàn)上述實(shí)施例中的一些實(shí)施例的網(wǎng)絡(luò)100。如圖所示,發(fā)起者105可向接受者120發(fā)送第一若干消息175。當(dāng)接受者120接收到第一若干消息175,第一確認(rèn)響應(yīng)165被發(fā)送到發(fā)起者105。一接收到該第一確認(rèn)響應(yīng)165,即可利用消息傳輸時(shí)間比較模塊140來(lái)確定應(yīng)如何調(diào)整消息窗口大小155和/或是否應(yīng)當(dāng)調(diào)整重試時(shí)間周期(更快或更慢)。
例如,消息傳輸時(shí)間比較模塊140確定期望消息傳輸時(shí)間,它定義在發(fā)送定義若干消息175和在發(fā)起者105處接收對(duì)應(yīng)的第一確認(rèn)響應(yīng)165之間的期望時(shí)間限制。換言之,由從發(fā)送消息175到接受者120到在發(fā)起者105處接收對(duì)應(yīng)確認(rèn)165的期望往返時(shí)間定義期望消息傳輸時(shí)間。如以下將會(huì)詳細(xì)討論,通常期望消息傳輸時(shí)間是基于消息窗口大小155,后者表示在一根網(wǎng)線上向接受者發(fā)送的傳輸中消息的個(gè)數(shù)的上限。
消息傳輸時(shí)間比較模塊140一確定期望消息傳輸時(shí)間,它即將期望消息傳輸時(shí)間與將第一若干消息175發(fā)送到接受者120和接收回第一確認(rèn)響應(yīng)165所用的實(shí)際時(shí)間相比較。如果第一確認(rèn)響應(yīng)在期望消息傳輸時(shí)間到期之前被接收到,則消息傳輸時(shí)間比較模塊140將給消息窗口大小調(diào)整模塊145成功指示。由此,消息窗口大小調(diào)整模塊145將增加消息窗口大小155,并將該次成功作為最后的已知好值180記錄在存儲(chǔ)器150中。換言之,前一消息窗口大小155作為最后的已知好值180被記錄,且按某個(gè)因子增加前一消息窗口大小155(通常是指數(shù)增長(zhǎng))。然后對(duì)應(yīng)于已增加的消息窗口大小155的第二若干消息170被發(fā)送到接受者120,并接收到對(duì)第二若干消息170的(一個(gè)或多個(gè))第二確認(rèn)響應(yīng)160,該過(guò)程繼續(xù)進(jìn)行直至失敗發(fā)生。
另一方面,如果在接收第一確認(rèn)響應(yīng)165(或在170的情形中應(yīng)為第二確認(rèn)響應(yīng))之前期望消息傳輸時(shí)間到期,則消息傳輸時(shí)間比較模塊140將給消息窗口調(diào)整模塊145失敗指示。注意,在該實(shí)例中,失敗指示可能示意已經(jīng)發(fā)生了若干次。例如,所發(fā)送的消息(第一若干消息175或已增加的第二若干消息170)可能已被丟失。替換地,或者結(jié)合地,所發(fā)送消息175、170的一個(gè)或多個(gè)對(duì)應(yīng)的確認(rèn)消息165、160可能已被丟失或在期望消息傳輸時(shí)間到期之后才被接收到。
無(wú)論如何,消息窗口大小調(diào)整模塊145將減少消息窗口大小155,通常減到存儲(chǔ)在存儲(chǔ)器150中的最后已知好值180以下的某個(gè)值,和/或加長(zhǎng)重試時(shí)間周期(即,使等待重試消息的時(shí)間更長(zhǎng))。注意,盡管示例性實(shí)施例將消息窗口大小155減至最后已知好值180以下的某個(gè)值,但是本發(fā)明不限于此特定實(shí)施例。例如,消息窗口大小調(diào)整模塊145可增量地減少消息窗口大小155,直至達(dá)到成功,而該成功值可能是也可能不是最后已知好值180。類(lèi)似地,上述在接收到成功指示時(shí)增加消息窗口大小155不必是指數(shù)增長(zhǎng),而也可以是其少量遞增。實(shí)際上,如以下將會(huì)更詳細(xì)描述的,可使用不同的調(diào)整消息窗口大小155的算法來(lái)進(jìn)行微調(diào)或?qū)崿F(xiàn)其它目的。由此,基于成功或失敗指示的對(duì)窗口大小155的任何增加或減少都僅是為說(shuō)明性目的而使用的,且不意味著限制或縮小本發(fā)明的范圍,除非所附權(quán)利要求書(shū)中明確聲明。
但是,當(dāng)在消息窗口大小調(diào)整模塊145處接收到失敗通知時(shí),若干示例性實(shí)施例規(guī)定消息窗口大小155將縮小到大小為1。此后,傳輸消息175、170的成功嘗試將把消息窗口大小155指數(shù)增長(zhǎng)到最后已知好值180。注意,消息窗口大小155的急劇減少引起傳輸速率降低,從而有效地將指數(shù)增長(zhǎng)過(guò)程重置到其初始狀態(tài)。但是發(fā)起者105用來(lái)發(fā)送消息的實(shí)際緩沖區(qū)大小不縮小,且已被緩沖用于發(fā)送的消息可不從緩沖區(qū)中被移除,但基礎(chǔ)結(jié)構(gòu)可能不接收任何新消息(即,發(fā)送操作被阻塞),從而有效地令發(fā)起者105降速。緩沖區(qū)中的消息數(shù)量一降至有效消息窗口大小155以下,新消息即可被基礎(chǔ)結(jié)構(gòu)接受。
在上述重置之后,進(jìn)行重新發(fā)送發(fā)起者105中最老的消息的嘗試,并設(shè)置新的期望消息傳輸時(shí)間。如果在接收到對(duì)所重新發(fā)送的消息的對(duì)應(yīng)確認(rèn)之前,新的期望消息傳輸時(shí)間到期,則示例性實(shí)施例提供期望消息傳輸時(shí)間的加倍以及重試。此過(guò)程可重復(fù)發(fā)生,直至到達(dá)成功狀態(tài),或已進(jìn)行了可配置次數(shù)的嘗試,在后一種情形中,可聲明該此傳輸不成功,并向發(fā)起者105應(yīng)用程序發(fā)出錯(cuò)誤。此實(shí)施例有效地實(shí)現(xiàn)一種消息后退重試機(jī)制,該機(jī)制解決網(wǎng)絡(luò)100上的擁塞問(wèn)題,以使其正?;虻竭_(dá)穩(wěn)定狀態(tài)。
一接受到成功傳輸,可如上述再次嘗試增加消息窗口大小155和消息傳輸速率。如前文所提及,為應(yīng)用在上一次嘗試期間所習(xí)得的信息,若干示例性實(shí)施例規(guī)定將消息窗口大小155增加至最后已知好值180。在此點(diǎn)處,消息窗口大小調(diào)整模塊145改變算法來(lái)試探和尋找最優(yōu)點(diǎn)。例如,一些實(shí)施例規(guī)定逼近算法(以及消息窗口大小155的機(jī)會(huì)增加)如下。當(dāng)達(dá)到消息窗口大小的最后已知好值180時(shí),為試圖猜測(cè)最優(yōu)點(diǎn),消息窗口大小調(diào)整模塊145可通過(guò)將差值除以某個(gè)因子來(lái)選擇最后失敗消息窗口大小155和最后已知好值180之間的一個(gè)點(diǎn)。如果該值過(guò)高(即,它超過(guò)了最優(yōu)速率并引起消息丟失或過(guò)度延遲),則消息窗口大小調(diào)整模塊145將該因子重新調(diào)整為較小的值。
當(dāng)然,還有可用于微調(diào)或調(diào)整消息窗口大小155的其它具體實(shí)現(xiàn)或算法。例如,在到達(dá)最后已知好值180以后,消息窗口大小調(diào)整模塊145可簡(jiǎn)單地遞增消息窗口大小155,直至達(dá)到最優(yōu)大小。由此,如前所述,使用任何特定算法來(lái)主動(dòng)逼近最優(yōu)消息大小155或微調(diào)消息窗口大小155都只是為說(shuō)明性目的,且不意味著限制或者縮小本發(fā)明的范圍,除非所附權(quán)利要求書(shū)中明確聲明。
一確定了最優(yōu)消息窗口大小155,其它示例性實(shí)施例還規(guī)定周期性地嘗試增加最優(yōu)值,來(lái)為帶寬增加進(jìn)行調(diào)整。其它示例性實(shí)施例規(guī)定檢測(cè)何時(shí)發(fā)生指示網(wǎng)絡(luò)100上的帶寬減少的失敗。在該情形中,消息窗口大小155可被重置,上述增長(zhǎng)過(guò)程可被增加到最后已知好值180,微調(diào)過(guò)程可再次被執(zhí)行。注意,在該情形中最后已知好值180失敗,若干示例性實(shí)施例規(guī)定確定前一個(gè)最后已知好值180,即恰好在最后已知好值之前的已知好值。然后可用此前一個(gè)值來(lái)取代最后已知好值180,上述過(guò)程可繼續(xù)進(jìn)行。
如以上所提及的,為了檢測(cè)失敗,若干示例性實(shí)施例測(cè)量傳輸時(shí)間,即,從發(fā)送消息到接受對(duì)該消息的確認(rèn)所花的時(shí)間。在RS-WS協(xié)議允許由接受者120聚合確認(rèn)響應(yīng),以使單個(gè)確認(rèn)響應(yīng)確認(rèn)多個(gè)消息的接收的某些實(shí)例中,此問(wèn)題變得復(fù)雜。因此,示例性實(shí)施例跟蹤傳輸每個(gè)對(duì)應(yīng)于消息窗口大小155的消息所花的時(shí)間,直至接收到對(duì)應(yīng)的批確認(rèn)。然后使用往返時(shí)間的聚合分布的均值和/或方差來(lái)計(jì)算實(shí)際的傳輸時(shí)間。
因?yàn)橥禃r(shí)間的方差將取決于批中所確認(rèn)的消息個(gè)數(shù),所以期望消息傳輸時(shí)間應(yīng)基于消息窗口大小155而改變。換言之,期望消息傳輸時(shí)間通常隨著消息窗口大小155的增加而增加。但是,注意,在例如實(shí)現(xiàn)發(fā)送消息和接收對(duì)該消息的確認(rèn)之間的一一對(duì)應(yīng)的情形中,期望消息傳輸時(shí)間不一定需要基于消息窗口大小155。由此,令期望消息傳輸時(shí)間基于消息窗口大小155僅是為說(shuō)明性目的而使用,且不意味著限制或者縮小本發(fā)明的范圍,除非所附權(quán)利要求書(shū)中明確聲明。
以下例子示出上述的各個(gè)實(shí)施例。在此例中,消息窗口大小155可用大小為1的窗口來(lái)啟動(dòng),即,從發(fā)起者105到接受者120僅可有一個(gè)消息是傳輸中的。因此,第一號(hào)消息可被接受者120接收,對(duì)應(yīng)的第一號(hào)確認(rèn)消息可被發(fā)起者105接收。消息傳輸時(shí)間比較模塊140隨即測(cè)量往返時(shí)間,并將其與對(duì)應(yīng)該特定消息窗口大小155的期望消息傳輸時(shí)間相比較。假設(shè)對(duì)該比較給出成功,則消息窗口大小調(diào)整模塊145將消息窗口大小155增加到2,其中第二和第三號(hào)消息被發(fā)送,而對(duì)這些消息的確認(rèn)被發(fā)起者105接收。再次假設(shè)成功的傳輸時(shí)間,則消息窗口大小調(diào)整模塊145將把消息窗口大小155增加到4,其中第四到第七號(hào)消息被發(fā)送,而對(duì)應(yīng)的確認(rèn)被接收。此過(guò)程繼續(xù)進(jìn)行,直至檢測(cè)到失敗。
如果下一次將消息窗口大小155增加到8引起失敗,則該算法被重新啟動(dòng),并主動(dòng)地增加到最后已知好值180,在此實(shí)例中為4。隨后使用逼近算法,令初始值等于最后已知好值180加某個(gè)δ、或者最后已知好值180(即,4)與失敗點(diǎn)(即,8)之間的差值除以某個(gè)因子。例如,如果該因子為2,那么消息窗口大小155變?yōu)?(即,4+(8-4)/2=6)。假設(shè)值6失敗,那么該過(guò)程嘗試根據(jù)消息大小為5的消息窗口大小155來(lái)發(fā)送消息,其中如果成功則5是最優(yōu)選擇,如果失敗則4是最優(yōu)選擇。
還可用包括功能性步驟和/或非功能性動(dòng)作的方法的形式來(lái)描述本發(fā)明。以下是對(duì)在實(shí)現(xiàn)本發(fā)明中可執(zhí)行的步驟和/或動(dòng)作的描述。通常,功能性步驟以所實(shí)現(xiàn)的結(jié)果的形式來(lái)描述本發(fā)明,而非功能性動(dòng)作描述用于實(shí)現(xiàn)特定結(jié)果的更具體的動(dòng)作。盡管能以特定次序來(lái)描述或在所附權(quán)利要求書(shū)中聲明功能性步驟和/或非功能性動(dòng)作,但是本發(fā)明不必限于任何特定次序,或者步驟和/或動(dòng)作的組合。此外,在所附權(quán)利要求書(shū)的陳述中,以及在以下對(duì)圖2和3的流程圖的描述中對(duì)步驟和/或動(dòng)作的使用是用來(lái)指示所期望的對(duì)此類(lèi)項(xiàng)目的具體使用。
圖2和3示出本發(fā)明各個(gè)示例性實(shí)施例的流程圖。以下對(duì)圖2和3的描述偶爾會(huì)引用來(lái)自圖1A和1B的對(duì)應(yīng)元素。盡管可能會(huì)引用來(lái)自這些附圖的特定元素,但是這些元素僅是為說(shuō)明性目的而使用,并不意味著限制或者縮小本發(fā)明的范圍,除非所附權(quán)利要求書(shū)中明確聲明。
圖2示出方法200的示例性流程圖,該方法用于通過(guò)基于接受者的可用緩沖區(qū)大小動(dòng)態(tài)地確定用于發(fā)送消息的消息窗口大小,根據(jù)RM-WS協(xié)議在端點(diǎn)之間高效傳輸消息。方法200包括建立205序列會(huì)話的動(dòng)作。例如,如圖1A中所示,可根據(jù)RM-WS協(xié)議(例如,WSReliableMessaging),在發(fā)起者105和接受者120之間建立應(yīng)用層(例如,SOAP層)處的序列會(huì)話。方法200還包括通過(guò)序列會(huì)話接收210RM-WS消息的動(dòng)作。例如,發(fā)起者105可從接受者120接收包括接受者緩沖區(qū)大小信息的消息115,該信息指示用于緩沖等待應(yīng)用程序135處理的消息185的可用存儲(chǔ)器130的量。通常,消息兒5會(huì)是基礎(chǔ)結(jié)構(gòu)消息,例如,確認(rèn)響應(yīng)消息115。
此后,方法200還包括標(biāo)識(shí)215傳輸中消息的個(gè)數(shù)的動(dòng)作。即根據(jù)RM-WS協(xié)議,發(fā)起者105可確定已向接受者發(fā)送,但沒(méi)有接收到對(duì)應(yīng)確認(rèn)的傳輸中消息125的個(gè)數(shù)?;诮邮苷呔彌_區(qū)大小信息和傳輸中消息的個(gè)數(shù),方法200還包括計(jì)算225消息窗口大小的動(dòng)作。例如,可使用窗口大小計(jì)算模塊110,基于基礎(chǔ)結(jié)構(gòu)消息115內(nèi)的接受者緩沖區(qū)大小信息和傳輸中消息125的個(gè)數(shù),來(lái)計(jì)算消息窗口大小155。消息窗口大小155表示為避免由于接受者120上的緩沖區(qū)過(guò)速而重新發(fā)送消息,而能向接受者發(fā)送的消息個(gè)數(shù)的上限。
若干示例性實(shí)施例規(guī)定如果窗口大小大于0,則可向接受者120發(fā)送對(duì)應(yīng)于計(jì)算所得的消息窗口大小155的若干個(gè)消息。另一方面,如果消息窗口大小155是0,則若干示例性實(shí)施例規(guī)定阻塞消息禁止其被發(fā)送,直至接收到基礎(chǔ)結(jié)構(gòu)消息(或其它消息)并使用該消息計(jì)算出消息窗口大小155大于0。根據(jù)RM-WS協(xié)議,在基礎(chǔ)結(jié)構(gòu)是確認(rèn)響應(yīng)消息115的情況下,其它示例性實(shí)施例規(guī)定向接受者120周期性地發(fā)送確認(rèn)請(qǐng)求消息。響應(yīng)于此,可接收到包括用于重新計(jì)算消息窗口大小155的接受者緩沖區(qū)大小信息的確認(rèn)響應(yīng)消息115。由此,當(dāng)重新計(jì)算所得的消息窗口大小155大于0時(shí),對(duì)應(yīng)于重新計(jì)算所得的消息窗口大小155的若干消息可被發(fā)送。
如前文所提及,緩沖區(qū)信息可以是要被發(fā)送的消息的個(gè)數(shù),而不是存儲(chǔ)器中可用字節(jié)數(shù)的形式。此外,若干示例性實(shí)施例規(guī)定,接受者為緩沖等待應(yīng)用程序處理的消息所分配的總存儲(chǔ)器在每連接的基礎(chǔ)上是可動(dòng)態(tài)配置的。此外,對(duì)消息窗口大小155的計(jì)算還可基于確認(rèn)消息中所確認(rèn)的消息的個(gè)數(shù)和/或?yàn)橄惹八l(fā)送的消息接收到的先前的確認(rèn)。
圖3示出方法300的示例性流程圖,該方法根據(jù)RM-WS協(xié)議,通過(guò)調(diào)整用于向端點(diǎn)發(fā)送消息的傳輸窗口來(lái)控制網(wǎng)絡(luò)擁塞,以適應(yīng)諸如網(wǎng)絡(luò)帶寬、性能和拓?fù)浣Y(jié)構(gòu)中的變化等因素。方法300包括發(fā)送305第一若干消息的動(dòng)作。例如,如圖1B中所示,根據(jù)RM-WS協(xié)議(例如,WSReliableMessaging),發(fā)起者105可通過(guò)已建立的序列會(huì)話向接受者120發(fā)送第一若干消息175。第一若干消息175對(duì)應(yīng)于消息窗口大小155,其中消息窗口大小155表示在一根網(wǎng)線上向接受者120發(fā)送的傳輸中消息的上限。
方法300還包括調(diào)整320消息窗口大小的步驟。步驟320包括標(biāo)識(shí)310期望消息傳輸時(shí)間的動(dòng)作。例如,可使用消息傳輸時(shí)間比較模塊140來(lái)標(biāo)識(shí)期望消息傳輸時(shí)間,它定義發(fā)送若干消息和接收對(duì)應(yīng)確認(rèn)消息之間的期望時(shí)間限制。步驟320還包括提供315關(guān)于是否接收到對(duì)應(yīng)確認(rèn)消息的指示的動(dòng)作。例如,消息傳輸時(shí)間比較模塊140可向消息大小調(diào)整模塊145提供在期望消息傳輸時(shí)間到期之前是否接收到對(duì)應(yīng)確認(rèn)消息165的指示。然后消息窗口大小調(diào)整模塊145可將此指示用于調(diào)整消息窗口大小155和/或重試時(shí)間周期,以避免由于網(wǎng)絡(luò)擁塞而重新發(fā)送消息。
其它示例性實(shí)施例規(guī)定對(duì)消息窗口大小155的調(diào)整是指示在期望消息傳輸時(shí)間到期之前已接收到對(duì)應(yīng)確認(rèn)消息165的消息窗口大小155的增加。在消息窗口大小155增加以后,其它示例性實(shí)施例規(guī)定發(fā)送對(duì)應(yīng)于已增加的消息窗口大小155的已增加個(gè)數(shù)的消息。例如,可從發(fā)起者105向接受者120發(fā)送第二若干消息175,其中基于已增加的消息窗口大小155,消息傳輸時(shí)間比較模塊140可標(biāo)識(shí)第二期望消息傳輸時(shí)間。已增加的期望消息傳輸時(shí)間定義發(fā)送已增加個(gè)數(shù)的消息170和接收一個(gè)或多個(gè)對(duì)應(yīng)的確認(rèn)消息160之間的期望時(shí)間限制。
此后,消息傳輸時(shí)間比較模塊140可提供關(guān)于是否在第二期望消息傳輸時(shí)間到期之前接收到對(duì)應(yīng)于已增加個(gè)數(shù)的消息170的一個(gè)或多個(gè)對(duì)應(yīng)的確認(rèn)消息160的指示(注意由于所發(fā)送消息的個(gè)數(shù)的增加,第二期望消息傳輸時(shí)間通常比先前的值有所增加)。在一個(gè)實(shí)施例中,消息窗口大小調(diào)整模塊減少已增加消息窗口大小以指示以下各種情況中的至少一種已增加個(gè)數(shù)的消息170中的一個(gè)或多個(gè)被丟失;對(duì)應(yīng)于已增加個(gè)數(shù)的消息170的對(duì)應(yīng)的確認(rèn)消息160中的一個(gè)或多個(gè)被丟失,和/或在第二期望消息傳輸時(shí)間到期之后才被接收到。已增加消息窗口大小可減少到消息窗口大小和已增加消息窗口大小之間的某個(gè)大小。
在另一個(gè)示例性實(shí)施例中,消息窗口大小155被視為最后已知好值180,并被存儲(chǔ)在存儲(chǔ)器150中,且其中已增加消息窗口大小155的減小量小于消息窗口大小155,這導(dǎo)致減小的消息窗口大小155。又一個(gè)示例性實(shí)施例規(guī)定發(fā)送對(duì)應(yīng)于已減小消息窗口大小155的已減少個(gè)數(shù)的消息?;谝褱p小消息窗口大小155,標(biāo)識(shí)出第二期望消息傳輸時(shí)間(注意盡管所發(fā)送的消息個(gè)數(shù)減少,但第二期望消息傳輸時(shí)間可能比先前的期望消息傳輸時(shí)間有所增長(zhǎng)以補(bǔ)償網(wǎng)絡(luò)擁塞),它定義發(fā)送已減少個(gè)數(shù)的消息和接收對(duì)應(yīng)的確認(rèn)消息之間的期望時(shí)間限制。此后,可提供在第二期望消息傳輸時(shí)間到期之前接收到對(duì)應(yīng)于已減少個(gè)數(shù)的消息的一個(gè)或多個(gè)對(duì)應(yīng)的確認(rèn)消息的指示。同樣,可從存儲(chǔ)器150中檢索出消息窗口大小155的大小(即,最后已知好值180),然后將已減小的消息窗口大小155增加到消息窗口大小155。
此后,若干示例性實(shí)施例規(guī)定通過(guò)消息窗口大小155的單調(diào)整(即,遞增和遞減)來(lái)微調(diào)消息窗口大小155。其它示例性實(shí)施例規(guī)定將消息窗口大小155視為最后已知好值,且已增加消息窗口大小的減小是消息窗口大小155。
其它示例性實(shí)施例規(guī)定對(duì)應(yīng)的若干確認(rèn)消息可被批處理為單個(gè)消息。在該實(shí)例中,期望消息傳輸時(shí)間是基于發(fā)送若干消息和接收單個(gè)消息之間的期望消息傳輸時(shí)間的均值和/或方差。
在本發(fā)明范圍之內(nèi)的實(shí)施例還包括用于攜帶或其上存儲(chǔ)計(jì)算機(jī)可執(zhí)行指令或數(shù)據(jù)結(jié)構(gòu)的計(jì)算機(jī)可讀介質(zhì)。此類(lèi)計(jì)算機(jī)可讀介質(zhì)可以是可由通用或?qū)S糜?jì)算機(jī)訪問(wèn)的任何可用介質(zhì)。作為示例,而非限制,此類(lèi)計(jì)算機(jī)可讀機(jī)制可包括RAM、ROM、EEPROM、CD-ROM或其它光盤(pán)存儲(chǔ),磁盤(pán)存儲(chǔ)或其它磁存儲(chǔ)設(shè)備,或可用來(lái)攜帶或存儲(chǔ)可由通用或?qū)S糜?jì)算機(jī)訪問(wèn)的計(jì)算機(jī)可執(zhí)行指令或數(shù)據(jù)結(jié)構(gòu)形式的所需程序代碼手段的任何其它介質(zhì)。當(dāng)通過(guò)網(wǎng)絡(luò)或其它通信連接(有線的、無(wú)線的、或有線和無(wú)線的組合)向計(jì)算機(jī)傳輸或提供信息時(shí),該計(jì)算機(jī)適當(dāng)?shù)貙⒃撨B接視為計(jì)算機(jī)可讀介質(zhì)。因此,任何此類(lèi)連接都被適當(dāng)?shù)胤Q為計(jì)算機(jī)可讀介質(zhì)。以上的各種組合也應(yīng)被包括在計(jì)算機(jī)可讀介質(zhì)的范圍之內(nèi)。計(jì)算機(jī)可執(zhí)行指令包括,例如可令通用計(jì)算機(jī)、專用計(jì)算機(jī)、或?qū)S锰幚碓O(shè)備執(zhí)行某個(gè)或某組功能的指令和數(shù)據(jù)。
圖4和以下討論旨在提供對(duì)可在其中實(shí)現(xiàn)本發(fā)明的合適的計(jì)算環(huán)境的簡(jiǎn)要、一般的描述。盡管不是必須,但將在由網(wǎng)絡(luò)環(huán)境中的計(jì)算機(jī)執(zhí)行的諸如程序模塊等計(jì)算機(jī)可執(zhí)行指令的通用上下文中描述本發(fā)明。一般而言,程序模塊包括執(zhí)行特定任務(wù)或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類(lèi)型的例程、程序、對(duì)象、組件、數(shù)據(jù)結(jié)構(gòu)等等。計(jì)算機(jī)可執(zhí)行指令、相關(guān)聯(lián)的數(shù)據(jù)結(jié)構(gòu)、和程序模塊表示用于執(zhí)行本文中所揭示的方法的步驟的程序代碼手段。這些可執(zhí)行指令或相關(guān)聯(lián)數(shù)據(jù)結(jié)構(gòu)的特定順序表示用于實(shí)現(xiàn)這些步驟中所描述的功能的對(duì)應(yīng)動(dòng)作的示例。
本領(lǐng)域技術(shù)人員將能理解,本發(fā)明可在具有許多類(lèi)型的計(jì)算機(jī)系統(tǒng)配置的網(wǎng)絡(luò)計(jì)算環(huán)境中實(shí)施,這些類(lèi)型包括個(gè)人計(jì)算機(jī)、手持式設(shè)備、微處理器系統(tǒng)、基于微處理器的或可編程的消費(fèi)者電子設(shè)備、網(wǎng)絡(luò)PC、小型計(jì)算機(jī)、大型計(jì)算機(jī)、等等。本發(fā)明還可在分布式計(jì)算環(huán)境中實(shí)施,其中任務(wù)是由通過(guò)通信網(wǎng)絡(luò)鏈接(通過(guò)有線鏈接、無(wú)線鏈接、或有線和無(wú)線鏈接的結(jié)合)的若干遠(yuǎn)程處理設(shè)備來(lái)執(zhí)行的。在分布式計(jì)算環(huán)境中,程序模塊既可位于本地記憶存儲(chǔ)設(shè)備中,也可位于遠(yuǎn)程記憶存儲(chǔ)設(shè)備中。
參考圖4,用于實(shí)現(xiàn)本發(fā)明的一種示例性系統(tǒng)包括常規(guī)計(jì)算機(jī)420形式的通用計(jì)算設(shè)備,它包括處理單元421、系統(tǒng)存儲(chǔ)器422、和將包括系統(tǒng)存儲(chǔ)器422在內(nèi)的各種系統(tǒng)組件耦合到處理器單元421的系統(tǒng)總線423。系統(tǒng)總線423可以是若干類(lèi)型總線結(jié)構(gòu)中的任何一種,包括存儲(chǔ)器總線或存儲(chǔ)器控制器、外圍總線、和使用各種總線體系結(jié)構(gòu)中的任何一種的總線。系統(tǒng)存儲(chǔ)器包括只讀存儲(chǔ)器(ROM)424和隨機(jī)存取存儲(chǔ)器(RAM)425。包含諸如在啟動(dòng)時(shí)幫助在計(jì)算機(jī)420內(nèi)部的各元件之間傳輸信息的基本例程的基本輸入/輸出系統(tǒng)(BIOS)426可被存儲(chǔ)在ROM 424中。
計(jì)算機(jī)420還可包括用于讀或?qū)懹泊疟P(pán)439的硬磁盤(pán)驅(qū)動(dòng)器427、用于讀或?qū)懣梢苿?dòng)磁盤(pán)429的磁盤(pán)驅(qū)動(dòng)器428、和用于讀或?qū)懼T如CD-ROM或其它光介質(zhì)等可移動(dòng)光盤(pán)的光盤(pán)驅(qū)動(dòng)器430。硬磁盤(pán)驅(qū)動(dòng)器427、磁盤(pán)驅(qū)動(dòng)器428和光盤(pán)驅(qū)動(dòng)器430分別通過(guò)硬盤(pán)驅(qū)動(dòng)器接口432、磁盤(pán)驅(qū)動(dòng)器接口433和光盤(pán)驅(qū)動(dòng)器接口434鏈接到系統(tǒng)總線423。各驅(qū)動(dòng)器及其相關(guān)聯(lián)的計(jì)算機(jī)可讀介質(zhì)為計(jì)算機(jī)420提供計(jì)算機(jī)可執(zhí)行指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊及其它數(shù)據(jù)的非易失性存儲(chǔ)。盡管本文中所描述的示例性環(huán)境使用硬磁盤(pán)439、可移動(dòng)磁盤(pán)429和可移動(dòng)光盤(pán)431,用于存儲(chǔ)數(shù)據(jù)的其它類(lèi)型的計(jì)算機(jī)可讀介質(zhì)也可被使用,包括磁帶盒、閃存卡、數(shù)字多功能盤(pán)、貝努利盒式磁帶、RAM、ROM、等等。
包括一個(gè)或多個(gè)程序模塊的程序代碼手段可存儲(chǔ)在硬盤(pán)439、磁盤(pán)429、光盤(pán)431、ROM 424或RAM 425上,包括操作系統(tǒng)435、一個(gè)或多個(gè)應(yīng)用程序436、其它程序模塊437和程序數(shù)據(jù)438。用戶可通過(guò)鍵盤(pán)440、定位設(shè)備442或諸如話筒、操縱桿、圓盤(pán)式衛(wèi)星天線、掃描儀等其它輸入設(shè)備(未示出)將命令和信息輸入到計(jì)算機(jī)420中。這些及其它輸入設(shè)備常常通過(guò)耦合到系統(tǒng)總線423的串行端口接口446連接到處理單元421?;蛘?,輸入設(shè)備可通過(guò)諸如并行端口、游戲端口或通用串行總線(USB)等其它接口來(lái)連接。監(jiān)視器447或其它顯示設(shè)備也經(jīng)由諸如視頻適配器448等接口連接到系統(tǒng)總線423。除了監(jiān)視器以外,個(gè)人計(jì)算機(jī)通常包括諸如揚(yáng)聲器和打印機(jī)等其它外圍輸出設(shè)備(未示出)。
計(jì)算機(jī)420可使用到諸如遠(yuǎn)程計(jì)算機(jī)449a和449b等一個(gè)或多個(gè)遠(yuǎn)程計(jì)算機(jī)的邏輯連接在聯(lián)網(wǎng)環(huán)境中工作。遠(yuǎn)程計(jì)算機(jī)449a和449b每一個(gè)都可以是另一個(gè)人計(jì)算機(jī)、服務(wù)器、路由器、網(wǎng)絡(luò)PC、對(duì)等設(shè)備或其它普通網(wǎng)絡(luò)節(jié)點(diǎn),并通常包括以上相對(duì)于計(jì)算機(jī)420所描述的許多或所有元件,盡管在圖4中僅示出記憶存儲(chǔ)設(shè)備450a和450b及其相關(guān)聯(lián)的應(yīng)用程序436a和436b。圖4中所描繪的邏輯連接包括此處作為示例而非限制所呈現(xiàn)的局域網(wǎng)(LAN)451和廣域網(wǎng)(WAN)452。這些網(wǎng)絡(luò)環(huán)境常見(jiàn)于辦公室范圍或企業(yè)范圍的計(jì)算機(jī)網(wǎng)絡(luò)、內(nèi)聯(lián)網(wǎng)和互聯(lián)網(wǎng)。
當(dāng)在LAN網(wǎng)絡(luò)環(huán)境中使用時(shí),計(jì)算機(jī)420通過(guò)網(wǎng)絡(luò)接口或適配器453連接到網(wǎng)絡(luò)451。當(dāng)在WAN網(wǎng)絡(luò)環(huán)境中使用時(shí),計(jì)算機(jī)420可包括調(diào)制解調(diào)器454、無(wú)線鏈路、或用于通過(guò)諸如因特網(wǎng)等廣域網(wǎng)452建立通信的其它裝置??梢允莾?nèi)置或外置的調(diào)制解調(diào)器454經(jīng)由串行端口接口446連接到系統(tǒng)總線423。在聯(lián)網(wǎng)環(huán)境中,相對(duì)于計(jì)算機(jī)420所描述的程序模塊或其部分可存儲(chǔ)在遠(yuǎn)程記憶存儲(chǔ)設(shè)備中??梢岳斫猓揪W(wǎng)絡(luò)連接是示例性的,且可使用通過(guò)廣域網(wǎng)452建立通信的其它裝置。
本發(fā)明能以其它具體形式具體化,而不會(huì)偏離本發(fā)明的精神和本質(zhì)特征。在任何意義上,所描述的實(shí)施例都僅應(yīng)被視為示例性的,而非限制性的。因此,本發(fā)明的范圍是由所附權(quán)利要求書(shū)指示,而非由前述描述所指示。落入所附權(quán)利要求書(shū)的等效方案意義和范圍之內(nèi)的所有改變應(yīng)被包括在所附權(quán)利要求書(shū)的范圍之內(nèi)。
權(quán)利要求
1.在Web服務(wù)(WS)環(huán)境內(nèi)的計(jì)算系統(tǒng)中,一種通過(guò)基于接受者的可用緩沖區(qū)大小動(dòng)態(tài)地確定用于發(fā)送消息的消息窗口大小來(lái)根據(jù)WS的可靠消息通信(RM-WS)協(xié)議在端點(diǎn)之間高效地傳輸所述消息的方法,所述方法包括以下動(dòng)作根據(jù)RM-WS協(xié)議,在應(yīng)用層處建立發(fā)起者和接受者之間的序列會(huì)話;通過(guò)所述序列會(huì)話接收包括接受者緩沖區(qū)大小信息的消息,所述信息指示用于緩沖等待應(yīng)用程序處理的消息的可用存儲(chǔ)器的量;根據(jù)所述RM-WS協(xié)議標(biāo)識(shí)已向所述接受者發(fā)送但沒(méi)有接收到對(duì)應(yīng)確認(rèn)的傳輸中消息的個(gè)數(shù);以及使用所述接受者緩沖區(qū)大小信息和所述傳輸中消息的個(gè)數(shù)來(lái)計(jì)算消息窗口大小,所述消息窗口大小表示為避免由于緩沖區(qū)過(guò)速而重新發(fā)送消息而能向所述接受者發(fā)送的消息個(gè)數(shù)的上限。
2.如權(quán)利要求1所述的方法,其特征在于,包括接受者緩沖區(qū)大小信息的所述消息是RM-WS協(xié)議基礎(chǔ)結(jié)構(gòu)消息。
3.如權(quán)利要求2所述的方法,其特征在于,為緩沖等待應(yīng)用程序處理的消息所分配的接受者總存儲(chǔ)器在每一連接的基礎(chǔ)上是可動(dòng)態(tài)配置的。
4.如權(quán)利要求2所述的方法,其特征在于,基于所述消息窗口大小大于0,所述方法還包括以下動(dòng)作發(fā)送對(duì)應(yīng)于計(jì)算所得的消息窗口大小的若干消息。
5.如權(quán)利要求2所述的方法,其特征在于,基于所述消息窗口大小等于0,所述方法還包括以下動(dòng)作阻斷所述消息的發(fā)送,直至一基礎(chǔ)結(jié)構(gòu)消息被用來(lái)計(jì)算所述消息窗口大小大于0。
6.如權(quán)利要求5所述的方法,其特征在于,所述基礎(chǔ)結(jié)構(gòu)消息是根據(jù)所述RM-WS協(xié)議的確認(rèn)響應(yīng)消息,所述方法還包括以下動(dòng)作向所述接受者周期性地發(fā)送確認(rèn)請(qǐng)求消息;以及接收包括用于重新計(jì)算所述消息窗口大小的接受者緩沖區(qū)大小信息的一個(gè)或多個(gè)確認(rèn)響應(yīng)消息;以及當(dāng)重新計(jì)算所得的消息窗口大小大于0時(shí),發(fā)送對(duì)應(yīng)于所述重新計(jì)算所得的消息窗口大小的若干消息。
7.如權(quán)利要求2所述的方法,其特征在于,所述緩沖區(qū)信息是能被發(fā)送的消息個(gè)數(shù)的形式,而不是存儲(chǔ)器中可用字節(jié)數(shù)的形式。
8.如權(quán)利要求2所述的方法,其特征在于,所述RM-WS協(xié)議是WSReliableMessaging。
9.如權(quán)利要求2所述的方法,其特征在于,所述基礎(chǔ)結(jié)構(gòu)消息是確認(rèn)消息,所述確認(rèn)消息確認(rèn)對(duì)先前所發(fā)送的一個(gè)或多個(gè)消息的接收。
10.如權(quán)利要求9所述的方法,其特征在于,所述對(duì)消息窗口大小的計(jì)算還基于在所述確認(rèn)消息中確認(rèn)的消息的個(gè)數(shù)。
11.如權(quán)利要求10所述的方法,其特征在于,所述對(duì)消息窗口大小的計(jì)算還基于對(duì)一個(gè)或多個(gè)先前所發(fā)送的消息的先前所接收到的確認(rèn)的個(gè)數(shù)。
12.在Web服務(wù)(WS)環(huán)境中的計(jì)算系統(tǒng)中,一種根據(jù)WS的可靠消息通信(RM-WS)協(xié)議通過(guò)調(diào)整用于向端點(diǎn)發(fā)送消息的傳輸窗口來(lái)控制網(wǎng)絡(luò)擁塞,以適應(yīng)諸如網(wǎng)絡(luò)帶寬、性能和拓?fù)浣Y(jié)構(gòu)中的變化等因素的方法,所述方法包括以下動(dòng)作根據(jù)RM-WS協(xié)議,通過(guò)已建立的序列會(huì)話向接受者發(fā)送對(duì)應(yīng)于消息窗口大小的若干消息,其中,所述消息窗口大小表示在網(wǎng)線上向所述接受者發(fā)送的傳輸中消息個(gè)數(shù)的上限;基于所述消息窗口大小,標(biāo)識(shí)期望消息傳輸時(shí)間,所述期望消息傳輸時(shí)間定義在發(fā)送所述若干消息和接收一個(gè)或多個(gè)對(duì)應(yīng)的確認(rèn)消息之間的期望時(shí)間限制;提供關(guān)于在所述期望消息傳輸時(shí)間到期之前是否接收到所述一個(gè)或多個(gè)對(duì)應(yīng)的確認(rèn)消息的指示,所述指示用于調(diào)整所述消息窗口大小或消息重試時(shí)間周期中的至少一個(gè),以避免由于網(wǎng)絡(luò)擁塞而重新發(fā)送消息。
13.如權(quán)利要求12所述的方法,其特征在于,所述調(diào)整是所述消息窗口大小的增加,以指示在所述期望消息傳輸時(shí)間到期之前已接收到所述一個(gè)或多個(gè)對(duì)應(yīng)的確認(rèn)消息。
14.如權(quán)利要求13所述的方法,其特征在于,在所述消息窗口大小增加以后,所述方法還包括以下動(dòng)作發(fā)送對(duì)應(yīng)于所述已增加的消息窗口大小的已增加個(gè)數(shù)的消息;基于所述已增加的消息窗口大小,標(biāo)識(shí)第二期望消息傳輸時(shí)間,所述第二期望消息傳輸時(shí)間定義在發(fā)送所述已增加個(gè)數(shù)的消息和接收一個(gè)或多個(gè)對(duì)應(yīng)的確認(rèn)消息之間的期望時(shí)間限制;提供關(guān)于在所述第二期望消息傳輸時(shí)間到期之前是否接收到對(duì)應(yīng)于所述已增加個(gè)數(shù)的消息的所述一個(gè)或多個(gè)對(duì)應(yīng)的確認(rèn)消息的指示;以及減少所述已增加的消息窗口大小,以指示以下各種情況中的至少一種,所述已增加個(gè)數(shù)的消息中的一個(gè)或多個(gè)被丟失,或者對(duì)所述已增加個(gè)數(shù)的消息的所述一個(gè)或多個(gè)對(duì)應(yīng)的確認(rèn)消息中的一個(gè)或多個(gè)被丟失或在所述第二期望消息傳輸時(shí)間到期之后才被接收到。
15.如權(quán)利要求14所述的方法,其特征在于,所述消息窗口大小被視為最后一個(gè)已知好值并被存儲(chǔ)在存儲(chǔ)器中,且其中,所述已增加的消息窗口大小的減小量低于所述消息窗口大小,從而得到已減小的消息窗口大小。
16.如權(quán)利要求15所述的方法,其特征在于,還包括以下動(dòng)作發(fā)送對(duì)應(yīng)于所述已減小的消息窗口大小的已減少個(gè)數(shù)的消息;基于所述已減小的消息窗口大小,標(biāo)識(shí)第二期望消息傳輸時(shí)間,所述第二期望消息傳輸時(shí)間定義在發(fā)送所述已減少個(gè)數(shù)的消息和接收一個(gè)或多個(gè)對(duì)應(yīng)的確認(rèn)消息之間的期望時(shí)間限制;提供關(guān)于在所述第二期望消息傳輸時(shí)間到期之前已接收到對(duì)所述已減少個(gè)數(shù)的消息的所述一個(gè)或多個(gè)對(duì)應(yīng)的確認(rèn)消息的指示;從存儲(chǔ)器中檢索所述消息窗口大小;以及將所述已減小的消息窗口大小增加到所述消息窗口大小。
17.如權(quán)利要求16所述的方法,其特征在于,所述消息窗口大小是通過(guò)消息窗口大小調(diào)整的單增和單減來(lái)微調(diào)的。
18.如權(quán)利要求14所述的方法,其特征在于,所述消息窗口大小被視為所述最后一個(gè)已知好值,且其中,所述已增加消息窗口大小的減小量是所述消息窗口大小。
19.如權(quán)利要求14所述的方法,其特征在于,所述已增加消息窗口大小的減小量是所述消息窗口大小和所述已增加消息窗口大小之間的一個(gè)大小。
20.如權(quán)利要求12所述的方法,其特征在于,所述一個(gè)或多個(gè)對(duì)應(yīng)的確認(rèn)消息被批處理成單個(gè)消息。
21.如權(quán)利要求20所述的方法,其特征在于,所述期望消息傳輸時(shí)間是基于在發(fā)送所述若干消息和接收所述單個(gè)消息之間的期望時(shí)間限制的均值或方差時(shí)間。
22.在Web服務(wù)(WS)環(huán)境中的計(jì)算系統(tǒng)中,一種根據(jù)WS的可靠消息通信(RM-WS)協(xié)議通過(guò)調(diào)整用于向端點(diǎn)發(fā)送消息的傳輸窗口來(lái)控制網(wǎng)絡(luò)網(wǎng)絡(luò)擁塞,以適應(yīng)諸如網(wǎng)絡(luò)帶寬、性能和拓?fù)浣Y(jié)構(gòu)中的變化等因素的方法,所述方法包括根據(jù)RM-WS協(xié)議,通過(guò)已建立的序列會(huì)話向接受者發(fā)送對(duì)應(yīng)于第一消息窗口大小的第一若干消息的動(dòng)作,其中,消息窗口大小表示在網(wǎng)線上向所述接受者發(fā)送的傳輸中消息的個(gè)數(shù)的上限;用于將所述第一消息窗口大小調(diào)整到第二消息窗口大小,以避免由于網(wǎng)絡(luò)擁塞而重新發(fā)送消息的步驟,所述調(diào)整是基于是否在第一期望消息傳輸時(shí)間到期之前接收到對(duì)所述第一若干消息的一個(gè)或多個(gè)確認(rèn)消息,所述第一期望消息傳輸時(shí)間定義在發(fā)送所述第一若干消息和接收一個(gè)或多個(gè)對(duì)應(yīng)的第一確認(rèn)消息之間的期望時(shí)間限制。
23.如權(quán)利要求22所述的方法,其特征在于,所述期望消息傳輸時(shí)間是基于所述消息窗口大小。
24.如權(quán)利要求12所述的方法,其特征在于,對(duì)所述消息窗口大小的調(diào)整是所述消息窗口大小的增加,以指示在所述期望消息傳輸時(shí)間到期之前已接收到所述一個(gè)或多個(gè)對(duì)應(yīng)的確認(rèn)消息。
25.在Web服務(wù)(WS)環(huán)境中的計(jì)算系統(tǒng)中,一種用于實(shí)現(xiàn)一種方法的計(jì)算機(jī)程序產(chǎn)品,所述方法通過(guò)基于接受者的可用緩沖器大小動(dòng)態(tài)地確定用于發(fā)送消息的消息窗口大小,根據(jù)WS的可靠消息通信(RM-WS)協(xié)議在端點(diǎn)之間高效地傳輸消息,所述計(jì)算機(jī)程序產(chǎn)品包括其上存儲(chǔ)計(jì)算機(jī)可執(zhí)行指令的一個(gè)或多個(gè)計(jì)算機(jī)可讀介質(zhì),當(dāng)所述可執(zhí)行指令由處理器執(zhí)行時(shí),能令所述消息通信系統(tǒng)執(zhí)行以下動(dòng)作根據(jù)RM-WS協(xié)議,在應(yīng)用層處建立發(fā)起者和接受者之間的序列會(huì)話;通過(guò)所述序列會(huì)話接收包括接受者緩沖區(qū)大小信息的消息,所述信息指示用于緩沖等待應(yīng)用程序處理的消息的可用存儲(chǔ)器的量;根據(jù)所述RM-WS協(xié)議,標(biāo)識(shí)已向所述接受者發(fā)送但沒(méi)有接收到對(duì)應(yīng)確認(rèn)的傳輸中消息的個(gè)數(shù);以及使用所述接受者緩沖區(qū)大小信息和所述傳輸中消息的個(gè)數(shù)來(lái)計(jì)算消息窗口大小,所述消息窗口大小表示為避免由于緩沖區(qū)過(guò)速而重新發(fā)送消息而能向所述接受者發(fā)送的消息個(gè)數(shù)的上限。
26.如權(quán)利要求25所述的計(jì)算機(jī)程序產(chǎn)品,其特征在于,包括所述接受者緩沖區(qū)大小信息的所述消息是RM-WS協(xié)議基礎(chǔ)結(jié)構(gòu)消息。
27.如權(quán)利要求26所述的計(jì)算機(jī)程序產(chǎn)品,其特征在于,所述為緩沖等待應(yīng)用程序處理的消息所分配的接受者總存儲(chǔ)器在每一連接的基礎(chǔ)上是可動(dòng)態(tài)配置的。
28.如權(quán)利要求26所述的計(jì)算機(jī)程序產(chǎn)品,其特征在于,基于所述消息窗口大小大于0,所述計(jì)算機(jī)程序產(chǎn)品還包括可令所述消息通信系統(tǒng)執(zhí)行以下動(dòng)作的計(jì)算機(jī)可執(zhí)行指令發(fā)送對(duì)應(yīng)于計(jì)算所得的消息窗口大小的若干消息。
29.如權(quán)利要求26所述的計(jì)算機(jī)程序產(chǎn)品,其特征在于,基于所述消息窗口大小等于0,所述計(jì)算機(jī)程序產(chǎn)品還包括可令所述消息通信系統(tǒng)執(zhí)行以下動(dòng)作的計(jì)算機(jī)可執(zhí)行指令阻斷所述消息的發(fā)送,直至一基礎(chǔ)結(jié)構(gòu)消息被用來(lái)計(jì)算所述消息窗口大小大于0。
30.如權(quán)利要求29所述的計(jì)算機(jī)程序產(chǎn)品,其特征在于,所述基礎(chǔ)結(jié)構(gòu)消息是根據(jù)RM-WS協(xié)議的確認(rèn)響應(yīng)消息,所述計(jì)算機(jī)程序產(chǎn)品還包括可令所述消息通信系統(tǒng)執(zhí)行以下動(dòng)作的計(jì)算機(jī)可執(zhí)行指令向所述接受者周期性地發(fā)送確認(rèn)請(qǐng)求消息;以及接收包括用于重新計(jì)算所述消息窗口大小的接受者緩沖區(qū)大小信息的一個(gè)或多個(gè)確認(rèn)響應(yīng)消息;以及當(dāng)重新計(jì)算所得的消息窗口大小大于0時(shí),發(fā)送對(duì)應(yīng)于所述重新計(jì)算所得的消息窗口大小的若干消息。
31.如權(quán)利要求26所述的計(jì)算機(jī)程序產(chǎn)品,其特征在于,所述緩沖區(qū)信息是能被發(fā)送的消息個(gè)數(shù)的形式,而不是存儲(chǔ)器中可用字節(jié)數(shù)的形式。
32.如權(quán)利要求26所述的計(jì)算機(jī)程序產(chǎn)品,其特征在于,所述RM-WS協(xié)議是WSReliableMessaging。
33.如權(quán)利要求26所述的計(jì)算機(jī)程序產(chǎn)品,其特征在于,所述基礎(chǔ)結(jié)構(gòu)消息是確認(rèn)消息,所述確認(rèn)消息確認(rèn)對(duì)先前所發(fā)送的一個(gè)或多個(gè)消息的接收。
34.如權(quán)利要求33所述的計(jì)算機(jī)程序產(chǎn)品,其特征在于,所述對(duì)消息窗口大小的計(jì)算還基于在所述確認(rèn)消息中被確認(rèn)的消息的個(gè)數(shù)。
35.如權(quán)利要求34所述的計(jì)算機(jī)程序產(chǎn)品,其特征在于,所述對(duì)消息窗口大小的計(jì)算還基于對(duì)一個(gè)或多個(gè)先前所發(fā)送的消息的先前所接收到的確認(rèn)的個(gè)數(shù)。
36.在Web服務(wù)(WS)環(huán)境中的計(jì)算系統(tǒng)中,一種用于實(shí)現(xiàn)一種方法的計(jì)算機(jī)程序產(chǎn)品,所述方法根據(jù)WS的可靠消息通信(RM-WS)協(xié)議通過(guò)調(diào)整用于向端點(diǎn)發(fā)送消息的傳輸窗口來(lái)控制網(wǎng)絡(luò)擁塞,以適應(yīng)諸如網(wǎng)絡(luò)帶寬、性能和拓?fù)浣Y(jié)構(gòu)中的變化等因素,所述計(jì)算機(jī)程序產(chǎn)品包括其上存儲(chǔ)計(jì)算機(jī)可執(zhí)行指令的一個(gè)或多個(gè)計(jì)算機(jī)可讀介質(zhì),當(dāng)所述可執(zhí)行指令由處理器執(zhí)行時(shí),能令所述消息通信系統(tǒng)執(zhí)行以下動(dòng)作根據(jù)RM-WS協(xié)議,通過(guò)已建立的序列會(huì)話向接受者發(fā)送對(duì)應(yīng)于消息窗口大小的若干消息,其中,所述消息窗口大小表示在網(wǎng)線上向所述接受者發(fā)送的傳輸中消息個(gè)數(shù)的上限;基于所述消息窗口大小,標(biāo)識(shí)期望消息傳輸時(shí)間,所述期望消息傳輸時(shí)間定義發(fā)送在所述若干消息和接收一個(gè)或多個(gè)對(duì)應(yīng)的確認(rèn)消息之間的期望時(shí)間限制;提供關(guān)于在所述期望消息傳輸時(shí)間到期之前是否接收到所述一個(gè)或多個(gè)對(duì)應(yīng)的確認(rèn)消息的指示,所述指示用于調(diào)整所述消息窗口大小或消息重試時(shí)間周期中的至少一個(gè),以避免由于網(wǎng)絡(luò)擁塞而重新發(fā)送消息。
37.如權(quán)利要求36所述的計(jì)算機(jī)程序產(chǎn)品,其特征在于,所述調(diào)整是所述消息窗口大小的增加,以指示在所述期望消息傳輸時(shí)間到期之前已接收到所述一個(gè)或多個(gè)對(duì)應(yīng)的確認(rèn)消息。
38.如權(quán)利要求37所述的計(jì)算機(jī)程序產(chǎn)品,其特征在于,在所述消息窗口大小增加以后,所述計(jì)算機(jī)程序產(chǎn)品還包括可令所述消息通信系統(tǒng)執(zhí)行以下動(dòng)作的計(jì)算機(jī)可執(zhí)行指令發(fā)送對(duì)應(yīng)于所述已增加的消息窗口大小的已增加個(gè)數(shù)的消息;基于所述已增加的消息窗口大小,標(biāo)識(shí)第二期望消息傳輸時(shí)間,所述第二期望消息傳輸時(shí)間定義在發(fā)送所述已增加個(gè)數(shù)的消息和接收一個(gè)或多個(gè)對(duì)應(yīng)的確認(rèn)消息之間的期望時(shí)間限制;提供關(guān)于在所述第二期望消息傳輸時(shí)間到期之前是否接收到對(duì)所述已增加個(gè)數(shù)的消息的所述一個(gè)或多個(gè)對(duì)應(yīng)的確認(rèn)消息的指示;以及減少所述已增加的消息窗口大小,以指示以下各種情況中的至少一種,所述已增加個(gè)數(shù)的消息中的一個(gè)或多個(gè)被丟失,或者對(duì)所述已增加個(gè)數(shù)的消息的所述一個(gè)或多個(gè)對(duì)應(yīng)的確認(rèn)消息中的一個(gè)或多個(gè)被丟失或在所述第二期望消息傳輸時(shí)間到期之后才被接收到。
39.如權(quán)利要求38所述的計(jì)算機(jī)程序產(chǎn)品,其特征在于,所述消息窗口大小被視為最后一個(gè)已知好值并被存儲(chǔ)在存儲(chǔ)器中,且其中,對(duì)所述已增加的消息窗口大小的減小量低于所述消息窗口大小,從而得到已減小的消息窗口大小。
40.如權(quán)利要求39所述的計(jì)算機(jī)程序產(chǎn)品,其特征在于,還包括可令所述消息通信系統(tǒng)執(zhí)行以下動(dòng)作的計(jì)算機(jī)可執(zhí)行指令發(fā)送對(duì)應(yīng)于已減小的消息窗口大小的已減少個(gè)數(shù)的消息;基于所述已減小的消息窗口大小,標(biāo)識(shí)第二期望消息傳輸時(shí)間,所述第二期望消息傳輸時(shí)間定義在發(fā)送所述已減少個(gè)數(shù)的消息和接收一個(gè)或多個(gè)對(duì)應(yīng)的確認(rèn)消息之間的期望時(shí)間限制;提供關(guān)于在所述第二期望消息傳輸時(shí)間到期之前已接收到對(duì)所述已減少個(gè)數(shù)的消息的所述一個(gè)或多個(gè)對(duì)應(yīng)的確認(rèn)消息的指示;從存儲(chǔ)器中檢索所述消息窗口大小;以及將所述已減小的消息窗口大小增加到所述消息窗口大小。
41.如權(quán)利要求40所述的計(jì)算機(jī)程序產(chǎn)品,其特征在于,所述消息窗口大小是通過(guò)消息窗口大小調(diào)整的單增和單減來(lái)微調(diào)的。
42.如權(quán)利要求38所述的計(jì)算機(jī)程序產(chǎn)品,其特征在于,所述消息窗口大小被視為所述最后一個(gè)已知好值,且所述已增加消息窗口大小的減小量是所述消息窗口大小。
全文摘要
本發(fā)明根據(jù)Web服務(wù)可靠消息通信(RM-WS)協(xié)議提供流量和擁塞控制機(jī)制。對(duì)于流量控制,一個(gè)端點(diǎn)通過(guò)在響應(yīng)消息中包括緩沖區(qū)大小信息,來(lái)通知另一個(gè)端點(diǎn)其可用緩沖區(qū)大小。通常為RM-WS基礎(chǔ)結(jié)構(gòu)消息的響應(yīng)消息隨即被用來(lái)確定為避免由于緩沖區(qū)過(guò)速而重新發(fā)送消息,可向接受者發(fā)送的消息個(gè)數(shù)的上限。在擁塞控制的情形中,各實(shí)施例規(guī)定增加傳輸中消息的個(gè)數(shù),直至找到失敗點(diǎn)。失敗點(diǎn)以下的最后成功速率是最接近最優(yōu)點(diǎn)的已知點(diǎn)。示例性實(shí)施例隨即重置并將速率重新提高回最后已知好點(diǎn),并使用逼近最優(yōu)速率的算法來(lái)從該處起進(jìn)行微調(diào)。
文檔編號(hào)H04L29/06GK1783852SQ20051011887
公開(kāi)日2006年6月7日 申請(qǐng)日期2005年11月3日 優(yōu)先權(quán)日2004年12月3日
發(fā)明者R·D·希爾, S·R·巴特雷斯 申請(qǐng)人:微軟公司
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1