24/05/2018, 17:35

Truyền thông giao dịch

TT hỏi/đáp định hướng dịch vụ và đa phân phát được trình bày trên đây có thể kết hợp lại thành một mức TT mới cao hơn được gọi là TT giao dịch. Phổ biến hơn, giao dịch được biết như một đơn vị chuẩn của liên-hành động giữa QT khách và phục vụ trong hệ CSDL. ...

TT hỏi/đáp định hướng dịch vụ và đa phân phát được trình bày trên đây có thể kết hợp lại thành một mức TT mới cao hơn được gọi là TT giao dịch. Phổ biến hơn, giao dịch được biết như một đơn vị chuẩn của liên-hành động giữa QT khách và phục vụ trong hệ CSDL. Giao dịch CSDL được biểu diễn như một dãy thao tác hỏi/đáp đồng bộ đảm bảo tính nguyên tử (không chia cắt được), tính nhất quán, tính cô lập (riêng biệt) và tính bền vững (ACID) như trình bày dưới đây. Giao thức trong TT tương tự như giao thức trong CSDL ngoại trừ chúng được định nghĩa như một tập TT hỏi/đáp dị bộ có các tính chất ACID nhưng không ép buộc tính tuần tự thao tác như giao dịch CSDL. Một giao dịch TT có thể bao gồm đa phân phát cùng một TĐ tới các phục vụ nhân bản và yêu cầu khác nhau tới phục vụ được phân chia. Dịch vụ giao dịch và kiểm tra đồng thời đối với giao dịch CSDL sẽ được nói sau. Trình bày dưới đây giới hạn trong khuôn khổ TT giao dịch.

Các tính chất ACID liên quan trước hết tới mục tiêu trong suốt đồng thời của hệ phân tán. Đoạn 2.2 đã giới thiệu trong suốt đồng thời là tính chất cho phép chia xẻ các đối tượng mà không gặp trở ngại. Về cảm giác, thực hiện giao dịch có vị trí như khoảng tới hạn. Tuy nhiên, các thao tác từ các giao dịch khác nhau là được xen kẽ (theo một cách đảm bảo) nhằm tăng tính đồng thời. Nói thêm, giao dịch có các tính chất bổ sung:

-Tính nguyên tử (A: Atom): Hoặc tất cả thao tác được thực hiện hoặc không một thao tác nào trong giao dịch được thực hiện bất chấp lỗi.

-Tính nhất quán (C: Consistency): Thực hiện trộn xen kẽ các giao dịch tương đương với thực hiện tuần tự các giao dịch đó theo thứ tự nào đó.

-Tính cô lập (I: Isolation): Kết quả thực hiện bộ phận giao dịch chưa hoàn thiện được che dấu đối với các giao dịch khác trước khi giao dịch được cam kết thành công.

-Tính bền vững (D: Durability): Hệ thống đảm bảo rằng kết quả thực hiện giao dịch đã cam kết được lưu giữ lâu dài, ngay cả khi xuất hiện lỗi sau cam kết.

Do cả bốn tính chất này quan hệ với tính nhất quán nên trong nhiều trường hợp, thường gọi tính chất thứ hai là tính thi hành dãy để phân biệt với các tính chất khác. Tính nguyên tử cho tính nhất quán của đối tượng khi nhân bản hay phân hoạch. Vi phạm sự cô lập thì thấy được cái không bao giờ xẩy ra, còn vi phạm tính bền vững thì lại không thấy được cái thực tế xảy ra. Cả hai điều này là không nhất quán về trạng thái hệ thống.

Bảo đảm các tính chất ACID đòi hỏi các QT thành phần cộng tác thực hiện giao dịch. Gọi QT khởi tạo giao dịch là bộ phối hợp và các QT còn lại là thành viên. Bộ phối hợp bắt đầu giao dịch bằng một đa phân phát yêu cầu tới các thành viên. Giao dịch kết thúc bằng cam kết hoặc hủy bỏ giao dịch tùy thuộc vào các tính chất ACID có được đảm bảo hay không. Mọi thành viên phải tán thành quyết định cuối cùng. Một giải pháp cho đòi hỏi tính nguyên tử của giao dịch là cần thường xuyên ngăn cản thao tác của mỗi thành viên cho đến khi đã chắc chắn hoặc được thông báo là mọi thành viên khác đã sẵn sàng làm thao tác đó. Kỹ thuật này tương tự như hai giai đoạn (nhận và phân phát TĐ) trong giao thức hai pha đối với đa phân phát thứ tự toàn bộ trong đoạn 4.1.5. Giao thức cam kết hai pha đối với giao dịch nguyên tử cho cách thức để đạt được tính nguyên tử, tính cô lập và tính bền vững.

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ếtcam 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

quyết địnhKết quảyêu cầuTrả lời- 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 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

0