Tải bản đầy đủ (.doc) (21 trang)

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

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (427.1 KB, 21 trang )

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 Dung


Tiể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


đã được nghiên cứu trong hàng loạt các công trình. Trong phạm vi tiểu luận của
mình, tôi thực hiện những vấn đề sau:
Phần I: Cơ sở lý thuyết, bao gồm 3 chương. Mục đích tìm hiểu về Cơ sở dữ
liệu trên hệ phân tán, cấu trúc của CSDL phân tán và sự gắn bó dữ liệu trên hệ đa
Server bằng phương pháp trật tự hóa.
Phần II: Bài tập ứng dụng. Trình bày về thuật toán Lamport và xây dựng
chương trình sắp xếp các thông điệp đến dự trên đồng hồ Lamport.
Tôi xin chân thành Cám ơn TS. Lê Văn Sơn đã giảng dạy, hướng dẫn, cung
cấp tài liệu để cho tôi nắm vững được kiến thức môn học này.
Tiểu luận Môn Lập Trình mạng Trang 2
PHẦN I: CƠ SỞ LÝ THUYẾT
CHƯƠNG I
GIỚI THIỆU VÀI NÉT VỀ HỆ CƠ SỞ DỮ LIỆU PHÂN TÁN
I. Giới thiệu
Công nghệ về các hệ cơ sở dữ liệu phân tán (distributed database system,
DDBS) là sự hợp nhất của hai hướng tiếp cận đối với quá trình xử lý dữ liệu: Công
nghệ cơ sở dữ liệu và công nghệ mạng máy tính. Các hệ cơ sở dữ liệu chuyển từ mô
thức xử lý dữ liệu, trong đó mỗi ứng dụng định nghĩa và duy trì dữ liệu của riêng
chúng sang mô thức quản lý và xử lý dữ liệu tập trung. Hướng đi này dẫn đến tính
độc lập dữ liệu, nghĩa là các ứng dụng được miễn nhiệm đối với những thay đổi về
tổ chức logic hoặc vật lý của dữ liệu và ngược lại.
Một trong những động lực thúc đẩy việc sử dụng hệ cơ sở dữ liệu là nhu cầu
tích hợp các dữ liệu hoạt tác của một xí nghiệp và cho phép truy xuất tập trung, nhờ
vậy có thể điều khiển được các truy xuất đến dữ liệu, còn công nghệ mạng đi ngược
lại với mọi nổ lực tập trung hóa. Nhìn thoáng qua chúng ta khó hình dung ra làm
cách nào tiếp cận hai hướng trái ngược nhau để cho ra một công nghệ mạnh mẽ và
nhiều hứa hẹn hơn so với từng công nghệ riêng lẻ. Mấu chốt của vấn đề là cần phải
hiểu rằng, mục tiêu quan trọng nhất của công nghệ cơ sở dữ liệu là sự tích hợp
không phải sự tập trung hóa, cũng cần phải hiểu rằng hai thuật ngữ có được điều
này không dẫn đến điều kia. Và vẫn có thể tích hợp mà không cần tập trung hóa.

Đâ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

thác các giao thức truy nhập dữ liệu trên nhiều trạm khác. Sự khác nhau chính giữa
hệ thống cơ sở dữ liệu phân tán và tập trung là: trong hệ thống tập trung, dữ liệu lưu
trữ tại chỗ, còn phân tán thì không.
Tiểu luận Môn Lập Trình mạng Trang 5
CHƯƠNG II
CƠ SỞ DỮ LIỆU PHÂN TÁN VÀ THIẾT KẾ CƠ SỞ DỮ
LIỆU PHÂN TÁN
I. Cơ sở dữ liệu phân tán:
Có nhiều lý do để xây dựng cơ sở dữ liệu phân tán, như chia sẻ thông tin, tăng
độ tin cậy, tăng tốc độ truy cập thông tin. Tuy nhiên, sử dụng hệ thống phân tán
phải trả giá phát triển phần mềm, khó khăn hơn khi sửa lỗi dữ liệu và lỗi hệ thống.
I.1. Các ưu điểm của việc phân tán dữ liệu
Trước tiên hệ thống cơ sở dữ liệu phân tán có ưu điểm cho phép dùng chung
dữ liệu theo cách hiệu quả và tin cậy.
I.1.1.Chia sẻ dữ liệu và điều khiển phân tán
Nếu một số trạm nối nhau, người dùng tại một trạm có thể khai thác dữ liệu
trên trạm kia. Thí dụ nếu không có hệ thống phân tán, việc chuyển tiền qua tài
khoản phải thực hiện qua cơ chế trung gian.
Tiến bộ thứ nhất này cho phép chia sẻ dữ liệu theo nghĩa mỗi trạm vẫn có mức
độ ưu tiên về điều khiển dữ liệu cục bộ. Trong hệ thống tập trung, người quản trị cơ
sở dữ liệu của trạm trung tâm điều khiển các hoạt động xử lý của cơ sở dữ liệu.
Trong hệ thống phân tán, cũng có người quản trị bao quát chung toàn hệ thống. Một
phần của trách nhiệm này trao lại cho người quản trị địa phương tại trạm. Phụ thuộc
vào thiết kế của hệ thống mà người này có độ tự trị riêng. Khả năng tự trị địa
phương được xem là ưu điểm chính của cơ sở dữ liệu phân tán.
I.1.2.Tin cậy và sẵn sàng
Nếu một trạm trong cơ sở dữ liệu phân tán bị hỏng, các trạm còn lại vẫn có
khả năng tiếp tục công việc. Cụ thể, nếu dữ liệu sao chép trên nhiều trạm, mỗi giao
tác cần dữ liệu cụ thể có thể tìm trên trạm khác. Do vậy hư hỏng một trạm không
gây sụp đổ cả hệ thống.

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.

