tiểu luận môn lập trình mạng 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 - Pdf 25

BỘ GIÁO DỤC & ĐÀO TẠO
ĐẠI HỌC ĐÀ NẴNG

TIỂU LUẬN MÔN HỌC
LẬP TRÌNH MẠNG

Đề tài:
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
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 DungTiểu luận Môn Lập Trình mạng Trang 1
ĐÀ NẴNG 5/2012
LỜI NÓI ĐẦU
Ngày nay hầu hết các ứng dụng tin học đều được xây dựng để thực hiện trên
mạng máy tính, các ứng dụng client-server đang ngày càng được sử dụng phổ biến.
Nhưng khi quy mô và mức độ của các ứng dụng tăng lên và yêu cầu về chất lượng,
tốc độ xử lý và độ phức tạp cũng tăng theo thì trên thực tế, một xu hướng kỹ thuật
mới ra đời – xu hướng phân tán các thành phần tạo nên hệ tin học theo hướng tiếp
cận nơi sử dụng và sản xuất thông tin. Song để khai thác có hiệu quả toàn hệ, vấn đề
quan trọng hàng đầu cần phải tính đến là các tài nguyên nói chung, đặc biệt là tài
nguyên thông tin nói riêng và chiến lược khai thác, sử dụng chúng một cách tối ưu
nhất.
Chiến lược khai thác các tài nguyên dùng chung này là chức năng cũng như
đối tượng nghiên cứu của các hệ tin học phân tán. Trong thực tế, hệ tin học phân tán
với những nguyên lý, phương pháp của nó đã và đang được nhiều người quan tâm
để có thể vận dụng trong quá trình tác nghiệp của mình
Vấn đề truy cập, xử lý thông tin và đảm bảo sự gắn bó dữ liệu trên hệ phân tán

Đây chính là mục tiêu của công nghệ cơ sở dữ liệu phân tán.
Tiểu luận Môn Lập Trình mạng Trang 3
II. Định nghĩa cơ sở dữ liệu phân tán
Một cơ sở dữ liệu phân tán là một tập nhiều cơ sở dữ liệu có liên đới logic và
được phân bố trên một mạng máy tính. Vậy hệ quản trị cơ sở dữ liệu phân tán được
định nghĩa là một hệ thống phần mềm cho phép quản trị các hệ cơ sở dữ liệu phân
tán và làm cho việc phân tán trở nên “vô hình” đối với người sử dụng. Hai thuật
ngữ quan trọng trong định nghĩa này là “liên đới logic’ và “phân bố trên một mạng
máy tính”.
Một hệ cơ sở dữ liệu phân tán (distributed database system, viết tắt là DDBS)
không phải là một “tập các tập tin” lưu riêng lẻ tại mỗi nút của một mạng máy tính.
Để tạo ra một hệ cơ sở dữ liệu phân tán, các tập tin không những có liên đới logic
mà chúng còn phải có cấu trúc và được truy xuất qua một giao diện chung.
Ngoài ra, một hệ cơ sở dữ liệu phân tán không phải là hệ thống trong đó dù có
sự hiện diện của một mạng máy tính, cơ sở dữ liệu chỉ nằm tại một nút của mạng.
Cơ sở dữ liệu này được quản lý tập trung tại một hệ thống máy tính và tất cả mọi
yêu cầu đều chuyển đến vị trí đó. Điều cần xem xét là độ chậm trễ khi truyền dữ
liệu. Tất nhiên sự tồn tại của một mạng máy tính hoặc một tập các tập tin không đủ
để tạo ra một hệ cơ sở dữ liệu phân tán. Điều chúng ta quan tâm là một môi trường
trong đó dữ liệu được phân tán trên một số vị trí.
Trong hệ thống cơ sở dữ liệu phân tán, cơ sở dữ liệu chứa trong vài máy tính.
Các máy tính liên lạc với nhau qua nhiều phương tiện truyền thông, như bus tốc độ
Tiểu luận Môn Lập Trình mạng Trang 4
cao hay đường điện thoại. Chúng không chia sẻ bộ nhớ chính, cũng không dùng
chung đồng hồ.
Các bộ xử lý trong hệ thống phân tán có kích cỡ và chức năng khác nhau.
Chúng có thể gồm các bộ vi xử lý, trạm làm việc, máy tính mini, hay các máy tính
lớn vạn năng. Những bộ xử lý này được gọi tên là các trạm, nút, máy tính và cả
những tên tùy theo ngữ cảnh riêng.
Trong hệ thống cơ sở dữ liệu phân tán gồm nhiều trạm, mỗi trạm có thể khai

