事務(Transaction)的理解

2021-09-30 10:03:47 字數 1240 閱讀 5489

事務(transaction)的理解

transaction有交易的意思,sip是個事務型的協議,因為它需要各部件間互通訊息來實現。

事務所處的位置如圖:

圖一 事務環境圖

1)事務處理主要用於處理訊息的互動,它的實現使用了狀態機。向上它向事務使用者(tu)提交事務的觸發事件(計時器超時和傳輸層訊息),向下把所要傳送的sip訊息包傳送給傳輸層代為**。

2)而在事務中一定有客戶端和伺服器端,兩者沒有必然的界限。只要是發起請求的,在該事務中充當的當然是客戶端,接受請求的必然是伺服器端。所以對於**伺服器來說,相對下面的請求來說它是伺服器端,對於上面來說卻是代發請求的客戶端。

事務分類

事務根據型別還分invite和non-invite型,即邀請和非邀請型別。non-invite型別事務主要處理的是除invite和ack型別外的所有sip資訊。而非invite裡的ack資訊要處理的話就不屬於事務處理的範圍了,一般由程式自己把資訊傳送給傳輸層直接傳送。invite需要三次握手,所以需要的時間比較長;而non-ivite型別只需兩次握手,要求回應時間短。

所以由rfc3261規定,sip中主要有四種事務,對應有四種狀態機:

invite client transaction(ict): 

non-invite client transaction(nict): 

invite server transaction(ist): 

non-invite server transaction(nist): 

其中有個特別的地方在於:對於2**回應的ack不屬於ict的事務處理範圍

原因在於收到200(ok)的ack上。

對於接收到這些ack的使用者來說,如果非最後的客戶端,即ua接收到該訊息的話將關掉該事務再**該訊息,不再理會之後的事情。而收到200的uac可能把ack直接發往真正的uas,此時不再通過**伺服器或重定向伺服器。而前面提到的事務的概念指的是兩者之間的互動,可此時uac要發往資訊不再是之前存在的事務(交易者已變)。所以此時傳送ack已不是事務的範疇了,同樣ack的重發和uas的200重發都不再是事務的範疇,因為傳送200的uas和接收到200的uac的事務狀態已置為結束。

****本文只是了解事務基本,對於細節還得看rfc才行,特別是四種事務的狀態機圖。

事務 Transaction 簡述

一 定義 二 應用場景 設想網上購物的一次交易,其付款過程至少包括以下幾步資料庫操作 正常的情況下,這些操作將順利進行,最終交易成功,與交易相關的所有資料庫資訊也成功地更新。但是,如果在這一系列過程中任何乙個環節出了差錯,例如在更新商品庫存資訊時發生異常 該顧客銀行帳戶存款不足等,都將導致交易失敗。...

事務 Transaction詳解

1 事務概念 一組sql語句操作單元,組內所有sql語句完成乙個業務,如果整組成功 意味著全部sql都實現 如果其中任何乙個失敗,意味著整個操作都失敗。失敗,意味著整個過程都是沒有意義的。應該是資料庫回到操作前的初始狀態。這種特性,就叫 事務 2 為什麼要存在事務?1 失敗後,可以回到開始位置 2 ...

LR中的事務(transaction)

事務 事務是要度量其伺服器響應時間的任務或操作集。乙個完整的事務是由事務開始 事務結束以及乙個或多個業務操作 任務構成。形式如圖1 5所示 圖1 5 乙個事務示例 段 插入乙個事務有兩種方式來實現,一種是手工方式,另外一種是利用選單或者工具條進行事務的新增。手工方式要求編寫指令碼人員必須十分清楚指令...