?? rfc2372.txt
字號(hào):
組織:中國(guó)互動(dòng)出版網(wǎng)(http://www.china-pub.com/)
RFC文檔中文翻譯計(jì)劃(http://www.china-pub.com/compters/emook/aboutemook.htm)
E-mail:ouyang@china-pub.com
譯者:cata_xu (cata_xu amethyst@theory.issp.ac.cn)
譯文發(fā)布時(shí)間:2001-7-4
版權(quán):本中文翻譯文檔版權(quán)歸中國(guó)互動(dòng)出版網(wǎng)所有。可以用于非商業(yè)用途自由轉(zhuǎn)載,但必須
保留本文檔的翻譯及版權(quán)信息。
Network Working Group K. Evans
Request for Comments: 2372 J. Klein
Category: Informational Tandem Computers
J. Lyon
Microsoft
July 1998
處理internet協(xié)議(TIP)-要求和補(bǔ)充信息
(Transaction Internet Protocol - Requirements and
Supplemental Information)
本備忘錄的狀態(tài)
本備忘錄提供了internet社區(qū)的一些信息,但并沒(méi)有詳細(xì)講述任何一種internet
標(biāo)準(zhǔn)。本備忘錄的發(fā)布不受任何限制。
版權(quán)聲明
Copyright (C) The Internet Society (1998). All Rights Reserved.
摘要
本文檔描述了處理Internet協(xié)議(TIP)[1]的目的(特定使用場(chǎng)景)和要求。
其被有意用來(lái)幫助限定此協(xié)議的一些必要特征和功能。本文檔也提供了一些輔助
理解和幫助TIP協(xié)議實(shí)現(xiàn)的補(bǔ)充信息。
目錄
1. 介紹 2
2. 處理Internet協(xié)議(TIP) 3
3. 范圍 4
4. TIP的預(yù)期使用 4
5. TIP的適應(yīng)系統(tǒng) 4
6. X/Open DTP模型的關(guān)聯(lián) 5
7. TIP特定使用場(chǎng)景的實(shí)例 5
8. TIP處理的恢復(fù) 8
9. TIP處理和應(yīng)用信息連續(xù) 8
10. TIP協(xié)議和本地操作 9
11. 安全考慮 10
12. TIP要求 10
參考 12
作者的地址 12
評(píng)論 13
附錄A. 一個(gè)TIP處理管理器API的實(shí)例 13
版權(quán)聲明 21
1. 介紹
處理是一個(gè)非常有用的編程范例,很大程度上簡(jiǎn)化了分布式應(yīng)用的書(shū)寫(xiě)。當(dāng)處理被使用
時(shí),不管參與一個(gè)特定的工作單元有多少分布式應(yīng)用組分,可能的結(jié)果被減少至兩個(gè),
即:要么所有工作完全成功,要么什么都完不成(這個(gè)特征常被稱(chēng)做原子數(shù))。由于程
序員不必應(yīng)付大量可能失敗的場(chǎng)景,所以應(yīng)用編程變得簡(jiǎn)單了。典型地,處理語(yǔ)義是由
一些基本的系統(tǒng)底層結(jié)構(gòu)(通常是一種產(chǎn)品,諸如事務(wù)處理監(jiān)控器,和/或者數(shù)據(jù)庫(kù)的形
式)提供的。這底部結(jié)構(gòu)應(yīng)付失敗以及執(zhí)行必要的恢復(fù)操作以保證原子數(shù)的特性。處理
的使用能使可靠的分布式應(yīng)用得以發(fā)展,否則,盡管不是不可能使分布式應(yīng)用取得進(jìn)展,
但是會(huì)使其變得困難。
支持分布處理的一個(gè)關(guān)鍵技術(shù)是二段提交協(xié)議(two-phase commit protocol)(2-pc)。2-pc
協(xié)議已經(jīng)在商業(yè)事務(wù)處理(TP)系統(tǒng)中使用了很多年了,并且它也是很好理解的(例
如12年前就開(kāi)始應(yīng)用的LU6.2 2-pc(同步點(diǎn))協(xié)議)。今天,大量不同的2-pc協(xié)議在許
多TP監(jiān)控器和數(shù)據(jù)庫(kù)產(chǎn)品中被支持。在參與一個(gè)分布工作單元(處理)的各個(gè)組分之間,
2-pc被用來(lái)確保與工作結(jié)果相關(guān)的所有部分(忽略任何失敗的成分)一致。今天,標(biāo)準(zhǔn)的
和個(gè)性化的2-pc協(xié)議都存在。這些協(xié)議典型的使用了一個(gè)“單管道”模型。就是說(shuō)處理和
應(yīng)用協(xié)議是緊密結(jié)合的,是在同一個(gè)通信頻道上執(zhí)行的。一個(gè)應(yīng)用可能只使用和處理協(xié)議
聯(lián)結(jié)在一起的特定通信機(jī)制。具有比較龐雜的內(nèi)容和寬泛的結(jié)構(gòu)和管理要求的標(biāo)準(zhǔn)協(xié)議
(OSI TP,LU6.2)是復(fù)雜的。因此它們沒(méi)有被廣泛配置。如果處理能被使用的話(huà),那么所
有這些組成的網(wǎng)絡(luò)將具有有限的應(yīng)用靈活性和互用性。應(yīng)用就能有希望使用大量沒(méi)有處理
變量的通信協(xié)議(例如HTTP),并被配置在不同種類(lèi)的應(yīng)用環(huán)境中。
概括來(lái)說(shuō),處理很大程度上簡(jiǎn)化了分布式應(yīng)用的編程。2-pc協(xié)議是一種關(guān)鍵的處理技術(shù)。
目前運(yùn)行在一具有特殊目的(復(fù)雜的,同類(lèi)的)的底部結(jié)構(gòu)中的2-pc協(xié)議只給一套有限
制的應(yīng)用提供了處理語(yǔ)義。這個(gè)應(yīng)用使用一套特定的雙向通信協(xié)議。所以,被當(dāng)前的2-pc
協(xié)議強(qiáng)加的約束限制了處理范例的廣泛使用,因此也抑制了新的分布式商業(yè)應(yīng)用的發(fā)展。
(見(jiàn)[2]以得到更多有關(guān)處理,原子數(shù),以及二段提交協(xié)議的大概知識(shí)。)
2. 處理Internet協(xié)議(TIP)
TIP是在一異類(lèi)(網(wǎng)絡(luò)化的)環(huán)境中,用來(lái)提供普遍分布式處理支持的一種2-pc協(xié)議,
TIP消除了目前2-pc協(xié)議中的約束,使新的分布式商業(yè)應(yīng)用成為可能。
為了達(dá)到這個(gè)目的,首先要滿(mǎn)足兩個(gè)關(guān)鍵要求:
1) Keep the protocol simple (yet functionally sufficient). If the
protocol is complex it will not be widely deployed or quickly
adopted. Simplicity also means suitability to a wide range of
application environments.
2) Enable the protocol to be used with any applications
communications protocol (e.g. HTTP). This ensures heterogeneous
environments can participate in distributed work.
1) 保持協(xié)議的簡(jiǎn)單性(功能仍然充分)。如果這個(gè)協(xié)議是復(fù)雜的話(huà),將不能被廣泛
配置或者很快采用。簡(jiǎn)單性也意味著在一個(gè)很大范圍應(yīng)用環(huán)境里的適用性。
2) 能使協(xié)議和任何應(yīng)用通信協(xié)議(如HTTP)一起使用。這一點(diǎn)確保異類(lèi)環(huán)境能參與
分布式工作。
TIP不會(huì)將已知要假定廢棄的2-pc協(xié)議作為基礎(chǔ)來(lái)重新改造2-pc協(xié)議本身。TIP的更新穎、
更有效之處在于其脫離了應(yīng)用通信協(xié)議(雙管道模型)。
+-------------+ 應(yīng)用通信 +-------------+
| 應(yīng)用程序 |---------------------------| 應(yīng)用程序 |
| | " 管道 1" | |
+-------------+ +-------------+
| |
| TIP TM API TIP TM API |
| |
+-----------------+ TIP 2-pc 協(xié)議 +-----------------+
| TIP 處理管理器 |----------------------| TIP 處理管理器 |
| | "管道 2" | |
+-----------------+ +-----------------+
圖 1: TIP的雙管道本性
3. 范圍
TIP不會(huì)去描述商業(yè)事務(wù)處理或者電子商務(wù)在internet上將怎樣被管理。它只講述2-pc
處理協(xié)議(一種對(duì)于這些應(yīng)用發(fā)展的輔助)。例如,TIP不會(huì)提供一種非評(píng)判性的機(jī)制。
一旦對(duì)普通電子商務(wù)的要求變得更好理解,這樣的協(xié)議可以是隨后IETF的行為的一個(gè)主
題。TIP不會(huì)排除這些協(xié)議后來(lái)的定義。
TIP不會(huì)講述應(yīng)用編程接口(API)(請(qǐng)留意本文檔(附錄A中)包含的一個(gè)例子TIP TM
API,以幫助理解)。
4. TIP的預(yù)期使用
正如以上所形容的,處理在簡(jiǎn)化分布式應(yīng)用編程中是一個(gè)非常有用的工具。所以,TIP可
以定位于任何包括分布式工作的應(yīng)用中。這樣的應(yīng)用可以包含執(zhí)行在一個(gè)簡(jiǎn)單系統(tǒng)中的
成分。這個(gè)簡(jiǎn)單系統(tǒng)可以穿過(guò)一個(gè)企業(yè)內(nèi)部網(wǎng),穿過(guò)internet網(wǎng)或者任何別的分布式系
統(tǒng)結(jié)構(gòu)。這個(gè)應(yīng)用可以是“企業(yè)”級(jí)的(要求有很高的性能以及實(shí)用性),或者級(jí)別要求
不那么高的。人們有意使TIP變得能普遍適用的,以符合任何能從這處理語(yǔ)義規(guī)定中獲益
的應(yīng)用之需要。
5. TIP的適應(yīng)系統(tǒng)
有兩種級(jí)別的TIP適應(yīng)處理管理系統(tǒng)
1) 單一客戶(hù)端系統(tǒng)。這指那些只提供一個(gè)應(yīng)用接口以劃分TIP處理的界線(xiàn),但是沒(méi)有提供
給本地恢復(fù)資源入口的系統(tǒng)。這樣一個(gè)輕量級(jí)實(shí)現(xiàn)只對(duì)那些只有客戶(hù)端應(yīng)用的系統(tǒng)才有用
(如桌面機(jī)器)。這樣的客戶(hù)端系統(tǒng)可能是不可靠的,而且作為處理的協(xié)調(diào)器也是不合適
的(它們的不適用性可能導(dǎo)致在別的參與處理的系統(tǒng)上的資源被鎖定或者或者不可用)。
所以這些所謂的“不穩(wěn)定的客戶(hù)端”系統(tǒng)將協(xié)調(diào)處理(以及從失敗中恢復(fù))責(zé)任委托給別
的“完全”(服務(wù)器端)TIP系統(tǒng)去執(zhí)行。對(duì)于這些輕量級(jí)系統(tǒng),只有TIP IDENTIFY,
BEGIN,COMMIT, and ABORT指令是需要的,不需要處理日志。
2) 服務(wù)器端系統(tǒng)。即指那些提供上述支持,并且加入TIP處理協(xié)調(diào)和恢復(fù)服務(wù)的系統(tǒng)。
這些系統(tǒng)也可以提供入口給恢復(fù)資源(如相關(guān)數(shù)據(jù)庫(kù))。服務(wù)器端系統(tǒng)支持所有TIP指
令,以及提供一個(gè)可恢復(fù)處理日志。
一個(gè)TIP適應(yīng)處理管理器(TM)也將提供應(yīng)用編程接口(如X/Open TX接口[3])以劃分
TIP處理的界線(xiàn),并且加入指令以產(chǎn)生TIP URL,推/拉(PUSH/PULL)TIP處理以及安置
當(dāng)前TIP處理的上下文。利用現(xiàn)有的API和2-pc協(xié)議,能把TIP支持加入TM中,而且處理
可以既包含私有化的處理又包含TIP處理分支(這是假定現(xiàn)有的TM實(shí)現(xiàn)將提供用來(lái)在TIP
和其他處理協(xié)議間起協(xié)調(diào)作用的“TIP網(wǎng)關(guān)”設(shè)備)。
6. X/Open DTP模型的關(guān)聯(lián)
X/Open分布式事務(wù)處理(DTP)模型[4]定義了四種成分:1)應(yīng)用編程(AP),2)處理
管理器(TM),3)資源管理器(RM),以及4)通信資源管理器(CRM)。在這個(gè)模型中,TIP
定義了一個(gè)TM到TM的互用性協(xié)議,這個(gè)協(xié)議是獨(dú)立于應(yīng)用通信之外的(X/Open中沒(méi)有
這樣相當(dāng)?shù)膮f(xié)議被闡明,X/Open中所有的處理和應(yīng)用通信都發(fā)生在CRM(單管道模型)間)。
AP和TM/RM間的編程接口不會(huì)被TIP影響,但可以被其使用。從TM到RM的相互作用是通
過(guò)X/Open XA接口規(guī)范[5]來(lái)定義的。TIP是和XA相適應(yīng)的。一個(gè)TIP處理可以包含一些訪
問(wèn)
多重RM的應(yīng)用,這里XA接口被用來(lái)協(xié)調(diào)RM處理分支。
7. TIP特定使用場(chǎng)景的實(shí)例
可以預(yù)期一個(gè)典型的internet上的TIP使用將包括一些使用代理模型的應(yīng)用。在這個(gè)模型
中,客戶(hù)端節(jié)點(diǎn)本身不完全直接包含在TIP協(xié)議中,也不需要一個(gè)本地TIP TM的服務(wù)。相
應(yīng)代替的是一個(gè)代理應(yīng)用控制了與客戶(hù)端的對(duì)話(huà),并對(duì)TIP處理的協(xié)調(diào)負(fù)責(zé)。這個(gè)代理操
作和別的服務(wù)提供者一起把服務(wù)傳遞給客戶(hù)端。例如,作為一個(gè)旅行代理,其會(huì)在航空公
司/旅館/等服務(wù)公司和顧客之間充當(dāng)媒介。這個(gè)模型的一個(gè)很大的優(yōu)點(diǎn)就是代理得到服務(wù)
提供者的信任,并且這樣的代理數(shù)目上更少(和使用客戶(hù)相比),所以安全和性能上的問(wèn)
題被減少了。
考慮一個(gè)旅行代理處的例子。一個(gè)客戶(hù)在一臺(tái)連網(wǎng)個(gè)人電腦上運(yùn)行一個(gè)網(wǎng)頁(yè)瀏覽器以進(jìn)入
這家旅行代理處的主頁(yè)。通過(guò)代理處提供的主頁(yè)(可以依次由航空公司和旅館服務(wù)商提供
的主頁(yè)創(chuàng)立),這個(gè)客戶(hù)選定了一條包括所選航空公司和旅館的路線(xiàn)。最后該客戶(hù)點(diǎn)擊“
進(jìn)行預(yù)定”的按鈕。這時(shí),下列事件將按序發(fā)生(通過(guò)有用的標(biāo)準(zhǔn)或個(gè)性化技術(shù)(例如
CGI),用戶(hù)寫(xiě)入的申請(qǐng)代碼被不同的網(wǎng)絡(luò)服務(wù)商調(diào)用)。
1)首先,旅行代理處開(kāi)始一個(gè)本地處理,并且為這個(gè)處理得到一個(gè)TIP URL(使用本地
TM的API去執(zhí)行所有這些函數(shù)。例如,“tip_xid_to_url()”將返回TIP URL給本地
處理)。這個(gè) TIP URL包含了本地TM的IP地址的監(jiān)聽(tīng)端點(diǎn)和本地處理的處理校驗(yàn)符。
2)然后,此旅行代理處的應(yīng)用發(fā)一個(gè)請(qǐng)求給航空公司服務(wù)器(通過(guò)某種協(xié)議(如HTTP))
通過(guò)請(qǐng)求“book_flight”服務(wù)來(lái)傳遞那個(gè)客戶(hù)選定的航班和TIP URL(從上面1.中
獲得的)。
3)這個(gè)請(qǐng)求被調(diào)用book_flight應(yīng)用的航空公司服務(wù)器收到。此應(yīng)用在輸入數(shù)據(jù)中找回
TIP URL,并把其傳遞給一個(gè)“tip_pull()”API以請(qǐng)求它的本地TM。這個(gè)tip_pull()
函數(shù)引起以下事件發(fā)生:
a. 本地TM創(chuàng)建一個(gè)本地處理(將要被執(zhí)行的工作在此之后),
b. 如果一個(gè)TIP連接并不總是生存到上一級(jí)(旅行代理處)TM為止(正如通過(guò)在TIP
URL里傳遞的IP地址來(lái)定義的一樣),一個(gè)連接被創(chuàng)建且一個(gè)IDENTIFY(識(shí)別)
交換發(fā)生(如果多路技術(shù)被使用在這個(gè)連接上,接下來(lái)將是一個(gè)多路交換),
c. 一個(gè)PULL指令被送到上一級(jí)TM,
d. 作為PULL的響應(yīng),上一級(jí)TM和下一級(jí)(航空公司)TM通過(guò)處理建立聯(lián)結(jié)(通過(guò)
結(jié)這個(gè)處理的連接),以及發(fā)送一個(gè)PULLED響應(yīng)給下一級(jí)TM,
e. 下一級(jí)TM返回控制給book_flight應(yīng)用,book_flight現(xiàn)在正執(zhí)行在新的已創(chuàng)建的
本地處理的上下文中。
4) book_flight應(yīng)用開(kāi)始起作用(它可能包括至一個(gè)可恢復(fù)資源管理器(如一個(gè)RDBMS)
的入口,在這種情況下本地TM將和具有本地處理的RM建立聯(lián)結(jié)(通過(guò)XA接口或者別的什
么))。
5) book_flight應(yīng)用返回給旅行代理應(yīng)用指示成功。
6) 接著,步驟2-5在旅館服務(wù)器“book_room”應(yīng)用上重復(fù)。在這些步驟結(jié)束后,上一
級(jí)的TM已經(jīng)登記了兩個(gè)下一級(jí)的TM參與處理。一個(gè)是代理TM和航空公司和旅館服務(wù)器
TM之間的TIP聯(lián)系,另一個(gè)是航空公司和旅館服務(wù)器上正在進(jìn)行中的處理。[注意步驟2-5
和6能被同時(shí)執(zhí)行。
7) 旅行代理處應(yīng)用發(fā)布一個(gè)“提交處理”請(qǐng)求(使用本地TM的API)。本地TM在TIP
連接上發(fā)送一個(gè)PREPARE指令給航空公司和旅館的TM(此時(shí)這些TM被定義為次一級(jí)的
理參與者)。
8) 在航空公司和旅館服務(wù)器上的TM執(zhí)行必要的步驟以準(zhǔn)備他們的本地可恢復(fù)資源(例
如通過(guò)發(fā)布xa_prepare()請(qǐng)求)。如果成功的話(huà),下一級(jí)的TM改變他們的TIP處理狀
態(tài)為已準(zhǔn)備,并將恢復(fù)信息(例如本地的和上一級(jí)的處理分支校驗(yàn)符,以及上一級(jí)TM
的IP地址)記入日志。然后這些下一級(jí)的TM發(fā)送PREPARED指令給上一級(jí)TM。
9) 如果兩個(gè)下一級(jí)TM都響應(yīng)PREPARED,則上一級(jí)TM記錄下處理已提交,以及恢復(fù)信
息(例如本地和下一級(jí)處理校驗(yàn)符,以及下一級(jí)TM的IP地址)。然后上一級(jí)TM在兩個(gè)下
一級(jí)TIP連接上發(fā)送COMMIT指令。
10) 在航空公司和旅館服務(wù)器上的TM執(zhí)行必要的步驟來(lái)提交他們的本地可恢復(fù)資源(如
通過(guò)發(fā)布xa_commit()請(qǐng)求)。下一級(jí)的TM廢棄此處理。接著下一級(jí)的TM發(fā)送
COMITTED指令給上一級(jí)的TM。
11) 上一級(jí)的TM廢棄此處理。上下兩級(jí)TM之間的TIP連接返回到閑置狀態(tài)(斷開(kāi)和任
何處理的聯(lián)結(jié))。上一級(jí)的TM返回成功信息給旅行代理處的應(yīng)用“提交處理”請(qǐng)求。
12) 旅行代理處的應(yīng)用返回“預(yù)定完成”給客戶(hù)。
這個(gè)例子例證了PULL的使用。如果 PUSH被替代使用的話(huà),上面的事件2)和3)將做如下
改變:
2) 旅行代理處的應(yīng)用:
a. 將以上1)中獲得的TIP URL和在航空公司服務(wù)器上TM的監(jiān)聽(tīng)端點(diǎn)地址一起,通
過(guò)一個(gè)“tip_push()”API請(qǐng)求,傳遞給它的本地TM。這個(gè)tip_pull()函數(shù)引
起以下事件發(fā)生:
i.如果一個(gè)TIP連接并不總是生存到下一級(jí)(航空公司服務(wù)器)TM為止(正如通
過(guò)在tip_push()上傳遞的IP地址來(lái)定義的一樣),一個(gè)連接被創(chuàng)建且一個(gè)
IDENTIFY(識(shí)別)交換發(fā)生(如果多路技術(shù)被使用在這個(gè)連接上,接下來(lái)將是
一個(gè)多路交換),
ii.一個(gè) PUSH 指令被發(fā)送到下一級(jí)TM,
iii.作為對(duì)PUSH的響應(yīng),下一級(jí)的TM創(chuàng)建了一個(gè)本地處理,將TIP連接和處理
聯(lián)結(jié)起來(lái)然后發(fā)送一個(gè)PUSHED響應(yīng)給上一級(jí)的TM,
iv.作為對(duì)PUSH的響應(yīng),上一級(jí)的TM通過(guò)處理和下一級(jí)TM聯(lián)結(jié),
v.上一級(jí)的TM返回控制給旅行代理應(yīng)用。
b. 旅行代理應(yīng)用發(fā)一個(gè)請(qǐng)求給航空公司服務(wù)器(通過(guò)某種協(xié)議(如HTTP)),通過(guò)
請(qǐng)求“book_flight”服務(wù)來(lái)傳遞那個(gè)客戶(hù)選定的航班和TIP URL(從上面1.中
獲得的)。
3)這個(gè)請(qǐng)求被調(diào)用book_flight應(yīng)用的航空公司服務(wù)器收到。此應(yīng)用在輸入數(shù)據(jù)中找
回TIP URL,并把其傳遞給一個(gè)“tip_pull()”API以請(qǐng)求它的本地TM。因?yàn)檫@個(gè)本地TM
已經(jīng)“看到”這個(gè)URL(其已經(jīng)被傳遞),本地TM簡(jiǎn)單地返回book_flight應(yīng)用,
book_flight現(xiàn)在正執(zhí)行在先前創(chuàng)建的本地處理的上下文中。
[注意盡管這個(gè)例子中,處理協(xié)調(diào)者角色是由一個(gè)節(jié)點(diǎn)來(lái)扮演的,這個(gè)節(jié)點(diǎn)也參與了處理(旅
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -