Tôi đang nghiên cứu cách cam kết hai pha hoạt động trên một giao dịch phân tán. Đó là sự hiểu biết của tôi rằng trong phần cuối của giai đoạn, điều phối viên giao dịch yêu cầu mỗi nút cho dù nó đã sẵn sàng để cam kết hay chưa. Nếu mọi người đồng ý, thì nó bảo họ hãy tiếp tục và cam kết.Cam kết hai pha ngăn chặn lỗi thứ hai như thế nào?
Điều gì ngăn cản lỗi sau?
- Tất cả các nút trả lời rằng họ sẵn sàng cam kết
- Giao dịch điều phối viên nói với họ để "đi trước và cam kết", nhưng một trong các nút tai nạn trước khi nhận thông điệp này
- Tất cả khác các nút cam kết thành công, nhưng bây giờ giao dịch phân phối bị hỏng
- Đó là sự hiểu biết của tôi rằng khi nút bị hỏng quay trở lại, giao dịch của nó sẽ được khôi phục (vì nó không bao giờ nhận được thông báo cam kết)
Tôi giả sử mỗi nút đang chạy một cơ sở dữ liệu bình thường không biết gì về giao dịch được phân phối. Tôi đã bỏ lỡ cái gì?
Giả định của bạn về cơ sở dữ liệu thông thường là không chính xác. Bất kỳ tài nguyên (hàng đợi tin nhắn, cơ sở dữ liệu, vv) hỗ trợ giao dịch phân phối (bằng cách hỗ trợ một điều phối viên giao dịch) hoặc nó không. Nếu không, kludges để bao gồm nó trong một giao dịch phân phối sẽ làm giảm độ tin cậy. – erickson
Erickson, nếu bạn gấp câu trả lời của người khác bằng bình luận của bạn, tôi sẽ đánh dấu nó là câu trả lời chính thức. – Gili