理論上,是否可以定義一個協議,其中一臺機器在另一臺機器(或多臺機器)上進行一些遠程調用,以及在該進程的任何部分中,如果任何機器(或操作)發生故障或通信中斷,一切都回滾了? (就像數據庫一樣)是否可以通過機器邊界(通過tcp-ip)進行事務處理?
我問這個問題,因爲在硬件層面上,人們總是說如果沒有原子處理器操作(測試和設置),就不能進行原子操作(一個非常重要的事務成分)。
但是,既然我們現在正在談論多臺機器,這不會飛。作爲一個例子,這將是一個棘手的問題:假設我有一個協議在遠程機器上發出一個命令,並得到一個迴應。這可能是該方法被調用,但在傳輸響應期間,連接會死亡。這也可能是執行操作的機器認爲一切正常,但接收機從未得到答案。
添加Ack's沒有幫助,因爲ack可能在傳輸中丟失。
有興趣閱讀他人的想法(並瞭解到一些27年前的教授已經提出了一個堅實的解決方案)。
[R
,因爲我猜會有一個明確的答案,這我不盯着這是一個社區的wiki。如果事實證明情況並非如此,我總是可以改變它 – Toad 2009-12-01 12:00:18