Sai sót của trạm cần được hệ thống phát hiện, cần có hành động thích hợp để
hồi phục dữ liệu. Hệ thống không tiếp tục sử dụng trạm bị hư mà đợi sau khi sửa
xong, trạm này được gắn tích hợp vào hệ thống.
Dù việc khôi phục sai sót trong cơ sở dữ liệu phân tán là phức tạp hơn so với
cơ sở dữ liệu tập trung, khả năng hầu hết các hệ thống là tiếp tục làm việc khiến cho
tính sẵn sàng tăng lên. Tính sẵn sàng là khó đạt được trong cơ sở dữ liệu thời gian
thực.
Tiểu luận Môn Lập Trình mạng Trang 6
Ví dụ : Trong hệ thống bán vé máy bay, việc không truy nhập được vào các dữ
liệu như việc không kịp đăng ký chỗ cho các chuyến bay sẽ gây tổn hại đến uy tín
và lượng khách hàng của hãng hàng không.
I.1.3.Tăng tốc xử lý các truy vấn
Nếu một câu hỏi yêu cầu dữ liệu trên vài trạm, có thể tách câu hỏi này ra các
câu hỏi nhỏ để có thể khai thác song song tại nhiều trạm. Tính toán song song như
thế cho phép trả lời câu hỏi nhanh hơn. Trong trường hợp này, các trạm đều có một
bản sao dữ liệu, câu hỏi được hệ thống trả lời tại trạm nào có chi phí rẻ hơn cả.
I.2. Các nhược điểm của việc phân tán dữ liệu
Nhược điểm đầu tiên của hệ thống cơ sở dữ liệu phân tán là việc tăng thêm sự
phức tạp khi xử lý phân tán. Phức tạp tăng lên dưới các dạng sau:
- Giá phát triển phần mềm: Do các khó khăn khi cài đặt một hệ thống phân
tán, giá thành sẽ tăng lên.
- Dễ mắc lỗi hơn: Vì các trạm trong hệ phân tán làm việc song song, khó có
thể đảm bảo thuật toán được thực hiện đúng trên tất cả các trạm. Do vậy
mà số lỗi sẽ tăng lên. Các thuật toán phù hợp với cơ sở dữ liệu phân tán
còn đang được nghiên cứu.
- Khối lượng các xử lý tăng: Hệ thống phân tán cần truyền nhiều thông báo,
nhiều tính toán phụ. Do vậy khối lượng xử lý tăng lên so với hệ thống tập
trung. Khi chọn thiết kế hệ thống cơ sở dữ liệu, người thiết kế cần phải cân
đối các ưu điểm và nhược điểm của việc phân tán các dữ liệu. Có dải rộng
các thiết kế rất phân tán đến các hệ thống tập trung.

trạm, số lượng tiền của tài khoản này trên các trạm phải như nhau.
Nhìn chung, việc dùng các bản sao làm tăng hiệu quả của phép đọc, tăng tính
sẵn sàng trong giao tác đọc dữ liệu. Vấn đề điều khiển các phép cập nhật tương
tranh của những giao thức trong trường hợp dữ liệu có các bản sao trong hệ thống
phân tán là phức tạp hơn việc điều khiển trong hệ thống tập trung. Việc quản lý có
thể được đơn giản hóa bằng cách chọn ra một bản sao gọi là bản sao sơ cấp của
quan hệ R.
Ví dụ: Trong hệ thống ngân hàng, một tài khoản gắn với trạm mà tài khoản đó
yêu cầu mở. Tại trạm này, tài khoản có dữ liệu như bản sao sơ cấp. Trong hệ thống
đặt chỗ máy bay, dữ liệu gắn với chuyến bay tại trạm mà chuyến bay xuất phát sẽ
được xem là bản sao sơ cấp.
Tiểu luận Môn Lập Trình mạng Trang 8
CHƯƠNG III
SỰ GẮN BÓ DỮ LIỆU TRONG CƠ SỞ DỮ LIỆU PHÂN
TÁN
I. Tác động và giao dịch
Các đối tượng khác nhau của hệ không phải là các đối tượng độc lập nhau,
chúng quan hệ với nhau bởi tập hợp các quan hệ gọi là các ràng buộc toàn vẹn. Các
ràng buộc này thể hiện sâu sắc các đặc tính riêng biệt của hệ.
Trạng thái của hệ thoả mãn một tập các ràng buộc toàn vẹn gọi là trạng thái
gắn bó.
Các nhà thiết kế và vận hành hệ mong muốn rằng việc thực hiện các tiến trình
phải duy trì cho được hệ trong trạng thái gắn bó. Để chính xác hoá đặc tính này, cần
phải lưu ý là trạng thái của hệ chỉ được xác định ở mức quan sát cho trước.
Ta quan tâm đến hai mức quan sát:
STT Mức Giải thích
1 NSD
Tiến trình là một dãy thực hiện các giao dịch.
Giao dịch đó là chương trình duy nhất được thực hiện từ
một trạng thái gắn bó dẫn hệ đến một trạng thái gắn bó

