分佈式事務,常見的是2pc、tcc
2pc是分爲兩個階段:preCommit和commit,多個節點preCommit成功,協調者再通知各節點,去commit
tcc是try-confirm-cancel,try階段是各節點去檢查參數和執行,若有一個節點出問題,則進入cancel階段;若都順利執行完,則進入confirm階段
後置提交,在大佬58沈劍的文章 分佈式事務,原來可以這麼玩? 裏,看到了這個概念。感覺很清奇,但是,仔細一想想,其實後置提交本質就是2pc,它是2pc的簡化版。2pc有”協調者”角色,後置提交的“協調者”那就是主線程
當一個項目,配置了多個數據源的時候,使用後置提交,很大程度上,縮短了不可控的時間區間,因爲執行sql比較耗時,提交事務很快,若各個節點都執行完畢再去提交,那出問題也只會在提交事務的時間段內。
缺點是所有節點事務會在同一時間提交,首節點需要等待末節點執行完畢纔會去提交,更長的佔用數據庫連接,降低了吞吐量