Giao thức cam kết hai pha

Một phần của tài liệu Cơ bản về hệ điều hành (Trang 107 - 109)

Giao thức cam kết 2 pha (2PC) t−ơng tự nh− sơ đồ bỏ phiếu nhất trí trong cuộc sống đời th−ờng. Bỏ phiếu đ−ợc bộ phối hợp của giao dịch khởi động. Tất cả các thành viên phải đi tới nhất trí về việc cam kết hoặc hủy bỏ giao dịch và buộc phải đợi thông báo về quyết định. Tr−ớc khi thành viên bỏ phiếu cam kết giao dịch, nó cần phải chuẩn bị thực hiện cam kết. Giao dịch đ−ợc cam kết chỉ khi mọi thành viên đồng ý và sẵn sàng cam kết.

Mỗi thành viên (bao gồm cả bộ phối hợp) duy trì một không gian làm việc riêng để giữ

vết cập nhật đối t−ợng dữ liệu. Mỗi cập nhật gồm giá trị cũ và giá trị mới của đối t−ợng dữ liệu. Cập nhật là không thực sự (lâu dài) cho đến khi giao dịch đ−ợc cam kết cuối cùng nhằm đảm bảo ngữ nghĩa cô lập của giao dịch. Cần đ−a các cập nhật lên bộ nhớ lâu dài để đối phó với lỗi. Cập nhật đ−ợc ghi nhận trong bộ nhớ lâu dài vào sổ lộ trình

hoạt động của giao dịch. Mỗi thành viên có một sổ lộ trình. Sổ lộ trình đ−ợc duyệt lại trong khi sửa lỗi nhằm làm dễ dàng hơn công việc hoặc tu sửa lại giao dịch đã cam kết hoặc tháo bỏ giao dịch không cam kết. Sổ lộ trình hoạt động nhất quán là cần thiết cho tính nhất quán hoặc tính bền vững của giao dịch đã cam kết.

Hình 4.15. minh họa dòng thực hiện giao dịch nguyên tử cam kết 2-pha. Tại đây có hai điẻm đồng bộ là tiền cam kết và cam kết đối với mỗi thành viên. Bộ phối hợp bắt đầu giao dịch bằng việc ghi nhận bản ghi tiền cam kết vào sổ lộ trình hoạt động của nó. Bộ phối hợp phải chuẩn bị cam kết giao dịch (tức là, cập nhật đ−ợc h−ớng tới sổ lộ trình ổn định, các tài nguyên dành để thực hiện lời cam kết...) tr−ớc khi ghi bản ghi tiền cam kết. Ghi bản ghi tiền cam kết vào sổ lộ trình hoạt động cho phép bộ phối hợp biết trạng thái của giao dịch nếu một lỗi xuất hiện; giao dịch kết thúc thực hiện mà nó không cam kết. Sau đó, bộ phối hợp đa phân phát yêu cầu bỏ phiếu tới mọi thành viên. Khi nhận đ−ợc yêu cầu bỏ phiếu, mỗi thành viên kiểm tra xem có cam kết đ−ợc giao dịch hay

không (các cập nhật đã đ−ợc h−ớng tới sổ lộ trình hoạt động, phát hành đã đ−ợc tin t−ởng, tài nguyên đã sẵn sàng ...). Nếu kiểm tra thấy hợp lý thì thành viên ghi một tiền cam kết vào sổ lộ trình và gửi TĐ YES tới bộ phối hợp. Ng−ợc lại thành viên bỏ giao dịch và gửi TĐ NO tới bộ phối hợp.

Bộ phối hợp Thành viên

- Tiền cam kết giao dịch

- Gửi yêu cầu tới mọi thành viên - Nhận TĐ yêu cầu - Nếu sẵn sàng

thì tiền cam kết và gửi YES - Kết nối mọi trả lời ng−ợc lại bỏ giao dịch và gửi NO - Nếu mọi bỏ phiếu là nhất trí YES

thì cam kết và gửi COMMIT

