專利名稱:組成消息處理流水線的制作方法
組成消息處理流水線背景1.背景和相關(guān)技術(shù)計算機系統(tǒng)和相關(guān)技術(shù)影響社會的許多方面。的確,計算機系統(tǒng)處理信息的能力 已轉(zhuǎn)變了人們生活和工作的方式。計算機系統(tǒng)現(xiàn)在通常執(zhí)行在計算機系統(tǒng)出現(xiàn)以前手動執(zhí) 行的許多任務(wù)(例如,文字處理、日程安排和會計等)。最近,計算機系統(tǒng)彼此耦合并耦合到 其他電子設(shè)備以形成計算機系統(tǒng)和其他電子設(shè)備可以在其上傳輸電子數(shù)據(jù)的有線和無線 計算機網(wǎng)絡(luò)。因此,許多計算任務(wù)的執(zhí)行分布在多個不同的計算機系統(tǒng)和/或多個不同的 計算環(huán)境上。在分布式計算環(huán)境中,常常期望使連接服務(wù)的協(xié)議實現(xiàn)與應(yīng)用程序處理邏輯解 耦。為這種組合建立的模式是為了實現(xiàn)分層協(xié)議棧,其中每一層構(gòu)件在下層協(xié)議的特征上。 例如,基層可以提供原始數(shù)據(jù)連接而較高層添加安全或遞送保證。通過使用消息抽象,協(xié)議 層還可以具有某種程度的合成獨立性。例如,安全協(xié)議可用于許多不同的傳輸協(xié)議。分層協(xié)議棧常常被抽象為消息處理流水線。隨后用協(xié)議獨立的方式來編寫應(yīng)用程 序邏輯并稍后與流水線中的一個或多個組合。然而,多種技術(shù)的消息處理流水線的當前實 現(xiàn)都有多個不同的限制。例如,消息處理流水線中的組件通常按照在時間上且在物理上耦 合的方式構(gòu)成。協(xié)議棧中的時間耦合約束應(yīng)用程序的行為,例如,使得應(yīng)用程序在向前移動之前 等待消息處理流水線完成操作。時間耦合的一個示例是當在可以執(zhí)行下一協(xié)議之前協(xié)議要 求對消息的確認的情況。第二個示例是當協(xié)議將多個消息分批處理成供下一協(xié)議傳送的單 個消息的情況。這些示例要求協(xié)議之間的同步,并且可能要求應(yīng)用程序參與到該同步中以 實現(xiàn)特定消息交換模式。物理耦合在協(xié)議棧對其執(zhí)行環(huán)境具有依賴性的情況下發(fā)生。例如,協(xié)議可以依賴 于將特定軟件庫安裝在本地機器上。多個協(xié)議可以各自具有這些依賴性??梢詢H將協(xié)議棧 部署到同時滿足所有依賴性的執(zhí)行環(huán)境。公司可能需要購買附加軟件或硬件來構(gòu)造這種執(zhí) 行環(huán)境,因為每一個所部署的流水線具有不同的依賴性要求。簡要概述本發(fā)明涉及用于構(gòu)成消息處理流水線的方法、系統(tǒng)和計算機程序產(chǎn)品。計算機系 統(tǒng)訪問應(yīng)用程序的當前流水線規(guī)范。當前流水線規(guī)范指定了如何構(gòu)造應(yīng)用程序的消息處理 流水線,包括指定要被包括在應(yīng)用程序的消息處理流水線中的消息收發(fā)組件。計算機系統(tǒng) 訪問該應(yīng)用程序的附加消息處理要求。附加消息處理要求可以明確地被包括在例如配置文 件、用戶指令、或第二流水線規(guī)范中。附加消息處理要求還可以從與例如配置文件、用戶指 令、或第二流水線規(guī)范的內(nèi)容有關(guān)的當前規(guī)范的內(nèi)容中推斷。計算機系統(tǒng)標識可應(yīng)用于當前流水線規(guī)范來指定滿足附加消息處理要求的附加 消息處理功能的變換?;谝呀?jīng)指定的、供包括在消息處理流水線中的消息收發(fā)組件以及 基于附加消息處理要求來標識變換。還可以基于什么消息收發(fā)組件對計算機系統(tǒng)可用來標 識變換。
計算機系統(tǒng)將所標識的變換應(yīng)用于當前流水線規(guī)范來為應(yīng)用程序創(chuàng)建經(jīng)變換的 流水線規(guī)范。經(jīng)變換的流水線規(guī)范指定如何為應(yīng)用程序構(gòu)造滿足附加消息處理要求的消息 處理流水線。經(jīng)變換的流水線規(guī)范指定要被包括在消息處理流水線中來滿足附加消息處理 要求的消息收發(fā)組件的安排。計算機系統(tǒng)解釋經(jīng)變換的流水線規(guī)范來為應(yīng)用程序?qū)嵗?息處理流水線。經(jīng)實例化的消息處理流水線被配置來滿足應(yīng)用程序的附加消息處理要求。提供本概述是為了以簡化的形式介紹將在以下詳細描述中進一步描述的一些概 念。本概述不旨在標識出所要求保護的主題的關(guān)鍵特征或必要特征,也不旨在用于幫助確 定所要求保護的主題的范圍。在隨后的描述中闡述,并且部分地將從本說明書中顯而易見,或可以通過本發(fā)明 的實施來獲知。本發(fā)明的特征和優(yōu)點可通過在所附權(quán)利要求書中特別指出的工具和組合來 實現(xiàn)和獲得。本發(fā)明的這些和其他特征將通過以下描述和所附權(quán)利要求書變得更加顯而易 見,或可通過對下文中所述的本發(fā)明的實踐來領(lǐng)會。附圖簡述為了描述可以獲得本發(fā)明的上文所列舉的及其他優(yōu)點和特征的方式,將通過參考 附圖中所示的本發(fā)明的各具體實施例來呈現(xiàn)上文簡要描述的本發(fā)明的更具體的描述??梢?理解,這些附圖只描繪了本發(fā)明的各典型實施例,并且因此不被認為是對其范圍的限制,將 通過使用附圖并利用附加特征和細節(jié)來描述和解釋本發(fā)明,在附圖中
圖1示出了便于構(gòu)成消息處理流水線的示例計算機體系結(jié)構(gòu)。圖2示出了用于構(gòu)成消息處理流水線的示例方法的流程圖。圖3示出了示例消息處理流水線。圖4示出了包括邏輯流水線及其相對應(yīng)的物理部署的計算機體系結(jié)構(gòu)。圖5示出了帶有由耐久隊列分隔的消息處理流水線組件的計算機體系結(jié)構(gòu)。詳細描述本發(fā)明涉及用于構(gòu)成消息處理流水線的方法、系統(tǒng)和計算機程序產(chǎn)品。計算機系 統(tǒng)訪問應(yīng)用程序的當前流水線規(guī)范。當前流水線規(guī)范指定了如何構(gòu)造應(yīng)用程序的消息處理 流水線,包括指定要被包括在應(yīng)用程序的消息處理流水線中的消息收發(fā)組件。計算機系統(tǒng) 訪問該應(yīng)用程序的附加消息處理要求。附加消息處理要求可以明確地被包括在例如配置文 件、用戶指令、或第二流水線規(guī)范中。附加消息處理要求還可以從與例如配置文件、用戶指 令,或第二流水線規(guī)范的內(nèi)容有關(guān)的當前規(guī)范的內(nèi)容中推斷。計算機系統(tǒng)標識可應(yīng)用于當前流水線規(guī)范來指定滿足附加消息處理要求的附加 消息處理功能的變換?;谝呀?jīng)指定的、供包括在消息處理流水線中的消息收發(fā)組件以及 基于附加消息處理要求來標識變換。還可以基于什么消息收發(fā)組件對計算機系統(tǒng)可用來標 識變換。計算機系統(tǒng)將所標識的變換應(yīng)用于當前流水線規(guī)范來為應(yīng)用程序創(chuàng)建經(jīng)變換的 流水線規(guī)范。經(jīng)變換的流水線規(guī)范指定如何為應(yīng)用程序構(gòu)造滿足附加消息處理要求的消息 處理流水線。經(jīng)變換的流水線規(guī)范指定要被包括在消息處理流水線中來滿足附加消息處理 要求的消息收發(fā)組件的安排。計算機系統(tǒng)解釋經(jīng)變換的流水線規(guī)范來為應(yīng)用程序?qū)嵗?息處理流水線。經(jīng)實例化的消息處理流水線被配置來滿足應(yīng)用程序的附加消息處理要求。本發(fā)明的各實施例可以包括或利用包含計算機硬件的專用或通用計算機,這將在下文中更詳細地討論。本發(fā)明范圍內(nèi)的各實施例還包括用于承載或存儲計算機可執(zhí)行指令 和/或數(shù)據(jù)結(jié)構(gòu)的物理和其他計算機可讀介質(zhì)。這樣的計算機可讀介質(zhì)可以是可由通用或 專用計算機系統(tǒng)訪問的任何可用介質(zhì)。存儲計算機可執(zhí)行指令的計算機可讀介質(zhì)是物理 存儲介質(zhì)。承載計算機可執(zhí)行指令的計算機可讀介質(zhì)是傳輸介質(zhì)。由此,作為示例而非限 制,本發(fā)明的各實施例可包括至少兩種完全不同的計算機可讀介質(zhì)物理存儲介質(zhì)和傳輸 介質(zhì)。物理存儲介質(zhì)包括RAM、ROM、EEPROM、CD-ROM或其他光盤存儲、磁盤存儲或其他磁 存儲設(shè)備、或可用于存儲計算機可執(zhí)行指令或數(shù)據(jù)結(jié)構(gòu)形式的所需程序代碼裝置且可由通 用或?qū)S糜嬎銠C訪問的任何其他介質(zhì)?!熬W(wǎng)絡(luò)”被定義為允許在計算機系統(tǒng)和/或模塊和/或其他電子設(shè)備之間傳輸電子 數(shù)據(jù)的一個或多個數(shù)據(jù)鏈路。當信息通過網(wǎng)絡(luò)或另一通信連接(硬連線、無線、或硬連線或 無線的組合)傳輸或提供給計算機時,該計算機將該連接適當?shù)匾暈閭鬏斀橘|(zhì)。傳輸介質(zhì) 可包括可用于攜帶計算機可執(zhí)行指令或數(shù)據(jù)結(jié)構(gòu)形式的所需程序代碼裝置并可由通用或 專用計算機訪問的網(wǎng)絡(luò)和/或數(shù)據(jù)鏈路。上述的組合也應(yīng)被包括在計算機可讀介質(zhì)的范圍 內(nèi)。此外,在到達各種計算機系統(tǒng)組件之后,計算機可執(zhí)行指令或數(shù)據(jù)結(jié)構(gòu)形式的程 序代碼裝置可從傳輸介質(zhì)自動轉(zhuǎn)移到物理存儲介質(zhì)(或者相反)。例如,通過網(wǎng)絡(luò)或數(shù)據(jù) 鏈路接收到的計算機可執(zhí)行指令或數(shù)據(jù)結(jié)構(gòu)可被緩存在網(wǎng)絡(luò)接口模塊(例如,“NIC”)內(nèi)的 RAM中,然后最終被傳送到計算機系統(tǒng)RAM和/或計算機系統(tǒng)處的較不易失性的物理存儲介 質(zhì)。由此,應(yīng)當理解,物理存儲介質(zhì)可被包括在同樣(或甚至主要)利用傳輸介質(zhì)的計算機 系統(tǒng)組件中。計算機可執(zhí)行指令例如包括,使通用計算機、專用計算機、或?qū)S锰幚碓O(shè)備執(zhí)行某 一功能或某組功能的指令和數(shù)據(jù)。計算機可執(zhí)行指令可以是例如二進制代碼、諸如匯編語 言等中間格式指令、或甚至源代碼。盡管用結(jié)構(gòu)特征和/或方法動作專用的語言描述了本 主題,但可以理解的是,所附權(quán)利要求書中定義的主題不必限于上述特征或動作。相反,上 述特征和動作是作為實現(xiàn)權(quán)利要求的示例形式而公開的。本領(lǐng)域的技術(shù)人員將理解,本發(fā)明可以在具有許多類型的計算機系統(tǒng)配置的網(wǎng)絡(luò) 計算環(huán)境中實踐,這些計算機系統(tǒng)配置包括個人計算機、臺式計算機、膝上型計算機、消息 處理器、手持式設(shè)備、多處理器系統(tǒng)、基于微處理器的或可編程消費電子設(shè)備、網(wǎng)絡(luò)PC、小型 計算機、大型計算機、移動電話、PDA、尋呼機、路由器、交換機等等。本發(fā)明也可以在其中通 過網(wǎng)絡(luò)鏈接(或者通過硬連線數(shù)據(jù)鏈路、無線數(shù)據(jù)鏈路,或者通過硬連線和無線數(shù)據(jù)鏈路 的組合)的本地和遠程計算機系統(tǒng)兩者都執(zhí)行任務(wù)的分布式系統(tǒng)環(huán)境中實踐。在分布式系 統(tǒng)環(huán)境中,程序模塊可以位于本地和遠程存儲器存儲設(shè)備中。圖1示出了便于構(gòu)成消息處理流水線的示例計算機體系結(jié)構(gòu)100。參考圖1,計算 機體系結(jié)構(gòu)100包括流水線規(guī)范細化模塊101、流水線規(guī)范解釋器106、以及應(yīng)用程序107。 所描繪的計算機系統(tǒng)中的每一個通過諸如例如局域網(wǎng)(“LAN”)、廣域網(wǎng)(“WAN”)或甚至 因特網(wǎng)等網(wǎng)絡(luò)(或作為網(wǎng)絡(luò)的一部分)彼此連接。因此,所描繪的計算機系統(tǒng)中的每一個 以及任何其他連接的計算機系統(tǒng)及其組件都可以創(chuàng)建消息相關(guān)數(shù)據(jù)并通過網(wǎng)絡(luò)交換消息 相關(guān)數(shù)據(jù)(例如,網(wǎng)際協(xié)議(“IP”數(shù)據(jù)報和利用IP數(shù)據(jù)報的其他更高層協(xié)議,諸如傳輸控制協(xié)議(“TCP”、超文本傳輸協(xié)議(“HTTP”)、簡單郵件傳輸協(xié)議(“SMTP”)等)。一般而言,流水線規(guī)范細化模塊101被配置成鑒于附加消息處理要求將流水線規(guī) 范變換為指定滿足附加消息處理要求的消息處理流水線的流水線規(guī)范。流水線規(guī)范細化模 塊101包括要求標識模塊102、變換標識模塊103,和變換應(yīng)用模塊104。要求標識模塊102被配置成標識消息處理流水線的附加處理要求??梢詫⒏郊右?求明確地包括在提供給流水線規(guī)范細化模塊101的附加信息中,諸如,例如,在配置文件、 用戶指令或第二流水線規(guī)范中。例如,配置文件可以指示在協(xié)議棧中的不同層之間需要加 密或可靠性。要求標識模塊102可以訪問附加信息并標識包括在附加信息中的附加處理要 求。要求標識模塊102還可以鑒于附加信息的內(nèi)容基于流水線規(guī)范的內(nèi)容來推斷附 加處理要求。因此,要求標識模塊102可以鑒于例如配置文件、用戶指令,或第二流水線規(guī) 范,基于流水線規(guī)范的內(nèi)容來推斷附加消息處理要求。例如,情況可能是一個流水線規(guī)范指 定第一傳輸層協(xié)議而另一流水線規(guī)范指定第二個不同的傳輸協(xié)議。因此,要求標識模塊102 可以推斷第一和第二傳輸協(xié)議之間的協(xié)議橋的使用是附加消息處理要求。變換標識模塊103被配置成標識可應(yīng)用于流水線規(guī)范來變換流水線規(guī)范以指定 滿足附加消息處理要求的消息處理流水線的變換。例如,基于當前的流水線規(guī)范和附加要 求,變換標識模塊103可以標識變換來將當前的流水線規(guī)范變換成經(jīng)變換的流水線規(guī)范。 經(jīng)變換的流水線規(guī)范可以指定,例如,具有滿足附加消息處理要求的消息處理組件的流水 線內(nèi)通信鏈路。在標識變換時,變換標識模塊103還可以考慮可用于包括在消息處理流水線中的 可用流水線組件的功能,諸如例如消息泵、消息變換器、耐久存儲、通信介質(zhì)、庫等等。可用 流水線組件可以與流水線規(guī)范細化模塊101同在一處和/或可以位于相對于流水線規(guī)范細 化模塊101的遠程。因此,可以本地地和/或遠程地訪問所指定的、供包括在消息處理流水 線中的可用組件。取決于可用流水線組件,變換標識模塊103可以標識要應(yīng)用于規(guī)范的不同變換。 然而,因為流水線組件的不同組合能夠?qū)崿F(xiàn)相同的結(jié)果,所以對流水線規(guī)范的不同變換可 能仍然定義滿足附加消息處理要求的消息處理流水線。即,取決于可用流水線組件的功能, 可以指定流水線組件的不同組合來滿足附加消息處理要求。變換應(yīng)用模塊104被配置成將所標識的變換應(yīng)用于流水線規(guī)范來將規(guī)范變換為 滿足附加消息處理要求的經(jīng)變換的規(guī)范。例如,變換應(yīng)用模塊104可以接收流水線規(guī)范和 變換并將該變換應(yīng)用于流水線規(guī)范來創(chuàng)建經(jīng)變換的流水線規(guī)范。所得經(jīng)變換的規(guī)范可以符 合流水線規(guī)范解釋器的句法和語義約束。例如,如果流水線規(guī)范被配置為輸入到流水線規(guī) 范解釋器,則基于流水線規(guī)范的經(jīng)變換的流水線規(guī)范也可以被配置為輸入到相同的流水線 規(guī)范解釋器。然而,使變換更改流水線規(guī)范的配置來輸入到不同的流水線規(guī)范解釋器也是 可能的。變換流水線規(guī)范可以包括更改流水線規(guī)范的內(nèi)容,諸如,例如,作出文本編輯或其 他變更,來指定消息處理流水線功能和/或組件。流水線規(guī)范解釋器106被配置為解釋流水線規(guī)范并從流水線規(guī)范中實例化消息 處理流水線。例如,流水線規(guī)范解釋器106可以接收經(jīng)適當配置的流水線規(guī)范。響應(yīng)于接 收到流水線規(guī)范,流水線規(guī)范解釋器106可以標識用于實例化流水線規(guī)范中指定的消息處理流水線的消息處理組件。流水線規(guī)范解釋器106隨后可以實例化消息處理流水線,例如, 包括帶有按提供所需消息處理功能,包括滿足任何附加要求來安排的所標識的消息處理組 件的流水線內(nèi)通信鏈路。消息處理流水線的不同部分可以在不同機器處實例化或在同一機器的不同進程 中實例化??梢允褂昧魉€內(nèi)通信鏈路來將一個機器(或進程)處的消息處理流水線的部 分連接到另一機器(或進程)處的消息處理流水線的部分。通過消息處理流水線的消息流 還可以諸如例如基于消息屬性、協(xié)議屬性、機器屬性等等在不同的流水線組件之間分支。流 水線內(nèi)通信鏈路可以抽象耐久存儲,諸如例如,耐久消息隊列產(chǎn)品來提供耐久通信鏈路。耐 久通信鏈路允許流水線組件在它們原本需要等待來自其他流水線組件的響應(yīng)以繼續(xù)時繼 續(xù)處理消息。消息處理流水線還可以包括便于協(xié)議橋接和流水線組件之間的其他變換服務(wù) 的流水線組件。如計算機體系結(jié)構(gòu)100所描繪的,應(yīng)用程序107與消息處理流水線108分隔。然 而,本發(fā)明的各實施例還包括將應(yīng)用程序作為消息處理流水線內(nèi)的流水線組件來包括的消 息處理流水線。圖2示出了用于構(gòu)成消息處理流水線的示例方法200的流程圖。方法200將參考 計算機體系結(jié)構(gòu)100的組件和數(shù)據(jù)來描述。方法200包括訪問應(yīng)用程序的當前流水線規(guī)范的動作,當前流水線規(guī)范指定如何 為應(yīng)用程序構(gòu)造消息處理流水線,包括指定要被包括在應(yīng)用程序的消息處理流水線中的消 息收發(fā)組件(動作201)。例如,流水線規(guī)范細化模塊可以訪問流水線規(guī)范121。流水線規(guī) 范121可以指定如何為應(yīng)用程序107構(gòu)造消息處理流水線。流水線規(guī)范121可以從可用流 水線組件142中指定要被包括在應(yīng)用程序107的消息處理流水線中的流水線組件??捎昧魉€組件142可以包括位于流水線規(guī)范模塊101本地和/或遠程(例如, 在可經(jīng)由網(wǎng)絡(luò)通信訪問的其他機器處)的流水線組件。可用流水線組件142可被配置成實 現(xiàn)各種不同的功能,諸如,例如,消息泵(例如143)、消息變換器(例如144)、耐久存儲的抽 象(例如146)來提供耐久通信鏈路、通信介質(zhì)(例如147)和庫(例如148)??捎昧魉€ 組件142中的流水線組件可以一起被縫合在消息處理流水線中,例如,在流水線內(nèi)通信鏈 路中,以提供流水線規(guī)范中指定的消息處理功能(例如,加密、簽名、可靠性、協(xié)議橋接、消 息轉(zhuǎn)換、流水線分支等等)。要求標識模塊102可以標識流水線規(guī)范121的附加要求。例如,要求標識模塊102 可以基于附加信息122和/或流水線規(guī)范121的內(nèi)容來標識附加要求131。在某些實施例 中,附加信息122的內(nèi)容明確地指示附加要求。例如,附加信息122可以表示明確地指示附 加要求131的另一流水線規(guī)范(例如,與應(yīng)用程序107進行通信的應(yīng)用程序的)、配置文件、 用戶命令等的內(nèi)容。要求標識模塊102可以從附加信息122標識明確地指示的附加要求。另選地或與標識明確地指示的附加要求組合地,要求標識模塊102還可以推斷附 加要求。例如,要求標識模塊102可以訪問附加信息122和流水線規(guī)范121。從附加信息 122和流水線規(guī)范121的內(nèi)容中,要求標識模塊102可以推斷附加要求131。要求標識模塊102可以將附加信息122的內(nèi)容與流水線規(guī)范121的內(nèi)容進行比 較,并基于該比較作出推斷。例如,附加信息122可以指示另一應(yīng)用程序在通信時使用所指 定的消息收發(fā)功能(例如,加密、可靠消息收發(fā)等等)(而無需明確地指示包括所指定的消息功能是要求)。另一方面,流水線規(guī)范121可以不指定供包括在消息收發(fā)流水線應(yīng)用程序 107中的所指定的消息功能。從附加信息122和流水線規(guī)范121之間的比較中,要求標識模塊102可以確定其 他應(yīng)用程序使用所指定的消息收發(fā)功能,但該流水線規(guī)范121未指定該所指定的消息收發(fā) 功能。因此,要求標識模塊102可以推斷應(yīng)用程序107的消息處理流水線要包括所指定的 消息收發(fā)功能來與其他應(yīng)用程序通信。因此,要求標識模塊102可以標識流水線規(guī)范121 指定所指定的消息收發(fā)功能的附加要求。要求標識模塊102可以將附加要求131發(fā)送給變換標識模塊103。因此,方法200 包括訪問應(yīng)用程序的附加消息處理要求的動作(動作202)。例如,變化標識模塊103可以 接收附加要求131。方法200包括標識可應(yīng)用于當前流水線規(guī)范來指定滿足附加消息處理要求的附 加消息處理功能的變換的動作,基于已經(jīng)指定的、供包括在消息處理流水線中的消息收發(fā) 組件以及基于附加消息處理要求來標識該變換(動作203)。例如,變換標識模塊103可以 標識變換132??蓪⒆儞Q132應(yīng)用于流水線規(guī)范121來指定滿足附加要求131的附加消息 處理功能,諸如,例如,流水線內(nèi)通信鏈路??梢曰谝呀?jīng)在流水線規(guī)范121和附加要求131 中指定的流水線組件來標識變換132。變換132還可以基于可用流水線組件142中包括的組件。例如,列表151可以標識 包括在可用流水線組件142中的組件及它們的功能。從列表151中,變換標識模塊103可 以標識要應(yīng)用于規(guī)范121的變換132??梢允褂盟鶚俗R的變換132來變換流水線規(guī)范121 的部分,以(從可用流水線組件142中)指定用于實現(xiàn)滿足附加要求131的消息處理功能 的組件。取決于規(guī)范121中已經(jīng)指定了什么流水線組件,可以標識不同的變換來指定用于 滿足附加要求131的消息處理功能。變換標識模塊103可以將變換132發(fā)送給變換應(yīng)用模 塊104。變換應(yīng)用模塊104可以從變換標識模塊103接收變換132。方法200包括將所標識的變換應(yīng)用于當前流水線規(guī)范來為應(yīng)用程序創(chuàng)建經(jīng)變換 的流水線規(guī)范的動作,經(jīng)變換的流水線規(guī)范指定如何為應(yīng)用程序構(gòu)造滿足附加消息處理要 求的消息處理流水線,包括指定要被包括在消息處理流水線中以滿足附加消息處理要求的 消息收發(fā)組件的安排(動作204)。例如,變換應(yīng)用模塊104可以將變換132應(yīng)用于流水線 規(guī)范121來創(chuàng)建經(jīng)變換的流水線規(guī)范121T。經(jīng)變換的流水線規(guī)范121T指定如何構(gòu)造滿足 附加要求131的消息處理流水線。經(jīng)變換的流水線規(guī)范121T可以(例如,從可用流水線組 件142中)指定要被包括在消息處理流水線中以滿足附加要求131的流水線組件的安排, 諸如,例如,要被包括在通信鏈路113中的流水線組件的安排。方法200包括解釋經(jīng)變換的流水線規(guī)范以實例化應(yīng)用程序的消息處理流水線 的動作,經(jīng)實例化的消息處理流水線被配置為滿足應(yīng)用程序的附加消息處理要求(動作 205)。例如,流水線規(guī)范解釋器106可以解釋經(jīng)變換的流水線規(guī)范121T來實例化消息處理 流水線108。流水線規(guī)范解釋器106可以訪問組件152來實例化消息處理流水線108。流 水線規(guī)范解釋器106可以按經(jīng)變換的流水線規(guī)范121T中所指定的來安排組件152。因此, 規(guī)范解釋器106可以按照使得通信鏈路113滿足附加要求131的方式來實例化消息處理流 水線108。
10
消息處理流水線108包括通信介質(zhì)111、流水線組件112、帶有通信鏈路邏輯114 的通信鏈路113以及流水線組件116A和116B。如圖1所描繪的,在邏輯上表示消息處理流 水線108。消息處理流水線中的不同組件可以在物理上位于不同機器處。例如,流水線組 件112、流水線組件116A、流水線組件116B以及應(yīng)用程序107全都可能在物理上位于不同 機器處。流水線組件116A和116B表示消息處理流水線108中的消息處理可以基于消息屬 性、協(xié)議屬性、機器屬性等來分支。通信鏈路113可以從流水線組件112接收消息。通信鏈路邏輯114可以按照滿足 附加要求131的方式來確定從流水線組件112接收的消息的布置。通信鏈路113可以將消 息發(fā)送給流水線組件116A和/或116B?!愣?,流水線內(nèi)通信鏈路可以使用任何底層通信介質(zhì)。通信介質(zhì)的使用可以 基于該流水線內(nèi)通信鏈路之前和之后的流水線組件的位置。例如,如果流水線組件被部署 在同一機器上的不同進程中,則可以將系統(tǒng)總線用作通信介質(zhì)。另一方面,如果流水線組件 被部署在不同機器處,則可以將網(wǎng)絡(luò)介質(zhì)(有線和/或無線)用作通信介質(zhì)。因此,更具體地,流水線內(nèi)通信鏈路可以包括將流水線組件連接到之前的流水線 組件的傳入通信介質(zhì)。流水線內(nèi)通信鏈路還可以包括用于處理來自傳入通信介質(zhì)的消息的 接收消息處理流水線。流水線內(nèi)通信鏈路還可以包括處理消息并確定它們的布置的通信鏈 路應(yīng)用程序。流水線內(nèi)通信鏈路還可以包括將流水線組件連接到之后的流水線組件的一個 或多個傳出通信介質(zhì)。流水線內(nèi)通信鏈路還可以包括用于將消息發(fā)送給相應(yīng)的傳出通信介 質(zhì)的一個或多個發(fā)送消息處理流水線。圖3示出包括流水線內(nèi)通信鏈路321的示例消息處理流水線300。消息處理流水 線300包括通信介質(zhì)301、流水線組件302、流水線內(nèi)通信鏈路邏輯321、流水線組件309A和 309B,以及應(yīng)用程序311。如所描繪的,流水線內(nèi)通信鏈路321將流水線組件302連接到流 水線組件309A和309B。流水線內(nèi)通信鏈路321包括傳入通信介質(zhì)303、接收消息處理流水線304、通信鏈 路邏輯306、發(fā)送消息處理流水線307A和307B,以及傳出通信介質(zhì)308A和308B。傳入通信 介質(zhì)303將流水線內(nèi)通信鏈路321連接到流水線組件302。接收消息處理流水線304經(jīng)由 傳入通信介質(zhì)303從流水線組件302接收消息。通信鏈路邏輯306處理消息來確定如何布置這些消息。例如,基于消息的內(nèi)容或 與相關(guān)聯(lián)的協(xié)議,通信鏈路邏輯306可以確定是要將消息發(fā)送給消息處理流水線307A還是 發(fā)送給消息處理流水線307B。傳出通信介質(zhì)308A和308B分別將流水線內(nèi)通信鏈路321連接到流水線組件309A 和309B。發(fā)送消息處理流水線307A和307B將消息分別發(fā)送給傳出通信介質(zhì)308A和308B。因此,消息處理流水線中的通信鏈路的使用允許執(zhí)行流在多個流水線組件之中分 支。由此,可以存在各自可以處理不同類型的消息的流水線組件的多個不同的實例。通信 鏈路可以取決于所接收的消息的類型分支到流水線組件的特定實例。隨后在消息到達應(yīng)用 程序之前可以再結(jié)合流水線從而使得應(yīng)用程序不知道發(fā)生過分支。另外地,應(yīng)用程序邏輯 可以根據(jù)消息的類型來類似地拆分,并因此可能期望所分支的流水線一路向上繼續(xù)到應(yīng)用 程序。例如,流水線組件309A和流水線組件309B兩者都發(fā)送消息給應(yīng)用程序311。然而,流水線內(nèi)通信鏈路300的分支不必合并到同一個應(yīng)用程序。例如,流水線組件309A可 以將消息發(fā)送給應(yīng)用程序311而流水線組件309B可以將消息發(fā)送給某一不同的應(yīng)用程序。本發(fā)明的各實施例包括在不同的機器上部署流水線組件,可能取決于該特定機器 上可用的資源??梢允褂昧魉€內(nèi)通信鏈路來橋接機器之間的連接,從而使得可以部署每 一流水線組件來分隔經(jīng)適當配置的機器。如先前所描述的,當流水線組件被部署在不同機器處時,流水線內(nèi)通信鏈路可以 使用網(wǎng)絡(luò)介質(zhì)來在流水線組件之間通信。轉(zhuǎn)向圖4,圖4示出包括邏輯流水線420及其相對 應(yīng)的物理部署440的計算機體系結(jié)構(gòu)400。如所描繪的,邏輯流水線420包括通信介質(zhì)426、 流水線組件424、流水線組件423、流水線組件422,以及應(yīng)用程序421。通信介質(zhì)似6和流 水線組件似4被部署在機器446上。通信介質(zhì)似6和流水線組件似4中的一個或多個可以 利用(并且甚至可以要求)庫453。將流水線組件423部署在機器443上。流水線組件423可以利用(并且甚至可以 要求)庫452。將流水線組件422和應(yīng)用程序421部署在機器441上。流水線組件422和 應(yīng)用程序421可以利用(并且甚至可以要求)庫451。可以使用流水線內(nèi)通信鏈路來將部署在一個機器處的流水線組件連接到部署在 另一機器處的流水線組件。例如,通信鏈路444將流水線組件4 連接到流水線組件423, 反之亦然。類似地,通信鏈路442將流水線組件423連接到流水線組件422,反之亦然。然而,使用機器隔離邊界的流水線組件的分隔不是唯一可能的間隔。還可以使用 其他種類的隔離邊界,諸如例如部署到同一機器中的分隔進程中。在其他實施例中,流水線組件的物理部署可以由耐久消息隊列分隔。將耐久存儲 放置在流水線組件之間允許它們按照時間上獨立的方式來執(zhí)行。圖5示出了帶有由耐久隊 列分隔的消息處理流水線組件的計算機體系結(jié)構(gòu)500。如圖5所描繪的,請求消息,諸如,例如,請求消息531在進程502處輸入。同樣, 回復(fù)消息,諸如,例如,重放消息532在進程502處離開。機器501包括進程502和503。進 程502包括組件503而進程506包括組件507和508。耐久隊列504經(jīng)由機器501處的本 地通信介質(zhì)將組件503與組件507和508分隔。機器521包括進程522和526。進程522 包括組件523而進程5 包括應(yīng)用程序527 (例如,另一流水線組件)。耐久隊列5 經(jīng)由 機器521處的本地通信介質(zhì)將組件523與應(yīng)用程序527分隔。耐久隊列511經(jīng)由機器501 和502之間的網(wǎng)絡(luò)通信介質(zhì)將組件507和508與組件523分開。在計算機體系結(jié)構(gòu)500內(nèi),如果組件507或508要使用帶外機制(例如,帶外消息 確認)來對請求消息531的始發(fā)者作出響應(yīng),則它們可以獨立于組件503發(fā)送的傳送確認 并獨立于稍后的流水線執(zhí)行和應(yīng)用而自由地進行。流水線組件503還可以在一將請求消息 531放置在耐久隊列504中便將響應(yīng)發(fā)送給請求消息531。流水線組件507可能遭受由于 不能發(fā)送確認而導(dǎo)致的臨時失敗,但這不阻止流水線組件503繼續(xù)處理更多的請求。類似 地,耐久隊列511允許稍后的流水線組件和應(yīng)用程序527繼續(xù)處理已經(jīng)被確認的請求。因此,通信鏈路的規(guī)范可以被認為是流水線的總體規(guī)范的一部分。每一通信鏈路 可以在單個流水線規(guī)范中內(nèi)聯(lián)地指定,或者使用對其他規(guī)范的引用被鏈接在一起。在某些 情況下,可能自動地推斷通信鏈路的規(guī)范。例如,如果兩個相鄰的流水線組件按照使得第一 流水線組件使用第一消息格式來發(fā)射消息而第二流水線組件使用第二消息格式來消費消息的方式來配置,則系統(tǒng)可以推斷在第一和第二消息格式之間轉(zhuǎn)換的通信鏈路的存在而不 需要明確的規(guī)范。因此,本發(fā)明的各實施例便于組成的消息處理流水線。各實施例利用流水線內(nèi)通 信鏈路來解耦各流水線階段。流水線內(nèi)通信鏈路的使用允許在不必更改流水線組件或應(yīng)用 程序的情況下組成消息處理流水線。每一通信鏈路本身是帶有跨時間和/或空間橋接信息 的傳入和傳出消息處理流水線的應(yīng)用程序,例如,取決于被鏈接的流水線組件是否具有應(yīng) 用程序開發(fā)者想要消除的時間或物理耦合。例如,應(yīng)用程序開發(fā)者可以通過使通信鏈路將消息發(fā)送給下一流水線組件位于的 不同的機器來消除物理耦合。應(yīng)用程序開發(fā)者可以通過使通信鏈路讀和寫耐久存儲的消息 從而使得下一流水線組件可以在稍后執(zhí)行來消除時間耦合。因此,可以在不需要應(yīng)用程序 開發(fā)者單獨地對通信鏈路編程的情況下,從流水線規(guī)范中構(gòu)造通信鏈路應(yīng)用程序、通信鏈 路流水線,以及用于將通信鏈路插入到消息處理流水線中的相應(yīng)的鏈接。本發(fā)明可具體化為其他具體形式而不背離其精神或本質(zhì)特征。所描述的實施例在 所有方面都應(yīng)被認為僅是說明性而非限制性的。從而,本發(fā)明的范圍由所附權(quán)利要求書而 非前述描述指示。落入權(quán)利要求書的等效方案的含義和范圍內(nèi)的所有改變應(yīng)被權(quán)利要求書 的范圍所涵蓋。
權(quán)利要求
1.一種在包括一個或多個處理器和系統(tǒng)存儲器的計算機系統(tǒng)處的用于組成應(yīng)用程序 (107)的消息處理流水線的方法,所述方法包括訪問所述應(yīng)用程序的當前流水線規(guī)范(121)的動作,所述當前流水線規(guī)范(121)指定 如何為所述應(yīng)用程序(107)構(gòu)造消息處理流水線(108),包括指定要被包括在所述應(yīng)用程 序(107)的消息處理流水線(108)中的消息收發(fā)組件(116A、116B、112);訪問所述應(yīng)用程序(107)的附加消息處理要求(131)的動作;標識能夠被應(yīng)用于所述當前流水線規(guī)范(122)來指定滿足所述附加消息處理要求 (131)的附加消息處理功能的變換(132)的動作,所述變換(132)基于已經(jīng)指定的、供包括 在所述消息處理流水線中的消息收發(fā)組件以及基于所述附加消息處理要求(131)來標識;將所標識的變換(132)應(yīng)用于所述當前流水線規(guī)范(121)來為所述應(yīng)用程序(107)創(chuàng) 建經(jīng)變換的流水線規(guī)范(121T)的動作,所述經(jīng)變換的流水線規(guī)范(107T)指定如何為所述 應(yīng)用程序(107)構(gòu)造滿足所述附加消息處理要求(131)的消息處理流水線(108),包括指定 要被包括在消息處理流水線中以滿足所述附加消息處理要求(131)的消息收發(fā)組件的安 排;以及解釋所述經(jīng)變換的流水線規(guī)范(121T)來為所述應(yīng)用程序(107)實例化消息處理流水 線(108)的動作,經(jīng)實例化的消息處理流水線(108)被配置為滿足所述應(yīng)用程序的所述附 加消息處理要求(131)。
2.如權(quán)利要求1所述的方法,其特征在于,還包括標識所述計算機系統(tǒng)可用的、供包括在所述消息處理流水線中的組件的動作;以及其中標識能夠被應(yīng)用于所述當前流水線規(guī)范的動作,包括基于所標識的可用組件來標 識能夠被應(yīng)用于所述當前流水線的動作。
3.如權(quán)利要求2所述的方法,其特征在于,所述解釋經(jīng)變換的流水線規(guī)范來為所述應(yīng) 用程序?qū)嵗⑻幚砹魉€的動作,包括將所標識的可用組件中的一個或多個插入到所 述消息處理流水線來滿足所述附加消息處理要求的動作。
4.如權(quán)利要求1所述的方法,其特征在于,所述訪問所述應(yīng)用程序的附加消息處理要 求的動作包括訪問第二流水線規(guī)范的動作。
5.如權(quán)利要求5所述的方法,其特征在于,訪問所述應(yīng)用程序的附加消息處理要求的 動作,包括從所述當前流水線規(guī)范與所述第二流水線規(guī)范的比較結(jié)果中推斷所述附加處理 要求的動作。
6 .如權(quán)利要求1所述的方法,其特征在于,標識能夠被應(yīng)用于所述當前流水線規(guī)范來 指定滿足所述附加消息處理要求的附加消息處理功能的變換的動作,包括標識能夠被應(yīng)用 于指定能夠滿足所述附加消息處理要求的流水線內(nèi)通信鏈路的變換的動作。
7.如權(quán)利要求6所述的方法,其特征在于,標識能夠被應(yīng)用于指定可以滿足所述附加 消息處理要求的流水線內(nèi)通信鏈路的變換的動作,包括標識能夠被應(yīng)用于指定橋接所述消 息處理流水線中的其他流水線組件之間的協(xié)議的流水線內(nèi)通信鏈路的變換的動作。
8.如權(quán)利要求6所述的方法,其特征在于,標識能夠被應(yīng)用于指定可以滿足所述附加 消息處理要求的流水線內(nèi)通信鏈路的變換的動作,包括標識能夠被應(yīng)用于指定將所述消息 從一個格式變換為另一格式的流水線內(nèi)通信鏈路的變換的動作。
9.如權(quán)利要求6所述的方法,其特征在于,標識能夠被應(yīng)用于指定可以滿足所述附加消息處理要求的流水線內(nèi)通信鏈路的變換的動作,包括標識能夠被應(yīng)用于指定在物理上解 耦其他流水線組件的流水線內(nèi)通信鏈路的變換的動作。
10.如權(quán)利要求6所述的方法,其特征在于,標識能夠被應(yīng)用于指定可以滿足所述附加 消息處理要求的流水線內(nèi)通信鏈路的變換的動作包括標識能夠被應(yīng)用于指定在時間上解 耦其他流水線組件的流水線內(nèi)通信鏈路的變換的動作。
11.如權(quán)利要求6所述的方法,其特征在于,標識能夠被應(yīng)用于指定可以滿足所述附加 消息處理要求的流水線內(nèi)通信鏈路的變換的動作包括標識能夠被應(yīng)用于指定在其他流水 線組件之間分支的流水線內(nèi)通信鏈路的變換的動作。
12.—種計算機系統(tǒng),所述計算機系統(tǒng)包括一個或多個處理器;系統(tǒng)存儲器;其上存儲有表示流水線變換模塊和可用消息收發(fā)流水線組件的集合的計算機可執(zhí)行 指令的一個或多個計算機存儲介質(zhì),所述可用消息收發(fā)流水線組件中的每一個提供不同的 消息流水線處理功能,其中所述流水線變換模塊被配置為接收消息處理流水線(300)要滿足的一組應(yīng)用程序要求(131);標識能夠交互來滿足所述一組要求(131)的所述可用消息收發(fā)流水線組件(309A、 309B)的安排;以及變換消息處理流水線規(guī)范(121),所述變換指定要被包括在流水線內(nèi)通信鏈路(321) 內(nèi)的可用消息收發(fā)流水線組件(309A、309B)的所述安排與被包括在從所述消息處理流水 線規(guī)范中實例化的消息處理流水線(300)中的其他流水線組件(302、311)之間的交互。
13.如權(quán)利要求12所述的系統(tǒng),其特征在于,所述流水線變換模塊被配置為變換消息 處理流水線規(guī)范,包括所述流水線變換模塊被配置為指定在物理上解耦被包括在所述消息 處理流水線中的其他流水線組件的流水線內(nèi)通信鏈路。
14.如權(quán)利要求12所述的系統(tǒng),其特征在于,所述流水線變換模塊被配置為變換消息 處理流水線規(guī)范,包括所述流水線變換模塊被配置為指定在時間上解耦被包括在所述消息 處理流水線中的其他流水線組件的流水線內(nèi)通信鏈路。
15.一種在包括一個或多個處理器和系統(tǒng)存儲器的計算機系統(tǒng)處的用于組成應(yīng)用程序 的消息處理流水線的方法,所述方法包括訪問所述應(yīng)用程序的第一流水線規(guī)范(121)的動作,所述第一流水線規(guī)范指定第一流 水線組件要被包括在所述應(yīng)用程序的消息處理流水線中,所述第一流水線組件依賴于第一 代碼庫;訪問所述應(yīng)用程序的第二流水線規(guī)范(122)的動作,所述第二流水線規(guī)范指定第二流 水線組件要在所述第一流水線組件之后被包括在所述應(yīng)用程序的消息處理流水線中,所述 第二流水線組件依賴于第二代碼庫;確定所述第一庫(451)在第一計算機系統(tǒng)處可用的動作;確定所述第二庫(45 在第二不同的計算機系統(tǒng)處可用的動作;將所述第一規(guī)范變換為包括流水線內(nèi)通信鏈路(321)的動作,所述流水線內(nèi)通信鏈 路用于將所述第一流水線組件連接到所述第二流水線組件的,所述流水線內(nèi)通信鏈路包括 從所述第一流水線組件接收消息的傳入通信介質(zhì)(303)、將消息發(fā)送給所述第二流水線組件的傳出通信介質(zhì)(308a)、將消息從所述傳入通信介質(zhì)(30 抽取到所述傳出通信介質(zhì) (308a)的消息泵(143);為所述應(yīng)用程序?qū)嵗⑻幚砹魉€的動作,所述消息處理流水線在所述第一計算 機系統(tǒng)處部署所述第一流水線組件、在所述第二計算機系統(tǒng)處部署所述第二流水線組件, 并利用流水線內(nèi)通信鏈路(321)將消息從所述第一流水線組件傳送至所述第二流水線組 件。
全文摘要
本發(fā)明涉及用于構(gòu)成消息處理流水線的方法、系統(tǒng)和計算機程序產(chǎn)品。各實施例利用流水線內(nèi)通信鏈路來在物理上和/或在時間上解耦各流水線階段、配置分支消息流,以及橋接協(xié)議。流水線內(nèi)通信鏈路的使用允許在不必更改流水線組件或應(yīng)用程序的情況下組成消息處理流水線。每一通信鏈路本身是帶有跨時間和/或空間橋接消息的傳入和傳出消息處理流水線以及用于滿足消息處理要求的應(yīng)用程序邏輯的應(yīng)用程序。
文檔編號G06F9/46GK102144215SQ200980134846
公開日2011年8月3日 申請日期2009年8月11日 優(yōu)先權(quán)日2008年9月3日
發(fā)明者J·A·泰勒, N·A·艾倫 申請人:微軟公司