數(shù)據(jù)處理系統(tǒng)中的消息處理的制作方法
【專利摘要】一種數(shù)據(jù)處理系統(tǒng)包括在客戶機(jī)與服務(wù)器之間連接的服務(wù)總線,所述服務(wù)總線包括被布置為調(diào)解所述客戶機(jī)與所述服務(wù)器之間的消息流的一個(gè)或多個(gè)應(yīng)用。一種操作所述數(shù)據(jù)處理系統(tǒng)的方法包括以下步驟:在所述服務(wù)總線處接收來(lái)自所述客戶機(jī)的消息,并且在所述服務(wù)總線的應(yīng)用處調(diào)解所述消息,所述調(diào)解包括向所述消息添加標(biāo)頭,所述標(biāo)頭定義源以及目標(biāo)能夠直接響應(yīng)所述源的條件,所述源包括所述客戶機(jī)或所述服務(wù)總線的應(yīng)用,并且所述目標(biāo)包括所述服務(wù)總線的應(yīng)用或所述服務(wù)器。所述方法可以可選地還包括在所述目標(biāo)處接收調(diào)解后的消息,檢測(cè)滿足所述調(diào)解后的消息的所述標(biāo)頭中的所述條件,以及將響應(yīng)直接傳輸?shù)皆谒稣{(diào)解后的消息的所述標(biāo)頭中定義的所述源。
【專利說(shuō)明】數(shù)據(jù)處理系統(tǒng)中的消息處理
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及操作數(shù)據(jù)處理系統(tǒng)的方法,并且涉及數(shù)據(jù)處理系統(tǒng)本身。
【背景技術(shù)】
[0002] 企業(yè)服務(wù)總線(ESB)是一種軟件架構(gòu)模型,用于在面向服務(wù)的架構(gòu)中設(shè)計(jì)和實(shí)現(xiàn) 互相交互的軟件應(yīng)用之間的交互和通信。作為用于分布式計(jì)算的軟件架構(gòu)模型,它是更通 用的客戶機(jī)-服務(wù)器軟件架構(gòu)模型的一種變體,并且為應(yīng)用之間的通信和交互提供面向消 息的設(shè)計(jì)。它的主要用途是集成異構(gòu)系統(tǒng)和計(jì)算系統(tǒng)。
[0003] 現(xiàn)有ESB實(shí)現(xiàn)允許雙向操作。一個(gè)簡(jiǎn)單的實(shí)例是在啟動(dòng)給定服務(wù)調(diào)用之前調(diào)解請(qǐng) 求流上的消息,然后調(diào)解響應(yīng)流以便調(diào)解從給定服務(wù)返回到客戶機(jī)應(yīng)用的響應(yīng)。具有以下 響應(yīng)流并不罕見(jiàn):其不執(zhí)行任何豐富、轉(zhuǎn)換、調(diào)解或?qū)徲?jì),而是僅將響應(yīng)推回到客戶機(jī)應(yīng)用 而不執(zhí)行任何動(dòng)作,這在ESB的處理器和網(wǎng)絡(luò)利用率方面效率低下。
[0004] 當(dāng)前解決方案通過(guò)在給定有效期內(nèi)緩存服務(wù)響應(yīng),有助于降低ESB實(shí)現(xiàn)中的網(wǎng)絡(luò) 利用率,但這并不適用于所有情形,并且不會(huì)降低處理響應(yīng)流上的消息以便僅將響應(yīng)轉(zhuǎn)發(fā) 回到客戶機(jī)應(yīng)用的額外成本。出于本文檔的目的,響應(yīng)流與調(diào)解從后端服務(wù)到客戶機(jī)應(yīng)用 的響應(yīng)中涉及的過(guò)程相關(guān)。當(dāng)響應(yīng)流被視為空流時(shí),暗示處理相當(dāng)于靜態(tài)路由,即,沒(méi)有數(shù) 據(jù)豐富、轉(zhuǎn)換、調(diào)解或?qū)徲?jì)。
[0005] 因此,所屬【技術(shù)領(lǐng)域】需要解決上述問(wèn)題。
【發(fā)明內(nèi)容】
[0006] 根據(jù)本發(fā)明的第一方面,提供一種操作包括在客戶機(jī)與服務(wù)器之間連接的服務(wù)總 線的數(shù)據(jù)處理系統(tǒng)的方法,所述服務(wù)總線包括被布置為調(diào)解所述客戶機(jī)與所述服務(wù)器之間 的消息流的一個(gè)或多個(gè)應(yīng)用,所述方法包括以下步驟:在所述服務(wù)總線處接收來(lái)自所述客 戶機(jī)的消息,并在所述服務(wù)總線的應(yīng)用處調(diào)解所述消息,所述調(diào)解包括向所述消息添加標(biāo) 頭,所述標(biāo)頭定義源以及目標(biāo)能夠直接響應(yīng)所述源的條件,所述源包括所述客戶機(jī)或所述 服務(wù)總線的應(yīng)用,并且所述目標(biāo)包括所述服務(wù)總線的應(yīng)用或所述服務(wù)器。
[0007] 根據(jù)本發(fā)明的第二方面,提供一種包括在客戶機(jī)與服務(wù)器之間連接的服務(wù)總線的 數(shù)據(jù)處理系統(tǒng),所述服務(wù)總線包括被布置為調(diào)解所述客戶機(jī)與所述服務(wù)器之間的消息流的 一個(gè)或多個(gè)應(yīng)用,其中所述服務(wù)總線被布置為從所述客戶機(jī)接收消息并調(diào)解所述消息,所 述調(diào)解包括向所述消息添加標(biāo)頭,所述標(biāo)頭定義源以及目標(biāo)能夠直接響應(yīng)所述源的條件, 所述源包括所述客戶機(jī)或所述服務(wù)總線的應(yīng)用,并且所述目標(biāo)包括所述服務(wù)總線的應(yīng)用或 所述服務(wù)器。
[0008] 根據(jù)本發(fā)明的第三方面,提供一種計(jì)算機(jī)可讀介質(zhì)上的用于操作包括在客戶機(jī)與 服務(wù)器之間連接的服務(wù)總線的數(shù)據(jù)處理系統(tǒng)的計(jì)算機(jī)程序產(chǎn)品,所述服務(wù)總線包括被布置 為調(diào)解所述客戶機(jī)與所述服務(wù)器之間的消息流的一個(gè)或多個(gè)應(yīng)用,所述產(chǎn)品包括用于執(zhí)行 以下操作的指令:在所述服務(wù)總線處接收來(lái)自所述客戶機(jī)的消息,并在所述服務(wù)總線的應(yīng) 用處調(diào)解所述消息,所述調(diào)解包括向所述消息添加標(biāo)頭,所述標(biāo)頭定義源以及目標(biāo)能夠直 接響應(yīng)所述源的條件,所述源包括所述客戶機(jī)或所述服務(wù)總線的應(yīng)用,并且所述目標(biāo)包括 所述服務(wù)總線的應(yīng)用或所述服務(wù)器。
[0009] 從另一方面看,本發(fā)明提供一種用于操作包括在客戶機(jī)與服務(wù)器之間連接的服務(wù) 總線的數(shù)據(jù)處理系統(tǒng)的計(jì)算機(jī)程序產(chǎn)品,所述服務(wù)總線包括被布置為調(diào)解所述客戶機(jī)與所 述服務(wù)器之間的消息流的一個(gè)或多個(gè)應(yīng)用,所述計(jì)算機(jī)程序產(chǎn)品包括:計(jì)算機(jī)可讀存儲(chǔ)介 質(zhì),其可由處理電路讀取并存儲(chǔ)由所述處理電路執(zhí)行以執(zhí)行用于執(zhí)行本發(fā)明的步驟的方法 的指令。
[0010] 從另一方面看,本發(fā)明提供一種存儲(chǔ)在計(jì)算機(jī)可讀介質(zhì)上并可加載到數(shù)字計(jì)算機(jī) 的內(nèi)部存儲(chǔ)器中的計(jì)算機(jī)程序,其包括軟件代碼部分,當(dāng)所述程序在計(jì)算機(jī)上運(yùn)行時(shí),所述 軟件代碼部分用于執(zhí)行本發(fā)明的步驟。
[0011] 歸因于本發(fā)明,可提供增強(qiáng)的數(shù)據(jù)處理性能和功能,其例如可以在企業(yè)服務(wù)總線 產(chǎn)品中提供,這將在所述服務(wù)總線中提供減少的處理和網(wǎng)絡(luò)負(fù)載。優(yōu)選地,所述企業(yè)服務(wù)總 線針對(duì)給定服務(wù)響應(yīng)檢測(cè)空響應(yīng)流,向所述服務(wù)總線中的組件發(fā)送控制分組以指示繞過(guò)所 述組件,并且基于最初傳播到所述服務(wù)的數(shù)據(jù),將所述響應(yīng)消息路由到客戶機(jī)調(diào)用系統(tǒng)。有 利的是,所述方法還包括在所述目標(biāo)處接收調(diào)解后的消息,檢測(cè)滿足所述調(diào)解后的消息的 所述標(biāo)頭中的所述條件,以及將響應(yīng)直接傳輸?shù)皆谒稣{(diào)解后的消息的所述標(biāo)頭中定義的 所述源。因此,在一個(gè)優(yōu)選實(shí)施例中,所述數(shù)據(jù)處理系統(tǒng)能夠確定何時(shí)響應(yīng)流為空,當(dāng)服務(wù) 總線響應(yīng)流為空時(shí),將響應(yīng)直接路由到客戶機(jī)系統(tǒng),使用可用響應(yīng)流的信息相應(yīng)地路由不 同的服務(wù)響應(yīng)(例如故障消息/無(wú)效響應(yīng)/有效響應(yīng)),并且允許通過(guò)多個(gè)應(yīng)用部分優(yōu)化和 傳播數(shù)據(jù)以便允許更復(fù)雜的分析和路由。
[0012] 基本上,修改后的數(shù)據(jù)處理系統(tǒng)具有客戶機(jī)和端服務(wù)器及在它們中間的服務(wù)總 線。可以布置源和目標(biāo)(其中在最簡(jiǎn)單的實(shí)施例中,所述源是客戶機(jī),并且所述目標(biāo)是服務(wù) 器)以便從所述源產(chǎn)生針對(duì)所述目標(biāo)的消息時(shí),所述服務(wù)總線可以定義特定情況,其中所 述目標(biāo)可以直接與所述源通信而不是通過(guò)所述服務(wù)總線的所有組件返回。在最簡(jiǎn)單的實(shí)施 例中,這意味著在特定情況下,所述端服務(wù)器的通信將直接返回到所述客戶機(jī)設(shè)備,而不是 通過(guò)所述服務(wù)總線通信。所述服務(wù)總線將向原始消息添加標(biāo)頭,所述標(biāo)頭定義何時(shí)所述目 標(biāo)可以直接與所述源通信。這將減少所述服務(wù)總線中在返回線路上的處理量,因?yàn)橹苯优c 所述源通信的所述目標(biāo)繞過(guò)部分或全部所述服務(wù)總線。
[0013] 優(yōu)選地,所述方法還包括將消息從所述源傳輸?shù)剿瞿繕?biāo)以指示直接響應(yīng)的安全 接收,并且將消息從所述目標(biāo)傳輸?shù)较⒄{(diào)解應(yīng)用以指示直接響應(yīng)的安全接收。所述方法 還可以可選地包括檢測(cè)未在所述源處安全接收直接響應(yīng),并且改為將響應(yīng)傳輸?shù)剿龇?wù) 總線的應(yīng)用。所述目標(biāo)可以被配置為監(jiān)視所述源安全接收所述直接響應(yīng),并且所述目標(biāo)可 以與所述服務(wù)總線通信以便確保遵循適當(dāng)?shù)氖聞?wù)方法。如果由于任何原因,直接消息未到 達(dá)起始源或者所述目標(biāo)不認(rèn)為消息到達(dá)所述源,則所述目標(biāo)可以將所述響應(yīng)傳送到所述服 務(wù)總線,以便確保原始請(qǐng)求得到處理。
【專利附圖】
【附圖說(shuō)明】
[0014] 現(xiàn)在僅通過(guò)實(shí)例的方式參考附圖描述本發(fā)明的優(yōu)選實(shí)施例,這些附圖是:
[0015] 圖1和2是根據(jù)現(xiàn)有技術(shù)并且其中可以實(shí)現(xiàn)本發(fā)明的一個(gè)優(yōu)選實(shí)施例的數(shù)據(jù)處理 系統(tǒng)的不意圖;
[0016] 圖3是根據(jù)本發(fā)明的一個(gè)優(yōu)選實(shí)施例的操作服務(wù)總線的方法的流程圖;
[0017] 圖4是根據(jù)本發(fā)明的一個(gè)優(yōu)選實(shí)施例的操作服務(wù)器的方法的流程圖;
[0018] 圖5是根據(jù)本發(fā)明的一個(gè)優(yōu)選實(shí)施例的服務(wù)總線中的示例響應(yīng)流的示意圖;以及 [0019] 圖6是根據(jù)本發(fā)明的一個(gè)優(yōu)選實(shí)施例的數(shù)據(jù)處理系統(tǒng)的另一示意圖。
【具體實(shí)施方式】
[0020] 圖1示出數(shù)據(jù)處理系統(tǒng),其包括客戶機(jī)10、服務(wù)器14以及在客戶機(jī)10與服務(wù)器 14之間連接的服務(wù)總線12。服務(wù)總線12包括被布置為調(diào)解客戶機(jī)10與服務(wù)器14之間的 消息流的一個(gè)或多個(gè)應(yīng)用。使用服務(wù)總線12暗示客戶機(jī)10和服務(wù)器14不能直接通信并 且需要服務(wù)總線12在兩個(gè)不同組件之間調(diào)解。在大型組織中,遺留計(jì)算系統(tǒng)與新的服務(wù)或 應(yīng)用不兼容并且在它們中間需要服務(wù)總線12是很常見(jiàn)的。
[0021] 圖1中所示的三個(gè)組件可以是位于不同位置中的三個(gè)單獨(dú)機(jī)器,或者它們可以包 括可能位于同一物理機(jī)上的單獨(dú)軟件環(huán)境。客戶機(jī)10是一種應(yīng)用,其想要使用服務(wù)器14提 供的服務(wù)的功能。無(wú)論由于何種原因,客戶機(jī)10不能直接與服務(wù)器14通信,而是必須向服 務(wù)總線12發(fā)送消息,服務(wù)總線12調(diào)解該消息以便最終轉(zhuǎn)發(fā)到服務(wù)器14。同樣,服務(wù)器14 向服務(wù)總線12發(fā)送響應(yīng),服務(wù)總線12然后調(diào)解接收的響應(yīng)并將其發(fā)回到客戶機(jī)10。
[0022] 服務(wù)總線12包括一個(gè)或多個(gè)單獨(dú)應(yīng)用,這些應(yīng)用管理從客戶機(jī)10和服務(wù)器14接 收的消息的請(qǐng)求流和響應(yīng)流。服務(wù)總線12的應(yīng)用的請(qǐng)求流調(diào)解來(lái)自客戶機(jī)10的入站消息。 服務(wù)總線12將調(diào)解后的消息發(fā)送到服務(wù)器14。服務(wù)總線12的應(yīng)用的響應(yīng)流調(diào)解來(lái)自服務(wù) 器14的回復(fù)以便轉(zhuǎn)發(fā)到原始請(qǐng)求客戶機(jī)10。這樣,盡管存在明顯的不兼容性,但是客戶機(jī) 10與服務(wù)器14仍可以通信。
[0023] 圖1的數(shù)據(jù)處理系統(tǒng)優(yōu)化例如在ESB實(shí)現(xiàn)中的響應(yīng)流處理??蛻魴C(jī)系統(tǒng)10是直 接調(diào)用ESB實(shí)現(xiàn)的系統(tǒng)。服務(wù)總線12將在協(xié)議標(biāo)頭中為服務(wù)器14提供的后端服務(wù)提供數(shù) 據(jù)傳播,其中包含有關(guān)客戶機(jī)系統(tǒng)(多個(gè))的信息以及有關(guān)受支持的響應(yīng)和響應(yīng)流優(yōu)化可 行性的信息。基本上,服務(wù)總線12的應(yīng)用調(diào)解從客戶機(jī)10接收的消息,該調(diào)解包括向消息 添加標(biāo)頭,該標(biāo)頭定義源以及目標(biāo)能夠直接響應(yīng)源的條件。
[0024] 圖2以最寬泛的術(shù)語(yǔ)示出該概念,其中客戶機(jī)10將消息16傳輸?shù)椒?wù)總線12。 服務(wù)總線12的應(yīng)用將調(diào)解消息16,該調(diào)解包括向消息16添加標(biāo)頭18。標(biāo)頭18定義源(客 戶機(jī)10)以及目標(biāo)(服務(wù)器14)能夠直接響應(yīng)客戶機(jī)10的條件。因此,除了服務(wù)總線12 執(zhí)行的常規(guī)調(diào)解之外,服務(wù)總線12向出站消息添加標(biāo)頭18,標(biāo)頭18定義服務(wù)器14可以直 接響應(yīng)客戶機(jī)10的情況,而不必回復(fù)服務(wù)總線12。
[0025] 目標(biāo)(服務(wù)器14)接收調(diào)解后的消息16,并且如果它檢測(cè)滿足調(diào)解后的消息16的 標(biāo)頭18中的條件,則將響應(yīng)直接傳輸?shù)皆谡{(diào)解后的消息16的標(biāo)頭18中定義的源(客戶機(jī) 10)。通常發(fā)送到服務(wù)總線12以便調(diào)解并且轉(zhuǎn)發(fā)到客戶機(jī)10的響應(yīng)改為直接發(fā)送到客戶 機(jī)10,從而繞過(guò)服務(wù)總線12。服務(wù)器14在所有方面執(zhí)行其常規(guī)操作,除了路由其對(duì)來(lái)自客 戶機(jī)10的請(qǐng)求的響應(yīng),這由標(biāo)頭18決定。
[0026] 當(dāng)特定請(qǐng)求的響應(yīng)流為空時(shí),服務(wù)器14能夠直接響應(yīng)客戶機(jī)10。這暗示服務(wù)總線 12不針對(duì)該特定請(qǐng)求的響應(yīng)執(zhí)行任何調(diào)解或其它動(dòng)作,除了將響應(yīng)路由到原始客戶機(jī)10 以外??枕憫?yīng)流基本上用于將響應(yīng)從服務(wù)器14傳遞到客戶機(jī)10而沒(méi)有來(lái)自服務(wù)總線12 的任何調(diào)解。在使用服務(wù)總線12的數(shù)據(jù)處理系統(tǒng)的常規(guī)操作中,這將造成處理和網(wǎng)絡(luò)資源 的低效使用,因?yàn)橥ㄟ^(guò)服務(wù)總線12不必要地路由數(shù)據(jù)。
[0027] 在圖2中,服務(wù)總線12在計(jì)算機(jī)程序產(chǎn)品的控制下操作,該計(jì)算機(jī)程序產(chǎn)品由計(jì) 算機(jī)可讀介質(zhì)30 (在此為⑶-ROM 30)提供。介質(zhì)30上的產(chǎn)品包括一系列指令,在服務(wù)總 線12接收消息16之后,這些指令控制消息16的調(diào)解。指令定義消息16的接收以及服務(wù) 總線12如何通過(guò)向消息16添加標(biāo)頭18來(lái)調(diào)解消息16。標(biāo)頭18定義消息16的源以及消 息16的最終目標(biāo)將直接響應(yīng)消息16的源的情況。
[0028] 數(shù)據(jù)處理系統(tǒng)可以實(shí)現(xiàn)一種用于檢測(cè)空響應(yīng)流的方法。例如,數(shù)據(jù)處理系統(tǒng) 可以檢測(cè)是否在運(yùn)行時(shí)或部署時(shí)存在任何空響應(yīng)流。該檢測(cè)將依賴于實(shí)現(xiàn)。例如在 IBM? WebSphere? Enterprise Service Bus(WESB)實(shí)現(xiàn)中,可能詢問(wèn)最初處理來(lái) 自服務(wù)調(diào)用的響應(yīng)的節(jié)點(diǎn)連接,以便確定與處理將響應(yīng)發(fā)回到服務(wù)使用者/客戶機(jī)應(yīng)用的 節(jié)點(diǎn)是否存在任何直接連接,或者通過(guò)檢查存儲(chǔ)調(diào)解流數(shù)據(jù)的xml文件(多個(gè))。然后可 以將有關(guān)空響應(yīng)流的信息存儲(chǔ)在高速緩存或調(diào)解元數(shù)據(jù)中,并且可以將數(shù)據(jù)傳播到后端服 務(wù)。服務(wù)總線的其它實(shí)現(xiàn)可以使用特定于那些用于檢測(cè)空響應(yīng)流的實(shí)現(xiàn)的方法。IBM和 WebSphere是國(guó)際商業(yè)機(jī)器公司在全世界各地的注冊(cè)商標(biāo)。
[0029] 圖3是示出服務(wù)總線12如何操作的流程圖,服務(wù)總線12通過(guò)允許服務(wù)器14在接 收消息16之后直接與客戶機(jī)10通信來(lái)實(shí)現(xiàn)優(yōu)化網(wǎng)絡(luò)負(fù)載的特性。在步驟S3. 1,進(jìn)行檢查 以便查看啟用優(yōu)化,因?yàn)榫W(wǎng)絡(luò)管理員應(yīng)該具有啟用或禁用該特性的能力。如果是,則在步驟 S3. 2,進(jìn)行檢查以便查看任何響應(yīng)流是否為空。如果是,則在步驟S3. 3,進(jìn)行進(jìn)一步檢查以 便查看響應(yīng)流是否有資格進(jìn)行優(yōu)化。這可能是查看是否已向服務(wù)總線實(shí)現(xiàn)添加任何定制代 碼,這可以意味著服務(wù)總線12不能依賴于響應(yīng)流為空而認(rèn)為特定響應(yīng)流有資格進(jìn)行優(yōu)化。 如果在步驟S3. 3的回答為是,則在步驟S3. 4,服務(wù)總線進(jìn)行的調(diào)解包括在發(fā)送到服務(wù)器14 的消息的標(biāo)頭18中包括客戶機(jī)10和響應(yīng)流的詳細(xì)信息,這將確定在步驟S3. 5發(fā)送到服務(wù) 器14的請(qǐng)求的形式。
[0030] 圖4是示出服務(wù)器14的操作的流程圖。服務(wù)器14需要的數(shù)據(jù)在接收的消息的標(biāo) 頭18中傳播,如上所述。在步驟S4. 1,服務(wù)器14進(jìn)行檢查以便查看它將為原始請(qǐng)求提供的 響應(yīng)是否與標(biāo)頭18中的條件匹配。如果否,則所述過(guò)程移到步驟S4. 7,并且服務(wù)器14以常 規(guī)方式響應(yīng)服務(wù)總線12。但是,如果是,則在步驟S4. 2,將通知從服務(wù)器14發(fā)送到服務(wù)總 線12,該通知指示將向原始請(qǐng)求者(客戶機(jī)10)發(fā)出對(duì)原始消息的直接響應(yīng)。
[0031] 在步驟S4. 3,服務(wù)器14從消息的標(biāo)頭18提取限定客戶機(jī)10的數(shù)據(jù)(例如客戶 機(jī)10的適當(dāng)網(wǎng)絡(luò)地址),并且在步驟S4. 4,使用該數(shù)據(jù)將響應(yīng)直接傳輸?shù)娇蛻魴C(jī)10。在步 驟S4. 5,進(jìn)行檢查以便查看客戶機(jī)10是否確認(rèn)安全接收響應(yīng)。如果否,則所述過(guò)程移到步 驟S4. 7,并且服務(wù)器14以常規(guī)方式響應(yīng)服務(wù)總線12。但是,如果是,則在步驟S4. 6,服務(wù)器 14向服務(wù)總線12發(fā)送通知以便指示已成功使用直接路由。
[0032] 檢查接收響應(yīng)(如果中斷ESB 12,則為客戶機(jī)10與服務(wù)器14之間的"握手")的 步驟S4. 5是可選的,因?yàn)榭梢岳檬褂米畲笈Φ姆?wù)質(zhì)量,其中可能在某些條件下丟失 消息。在圖4中,步驟S4. 4可以可選地直接連接到步驟S4. 6,從而繞過(guò)步驟S4. 5,具體取 決于環(huán)境配置,例如是否使用降低的服務(wù)質(zhì)量。
[0033] 服務(wù)器14提供一種用于指示以下ESB實(shí)現(xiàn)12的方法:繞過(guò)響應(yīng)流并且向ESB 12 發(fā)送分組以便指示已完成流。服務(wù)器12解析協(xié)議標(biāo)頭18中的數(shù)據(jù),以便將響應(yīng)消息路由 到適當(dāng)?shù)目蛻魴C(jī)系統(tǒng)10。將事務(wù)性傳遞到后端系統(tǒng)14,其現(xiàn)在負(fù)責(zé)數(shù)據(jù)/事務(wù)/服務(wù)質(zhì)量 (QOS)。如果服務(wù)器14確定滿足標(biāo)頭18中的條件,則服務(wù)器14將僅使用該方法。因此,對(duì) 于某些類型的請(qǐng)求,僅可能響應(yīng)的子集將使用對(duì)請(qǐng)求的原始源的直接響應(yīng)。
[0034] 圖5詳述了服務(wù)總線12的示例響應(yīng)流。流包括經(jīng)由箭頭22連接的節(jié)點(diǎn)20。每個(gè) 節(jié)點(diǎn)20可以被視為表示某種邏輯,如果就接收的消息16而言滿足必要條件,則服務(wù)總線12 將調(diào)用該邏輯。標(biāo)記為"調(diào)出響應(yīng)1"的節(jié)點(diǎn)20指當(dāng)針對(duì)來(lái)自客戶機(jī)10的接收的消息16 從服務(wù)器14提供的服務(wù)1接收到響應(yīng)時(shí),將被調(diào)用的節(jié)點(diǎn)20。同樣,"調(diào)出響應(yīng)2"和"調(diào) 出響應(yīng)3"指分別來(lái)自其它服務(wù)器14的服務(wù)2和3。
[0035] 在圖5的實(shí)例中,標(biāo)記為"輸入響應(yīng)"的節(jié)點(diǎn)20指被調(diào)用以便向原始客戶機(jī)10返 回消息的邏輯,該消息觸發(fā)到服務(wù)器14的通信。在將響應(yīng)發(fā)送到客戶機(jī)系統(tǒng)10之前,首先 在可擴(kuò)展樣式表語(yǔ)言轉(zhuǎn)換(XSLT)節(jié)點(diǎn)20中轉(zhuǎn)換來(lái)自調(diào)出1或調(diào)出2的響應(yīng)。但是,將來(lái) 自調(diào)出3的響應(yīng)直接發(fā)送到客戶機(jī)系統(tǒng)10。來(lái)自調(diào)出1的錯(cuò)誤響應(yīng)將導(dǎo)致停止。從該圖可 以看到,將根據(jù)在服務(wù)總線12中定義的邏輯,以不同方式處理來(lái)自同一服務(wù)器14的不同響 應(yīng)。
[0036] 如果應(yīng)用本身有資格進(jìn)行響應(yīng)流優(yōu)化,則來(lái)自調(diào)出3的任何有效響應(yīng)(導(dǎo)致調(diào)出 響應(yīng)3被調(diào)用)都將是優(yōu)化的可行候選者。如果在請(qǐng)求流中調(diào)用調(diào)出3,則在標(biāo)頭18中將 信息傳播到后端服務(wù)14,該信息指示應(yīng)該將有效響應(yīng)直接路由到所指示的客戶機(jī)系統(tǒng)10。 這樣,可以監(jiān)視服務(wù)總線12的邏輯以便確定何時(shí)適于向服務(wù)器14通知特定類型的響應(yīng)不 需要返回到服務(wù)總線12,但可以直接轉(zhuǎn)到起始客戶機(jī)10。
[0037] 在諸如IBM WebSphere ESB之類的服務(wù)總線的某些實(shí)現(xiàn)中,可能通過(guò)導(dǎo)入26和導(dǎo) 出28連接服務(wù)總線12的單獨(dú)應(yīng)用24,如圖6中所示。在這種類型的實(shí)現(xiàn)中,最終調(diào)用后端 服務(wù)14的ESB應(yīng)用24的客戶機(jī)系統(tǒng)可以是服務(wù)總線12中的另一個(gè)應(yīng)用24。盡管數(shù)據(jù)處 理系統(tǒng)中的消息鏈?zhǔn)强蛻魴C(jī)-服務(wù)總線-服務(wù)器,但優(yōu)化響應(yīng)路由的源和目標(biāo)不一定是鏈 的兩端(客戶機(jī)10和服務(wù)器14)。源可以是客戶機(jī)10,并且目標(biāo)可以是服務(wù)總線12的應(yīng) 用24,或者源可以是服務(wù)總線12的應(yīng)用24,并且目標(biāo)可以是服務(wù)器14。
[0038] 在圖6的實(shí)例中,應(yīng)用App 2將保存有關(guān)對(duì)應(yīng)用App 1的哪些響應(yīng)滿足優(yōu)化準(zhǔn)則 的信息,該信息再次在協(xié)議標(biāo)頭中傳播到后端服務(wù)14。在此方面,取決于App 1和App 2的 響應(yīng)流的設(shè)計(jì)和功能,后端服務(wù)14可以向App 2發(fā)送響應(yīng),App 2然后向App 1發(fā)送響應(yīng), App 1然后直接響應(yīng)客戶機(jī)系統(tǒng)(無(wú)優(yōu)化),或者可以向App 2發(fā)送響應(yīng),App 2然后可以 走捷徑繞過(guò)App 1并且直接響應(yīng)客戶機(jī)系統(tǒng)10(部分優(yōu)化),或者可以走捷徑繞過(guò)App 2并 且向App 1發(fā)送響應(yīng),App 1然后直接響應(yīng)客戶機(jī)系統(tǒng)(不同部分優(yōu)化),或者可以走捷徑 繞過(guò)App 2和App 1兩者并且將響應(yīng)直接發(fā)送到客戶機(jī)系統(tǒng)10 (完全優(yōu)化)。
[0039] 優(yōu)化包含的重要原理是繞過(guò)部分或全部服務(wù)總線12,并且這通過(guò)添加到進(jìn)行中的 消息的標(biāo)頭來(lái)實(shí)現(xiàn),該標(biāo)頭向鏈的下游組件指示直接路由將發(fā)生的情況以及應(yīng)將直接路由 定向到誰(shuí)。因?yàn)榭蛻魴C(jī)10可能向服務(wù)器14發(fā)出請(qǐng)求,該請(qǐng)求導(dǎo)致將許多兆字節(jié)的數(shù)據(jù)傳 輸?shù)娇蛻魴C(jī)10,所以此類響應(yīng)路由的任何優(yōu)化都將節(jié)省大量處理和網(wǎng)絡(luò)資源。作為優(yōu)化目 標(biāo)的服務(wù)器14或應(yīng)用24將響應(yīng)鏈中的不是實(shí)際調(diào)用服務(wù)器14或應(yīng)用24的組件的上游組 件。
[0040] 所屬【技術(shù)領(lǐng)域】的技術(shù)人員知道,本發(fā)明的各個(gè)方面可以實(shí)現(xiàn)為系統(tǒng)、方法、計(jì)算機(jī) 程序產(chǎn)品或計(jì)算機(jī)程序。因此,本發(fā)明的各個(gè)方面可以具體實(shí)現(xiàn)為以下形式,即:完全的硬 件實(shí)施方式、完全的軟件實(shí)施方式(包括固件、駐留軟件、微代碼等),或硬件和軟件方面結(jié) 合的實(shí)施方式,這里可以統(tǒng)稱為"電路"、"模塊"或"系統(tǒng)"。此外,本發(fā)明的各個(gè)方面還可以 實(shí)現(xiàn)為在一個(gè)或多個(gè)計(jì)算機(jī)可讀介質(zhì)中的計(jì)算機(jī)程序產(chǎn)品的形式,該計(jì)算機(jī)可讀介質(zhì)中包 含計(jì)算機(jī)可讀的程序代碼。
[0041] 可以采用一個(gè)或多個(gè)計(jì)算機(jī)可讀介質(zhì)的任意組合。計(jì)算機(jī)可讀介質(zhì)可以是計(jì)算機(jī) 可讀信號(hào)介質(zhì)或者計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)。計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)例如可以是一但不限于一 電、磁、光、電磁、紅外線、或半導(dǎo)體的系統(tǒng)、裝置或器件,或者上述的任意合適的組合。計(jì)算 機(jī)可讀存儲(chǔ)介質(zhì)的更具體的例子(非窮舉的列表)包括:具有一個(gè)或多個(gè)導(dǎo)線的電連接、便 攜式計(jì)算機(jī)盤(pán)、硬盤(pán)、隨機(jī)存取存儲(chǔ)器(RAM)、只讀存儲(chǔ)器(ROM)、可擦式可編程只讀存儲(chǔ)器 (EPROM或閃存)、光纖、便攜式緊湊盤(pán)只讀存儲(chǔ)器(CD-ROM)、光存儲(chǔ)器件、磁存儲(chǔ)器件、或者 上述的任意合適的組合。在本文件中,計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)可以是任何包含或存儲(chǔ)程序的 有形介質(zhì),該程序可以被指令執(zhí)行系統(tǒng)、裝置或者器件使用或者與其結(jié)合使用。
[0042] 計(jì)算機(jī)可讀的信號(hào)介質(zhì)可以包括例如在基帶中或者作為載波一部分傳播的數(shù)據(jù) 信號(hào),其中承載了計(jì)算機(jī)可讀的程序代碼。這種傳播的數(shù)據(jù)信號(hào)可以采用多種形式,包括一 但不限于一電磁信號(hào)、光信號(hào)或上述的任意合適的組合。計(jì)算機(jī)可讀的信號(hào)介質(zhì)可以是計(jì) 算機(jī)可讀存儲(chǔ)介質(zhì)以外的任何計(jì)算機(jī)可讀介質(zhì),該計(jì)算機(jī)可讀介質(zhì)可以發(fā)送、傳播或者傳 輸用于由指令執(zhí)行系統(tǒng)、裝置或者器件使用或者與其結(jié)合使用的程序。
[0043] 計(jì)算機(jī)可讀介質(zhì)上包含的程序代碼可以用任何適當(dāng)?shù)慕橘|(zhì)傳輸,包括一但不限 于一無(wú)線、有線、光纜、RF等等,或者上述的任意合適的組合。
[0044] 可以以一種或多種程序設(shè)計(jì)語(yǔ)言的任意組合來(lái)編寫(xiě)用于執(zhí)行本發(fā)明的各個(gè)方 面的操作的計(jì)算機(jī)程序代碼,所述程序設(shè)計(jì)語(yǔ)言包括面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言一諸如 Java?、SmalltalKC++等,還包括常規(guī)的過(guò)程式程序設(shè)計(jì)語(yǔ)言一諸如"C"語(yǔ)言或類似的 程序設(shè)計(jì)語(yǔ)言。程序代碼可以完全地在用戶計(jì)算機(jī)上執(zhí)行、部分地在用戶計(jì)算機(jī)上執(zhí)行、作 為一個(gè)獨(dú)立的軟件包執(zhí)行、部分在用戶計(jì)算機(jī)上部分在遠(yuǎn)程計(jì)算機(jī)上執(zhí)行、或者完全在遠(yuǎn) 程計(jì)算機(jī)或服務(wù)器上執(zhí)行。在涉及遠(yuǎn)程計(jì)算機(jī)的情形中,遠(yuǎn)程計(jì)算機(jī)可以通過(guò)任意種類的 網(wǎng)絡(luò)一包括局域網(wǎng)(LAN)或廣域網(wǎng)(WAN)-連接到用戶計(jì)算機(jī),或者,可以連接到外部計(jì)算 機(jī)(例如利用因特網(wǎng)服務(wù)提供商來(lái)通過(guò)因特網(wǎng)連接)。Java以及所有基于Java的商標(biāo)和 徽標(biāo)是Oracle和/或其子公司的商標(biāo)或注冊(cè)商標(biāo)。
[0045] 下面將參照根據(jù)本發(fā)明實(shí)施例的方法、裝置(系統(tǒng))和計(jì)算機(jī)程序產(chǎn)品的流程圖 和/或框圖描述本發(fā)明的各個(gè)方面。應(yīng)當(dāng)理解,流程圖和/或框圖的每個(gè)方框以及流程圖 和/或框圖中各方框的組合,都可以由計(jì)算機(jī)程序指令實(shí)現(xiàn)。這些計(jì)算機(jī)程序指令可以提 供給通用計(jì)算機(jī)、專用計(jì)算機(jī)或其它可編程數(shù)據(jù)處理裝置的處理器,從而生產(chǎn)出一種機(jī)器, 使得這些指令在通過(guò)計(jì)算機(jī)或其它可編程數(shù)據(jù)處理裝置的處理器執(zhí)行時(shí),產(chǎn)生了實(shí)現(xiàn)流程 圖和/或框圖中的一個(gè)或多個(gè)方框中規(guī)定的功能/動(dòng)作的裝置。
[0046] 也可以把這些計(jì)算機(jī)程序指令存儲(chǔ)在計(jì)算機(jī)可讀介質(zhì)中,這些指令使得計(jì)算機(jī)、 其它可編程數(shù)據(jù)處理裝置、或其它設(shè)備以特定方式工作,從而,存儲(chǔ)在計(jì)算機(jī)可讀介質(zhì)中的 指令就產(chǎn)生出包括實(shí)現(xiàn)流程圖和/或框圖中的一個(gè)或多個(gè)方框中規(guī)定的功能/動(dòng)作的指令 的制造品(article of manufacture) 〇
[0047] 也可以把計(jì)算機(jī)程序指令加載到計(jì)算機(jī)、其它可編程數(shù)據(jù)處理裝置、或其它設(shè)備 上,使得在計(jì)算機(jī)、其它可編程裝置或其它設(shè)備上執(zhí)行一系列操作步驟,以產(chǎn)生計(jì)算機(jī)實(shí)現(xiàn) 的過(guò)程,從而使得在計(jì)算機(jī)或其它可編程裝置上執(zhí)行的指令提供實(shí)現(xiàn)流程圖和/或框圖中 的一個(gè)或多個(gè)方框中規(guī)定的功能/動(dòng)作的過(guò)程。
[0048] 附圖中的流程圖和框圖顯示了根據(jù)本發(fā)明的不同實(shí)施例的系統(tǒng)、方法和計(jì)算機(jī)程 序產(chǎn)品的可能實(shí)現(xiàn)的體系架構(gòu)、功能和操作。在這點(diǎn)上,流程圖或框圖中的每個(gè)方框可以代 表一個(gè)模塊、程序段或代碼的一部分,所述模塊、程序段或代碼的一部分包含一個(gè)或多個(gè)用 于實(shí)現(xiàn)規(guī)定的邏輯功能的可執(zhí)行指令。也應(yīng)當(dāng)注意,在有些作為替換的實(shí)現(xiàn)中,方框中所標(biāo) 注的功能可以以不同于附圖中所標(biāo)注的順序發(fā)生。例如,兩個(gè)連續(xù)的方框?qū)嶋H上可以基本 并行地執(zhí)行,它們有時(shí)也可以按相反的順序執(zhí)行,這依所涉及的功能而定。也要注意的是, 框圖和/或流程圖中的每個(gè)方框、以及框圖和/或流程圖中的方框的組合,可以用執(zhí)行規(guī)定 的功能或動(dòng)作的專用的基于硬件的系統(tǒng)來(lái)實(shí)現(xiàn),或者可以用專用硬件與計(jì)算機(jī)指令的組合 來(lái)實(shí)現(xiàn)。
[0049] 為了避免疑義,此處在說(shuō)明書(shū)和權(quán)利要求中使用的術(shù)語(yǔ)"包括"不應(yīng)被解釋為"僅 由...組成"。
【權(quán)利要求】
1. 一種用于操作包括在客戶機(jī)與服務(wù)器之間連接的服務(wù)總線的數(shù)據(jù)處理系統(tǒng)的方法, 所述服務(wù)總線包括被布置為調(diào)解所述客戶機(jī)與所述服務(wù)器之間的消息流的一個(gè)或多個(gè)應(yīng) 用,所述方法包括以下步驟: 在所述服務(wù)總線處接收來(lái)自所述客戶機(jī)的消息,并在所述服務(wù)總線的應(yīng)用處調(diào)解所述 消息,所述調(diào)解包括向所述消息添加標(biāo)頭,所述標(biāo)頭定義源以及目標(biāo)能夠直接響應(yīng)所述源 的條件,所述源包括所述客戶機(jī)或所述服務(wù)總線的應(yīng)用,并且所述目標(biāo)包括所述服務(wù)總線 的應(yīng)用或所述服務(wù)器。
2. 根據(jù)權(quán)利要求1的方法,還包括在所述目標(biāo)處接收調(diào)解后的消息,檢測(cè)滿足所述調(diào) 解后的消息的所述標(biāo)頭中的所述條件,以及將響應(yīng)直接傳輸?shù)皆谒稣{(diào)解后的消息的所述 標(biāo)頭中定義的所述源。
3. 根據(jù)權(quán)利要求2的方法,還包括將消息從所述源傳輸?shù)剿瞿繕?biāo)以指示直接響應(yīng)的 安全接收。
4. 根據(jù)權(quán)利要求3的方法,還包括將消息從所述目標(biāo)傳輸?shù)较⒄{(diào)解應(yīng)用以指示直接 響應(yīng)的安全接收。
5. 根據(jù)權(quán)利要求2的方法,還包括檢測(cè)未在所述源處安全接收直接響應(yīng),并且改為將 響應(yīng)傳輸?shù)剿龇?wù)總線的應(yīng)用。
6. 根據(jù)任一上述權(quán)利要求的方法,其中所述服務(wù)總線包括多個(gè)應(yīng)用,并且所述源包括 所述服務(wù)總線中的第一應(yīng)用,所述目標(biāo)包括所述服務(wù)總線中的第二應(yīng)用。
7. -種包括在客戶機(jī)與服務(wù)器之間連接的服務(wù)總線的數(shù)據(jù)處理系統(tǒng),所述服務(wù)總線 包括被布置為調(diào)解所述客戶機(jī)與所述服務(wù)器之間的消息流的一個(gè)或多個(gè)應(yīng)用,其中所述服 務(wù)總線被布置為從所述客戶機(jī)接收消息并調(diào)解所述消息,所述調(diào)解包括向所述消息添加標(biāo) 頭,所述標(biāo)頭定義源以及目標(biāo)能夠直接響應(yīng)所述源的條件,所述源包括所述客戶機(jī)或所述 服務(wù)總線的應(yīng)用,并且所述目標(biāo)包括所述服務(wù)總線的應(yīng)用或所述服務(wù)器。
8. 根據(jù)權(quán)利要求7的系統(tǒng),其中所述目標(biāo)被布置為接收調(diào)解后的消息,檢測(cè)滿足所述 調(diào)解后的消息的所述標(biāo)頭中的所述條件,以及將響應(yīng)直接傳輸?shù)皆谒稣{(diào)解后的消息的所 述標(biāo)頭中定義的所述源。
9. 根據(jù)權(quán)利要求8的系統(tǒng),其中所述源被布置為將消息傳輸?shù)剿瞿繕?biāo)以指示直接響 應(yīng)的安全接收。
10. 根據(jù)權(quán)利要求9的系統(tǒng),其中所述目標(biāo)被進(jìn)一步布置為將消息傳輸?shù)较⒄{(diào)解應(yīng) 用以指示直接響應(yīng)的安全接收。
11. 根據(jù)權(quán)利要求8的系統(tǒng),其中所述目標(biāo)被進(jìn)一步布置為檢測(cè)未在所述源處安全接 收直接響應(yīng),并且改為將響應(yīng)傳輸?shù)剿龇?wù)總線的應(yīng)用。
12. 根據(jù)權(quán)利要求7至11中的任一權(quán)利要求的系統(tǒng),其中所述服務(wù)總線包括多個(gè)應(yīng)用, 并且所述源包括所述服務(wù)總線中的第一應(yīng)用,所述目標(biāo)包括所述服務(wù)總線中的第二應(yīng)用。
13. -種用于操作包括在客戶機(jī)與服務(wù)器之間連接的服務(wù)總線的數(shù)據(jù)處理系統(tǒng)的計(jì)算 機(jī)程序產(chǎn)品,所述服務(wù)總線包括被布置為調(diào)解所述客戶機(jī)與所述服務(wù)器之間的消息流的一 個(gè)或多個(gè)應(yīng)用,所述計(jì)算機(jī)程序產(chǎn)品包括: 計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其可由處理電路讀取并存儲(chǔ)由所述處理電路執(zhí)行以執(zhí)行根據(jù)權(quán) 利要求1至6中的任一權(quán)利要求的方法的指令。
14. 一種存儲(chǔ)在計(jì)算機(jī)可讀介質(zhì)上并可加載到數(shù)字計(jì)算機(jī)的內(nèi)部存儲(chǔ)器中的計(jì)算機(jī)程 序,其包括軟件代碼部分,當(dāng)所述程序在計(jì)算機(jī)上運(yùn)行時(shí),所述軟件代碼部分用于執(zhí)行權(quán)利 要求1至6中的任一權(quán)利要求的方法。
【文檔編號(hào)】G06F13/00GK104246731SQ201380021034
【公開(kāi)日】2014年12月24日 申請(qǐng)日期:2013年3月7日 優(yōu)先權(quán)日:2012年4月26日
【發(fā)明者】M·A·羅斯, S·T·麥西, C·H·斯特靈, D·J·麥克吉尼斯 申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司