2
我執行批量更新,修改少數列族中的少數幾行。在TimedOutException的情況下,一些數據可能會被修改,但可能不是整個集合....Cassandra TimedOutException和批量更新的數據修改
爲了實現補償事務,我需要知道什麼數據(行)被修改 - 有沒有辦法找到這個出來嗎?例外是否包含這些信息?
感謝, 馬切伊
我執行批量更新,修改少數列族中的少數幾行。在TimedOutException的情況下,一些數據可能會被修改,但可能不是整個集合....Cassandra TimedOutException和批量更新的數據修改
爲了實現補償事務,我需要知道什麼數據(行)被修改 - 有沒有辦法找到這個出來嗎?例外是否包含這些信息?
感謝, 馬切伊
創建,可以擴展出的手段採取一些折衷的系統 - ,其中之一是促進你的應用程序「冪等」操作。
這意味着你要麼:
假設數據的某處書面和該節點將 最終成爲一致
火寫的全部內容再次,也許睡覺給定的時間量或
處於較低限制的一致性水平
這個方法的一個很好的描述可以在Pat Helland的「Building on Quicksand」論文的第6部分中找到:http://arxiv.org/pdf/0909.1788
我無法從cassandra獲得哪些數據部分被修改的信息?這在異常本身中也不可用? –
否 - 在分佈式系統中,回覆您的客戶端的節點可能不擁有數據,並且會將請求「協調」到適當的所有者,因此將無法查看失敗的狀態,或者消息是否只是由於負載而拋棄。 – zznate
只是好奇,你不能跟蹤更新的列中的時間戳,然後當你去嘗試重新寫你比較時間戳,看看寫了什麼或什麼不寫。如果時間戳比您預期的要少,那麼該項目不會被寫入。如果時間戳是相同的,那麼它被寫入,所以什麼也不做。它更大,然後另一個過程寫了一些事後,所以可能也沒有做任何事情。 – AlexGad