bảo cho các tác động không bị ngắt quãng.
II. Trật tự hóa các tác động
Trở lại với tập hợp giao dịch M = {T
1
, T
2
…, T
n
} cho ở phần trước. 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 = (a
1
, a
2
, , a
n
) 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.
Ví dụ: Cho T
1
= (a
11
, a
12
, a
13

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.
III. Triển khai giao dịch tôn trọng sự gắn bó
Cho một tập hợp giao dịch M={T
1
, T
2
…, T
n
}. Một trật tự hóa của tập hợp các
tác động thành phần sẽ tương ứng với việc thực hiện hoàn toàn các giao dịch. Việc
thu được một trật tự hóa gắn bó chỉ có thể thành công khi áp dụng các ràng buộc
trên trật tự thực hiện các tác động. Nguyên lý của phương pháp là ở chỗ làm chậm
một tác động nào đó cho đến thời điểm mà sự thực hiện của nó không còn có nguy
cơ phá hủy sự gắn bó của trật tự hóa (bằng cách chặn tiến trình hiện hành).
Để đảm bảo các giao dịch trên tôn trọng sự gắn bó thông tin thì người ta đưa
ra các phương pháp, cơ chế để đảm bảo khi giao dịch vẫn có sự gắn bó thông tin
toàn vẹn dữ liệu trên cơ sở dữ liệu phân tán là:
Tiểu luận Môn Lập Trình mạng Trang 10
 Cơ chế then cài: Cho phép một giao dịch có thể giải phóng đối tượng
mà nó đã cài then.
 Loại trừ tương hỗ: Nếu ta biết trước các đối tượng được xử lý bởi một
giao dịch nào đó, thì ta có thể cài then công việc truy cập đến các đối

2 Nếu có sự cố xảy ra thì phải quay lại điểm xuất phát.
Muốn thực hiện những điều vừa nêu ở trên, người ta đòi hỏi giao dịch phải có
các đặc tính toàn vẹn như sau:
STT Phải thực hiện
1
Nếu một tiến trình bị sự cố trước khi kết thúc T nhưng lại sau các
thao tác thay đổi cần thiết của T, trạng thái của hệ là gắn bó.
2
Nếu một tiến trình bị sự cố trước khi diễn ra các thay đổi của T,
trạng hái của hệ là gắn bó.
3
Nếu một tiến trình bị sự cố giữa các thay đổi của T, trạng thái của
hệ là không gắn bó.
Nếu dữ liệu được phân tán trên nhiều server, để bảo đảm dữ liệu sẽ được ghi
lên đúng đắn lên mọi cơ sở dữ liệu, đòi hỏi phải có các cơ chế bảo vệ dữ liệu. Ví dụ
như việc cập nhật bảng cân đối tài khoản khách hàng ở ba cơ sở dữ liệu khác nhau.
Nếu có sự cố kết nối xảy ra trong thời gian ghi giao dịch, cơ sở dữ liệu sẽ mất tính
đồng bộ. Xử lý giao dịch khắc phục tình trạng này bằng cách giám sát những thay
đổi tác động lên các cơ sở dữ liệu liên quan nhằm bảo đảm toàn vẹn dữ liệu một khi
có sự cố.
IV. Quản lý gắn bó các giao dịch
Bây giờ ta hãy xem xét một hệ, trong đó các đối tượng được phân tán trên
nhiều trạm, không có bản sao mỗi đối tượng chỉ tồn tại có một bản duy nhất. Một
giao dịch T
j
có thể tham chiếu đến các đối tượng nằm trên các trạm khác nhau và do
vậy gồm nhiều tác động thực hiện trên nhiều trạm. Như vậy ta phải xác định trên
một trạm S
i
một tiến trình P

2. 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ý P
j
gửi thông điệp cho bộ xử lý P
k
vào
thời gian T thì P
k
không thể nhận thông điệp đó vào thời gian T hoặc trước
đó.
Tuy nhiên, vấn đề là thời gian thực trên mỗi hệ thống không đồng bộ, đặc
biệt trong hệ phân tán, nó khó giữ được đồng hồ hệ thống chung giữa tất cả các tiến
trình đang sắp xếp. Trong trường hợp như vậy, đồng hồ logic có thể được dùng để
biểu thị thứ tự thông tin cho các sự kiện, đồng hồ logic Lamport là khái niệm cơ bản
để sắp xếp các tiến trình và các sự kiện trong hệ phân tán.
Tiểu luận Môn Lập Trình mạng Trang 13
I.2. Thuật toán Lamport dựa trên đồng hồ logic:
Đặt T là giá trị đồng hồ thực và C
j
(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:
1. Đá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).
2. 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.

nghĩa. Thêm vào đó, để cho một trạm có thể ra quyết định bằng việc tham chiếu duy
Tiểu luận Môn Lập Trình mạng Trang 14
nhất vào hàng đợi của mình, nó còn cần phải được nhận một thông điệp của từng
trạm khẳng định rằng không có thông điệp nào trước các thông điệp khác mà đang
quá cảnh trên đường.
Giả sử :
1. Trạm i của mạng có thể gửi cho các trạm khác thông điệp có dạng
(T, H
i
, i), trong đó H
i
là dấu của thông điệp có nghĩa là đồng hồ logic
của nó và T có thể nhận một trong ba giá trị REQ, REL, và ACQ.
Ba giá trị này xác định bản chất của ba loại thông điệp khác nhau
STT Thông điệp Giải thích
1 REQ
Thông điệp REQ được phát đi cho tất cả các trạm, khi
trạm i muốn vào trong đoạn găng
2 REL
Thông điệp REL được phát đi cho tất cả các trạm, khi
trạm i đã rời khỏi đoạn găng
3 ACQ
Thông điệp ACQ được gửi bởi trạm j cho trạm j đã nhận
được từ trạm i thông điệp REQ.
2. Khi có một thông điệp được gởi đi bởi trạm i đồng thời nó cũng được
ghi trong hàng đợi của trạm này.
Giả sử rằng mỗi hàng đợi ban đầu chứa các thông điệp :
Trong đó, i, H
init
là thời điểm khởi sự giống nhau cho tất cả các trạm.

Begin
Send M(T,H
j
,j) đến trạm i
INSERT(M
i
,hàngđợi)
End
+ 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.
II. Giải quyết bài toán:
II.1. Giả lập 02 Server và 01 Client:
Phần này tôi chọn lập trình Client/Server bằng Socket của Java để mô phỏng:
- 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:
o Chứa cơ sở dữ liệu là một tài khoản ngân hàng.
Tiểu luận Môn Lập Trình mạng Trang 16
M

return c;
}
public void tick() {
c = c + 1;
}
public void sendAction() {
c = c + 1;
}