- Những vấn đề về cập nhập và quản lý bản sao dữ liệu.
- Xử lý các truy vấn phức tạp hơn.
- Thiết kế và quản trị Cơ sở dữ liệu phức tạp hơn.
II. Thiết kế các cơ sở dữ liệu phân tán
Phần này tập trung vào các thiết kế dùng cho cơ sở dữ liệu phân tán. Giả sử
quan hệ R được lưu trữ trong cơ sở dữ liệu. Có vài lý do yêu cầu lưu quan hệ này
trong hệ thống phân tán.
- Các bản sao: Hệ thống bảo trì vài bản sao như nhau của quan hệ. Mỗi
quan hệ được lưu tại một trạm.
- Các phần nhỏ: Quan hệ tách thành các phần nhỏ. Mỗi phần được lưu trên
một trạm.
Tiểu luận Môn Lập Trình mạng Trang 7
- Bản sao và phần nhỏ: Đây là hình thức tổ hợp của hai dạng vừa nêu.
Quan hệ tách thành nhiều phần. Hệ thống có nhiều bản sao của mỗi phần,
trên các trạm khác nhau.
Nếu quan hệ R được sao lại, một bản sao của R được lưu trong hai hay nhiều
trạm. Trong trường hợp cực đoan, tại mỗi trạm đều có một bản sao. Một vài ưu
điểm và nhược điểm của việc sao này.
- Tính sẵn sàng: Nếu một trạm chứa quan hệ R bị hư, quan hệ R có thể
được tìm trên trạm khác. Do vậy, hệ thống cần tiếp tục câu hỏi về quan hệ
R dù xảy ra hư hỏng trên một trạm.
- Tính song song tăng lên: Trong trường hợp đa số truy nhập quan hệ R chỉ
là đọc dữ liệu, một vài trạm yêu cầu R có thể xử lý song song. Càng nhiều
bản sao càng tăng khả năng sẵn sàng của dữ liệu. Hơn nữa, việc tăng các
bản sao làm giảm số lượng thông tin cần truyền giữa các trạm.
- Phức tạp tăng lên khi tiến hành cập nhật: Hệ thống cần đảm bảo tất cả
các bản sao của quan hệ R là chặt chẽ, tức thỏa mãn các điều kiện toàn
vẹn, trừ khi xảy ra sai sót. Điều này có nghĩa khi một bản sao được cập
nhật, phép xử lý này cần được thực hiện trên tất cả các trạm có chứa bản
sao của R. Chẳng hạn trong hệ thống ngân hàng, khi tài khoản có trên các

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ó

