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
BÁO CÁO TIỂU LUẬN
LẬP TRÌNH MẠNG
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
2
YÊ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.
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.
4
TRẬT TỰ HÓA CÁC TÁC ĐỘNG
Ví dụ: Cho T
1
= (a
11
, a
12
, a
13
, a
14
) và T
2
= (a
21
, a
22
, a
23
). Một
trật tự hóa (T
1
, T
2
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
trạm ta có:
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.
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
, đượ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 C
k
(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à:
max(C’, C
k
(T)) + 1.
8
THUẬ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
-
C
i
(a) < C
j
(b) hoặc
THUẬ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
M
i
= (REL, H
init
, 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 M
i
(T,H
i
,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 H
j
)
cho S
j
và đưa yêu cầu này vào trong hàng đợi yêu
cầu của nó.
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.
13
XÂY DỰNG CHƯƠNG TRÌNH:
Giả lập hai Server trên một máy đơn giống 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:
Server sẽ cập nhật giá trị đồng hồ logic của chính.
Lưu thông điệp vào hàng đợi.
Sắp xếp lại hàng đợi.
Lấy thông điệp ở đầu hàng đợi ra khỏi hàng đợi và thực
hiện nó.
Sau khi thực hiện 1 thông điệp, Server sẽ tự động
trả về kết quả.