Tôi đã đọc giao thức cam kết 3 giai đoạn trên wikipedia (http://en.wikipedia.org/wiki/Three-phase_commit_protocol) và đây là một kịch bản mà tôi nghĩ rằng 3PC sẽ bị lỗi:Giao thức cam kết 3 pha
Giả sử có hai người tham gia A và B và Điều phối viên C:
1) C gửi thông báo trước tới A và trước khi gửi thông báo trước tới B cả A và C tương ứng thất bại. 2) Giao dịch được khởi động lại và B kết thúc hủy bỏ nó vì không có trả lời từ A. 3) Cam kết giao dịch vì nó đã nhận được thông báo trước.
Đây không phải là vấn đề ban đầu trong 2PC mà 3PC được cho là phải giải quyết? 3PC giải quyết vấn đề như thế nào? Tôi đang thiếu gì. Cảm ơn.
Xin lỗi, tôi không rõ một chút về phần này của giao thức. Những người tham gia không cam kết sau đó cho đến khi họ nhận được thông điệp doCommit từ điều phối viên? –
Tôi đoán có lẽ cách nó sẽ đi là nếu điều phối viên và tất cả những người tham gia biết trạng thái của một hệ thống thất bại thì giao dịch hủy bỏ một khi điều phối viên mới được bầu (tôi đoán phù hợp với những gì bạn nói). Và nếu điều phối viên không thành công sau khi gửi thông báo trước và ít nhất một trong những người có thông báo trước, phần còn lại trong hệ thống có thể tiếp tục và cam kết vì họ đã biết trạng thái trên hệ thống. Vì vậy, không có lúc nào là hệ thống đang ở trạng thái không xác định –
@AbdulRahman xem các cập nhật của tôi – xvatar