Giả sử rằng ta có thể xác định một trật tự giữa các sự kiện của hệ phân tán nhờ vào quan hệ có trước được ký hiệu là ; quan hệ này tối thiểu phải thỏa mãn được các ràng buộc sau: Nế
Trang 1ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC BÁCH KHOA
==========
LẬP TRÌNH CHO PHÉP HỆ ĐA SERVER
GẮN BÓ DỮ LIỆU BẰNG PHƯƠNG PHÁP
TRẬT TỰ HÓA
BÁO CÁO TIỂU LUẬN
LẬP TRÌNH MẠNG
ĐỀ TÀI :
Giáo viên hướng dẫn : PGS.TS Lê Văn Sơn
Học viên thực hiện : Phùng Thị Ngọc Dung
Trang 2YÊU CẦU CỦA TIỂU LUẬN
Lập trình cho phép hệ đa Server gắn bó
dữ liệu bằng phương pháp trật tự hóa
Bài toán gồm có 3 phần :
Xây dựng hệ đa Server theo kiểu ngang hàng
có khả năng phát và nhận thông điệp
Xây dựng cấu trúc các loại thông điệp trao đổi giữa các Server
Xây dựng đọan chương trình sắp xếp các thông điệp đến căn cứ vào giá trị đồng hồ logic Lamport
Trang 3TRẬT TỰ HÓA CÁC TÁC ĐỘNG
Với tập hợp giao dịch M = {T1, T2…, Tn}
Mỗi giao dịch được cấu tạo từ một dãy các tác động Bằng các tác động không chia sẻ được này, toàn bộ sự việc thực hiện của tập hợp các giao dịch
M bởi một tập hợp các tiến trình tương tranh là
tương đương với việc thực hiện một dãy S các tác động thuộc các giao dịch này, như S = (a1, a2, ,
an) chẳng hạn
Trong trật tự tuân thủ trật tự nội tại của từng giao dịch, dãy này bao gồm tất cả các tác động cấu tạo
nên các giao dịch M; mỗi tác động chỉ xuất hiện một và chỉ một lần Một dãy như vậy gọi là trật tự
hóa của tập các giao dịch M.
Trang 4TRẬT TỰ HÓA CÁC TÁC ĐỘNG
Ví dụ: Cho T1 = (a11, a12, a13, a14) và T2 = (a21, a22, a23) Một trật tự hóa (T 1 , T 2 ) được thể hiện như sau:
S = a 21 , a 11 , a 12 , a 22 , a 13 , a 23 , a 14
Trong số các trật tự hóa của một tập hợp các giao dịch, điều rất quan trọng là phải tách ra cho được những cái phục vụ trạng thái gắn bó dữ liệu và chúng được gọi là trật tự hóa gắn bó.
Như vậy, đặc tính quan trọng của trật tự hóa là: các trật tự hóa tương ứng với việc thực hiện tuần tự của tập hợp các giao dịch hay còn gọi ngắn gọn là trật tự hóa tuần tự.
Điều kiện đủ cho sự gắn bó của một trật tự hóa có thể được phát biểu như sau: Một trật tự hóa là gắn bó, nếu nó có cùng quan hệ phụ thuộc với một trật tự tuần hoàn.
Trang 5TRẬT TỰ HÓA TRONG HỆ PHÂN TÁN
Trong các hệ thống phân tán, việc đồng bộ hóa chỉ đặt
ra duy nhất vấn đề thiết lập một trật tự giữa các sự kiện Giữa các trạm khác nhau, trật tự đó chỉ có thể thể hiện được thông qua việc trao đổi các thông điệp với nhau
Giả sử rằng ta có thể xác định một trật tự giữa các sự kiện của hệ phân tán nhờ vào quan hệ có trước được ký hiệu là ; quan hệ này tối thiểu phải thỏa mãn được các ràng buộc sau:
Nếu A và B là hai sự kiện của cùng một trạm và nếu A được thực hiện trước B thì theo trật tự cục bộ của
A B
Nếu A là sự kiện phát thông điệp bởi một trạm nào đó
và nếu B là sự kiện thu của thông điệp này, thì ta có
A B
Trang 6ĐỒNG HỒ LOGIC LAMPORT:
Đồng hồ logic Lamport dựa trên hai vấn đề sau:
Các sự kiện xảy ra trong cùng một bộ xử lý thì chúng luôn ở trong trạng thái trật tự gắn bó bằng cách sử dụng đồng hồ hệ thống (thời gian thực) vì giá trị của đồng hồ hệ thống luôn được tăng đều.
Các sự kiện xảy ra trong các bộ xử lý khác nhau thì sẽ gây ra tình trạng không gắn bó trong thời gian truyền thông điệp, nhưng không lâu sau chúng cũng gắn bó vì nếu bộ xử lý Pj gửi thông điệp cho bộ xử lý Pk vào thời gian T thì Pk không thể nhận thông điệp đó vào thời gian T hoặc trước đó.
Trang 7THUẬT TOÁN LAMPORT DỰA TRÊN ĐỒNG HỒ LOGIC
Đặt T là giá trị đồng hồ thực và Cj(T) là giá trị của đồng
hồ logic trong bộ xử lý J tại thời gian T, đồng hồ logic hoạt động theo nguyên tắc sau:
Đánh dấu mỗi sự kiện bằng giá trị đồng hồ logic của
bộ xử lý đó (với C j : Đồng hồ logic của P j, được khởi tạo từ 0)
Nếu có một sự kiện cục bộ xảy ra, thì ta tăng giá trị đồng hồ logic lên 1
Khi một thông điệp được gửi bởi bộ xử lý K, đánh dấu nó bởi Ck(T)
Khi bộ xử lý K nhận một thông điệp có dấu thời gian
là C’ thì ta đặt lại đồng hồ logic của bộ xử lý K là:
Trang 8THUẬT TOÁN LAMPORT DỰA TRÊN ĐỒNG HỒ LOGIC (tt)
Đề tài chỉ quan tâm đến truyền và nhận các thông điệp, nên nếu nhận các thông điệp cùng một thời gian thì căn cứ vào giá trị đồng hồ logic của các thông điệp để thực hiện việc sắp xếp:
a thực hiện trước b nếu
- Ci(a) < Cj(b) hoặc
- Ci(a) = Cj(b) và i < j
Trang 9THUẬT TOÁN LAMPORT DỰA TRÊN ĐỒNG HỒ LOGIC (tt)
Như vậy trong thông điệp ta phải truyền thêm ID của
bộ xử lý (nếu là sắp xếp trong các tiến trình ta phải dùng thêm ID của tiến trình)
Tổng quát cấu trúc thông điệp như sau:
(METHOD, PARAs, C i , i)
Với:
METHOD: là phương thức muốn gọi.
PARAs : là các tham số cần truyền cho phương thức.
C i : giá trị đồng hồ logic của bộ xử lý i.
i : là ID của bộ xử lý (như Server1, Server2…)
Trang 10THUẬT TOÁN SẮP XẾP CÁC THÔNG ĐIỆP ĐẾN CĂN CỨ VÀO
GIÁ TRị CỦA ĐỒNG HỒ LOGIC LAMPORT
Thuật toán được mô tả theo sơ đồ sau :
Khởi tạo hàng đợi, mỗi máy tự phát thông điệp
Mi = (REL, Hinit , i)
Khi trạm đang yêu cầu tài nguyên:
Để truy cập vào tài nguyên một trạm nào đó sẽ phát một thông điệp yêu cầu Mi (T,Hi,i) đến tất cả các trạm khác và đưa yêu cầu vào hàng đợi yêu cầu của trạm này.
Khi trạm j nhận thông điệp yêu cầu từ i, nó sẽ gởi ngược lại thông điệp (có chứa đồng hồ logic Hj) cho Sj và đưa yêu cầu này vào trong hàng đợi yêu cầu của nó.
Trang 11THUẬT TOÁN SẮP XẾP CÁC THÔNG ĐIỆP ĐẾN CĂN CỨ VÀO
GIÁ TRị CỦA ĐỒNG HỒ LOGIC LAMPORT
If state =muon then
Begin
Send M(T,H j ,j) đến trạm i INSERT(M i ,hàngđợi)
End
Trang 12THUẬT TOÁN SẮP XẾP CÁC THÔNG ĐIỆP ĐẾN CĂN CỨ VÀO
GIÁ TRị CỦA ĐỒNG HỒ LOGIC LAMPORT
Khi trạm đang vào đoạn găng: Trạm i nhận một thông điệp với đồng hồ logic lớn hơn đồng hồ ở thời điểm hiện tại của trạm i và yêu cầu của trạm i đang ở vị trí của hàng đợi yêu cầu của nó.
If (H>H i ) and (Vị trí M ở đầu của hàng đợi) then state=namgiu
Khi trạm không thực hiện gì cả
Xoá yêu cầu và gởi thông điệp giải phóng những trạm khác sẽ loại bỏ yêu cầu tương ứng
If state=ranh then xử lý(các thông điệp hàng đợi) ‘sau
đó xoá
Send thông điệp giải phóng đến các trạm
Những trạm khác cũng sẽ xoá yêu cầu của nó trong hàng đợi của mình
Trang 13XÂY DỰNG CHƯƠNG TRÌNH:
hai Server đang chạy trên Internet thực sự Hai Server này có chức năng:
Chứa cơ sở dữ liệu là một tài khoản ngân hàng.
Khi nhận thông điệp:
hiện nó.
trả về kết quả
Giả lập Client trên một cửa sổ khác:
Kết nối với 2 Server
Gửi thông điệp để thay đổi số tiền có trong tài khoản
(thêm tiền và tính lãi suất)
Nhận thông điệp trả về từ các Server cho biết số tiền
hiện có trong tài khoản
Trang 14Demo Chương trình
Trang 15Trân trọng cảm ơn
Thầy và các bạn