專利名稱:在網(wǎng)絡(luò)上的報文傳輸?shù)闹谱鞣椒?br>
技術(shù)領(lǐng)域:
本發(fā)明涉及在面向事務(wù)的數(shù)據(jù)處理網(wǎng)絡(luò)中應(yīng)用程序之間的報文安全傳送,使其既不丟失信息又無須多次傳送。
人們已知對計算機系統(tǒng)資源(諸如數(shù)據(jù)庫或文件資源)修改時要使兩個或更多資源連動,不是所有的都修改,就是不作任何修改。這樣,避免了資源間的彼此不一致。若一組更新操作中的一個操作無效,則其它操作也必須不起作用。將可恢復(fù)資源的一致狀態(tài)變換成另一種一致狀態(tài)(不必在所有中間點保持一致性)的相關(guān)操作的一個序列稱之為“一個工作單元”(“unit of work”)。事務(wù)處理是對存取和更新共用數(shù)據(jù)的離散工作單元的執(zhí)行。在事務(wù)執(zhí)行范圍內(nèi)同步修改資源的一致性的邏輯點,(例如在終結(jié)處)被稱為提交點(co-mmitpoint)或同步點(見下)。一個應(yīng)用程序通過宣告一個同步點或通過終止該應(yīng)用程序結(jié)束一個工作單元。事務(wù)處理作為一個整體完成或根本未完成的特征稱之為“原子性”(“atomicity”)。
人們已知可通過使該事務(wù)處理范圍內(nèi)的資源更新在事務(wù)處理完成時宣告一同步點之前保持不確定(不受約束)來實現(xiàn)事務(wù)處理的原子性。也就是說,一旦完成更新僅對資源更新以外的應(yīng)用程序,資源更是固定不變且是可見的?;蚴聞?wù)處理未成功完成,則消除在部分執(zhí)行期間已對資源所作的所有變更-即所謂返回(或同義地稱為取消),將這些資源恢復(fù)到與事務(wù)處理開始前所處的相一致的狀態(tài)。任何用戶(例如一個應(yīng)用程序或資源管理程序)對該工作單元感興趣都可在通過指示不可讀性(unreadiness)宣告一同步點時引起返回。
在容錯數(shù)據(jù)傳輸?shù)脑O(shè)備方面的一個共同問題是怎樣確定故障發(fā)生時信息傳送中已達到的信息不確定(即,還未被提交)的階段,以確保既無信息丟失也不會多次發(fā)送。不是所有的事務(wù)處理系統(tǒng)都能記錄該不確定信息狀態(tài)的。
若只有單一資源管理程序(控制資源的系統(tǒng)軟件)負(fù)責(zé)對事務(wù)處理所作的變更的交付進行調(diào)整,則稱提交(commit)程序為“單一階段”程序。單一階段提交處理在標(biāo)準(zhǔn)正向處理中是有效的,該處理簡單地包括應(yīng)用或資源管理程序發(fā)出COMMIT(提交)操作指令,然后指令接收器執(zhí)行該操作過程。雖可包含有一個以上的資源管理程序,但協(xié)調(diào)程序僅在同步點時一次調(diào)用一個,以指示它們或是提交或是返回。在大多數(shù)情況下,在沒有誤差或中斷情況下進行所有資源更新的提交。然而,若出現(xiàn)問題(例如系統(tǒng)或通信鏈路故障)致使不是所有資源管理程序不能提交,則這些資源可在某些提交已完成而另一些還未完成的不一致狀態(tài)下結(jié)束。這些不一致狀態(tài)的資源要求再同步。考慮到單一階段提交程序的效率由該問題引起重建非臨界資源的成本是可接受的。
反之,兩步階段提交程序往往要求防止臨界資源出現(xiàn)這種不一致。例如,作金融業(yè)務(wù)應(yīng)用時為實現(xiàn)從一個賬戶至另一帳戶的資金傳送要對關(guān)鍵資源執(zhí)行兩項基本操作對一個帳目記入借方和另一帳目記入貸方。重要的是確保這兩項操作或者兩者都生效或者兩者都不生效。在同步點管理程序控制下,兩階段提交程序包括下列步驟1.準(zhǔn)備階段,每個共享資源由同步點管理程序輪詢,以判定該資源是否準(zhǔn)備確認(rèn)及通過所有變更。若所有資源指示備用狀態(tài)(即,若它們成功地完成了準(zhǔn)備階段),則每個資源允許提交該資源更新;
2.在提交階段同步點管理程序指令所有資源,否則如果不是所有資源都成功地完成準(zhǔn)備階段結(jié)束刷新。
該附加的準(zhǔn)備階段的優(yōu)點在于減小了不一致的可能性,但在處理過程中仍有一個周期,在該周期時,一旦出現(xiàn)誤差即使兩階段提交仍在資源間留下不協(xié)調(diào)的可能性。而且,存在兩階段提交減小不協(xié)調(diào)概率的成本由于所有更新后的資源必需被鎖定,以防止在工作單元持續(xù)時間內(nèi)進一步更新存取,故提交處理的附加步驟表現(xiàn)為資源更新處理操作的大量減少(尤其在包含許多資源時)。若這些資源圍繞一個網(wǎng)絡(luò)分布,則兩階段提交要求一個分布的工作單元,導(dǎo)致被長時期鎖定的可能性,還要求極為復(fù)雜的恢復(fù)程序。三階段其他多階段提交程序可被執(zhí)行,以進一步減小由故障所引起不協(xié)調(diào)的時限,但每個提交準(zhǔn)備的附加步驟有一個損失并行操作的成本。
IBM系統(tǒng)網(wǎng)絡(luò)體系結(jié)構(gòu)中的SNA LU6.2同步點構(gòu)造[由IBM公司出版的參考資料SC31-6808,第5.3章的圖象顯示業(yè)務(wù)一同步點動詞(verbs)]是為協(xié)調(diào)兩個或多個受保護資料提交的。所提出的同步點構(gòu)造即為一個由一個執(zhí)行同步點和運行在單一應(yīng)用程序環(huán)境下的相關(guān)恢復(fù)處理組成的同步點管理程序。某些應(yīng)用可在此環(huán)境下同時運行。該LU6.2體系結(jié)構(gòu)支持同步點管理程序(SPM),該管理程序負(fù)責(zé)資源調(diào)整,同步點記錄和恢復(fù)。
根據(jù)SNA LU6.2結(jié)構(gòu),在階段一和階段2,執(zhí)行提交程序,而同步點管理程序記錄同步點運行記錄中的該階段。同步點管理程序還記錄對一個當(dāng)前被處理的邏輯工作單元的識別。這種記錄過程協(xié)助同步點管理程序的資源恢復(fù)工作或當(dāng)兩階段提交程序期間出現(xiàn)問題(例如象通信路徑故障或資源管理程序中的故障問題)時進行再同步。一旦在進入兩階段提交程序之后出現(xiàn)此類問題,則讀出該記錄并進行資源恢復(fù)處理以使所涉及提交的資源處于一致狀態(tài)。這兩階段提交程序要求在使用分布式工作單元的不同計算機上保持同步。
本發(fā)明的第一方面是提供一種面向事務(wù)處理的數(shù)據(jù)處理網(wǎng)絡(luò)中的程序間相互通信的方法,其中一發(fā)送器程序負(fù)責(zé)將信息從網(wǎng)絡(luò)的第一結(jié)點發(fā)出而一接收器程序負(fù)責(zé)在網(wǎng)絡(luò)的第二結(jié)點處接收信息,在該兩結(jié)點間待發(fā)送的信息是根據(jù)第一同步點管理程序控制的工作單元中的發(fā)送器程序發(fā)送并由第二同步點管理程序控制的工作單元接收以使發(fā)送和接收操作保持在不確定(自由的)直至分別分辨第一和第二工作單元,本發(fā)明的特點是第一和第二工作單元被如此邏輯地鏈接,以致在工作單元分辨率下,提交工作包括以下兩者之一響應(yīng)接收機程序?qū)π畔⒌某晒邮?,將接收的肯定的確認(rèn)提交所述第二工作單元,并發(fā)送給發(fā)送器程序接收完成的信息并響應(yīng)提交第一工作單元肯定確認(rèn);或響應(yīng)未成功接收報文,返回第二工作單元給發(fā)送器程序發(fā)出否認(rèn)接收的信息,并響應(yīng)所述否認(rèn),返回第一工作單元。
本發(fā)明減輕了已知單階段提交程序在提交處理期間因故障引起資源間的不一致性而要求再同步的問題,也避免了由已知兩階段提交程序中所增準(zhǔn)備階段帶來的母需的資源鎖定處理。
最好,若來自接收程序的確認(rèn),由于系統(tǒng)或通信鏈路故障而丟失時則,第一工作單元保持不確定。然后檢查每一個由發(fā)送和接收程序完成的“取”和“存”操作的數(shù)據(jù)記錄(log records)以判定接收端已提交哪個操作從而決定在發(fā)送端應(yīng)提交哪個操作和應(yīng)返回哪個操作。
本發(fā)明可在一計算機網(wǎng)絡(luò)中得以實施,其中應(yīng)用程序利用報文和排隊來通信,其中報文排隊管理程序位于網(wǎng)絡(luò)中各計算機處,在上述發(fā)送器和接收器程序之間的傳輸是在各自排隊管理程序之間傳輸。網(wǎng)絡(luò)結(jié)點不是信息隊列管理程序,就是其上定位有一個或多個隊列管理程序(queue managers)的計算機系統(tǒng)。隊列管理程序之間的信息傳輸包含從隊列獲得應(yīng)用程序起始信息并發(fā)送該信息的第一隊列管理程序,和接收該信息并將其放入第二隊列(或由本地應(yīng)用程序處理,或用于在既不是第一也不是第二隊列管理程序是目的地隊列管理程序情況下傳送至另一隊列管理程序)的第二隊列管理程序。報文(messag-ing)和排隊描述于文件“IBM報文和排序序列一技術(shù)參考”(1993年SC33-0850-01)中,并與下面本發(fā)明的一個實施例相關(guān)。
最好,每個信息發(fā)送或信息接收工作單元可包括許多報文,每次對接收(或,若被接收的報文是依次排列時,為接收和貯存)的確認(rèn)可與這多個報文有關(guān)。以一批信息作為一個工作單元的這種發(fā)送方法大大提高了處理效率,因為傳送連接方向(報文發(fā)送向前而,接收的確認(rèn)傳輸向后)僅在每一批的終點處被轉(zhuǎn)向。這正是與先有技術(shù)發(fā)送方法的不同之處,先有技術(shù)方法將隊列信息作為各個工作單元發(fā)送并在每次發(fā)送操作之后提交,這使得發(fā)送端的資料有可能處于與接收端資源不一致的狀態(tài),并在采用兩階段提交情況下要求每次發(fā)送之后和每次確認(rèn)之后均需改變信息流的方向。這種將發(fā)送和接收程序間的信息作為應(yīng)用程序間信息的一個發(fā)送階段的成批發(fā)送還明顯區(qū)別于本領(lǐng)域眾所周知的通過應(yīng)用程序的批處理過程。
這樣,可作為一個批處理發(fā)送的信息可以是邏輯上不相關(guān)的并可被指定用于不同應(yīng)用程序(它們可通過不同隊列管理程序而起作用)一要在第一和第二隊列管理程序之間作為成批發(fā)送的信息所必需的信息之間的唯一共同因素(common factor)是第二隊列管理程序即為從通道上的第一隊列管理程序到每個信息目的地隊列管理程序的下一隊列管理程序。先有技術(shù)的信息傳輸方法不能將指定用于不同應(yīng)用程序的信息成批地傳輸(批處理的大小大于1),因此不能得益于本發(fā)明所提供的處理效率。對于許多數(shù)據(jù)庫系統(tǒng),就計算設(shè)備而論,提交處理是處理過程中的花費較大的階段-特別是與RAM處理相比,磁盤存取設(shè)備是昂貴的-因此人們非常期望改善提交處理的效率。
該處理最好有一提交該批處理和確認(rèn)其對接收程序發(fā)送的接收的請求,因此提交處理是由通信的發(fā)送端協(xié)調(diào)的。若信息太長,以致為輸送的傳送連接不能一次完成時,可將信息分成多段發(fā)送。在有分段的地方,確認(rèn)請求將與該程序組中最后分段有關(guān)。在接收端成功接收到批處理報文時,確認(rèn)請求是通過提交接收和傳送對成功接收的確認(rèn)來起作用的。
就第二方面而言,本發(fā)明提供一種在面向事務(wù)處理的數(shù)據(jù)處理網(wǎng)絡(luò)中進行程序間相互通信的方法,在該網(wǎng)絡(luò)中,待傳送報文被送至第一計算機的發(fā)送應(yīng)用程序隊列,然后從該隊列異步地獲取,待經(jīng)接收應(yīng)用程序處理,其特點是將一報文發(fā)送至一隊列或從一隊列獲取報文的每一步驟均是在信息隊列管理程序控制下實現(xiàn)的,其中至少一個定位于網(wǎng)絡(luò)中的每一計算機處;
待傳送至本地應(yīng)用程序的報文被置于由本地應(yīng)用程序服務(wù)的本地隊列;而待傳送至遠距計算機的遠程應(yīng)用程序的信息被置于供發(fā)送之用的本地傳輸隊列上,分別作為每一傳輸隊列,至各目的地遠程報文隊列管理程序通路上的下一報文隊列管理程序,其中放在特定傳輸隊列上的所有報文,(這些報文可被指定用于不同目的地報文隊列管理程序)可被送到所述下一信息隊列管理程序作為同步點管理程序控制的工作單元內(nèi)的批處理報文。
現(xiàn)將參照諸附圖更詳細(xì)地描述本發(fā)明,附圖中
圖1是構(gòu)成一個報文的數(shù)據(jù)區(qū)顯示圖;
圖2是利用通信聯(lián)系和排隊互相通信的兩個程序的概略顯示圖;
圖3是根據(jù)本發(fā)明一個實施例的報文通信中所包含兩個相鄰計算機系統(tǒng)的顯示及該系統(tǒng)實體間的相互關(guān)系;
圖4是根據(jù)本發(fā)明一個實施例的應(yīng)用程序之間的信息通信方法的概要流程圖;
圖5是根據(jù)本發(fā)明一個實施例在應(yīng)用程序間通信方法中的標(biāo)準(zhǔn)正向處理期間兩次處理之間的信息流程顯示圖;
信息隊列是一種程序間通信報文,它允許程序在沒有建立直接連接的情況下發(fā)送和接收應(yīng)用一專用數(shù)據(jù)。在描述本發(fā)明在通信和排隊網(wǎng)絡(luò)中特定實施例以前,說明利用通信聯(lián)系和排隊的程序間通信的一般方法將是有益的。
正如圖1所示,一個報文包括兩部分;應(yīng)用數(shù)據(jù)1和包含控制信息3的報文描述符2。一個信息中的應(yīng)用數(shù)據(jù)是由發(fā)送該信息的具體應(yīng)用來定義和供給。對該報文中的數(shù)據(jù)性質(zhì)沒有任何限制(例如,它可包括一位或多位串(bit strings),字符串,二進制整數(shù),壓縮十進制整數(shù),浮點數(shù))。應(yīng)用程序?qū)?gòu)成一個信息的位和字符串看作包含各有特定數(shù)據(jù)類型和含義的一系列項目。例如,若報文涉及一項金融事務(wù)處理,則第一項4可為包含帳號的四字節(jié)無符號二進制整數(shù),而第二項5可為包括一用戶姓名的二十字節(jié)字符串。這種數(shù)據(jù)稱為應(yīng)用數(shù)據(jù)。
一個報文除了應(yīng)用數(shù)據(jù)以外還有與其相關(guān)的一些輔助數(shù)據(jù)。這是規(guī)定該信息性質(zhì)的數(shù)據(jù),并為信息排隊服務(wù)所利用,以確定應(yīng)怎樣處理該信息。這種數(shù)據(jù)中的一些數(shù)據(jù)必須由具體用途來規(guī)定。這種輔助控制數(shù)據(jù)包含在稱為報文描述符2的數(shù)據(jù)結(jié)構(gòu)中。
一個報文隊列是一個有名字的客體,報文在其內(nèi)存儲并在后來從中取出。每一隊列屬于一個特定的隊列管理程序,負(fù)責(zé)維護該隊列。一個隊列管理程序可擁有許多隊列,但每一隊列必需有一個在擁有該隊列的隊列管理程序?qū)嵗秶鷥?nèi)是唯一的名稱。一個報文隊列不僅僅是一個棧式存儲器當(dāng)報文被加到隊列時,是在末端添加它們,而當(dāng)從隊列取出報文時,一般是從前部取出(雖然確實存在除FIFO先進先出次序以外的閱讀報文的設(shè)備一例如,它對于要求恢復(fù)成高優(yōu)先級的應(yīng)答的報文可能是所期望的)。
報文隊列的物理顯示取決于環(huán)境,但可為主存儲器中的一個或多個緩沖器,一個或多個磁盤文件或其他永久性存儲裝置,或它們中的兩者結(jié)合。然而,報文隊列的物理管理完全由隊列管理程序完成(提供由應(yīng)用(程序)所用的報文一排隊設(shè)備的系統(tǒng)服務(wù)),而這些細(xì)節(jié)對應(yīng)用程序并不是顯而易見的。應(yīng)用程序可將報文隊列簡單地視為累積報文的“黑盒”。應(yīng)用程序借助報文排隊請求完成報文排隊(諸如從隊列取報文的MQGET和將報文發(fā)送到隊列的MQPUT)。應(yīng)用程序通過使用報文一排隊請求獲得報文排隊服務(wù),以同安裝在該應(yīng)用同一系統(tǒng)上隊列管理程序(即本地隊列管理程序)進行通信。
為使報文排隊服務(wù)有效,在一個系統(tǒng)上必須至少有一個隊列管理程序。也可要求一個以上的隊列管理程序,例如為保持開發(fā)工程與生產(chǎn)工程隔開。每一個不同隊列管理程序情況由其名稱得知,該名稱通常必須是在互連隊列管理程序的網(wǎng)絡(luò)范圍內(nèi)是唯一的,以使一個隊列管理程序能明確識別任一已知報文應(yīng)送往的目標(biāo)隊列管理程序。
應(yīng)用程序通過答應(yīng)使用特定名稱的報文隊列,將報文發(fā)至應(yīng)用程序已答應(yīng)由此讀出的特定目標(biāo)隊列。發(fā)報文的應(yīng)用程序無需明白這些隊列的定位;每個應(yīng)用程序僅僅同其本地隊列管理程序相互作用,而且正是互連的隊列管理程序的網(wǎng)絡(luò)負(fù)責(zé)將報文移送至予定隊列。由于交叉網(wǎng)絡(luò)通信對話是建立在隊列管理程序之間而不是單個程序之間,故程序與某些其他類型的程序間通信相比幾乎沒有網(wǎng)絡(luò)故障損害,若處理器之間的鏈路發(fā)生故障,隊列管理程序的工作是從故障狀態(tài)恢復(fù)到原狀。已生效的處理器程序不會因這類事件而暫停,即無需理會已發(fā)生過的事件。
圖2表示一對一通信的簡單實例中一個報文隊列網(wǎng)絡(luò)中兩個通信程序間的信息流。兩程序10,20在各自的隊列管理程序50,60控制下通過隊列30,40互相傳送信息。第一程序10在程序間沒有建立專用邏輯連接的情況下將信息置于第二程序的隊列30上(這種信息流由圖2中箭頭f1,f2,f3和f4表示)。隊列管理程序50,60確保信息在網(wǎng)絡(luò)上移動,以使程序本身受保護而不受網(wǎng)絡(luò)變化和復(fù)雜性的影響。這由圖2中的網(wǎng)絡(luò)鏈路70表示。在維持報文隊列,處理網(wǎng)絡(luò)故障和重新起動和圍繞網(wǎng)絡(luò)移送報文過程中所涉及的所有工作均可由隊列管理程序處理。接著當(dāng)其準(zhǔn)備好而不是選擇發(fā)送程序10時程序20從隊列30取出報文以處理它們。為能恢復(fù)資源而通過傳送報文并隨之進行處理所作的任何變更被記錄在恢復(fù)記錄80,90中,以供后續(xù)故障中使用。
正如圖3所示,隊列管理程序100可將報文貯存到一系列不同隊列上。若這些報文最后要由本地應(yīng)用程序處理,則隊列管理程序?qū)⑺鼈冑A存在本地目的地(local dertination)隊列110;若這些報文最后由遠距應(yīng)用程序處理,則隊列管理程序?qū)⑺鼈兇嫒敕Q為傳輸隊列120的專用本地隊列中。傳輸隊列含有待發(fā)送到屬于遠程隊列管理程序的隊列的報文并使該報文能在相鄰隊列管理程序之間的階段中完成移送至遠程隊列這種報文傳輸配置(將在下面詳述)對通信中所包含的應(yīng)用程序是不可見的。正如以下將解釋的,可能存在由特定隊列管理程序控制的多個本地目的地隊列和多個傳輸隊列。
傳輸隊列的報文通過隊列管理程序擴展,除了應(yīng)用報文(該數(shù)據(jù)由應(yīng)用程序傳送)外,還包括傳輸隊列首標(biāo)。傳輸隊列首標(biāo)是一種包含目的地隊列名稱和報文描述符的結(jié)構(gòu)化(architected)描述符。有關(guān)目的地隊列的報文包括應(yīng)用數(shù)據(jù)和規(guī)定控制信息的報文首標(biāo)。
兩個隊列管理程序之間的傳送關(guān)系通稱為信道。定義一個信道的關(guān)鍵因素是傳輸隊列的名稱,有關(guān)在該信道上發(fā)送或接收報文的傳送處理過程或程序130,150的信息(這些處理是隊列管理程序的組成部分,通稱為報文信道工具-此后稱MCAS)和用于傳輸隊列上的報文要發(fā)送的目標(biāo)通信協(xié)議和目標(biāo)系統(tǒng)信息。圖3中用虛線表示出一個特定信道限定和報文通信中涉及的不同數(shù)據(jù)模式實體(entities)之間的聯(lián)系。每個命名的信道以發(fā)送結(jié)點和接收結(jié)點兩種方式加以定義。信道名稱在發(fā)送器和接收器之間傳輸過程中使用,以識別通往接收器的信道或用于作為請求從一特定信道發(fā)送報文的接收器信道。信道定義具有某些對所有環(huán)境是公共的信息及某些取決于操作系統(tǒng)環(huán)境和所用主要通信協(xié)議的信息。
隊列管理程序間的報文通信是通過在以成對專用信道一個發(fā)送器130和一個接收器150上工作的MCAS實現(xiàn)。一對MCA程序使用諸如VTAM APPC集合期(session)等的傳送連接器170或TCP IIP連接,作為傳送層。以相反方向進行的報文通信量在不同信道上的發(fā)送器160和接收器140之間流動,這些信道有效地用作結(jié)點間的單向管路。有四種類型的MCAS發(fā)送器-從傳輸隊列取報文并將它們發(fā)至接收器或請求器;
接收器-接收報文并將它們排成隊列;
請求器-發(fā)送單一信息,以使發(fā)送機或服務(wù)器(server)被遙控地起動;
服務(wù)器-被來自請求器的一信息起動,然后成為發(fā)送器。
一個MCA130使一些報文離開(degueues)傳送隊列并通過傳送連接線170發(fā)送這些報文。接收MCA150將這些報文排成以報文首標(biāo)命名的目的地隊列180。這兩種工作單元-解除隊列和排成隊列的執(zhí)行,使協(xié)議中任一點出現(xiàn)的任何故障均能被探測和糾正,致使每一報文被發(fā)送一次而且僅為一次。在目的隊列離原始發(fā)送隊列多于一個行程(hop)的情況下,接收MCA將為下一hop在另一發(fā)送隊列上排列該報文,這為可靠存儲提供了保證,并在下一連接失效情況下,必要的不同步使這一發(fā)送階段的工作仍可被完成。報文格式和安全移動記錄獨立的傳送層,MCAs能在不同信道上支持不同的傳送協(xié)議。這些通過MCA使用的記錄描述如下。
一個信道可以若干不同方式起動1.一個終端操作器可發(fā)出一起動信道(START CHANNEL)命令;
2.該信道能被觸發(fā),一發(fā)送器MCA在一報文到達傳輸隊列上時,被隊列管理程序自動地起動;或3.借助網(wǎng)絡(luò)請求一通信傳輸被構(gòu)成在接收到來自網(wǎng)絡(luò)的請求時,便自動起動-MCA。接收機,服務(wù)機和發(fā)送機信道可以這種方式構(gòu)成。
在任何報文或數(shù)據(jù)能流過(flow down)一信道之前,要用的兩MCAs必需首先商定它們將要進行通信的方式。這樣,信道初始化包括對某些協(xié)議參數(shù)的協(xié)定,例如哪個通信方將要做任何有關(guān)控制和報頭數(shù)據(jù)的必要變換。兩個MCAs可在使用兩種不同數(shù)據(jù)格式的系統(tǒng)上運行。例如,一個可用ASCII,而另一個用EBCDIC。一個可為從左到右的編碼號,而另一個編碼號從右到左。該控制信息的報頭數(shù)據(jù)必須從發(fā)送器的表示法變換成接收機的表示法。數(shù)據(jù)在信道上的變換僅僅適用于控制信息(諸如目標(biāo)隊列名稱,控制區(qū)長度等等);沒有一個應(yīng)用數(shù)據(jù)變換是由MCAs實現(xiàn)的,因為當(dāng)MCAs發(fā)送報文中的應(yīng)用數(shù)據(jù)時,MCAs不必與應(yīng)用數(shù)據(jù)相互作用。
在不同計算機系統(tǒng)的應(yīng)用之間傳遞報文的方法包括參考圖4和5所描述的下列諸步驟一個應(yīng)用程序發(fā)送一報文至目標(biāo)收報隊列以便由通過發(fā)送出MQPUT命令(200)的另一應(yīng)用程序進行處理。本地隊列管理程序讀出由報頭中應(yīng)用程序規(guī)定的收報隊列名稱并判定(210)將該報文置于何處。若收報隊列是本地隊列,則本地隊列管理程序?qū)笪乃?220)入本地隊列。在該報文可用于其他應(yīng)用程序以前,必須將報文送至完成隊列操作的處理單元。然后服務(wù)那個本地隊列的應(yīng)用程序可異步地發(fā)出MQGET(230),以便從隊列取出報文供處理之用。MQPUT和MQGET操作處于兩個分離的工作單元內(nèi)。
若目的地隊列不承擔(dān)本地隊列管理程序的任務(wù),則本地隊列管理程序?qū)笪闹糜诒镜貍鬏旉犃?240)上,以便傳送至另一隊列管理程序??赡艽嬖诙鄠€為每個隊列管理程序所限定的傳輸隊列,但傳輸隊列與遠距目的地隊列無需一一對應(yīng)??梢詫⒋ㄟ^兩個相鄰隊列管理程序間的所有報文(即,要從第一隊列管理程序發(fā)出的,沿其各自目標(biāo)收報隊列管理程序方向上有一個公共最鄰近隊列管理程序的所有報文)置于同一傳輸隊列中。同樣可將用于報文的若干傳輸隊列送到同一鄰接接點。為限制因故障必須重發(fā)的報文數(shù),規(guī)定了最大批量(例如為50件報文)。將報文送到傳輸隊列的工作單元300必須在報文可用來作其他處理以前提交。
本地隊列管理程序(或一終端用戶)引起發(fā)送程序MCA將報文發(fā)送至下一隊列管理程序。然后發(fā)送程序MCA從由該隊列管理程序擁有的傳輸隊列獲得報文(250)(發(fā)出MQGET)并將它們成批發(fā)送到在目的地隊列管理程序或隊列管理程序的通路上的下一隊列管理程序。每個報文或是以一個傳輸段發(fā)送或是以多次傳送方式發(fā)送此時報文規(guī)格太大以致為發(fā)送所作的傳送連接不能一次完成(例如報文可能為4兆字節(jié)長而最大傳送規(guī)格為32千字節(jié)。獲取和發(fā)送報文的這些步驟是在同步點管理程序控制的處理單元330中執(zhí)行,在此階段,通過發(fā)送程序保持其不確定。規(guī)定資源更新的不確定狀態(tài)(in-doubt state)被寫入運行記錄。該批處理程序組具有為確認(rèn)對該程序組接收而附加其上的請求這是通過該程序組的最后報文(或上一報文的最后傳輸段)在其傳輸段首標(biāo)中設(shè)有一請求確認(rèn)控制標(biāo)記來實現(xiàn)的。
每一報文有一與其相關(guān)的報文序號-單值遞增的序號之一,唯一指配給一信道上的一個應(yīng)用報文。報文序號用于當(dāng)鏈路故障或程序故障時使發(fā)送程序與接收程序之間恢復(fù)同步。該程序組中的最高報文序號取作邏輯處理單元標(biāo)識符(LUWID)-定義在同步點管理程序控制下的一信道上一批報文的唯一值。
接收機MCA接收(260)報文,接收機隊列管理程序判定(210)各報文要發(fā)往何處(如先前發(fā)送隊列管理程序的做法一樣)。接收機隊列管理程序?qū)笪姆旁?利用MQPUT)同步點管理程序控制的工作單元360內(nèi),以將屬于接收計算機系統(tǒng)的隊列管理程序排成隊列,該隊列可以是對一特定報文的實際應(yīng)用的限定目的地隊列或與目標(biāo)系統(tǒng)的下一行程相關(guān)的傳輸隊列。
由MCAs傳送的報文程序組中的所有報文或被成功接收并由接收隊列管理程序排隊,或該程序組整個被拒收并且不被安全存貯在接收機(工作單元被返回)。若程序組被成功接收和排隊,則接收機發(fā)送接收和貯存的應(yīng)答信號(發(fā)送指示“無誤差”的狀態(tài)段),該應(yīng)答信號記錄LUWID并提交報文程序組,完成原子動作(atomic action)。一旦接收到肯定應(yīng)答,發(fā)送機也提交使用LUWID的報文程序組,MQGET操作的這一提交從傳輸隊列刪除了這些報文。然后可開始下一個批處理程序組。若傳輸隊列未留下任何報文(并且予定的時間間隔已期滿)或已接收到一個關(guān)閉該信道的請求,則終結(jié)連接。
若該批程序組被拒收,則給發(fā)送機發(fā)送一拒收回答(一個狀態(tài)段指示誤差-它可包括該誤差的細(xì)目),發(fā)送機將其可疑報文重卷至傳輸隊列準(zhǔn)備好重答,然后終止該信道,若報文程序組被重卷,則也必須重卷序號或LUWID,至最后成功提交的程序組的值。若由于傳送或通信對方故障而未接收到確認(rèn)則通過重卷發(fā)送和接收MCA的處理單元而終止該信道。若發(fā)送器還未發(fā)出確認(rèn)請求,則發(fā)送MCA也應(yīng)返回。若已發(fā)出確認(rèn)請求,則必須檢查其運行記錄和接收器程序記錄,以確定其應(yīng)被提交還是應(yīng)返回。MCAs自動執(zhí)行該判定第一工作單元應(yīng)被提交還是被返回(除非不能重新形成接觸,在此情況下操作員可作出決定)。緊接返回之后,發(fā)送MCA可試圖重建一信道并與發(fā)送MCA重新同步,以便重新發(fā)送該曾有故障的程序組。
信道再同步是在信道初始化期間實現(xiàn)的。發(fā)送MCA從其運行記錄檢索不確定的LUWID,或已發(fā)了確認(rèn)的最后報文的報文序號。接收MCA將檢查其記錄的LUWIDs或序號,以判定它是否與發(fā)送器同步。作為比較的結(jié)果,它將確認(rèn)或拒收返回一適當(dāng)狀態(tài)段的再同步請求,該狀態(tài)段包含最后成功提交的報文或在其末端的報文程序組的LUWID或序號。若該值與發(fā)送器的相配,則發(fā)送器可提及該在先發(fā)送報文并開始發(fā)送下一報文。若接收機的值與在先LUWID或序號匹配,則發(fā)送器返回并重新發(fā)送在先報文或程序組。
這樣,MCA利用同步點管理程序去控制作為邏輯處理單元的每個程序組。包括發(fā)送機報文隊列管理程序的MQGET的該工作單元和包含接收機報文隊列管理程序的MQPUT的工作單元被邏輯鏈接使兩者處于不確定直至接收機準(zhǔn)備好提交,報文在發(fā)送端用單階段提交協(xié)議刪除它們之前在接收端被提交,兩階段提交不需要發(fā)送程序充當(dāng)提交協(xié)調(diào)程序。在發(fā)送或接收程序處,程序組末端之前所發(fā)生的任何系統(tǒng)故障可能在再同步階段期間需要退出工作單元。
對不同系統(tǒng)采用工作單元的邏輯連接的單階段避免了兩階段需要同步(鎖定)一個分布單元中的所有共享資源的缺點。在本發(fā)明中,諸資源管理程序?qū)嶋H上不必彼此同步。從應(yīng)用角度來看資源間不一致有一定時限是可以接收的,但由于原子事務(wù)處理是有保證的故也確保了最終一致性。
為完成對報文的可靠傳送,服務(wù)目的地隊列的目標(biāo)應(yīng)用程序能發(fā)出MQGET,以在其本地,同步點管理程序控制下,從隊列獲得報文作為處理單元390的組成部分,使得應(yīng)用程序在故障時或提交成功處理報文的情況下能將報文退至隊列,以刪除它。
權(quán)利要求
1.在面向事務(wù)處理的數(shù)據(jù)處理網(wǎng)絡(luò)中進行程序間通信的方法,其中發(fā)送器程序是負(fù)責(zé)從網(wǎng)絡(luò)第一結(jié)點發(fā)送報文,而接收機程序負(fù)責(zé)在網(wǎng)絡(luò)第二結(jié)點處接收報文,兩結(jié)點間待發(fā)送報文通過第一同步點管理程序控制的處理單元中的發(fā)送機程序發(fā)送的并通過第二同步點管理程序控制的處理單元中的接收程序接收,以使發(fā)送和接收操作保持不確定(不提交)直至分別為第一和第二工作單元所分辨,其特征在于第一和第二工作單元作邏輯鏈接,以便在處理單元分辨率下提交處理過程或者包括響應(yīng)通過接收機程序?qū)笪牡某晒邮眨峤凰龅诙ぷ鲉卧?,給發(fā)送機程序發(fā)送一接收的肯定確認(rèn),并響應(yīng)該肯定確認(rèn),提交第一處理單元;或響應(yīng)報文的不成功接收,返回第二處理單元,給發(fā)送機程序發(fā)送一接收的否定確認(rèn),并響應(yīng)所述否定確認(rèn),退出第一工作單元。
2.根據(jù)權(quán)利要求1的方法,其特征在于所述發(fā)送機和接收機程序定位于一個網(wǎng)絡(luò)范圍內(nèi)的相鄰結(jié)點上,其中為不同目的地結(jié)點被指定的報文在往它們各自目的地結(jié)點的通道上的相鄰結(jié)點之間發(fā)送,作為一個工作單元范圍的一批報文程序組,體現(xiàn)所述發(fā)送和接收操作的工作單元被保持在不確定狀態(tài),直至程序組的終端。
3.根據(jù)權(quán)利要求2的方法,其特征在于一批程序組中的最后報文是與提交和確認(rèn)該程序組的接收的請求一起發(fā)送的,所述第二工作單元的提交和所述肯定或否定確認(rèn)的發(fā)送即是響應(yīng)所述請求的結(jié)果。
4.根據(jù)1至3任一權(quán)利要求的方法,其特征在于編寫運行記錄,以記錄所述處理單元的不確定狀態(tài),供所述處理單元進行處理期間緊接故障后的恢復(fù)處理過程而用,該值班記錄在恢復(fù)處理期間讀出,以確定哪個工作單元應(yīng)被提交,而哪個應(yīng)被退出。
5.根據(jù)前述任一權(quán)利要求的程序間通信方法,其特征在于實現(xiàn)應(yīng)用程序間通信方面的通告和排隊,這些應(yīng)用程序?qū)笪陌l(fā)送到報文隊列,接收機應(yīng)用程序可從這些隊列不同步地取出報文,供處理或繼續(xù)傳送。
6.根據(jù)權(quán)利要求5的方法,其特征在于應(yīng)用程序間在網(wǎng)絡(luò)的不同計算機系統(tǒng)上進行的通信至少包括以下步驟第一應(yīng)用程序發(fā)出一個置報文于發(fā)送計算機系統(tǒng)中同步點管理程序控制下的指令,以便將報文發(fā)送到報文隊列;發(fā)送機和接收機傳輸程序作為兩個邏輯鏈接的處理單元利用發(fā)送和接收計算機系統(tǒng)中的同步點管理程序在計算機系統(tǒng)之間傳送報文,和第二應(yīng)用程序在接收計算機系統(tǒng)中的同步點管理程序的控制下發(fā)出一獲取報文指令,用以從隊列取出報文;其中放置報文,傳送和取得報文的工作單元各保持在不確定狀態(tài)直到分辨出各工作單元時為止。
7.面向事務(wù)處理的數(shù)據(jù)處理網(wǎng)絡(luò)中的程序間通信方法,其中待傳送報文根據(jù)第一計算機的發(fā)送應(yīng)用程序被發(fā)送到一隊列,然后從由接收應(yīng)用程序處理的該隊列不同步地被取出,該方法的特征在于將一報文發(fā)送到隊列或從隊列取出報文的每一步驟是在位于該網(wǎng)絡(luò)中報文隊列管理程序的控制下實現(xiàn)的;待傳送到本地應(yīng)用程序的報文被放置在由本地應(yīng)用程序服務(wù)的本地隊列上;而待傳送到遠距計算機上遠程應(yīng)用程序的報文被分別置于每個傳輸隊列的本地傳輸隊列并于各自目的地遠程報文隊列管理程序通路上的下一報文隊列管理程序上,其中為不同目的地報文隊列管理程序所指定的所有放在一特定傳輸隊列上的報文可傳送到,所述下一報文隊列管理程序,作為同步點管理程序控制的工作單元范圍內(nèi)的一報文程序組。
8.一數(shù)據(jù)處理系統(tǒng),包括一報文隊列管理程序組件,用以在數(shù)據(jù)處理系統(tǒng)的多相網(wǎng)絡(luò)上進行報文隊列程序組通信,該報文隊列管理程序包括一應(yīng)用程序接口,借助該接口,應(yīng)用程序與報文隊列管理程序連接,并提供排隊服務(wù),使應(yīng)用程序能將報文排成報文隊列并為其他應(yīng)用程序不同步地恢復(fù),該報文隊列管理程序特征在于還包括發(fā)送機和接收機程序,用以按照下列傳送協(xié)議在該網(wǎng)絡(luò)中的相鄰隊列管理程序之間傳送報文第一報文隊列管理程序的發(fā)送機程序在第一同步點管理程序控制的工作單元內(nèi)發(fā)送一個或多個報文;第二報文隊列管理程序中的接收機程序接收第二同步點管理程序控制的工作單元范圍內(nèi)的所述報文;該發(fā)送和接收操作分別被保持在不確定狀態(tài)(不提交)直至第一和第二工作單元分辨率;和第一和第二工作單元邏輯鏈接,在第一和第二工作單元的分辨率下進行的提交處理包括以下之一(ⅰ)對接收機程序?qū)笪牡某晒邮战o出響應(yīng),提交所述第二工作單元,給發(fā)送機程序發(fā)送一接收的肯定確認(rèn),并根據(jù)肯定確認(rèn),提交第一工作單元;或(ⅱ)響應(yīng)報文的未成功接收情況,返回第二工作單元,給發(fā)送器程序發(fā)送一接收否定確認(rèn),并根據(jù)所述否定確認(rèn)退出第一工作單元。
全文摘要
在應(yīng)用程序間確保既不丟失也不重復(fù)發(fā)送信息的方法。該方法利用異步報文排隊法。將隊列管理程序100定位于各網(wǎng)絡(luò)計算機。以控制從/到計算機的發(fā)送,待發(fā)送至不同隊列管理程序被置于特定發(fā)送隊列(120)。至相鄰隊列管理程序的發(fā)送包括靠本地隊列管理程序從發(fā)送隊列獲取報文并將它們作為同步點管理控制工作單元內(nèi)的成批報文進行發(fā)送的過程(130)。靠接收隊列管理程序的接收過程(150)接收報文并將其在第二同步點管理程序控制的工作單元內(nèi)排成隊列(180)。
文檔編號G06F9/46GK1109233SQ9411677
公開日1995年9月27日 申請日期1994年9月29日 優(yōu)先權(quán)日1993年10月8日
發(fā)明者P·克拉克, P·約翰遜, W·金斯頓, R·M·德魯, G·布拉克, R·梅里 申請人:國際商業(yè)機器公司