khác.
2 Hệ thống
Mỗi giao dịch được cấu tạo từ nột dãy các tác động được
thể hiện như sau. Nếu 2 tác động A và B thuộc hai giao
dịch khác nhau được thực hiện bởi hai tiến trình thì hiệu
ứng tổng quát của chúng sẽ là hiệu ứng của dãy (A;B) hoặc
là (B;A)
Ở mức hệ thống, ta có thể nói rằng các tác động là phần tử nhỏ nhất không thể
chia cắt được nữa.
Cho một tập hợp giao dịch M={T
1
, T
2
…, T
n
} lần lượt được thực hiện bởi các
tiến trình độc lập p
1
, p
2
,…,p
n
. Việc thực hiện tuần tự có nghĩa là thực hiện tất cả các
giao dịch của M theo kiểu nối đuôi nhau và tuân thủ một trật tự nào đó. Sự gắn bó
của hệ được bảo toàn, theo định nghĩa, bằng việc thực hiện riêng biệt từng giao
dịch. Do vậy, nó cũng được bảo toàn trong chế độ thực hiện tuần tự của M.
Tiểu luận Môn Lập Trình mạng Trang 9
Nếu, vì lý do hiệu quả, nhiều giao dịch được thực hiện song song, thì sự gắn
bó không còn đảm bảo được nữa.
Một yêu cầu khác nữa rất quan trọng là trong quá trình thực hiện hệ phải đảm

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

, a
14
) và T
2
= (a
21
, a
22
, a
23
). 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.
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

tượng.
 Then cài lựa chọn đối tượng: Một giao dịch thay đổi giá trị của đối
tượng phải loại trừ tất cả các đối tượng khác muốn truy cập, ngược lại
thì việc truy cập được tiến hành theo kiểu tương tranh.
 Giao dịch hai pha: 1. Toàn bộ đối tượng bị cài then vẫn ở trong tình
trạng cài then cho đến cuối giao dịch và 2. Không có then cài nào có
thể diễn ra tiếp theo một then cài khác trong cùng một giao dịch.
Bây giờ ta tưởng tượng rằng các đối tượng được phân tán trên nhiều trạm khác
nhau và được nối với nhau thông qua hệ thống viễn thông và rằng các tiến trình
diễn ra trên các trạm khác nhau. Hệ thống viễn thông cho phép các tiến trình trên
các trạm khác nhau có thể trao đổi các thông điệp với nhau. Ta giả định rằng các
tiến trình và các phương tiện truyền thông là các đối tượng có thể rơi vào sự cố.
Một hệ quản lý tập hợp thông tin phân tán bao gồm:
STT Cơ chế
1
Cơ chế cho phép sắp xếp một cách tổng quát các tác động của
cùng một giao dịch, ngay cả khi các tác động này diễn ra trên các
trạm khác nhau.
2
Cơ chế điều khiển các tranh chấp truy cập cục bộ vào các đối
tượng đảm bảo tôn trọng tính toàn vẹn của các đối tượng truy cập
cục bộ này.
3
Cơ chế có khả năng xử lý các bế tắc và thiếu thốn vô hạn, hậu quả
của việc hủy bỏ các giao dịch.
4 Cơ chế phục hồi các giao dịch đã hủy bỏ hay xử lý các sự cố.
Tiểu luận Môn Lập Trình mạng Trang 11
Cơ chế xử lý sự cố
STT Phải thực hiện
1 Giao dịch T bắt buộc phải thực hiện một cách trọn vẹn

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

ji
với nhiệm vụ thực hiện các tác động giao dịch T
j
trên
S
i
, các tác động được thực hiện trên các trạm khác nhau có thể tiến hành theo kiểu
song song.
Các phương pháp để quản lý gắn bó các giao dịch như: Phương pháp dự
phòng để chống bế tắc, phương pháp dựa vào việc hạn chế các khả năng diễn ra
bằng cách phát hiện bế tắc có tính chất động, điều đó dẫn đến hủy bỏ các giao dịch.
Tiểu luận Môn Lập Trình mạng Trang 12
PHẦN II: BÀI TẬP ỨNG DỤNG
CHƯƠNG I
BÀI TOÁN ỨNG DỤ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.
Bài toán gồm có 2 phần chính sau:
1. Xây dựng đa Server theo kiểu ngang hàng có khả năng phát và nhận
thông điệp.
2. Xây dựng cấu trúc các loại thông điệp trao đổi giữa các Server.
3. Xây dựng đoạn 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.
CHƯƠNG II
CƠ SỞ LÝ THUYẾT VÀ THUẬT TOÁN
I. Cơ sở lý thuyết:
I.1. Đồng hồ logic Lamport:
Đồng hồ logic Lamport dựa trên hai vấn đề sau:
1. 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.

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.