ng−ợc lại bỏ và gửi ABORT - nhận quyết định

- Nếu COMMIT thì cam kết

- Nếu ABORT thì bỏ giao dịch

- Nhận trả lời - Gửi trả lời

Hình 4.15. Giao thức giao dịch nguyên tử cam kết hai pha

Nếu trong khoảng thời gian quy định, bộ phối hợp kết nối đ−ợc tất cả các trả lời YES thì nó cam kết giao dịch bằng việc ghi bản ghi cam kết tới sổ lộ trình của nó và đa phân phát TĐ COMMIT tới mọi thành viên. Ng−ợc lại, bộ phối hợp hủy bỏ giao dịch và đa phân phát TĐ ABORT. Khi nhận đ−ợc TĐ COMMIT, mỗi thành viên cam kết giao dịch bằng việc ghi bản ghi cam kết vào sổ lộ trình hoạt động và tiếp nhận tài nguyên dành cho giao dịch. Cuối cùng gửi một trả lời cho bộ phối hợp. Nếu TĐ nhận đ−ợc là ABORT thì thành viên ghi bản ghi hủy bỏ vào sổ lộ trình, hủy bỏ giao dịch và giải phóng tài nguyên dành cho giao dịch.

Dùng sổ lộ trình hoạt động, giao thức cam kết 2-pha mạnh mẽ đối với các lỗi QT. Hình 4.16 chỉ dẫn mạch thời gian của giao thức đối với bộ phối hợp và một thành viên. Do việc ghi tiền cam kết và cam kết tới sổ lộ trình hoạt động làm sạch mọi cập nhật tr−ớc điểm đồng bộ này, thao tác thích hợp trong khôi phục lỗi tin cậy đ−ợc là làm lại thao tác theo sổ lộ trình ít nhất từ một điểm đồng bộ. Nh− vậy, thao tác khôi phục đ−ợc phân thành ba kiểu: lỗi tr−ớc tiền cam kết, lỗi sau tiền cam kết song tr−ớc cam kết, lỗi

sau cam kết. QT (hoặc bộ phối hợp hoặc thành viên) một cách đơn giản bỏ giao dịch

nếu từ sổ lộ trình phát hiện lỗi xuất hiện tr−ớc tiền cam kết. Điều đó t−ơng đ−ơng với phiếu NO đối với giao dịch. Bộ phối hợp cũng bỏ giao dịch nếu nó sụp đổ giữa tiền cam kết và cam kết, nh−ng hiệu quả hơn thì nên cố gắng tiếp tục cam kết giao dịch bằng cách đa phân phát lại TĐ yêu cầu (nhân bản có thể đ−ợc các thành viên phát hiện ra). T−ơng tự, thận trọng gửi lại TĐ cam kết nếu bộ phối hợp sụp đổ sau khi ghi bản ghi cam kết vào sổ lộ trình của nó. Thao tác khôi phục sẽ phức tạp hơn chút ít nếu một

quyết định

Kết quả yêu cầu

thành viên sụp đổ giữa tiền cam kết và cam kết. Việc phục hồi thành viên bắt buộc phải xác định đ−ợc giao dịch là cam kết hay bỏ qua hợp đồng thao tác với bộ phối hợp hoặc các thành viên khác. Cuối cùng nếu thành viên khôi phục do lỗi sau khi bản ghi cam kết đã đ−ợc ghi vào sổ lộ trình thì thành viên đó đơn giản chỉ tạo ra các cập nhật giao dịch lâu dài. Với bộ nhớ cố định, cơ chế khôi phục tin cậy cho tính bền vững của cam kết.

Ch−ơng tiếp theo trình bày hình thức hơn giao thức cam kết hai pha và nâng cấp của nó: giao thức cam kết 3-pha. Ch−ơng sau đó đ−ợc dành cho lỗi và phục hồi.

Thao tác khôi phục lỗi của Bộ phối hợp

Thao tác khôi phục lỗi của thành viên

Một phần của tài liệu Cơ bản về hệ điều hành (Trang 107 - 109)