public void receiveAction(int sentValue) {
if(sentValue > c)
Tiểu luận Môn Lập Trình mạng Trang 17
c = sentValue + 1;
else
c = c + 1;
}
}
II.2.2. Message.java
Module chứa thông tin và các phương thức của các thông điệp trao đổi giữa
các Server.
import java.net.*;
import java.io.*;
public class Message implements Serializable{
// Phuong thuc muon goi
private String method = "";
// Tham so truyen cho phuong thuc
private String param = "";
// ID cua bo xu ly
private String ID = "";
// Port cua may

}
public void setLamport(Lamport lamport){
this.lamport = lamport;
}
}
II.2.3. Hàm thực hiện sắp xếp các thông điệp trên hàng đợi
dựa theo đồng hồ Lamport
// Sap xep cac message trong hang doi dua theo dong ho Lamport
private void sort(Vector queue){
Message tmp = new Message();
for(int i=0; i < queue.size() -1; i++)
for(int j=i+1; j < queue.size(); j++)
if(((Message)queue.get(j)).getLamport().getValue() >
((Message)queue.get(i)).getLamport().getValue())
{
tmp = (Message)queue.get(j);
queue.setElementAt(queue.get(i), j);
queue.setElementAt(tmp,i);
}
}
Tiểu luận Môn Lập Trình mạng Trang 19
KẾT LUẬN
Một trong các tiêu chí đặt ra trong việc phát triển các chương trình ứng dụng
hiện nay, là phải hoạt động hiệu quả trên môi trường mạng, đáp ứng được các yêu
cầu của đối tượng sử dụng. Đòi hỏi các nhà thiết kế hệ thống, người lập trình phải
có tư duy và khả năng và nắm bắt kịp thời các công nghệ ứng dụng trong lập trình
mạng .
Qua quá trình nghiên cứu bài giảng của thầy giáo PGS.TS Lê Văn Sơn và
các tài liệu liên quan để áp dụng thực hiện tiểu luận này, tôi đã hiểu được rõ thêm
bản chất của hệ tin học phân tán, nhất là quá trình gắn bó dữ liệu bằng phương pháp


Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status