3. Khi một thông điệp được gửi bởi bộ xử lý K, hãy đánh dấu nó bởi
C
k
(T).
4. 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.
Đề 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:
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:
o METHOD: là phương thức muốn gọi.
o PARAs: là các tham số cần truyền cho phương thức.
o C
i
: giá trị đồng hồ logic của bộ xử lý i.
o i: là ID của bộ xử lý (như Server1, Server2…).
I.3. Xây dựng cấu trúc của thông điệp giữa các Server:
Phân tán thuật toán Lamport kéo theo việc phân tán các chức năng cung cấp
mà cần phải điều khiển hàng đợi trên trạm. Do vậy, một trạm chuyên cho việc tiếp
nhận các yêu cầu và các khuyến nghị giải phóng từ các trạm còn lại. Một trật tự
giống nhau trên các trạm chỉ đạt được, nếu ta áp dụng dấu trong các thông điệp
bởi các đồng hồ logic truyền và đánh số trạm. Quan hệ trật tự toàn bộ được định

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.

Mỗi trạm quản lý một hàng đợi các thông điệp được sắp xếp hoàn toàn bởi
quan hệ ⇒ theo cặp <thời gian, số> của từng thông điệp. dùng biến trạng thái
State để sắp xếp (State =muon : đang yêu cầu tài nguyên, state=namgiu : đang sử
dụng tài nguyên, State=ranh : rãnh)
I.4. 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
Tiểu luận Môn Lập Trình mạng Trang 15
M
i
= (REL, H
init
, i)
+ Khi trạm đang yêu cầu tài nguyên:
o Để 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.
o 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 =muon then

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

i
= (REL, H
init
, i)
o 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ó.
o Sau khi thực hiện 1 thông điệp, Server sẽ tự động trả về kết quả.
Để mô phỏng cho cách làm việc trên mạng của Server ta sẽ mở hai cửa sổ
dòng lệnh, mỗi cửa sổ được dùng làm một Server.
- Giả lập Client trên một cửa sổ khác:
o Kết nối với 2 Server
o 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).
o 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.
II.2. Một số mã chương trình quan trọng:
II.2.1. Lamport.java
Module chứa thông tin và các phương thức của đồng hồ logic.
import java.net.*;
import java.io.*;
public class Lamport implements Serializable{
private int c;
public Lamport() {
c = 0;
}
public int getValue() {

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

private int port = 0;
// Dong ho Lamport cua Message
private Lamport lamport = null;
public String getMethod(){
return method;
}
public void setMethod(String method){
this.method = method;
}
public String getParam(){
return param;
}
public void setParam(String param){
this.param = param;
}
public String getID(){
return ID;
}
public void setID(String ID){
this.ID = ID;
}
public int getPort(){
return port;
}
public void setPort(int port){
this.port = port;
}
public Lamport getLamport(){
return lamport;
Tiểu luận Môn Lập Trình mạng Trang 18

}
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

trật tự hóa trên hệ thống đa Server thông qua việc gửi và nhận thông điệp giữa
Client/Server, giữa các Server.
Nội dung tiểu luận đã khái quát sơ lược lý thuyết về hệ Cơ sở dữ liệu phân
tán, sự gắn bó dữ liệu bằng phương pháp trật tự hóa, các kỹ thuật lập trình phân tán
trong ngôn ngữ lập trình Java. Xây dựng giao diện trao đổi thông điệp giữa Client
và hai server, từ đó xây dựng các Client/Server có monitoring theo dõi quá trình gửi
và nhận thông điệp trực tiếp trong panel.
Do một số hạn chế của bản thân: Lần đầu tiếp cận với kỹ thuật lập trình
mạng, bị chi phối bởi tư duy lập trình thủ tục cho ứng dụng trên máy đơn. Nên kết
quả nghiên cứu chưa thoả mãn mong muốn đặt ra của bản thân và cũng có lẽ chưa
làm hài lòng Thầy giáo đã tận tình chỉ dạy. Mong nhận được sự chia sẻ của Thầy
giáo và các bạn.
Tiểu luận Môn Lập Trình mạng Trang 20
TÀI LIỆU THAM KHẢO
1. Lê Văn Sơn (2002), Hệ phân tán, Nhà xuất bản Đại học quốc gia TP. Hồ
Chí Minh.
2. Nguyễn Phương Lan, Hoàng Đức Hải (2001), Java lập trình mạng, Nhà xuất
bản Giáo dục.
3. Nima Kaveh, Wolfgang Emmerich, “Deadlock Detection in Distributed
Object Systems”.
4. Các tài liệu trên internet.
5.
Tiểu luận Môn Lập Trình mạng Trang 21

×