tiểu luận môn lập trình mạng mô phỏng quá trình phát nhận thông điệp trong hệ phân tán - Pdf 25

BỘ GIÁO DỤC VÀ ĐÀO TẠO
ĐẠI HỌC ĐÀ NẴNG

TIỂU LUẬN
LẬP TRÌNH MẠNG
Đề tài: MÔ PHỎNG QUÁ TRÌNH PHÁT NHẬN THÔNG ĐIỆP TRONG
HỆ PHÂN TÁN
Giáo viên hướng dẫn : PGS.TS LÊ VĂN SƠN
Học viên : ĐẶNG NGỌC THẮNG
Chuyên ngành : Khoa Học Máy Tính
Đà Nẵng - Năm 2012
LỜI MỞ ĐẦU
Thế kỷ 21 được đánh giá là thế kỷ của thời đại Công nghệ thông tin. Các thành
tựu của ngành khoa học trí tuệ này đã góp phần quan trọng vào việc thay đổi bộ mặt
thế giới cả về bề mặt lẫn chiều sâu, nó đưa con người trên khắp thề giới tìm được
tiếng nói chung, đó là tiếng nói của Công nghệ thông tin. Và việc ứng dụng các thành
tựu của nền Công nghệ hiện đại này trở thành vấn đề chủ chốt quyết định sự thành bại
của các thành phần tham gia vào lĩnh vực hoạt động trên thế giới từ kinh tế, văn hoá,
chính trị đến quân sự , đó chính là việc các thành phần này sẽ sử dụng nền Công
nghệ này như thế nào và xử lí chúng ra sao.
Ngày nay vấn đề đặt ra cho các nhà tin học là làm sao có thể khai thác một cách
có hiệu quả nguồn thông tin của nhân loại. Mặc khác, các nguồn thông tin lại nằm rải
rác trên các Server ở khắp nơi và việc liên hệ trao đổi thông điệp được giữa các
server đều thông qua đường truyền.
Trong giới hạn của một báo cáo tiểu luận kết thúc môn học, nội dung của bài báo cáo
“Hãy viết chương trình mô phỏng quá trình phát và nhận thông điệp trong hệ phân tán”, tôi
xin trình bày phần nội dung sau:
Phần lí thuyết: nhằm đưa ra cơ lý thuyết cơ bản về hệ phân tán và lập trình phân
tán trên nền ngôn ngữ Java.
Phần bài tập:
- Xây dựng hệ thống 3 server có khả năng phát nhận thông điệp.

V.Giải thuật loại trừ tương hỗ 15
.V.1.Giới thiệu giải thuật 15
.V.2.Kiểm nghiệm giải thuật 16
CHƯƠNG II 17
LẬP TRÌNH PHÂN TÁN 17
I.Mô hình Client-Server 17
.I.1.Giới thiệu 17
.I.2. Client 18
.I.3.Server 18
II.Mạng máy tính phân tán 19
III.Các điểm mạnh trong hệ phân tán 19
IV.Giới thiệu phương thức triệu gọi đối tượng từ xa RMI (Remote Method
Invocation) 20
.IV.1.Triệu gọi phương thức từ xa 20
.IV.2.Kiến trúc RMI Java 21
CHƯƠNG 3 24
TRIỂN KHAI CHƯƠNG TRÌNH 24
I.Bài toán đặt ra 24
II.Hướng giải quyết 24
III.Thuật toán Lamport 24
.III.1.Các giả định 24
.III.2.Các kiểu thông điệp 24
.III.3.Các biến tiến trình 25
.III.4.Thuật toán 25
.III.5.Nhận xét 25
IV.Kết quả Demo chương trình 26
27
CHƯƠNG IV 28
KẾT LUẬN 28
I.Đánh giá kết quả đã thực hiện 28

tán là đối tượng chủ yếu có nhu cầu tài nguyên phần cứng hay phần mềm để
thực hiện các lệnh của mình. Tiến trình cần tài nguyên để phát triển. Về nguyên
tắc, tất cả các tiến trình và tài nguyên được cung cấp là các đối tượng ở xa.
o Các nguyên lý của hệ tập trung có thể nghiên cứu và áp dụng cho các tiến trình
phân tán như dự phòng và chống bế tắc, chống xung đột,
o Khi tiến trình được cung cấp tài nguyên có thể nó thực hiện ngay, nếu nó là đối
tượng được gửi đến từ trước trên bộ xử lý (máy) cục bộ hoặc phải gửi đối tượng
là tiến trình qua hệ thống đường truyền.
o Việc cung cấp tài nguyên cho các tiến trình có thể thực hiện theo 2 cách trong
hệ phân tán :
 Thông qua hệ thống cung cấp chung cho toàn hệ như
Controllor/Allocator.
 Thông qua Allocator cục bộ trên Server/Workstation bằng cách tham
chiếu vào bảng trạng thái, ảnh của thông tin toàn cục.
HVTH: Đặng Ngọc Thắng Trang 5
GVHD: PGS.TS Lê Văn sơn Tiểu luận Lập trình mạng
II. Đồng bộ hóa các tiến trình
Đồng bộ hoá tiến trình được hiểu như là quá trình điều khiển tạo nên sự ăn khớp
với nhau giữa tất cả các tiến trình khác nhau giúp cho hệ phân tán hoạt động nhịp
nhàng, tin cậy và phòng tránh các sự cố kỹ thuật.
.II.1. Vấn đề tương tranh và hợp lực
Trong tất cả các hệ thống tin học, ta cần phải nghiên cứu các công cụ đủ mạnh và
hiệu quả để có thể đồng bộ hóa các tiến trình. Tính cấp thiết về mặt nguyên lý và kỹ
thuật của vấn đề này thể hiện ở hai nguyên do cơ bản sau đây:
1. Các tiến trình kể cả các tiến trình xuất phát từ các ứng dụng độc lập muốn
truy cập vào các tài nguyên với số lượng rất hạn chế hay truy cập vào thông
tin dùng chung cùng một lúc gây nên hiện tượng truy cập tương tranh.
Tương tranh là nguyên nhân chính của các xung đột giữa các tiến trình
muốn truy cập vào các tài nguyên dùng chung.
2. Các tiến trình của cùng một hệ ứng dụng hoạt động theo kiểu hợp lực để

Các mũi tên hai chiều được sử dụng để mô tả dòng ra vào.
Trong bài toán này chúng ta nhận thấy :
- Bãi đậu xe chính là tài nguyên
- Xe chính là các tiến trình
- Nếu một cửa là tập trung còn nhiều của sẽ diến ra tranh chấp
 Tình huống thứ 1 :
Ta giả sử rằng bãi để xe ô tô là loại bãi lớn có một cổng vào dưới sự kiểm soát
của một người bảo vệ (NBV) duy nhất. NBV chỉ biết được một phần của trạng thái bãi
để xe. Trong khi anh ta nghĩ rằng bãi để xe đã bị đầy, khi đó lại có nhiều lái xe đang
cho xe chạy ra cổng. Vì suy nghĩ như vây, trong trường hợp này, anh ta không giải
quyết được cho các xe khác tiếp tục được vào bãi nữa, mặc dù lúc này trong bãi đang
có chổ trống, như vậy, NBV không nắm được trạng thái hiện hành của bãi.
 Tình huống thứ 2 :
Nếu ta có bãi để xe có nhiều cổng vào và tại mỗi cổng có một người bảo vệ thì
mỗi người bảo vệ chỉ có thể biết được trạng thái với độ trễ nhất định và điều đó đãn
đến tình huống thứ 2. Đó là tình huống có nhiều trung tâm ra quyết định như trong
hình vẽ trên.
Trên thực tế một người bảo vệ nào đó tin rằng không còn chỗ trống nữa, trong
khi một người bảo vệ khác lại vừa mới cho ra khỏi bãi một số xe mà anh ta chưa kịp
báo cho các người bảo vệ khác. Cũng có thể diễn ra trường hợp là cùng một lúc các
người bảo vệ giải quyết các xe vào cùng một vị trí trong bãi do vì họ thiếu thông tin.
HVTH: Đặng Ngọc Thắng Trang 7
VT
VT
VT
VT
VT
VT
VT
VT

Trật tự
xử lý
Bảo vệ 1 Bảo vệ 2 Bảo vệ 3 Bảo vệ 4
Thông
điệp
Giá
Trị
Thông
điệp
Giá
Trị
Thông
điệp
Giá
Trị
Thông
điệp
Giá
Trị
100 100 100 100
1 M1 120 M2 90 M3 90 M1 120
2 M3 108 M3 81 M1 110 M2 110
3 M2 118 M1 101 M2 100 M3 99
Trong bài toán quản lý bãi đỗ xe việc không gắn bó dữ liệu luôn luôn xảy ra ở
các trạm nếu không có một cơ chế để thực hiện đồng bộ hoá các tiến trình (cho phép
các ô tô vào bãi đậu theo một trình tự). Khi thực hiện phân tán chức năng cung cấp
trên nhiều trạm khác nhau (các bảo vệ) sự hoạt động gắn bó với nhau giữa các chương
trình cung cấp là rất cần thiết để đảm bảo cho hoạt động cung cấp hoàn toàn chính xác.
Trên cơ sở phân tích bài toán ở trên chúng ta nhận thấy vấn đề không gắn bó dữ liệu
trên các hệ phân tán cần phải có cách giải quyết thích hợp.

→ A
4
→ A
5
B
1
→ B
2
→ B
3
→ B
4
 Trao đổi thông tin
A
1
→ B
2
và B
3
→ A
4
 Chuyển qua
A
1
→ A
2
→ B
2
→ B
3

4
→ A
5
A
1
→ A
2
→ B
2
→ B
3
→ A
4
→ A
5
Ví dụ về các sự kiện không so sánh
B
1
và A
1
, A
2
, A
3
A
3
và B
2
, B
3

đã nêu lên trong H4 ở trên. Ngoài ra còn giả sử rằng hiện tượng gây sự cố trên một
trạm chỉ làm cho trạm đó không liên lạc được với mạng mà hoàn toàn không ảnh
hưởng đến sự hoạt động của các trạm còn lại hoặc ít nhất là một nhóm các trạm khác.
.II.5. Trật tự tổng quát chặt chẽ
Trong một số trường hợp cần phải sắp xếp toàn bộ theo kiểu chặt chẽ các sự kiện
của hệ liên quan trực tiếp đến việc cung cấp các tài nguyên. Nguyên lý của vấn đề
được khái quát như sau. Một tiến trình nào đó gởi thông điệp để yêu cầu sử dung tài
nguyên; một tiến trình sử dụng xong tài nguyên nào đó truyền một thông tin giải
phóng khi nó ngừng chiếm dụng.
II.5.1. Cung cấp tập trung
Hiện tại, trong các hệ thống tập trung, mỗi một loại tài nguyên của hệ được
quản lý bởi một chương trình cung cấp duy nhất, goi là bộ cung cấp tài nguyên.
Chương trình này tiếp tục nhận tất cả các yêu cầu, khuyến nghị giải phóng và sắp xếp
HVTH: Đặng Ngọc Thắng Trang 10
3
.
a
P
(a

c) - bắc cầu -

b
Q

c
2
.
.
a

III. Sắp xếp kiểu đóng dấu
.III.1. Đồng hồ logic
Đối với nhiều ứng dụng, các sự kiện không cần lập lịch hay đồng bộ đối với
thời gian thực. Nó chỉ là thứ tự sự kiện hoạt động liên quan. 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, đặc
biệt trong hệ phân tán, nó khó giữ được đồng hồ vật lý chung giữa tất cả các tiến trình
đang sắp xếp. Đồ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.
.III.2. Minh họa trật tự từng phần
Trong thực tế một số hệ thống
khi đồng bộ hóa chỉ đòi hỏi trật tự từng
phần. Chính vì vậy, trật tự hóa từng
phần giữa các sự kiện mà tiến trình của
nó cần phải đồng bộ là vấn đề cần phải
quan tâm .
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” (→) hay “ở ngay
trước”:
Trật tự các sự kiện được xác định dựa
trên các nguyên tắc sau:
HVTH: Đặng Ngọc Thắng Trang 11
GVHD: PGS.TS Lê Văn sơn Tiểu luận Lập trình mạng
1. Nếu A và B là hai sự kiện của cùng một trạm và A xảy ra trước B thì ta có
A→B (trật tự cục bộ).
2. Nếu A là phát thông điệp từ một trạm nào đó và B là nhận thông điệp thì ta có
A→B. (nhân-quả)
3. Nếu A→B và B→C, thì A→C. (bắc cầu)
Sơ đồ của “có trước”:
- a → b : chúng ta có thể đi từ a đến b theo sơ đồ bằng cách di

GVHD: PGS.TS Lê Văn sơn Tiểu luận Lập trình mạng
Để thực thi các đồng hồ thỏa mãn Điều kiện Đồng hồ, ta có thể áp dụng thuật
toán đóng dấu thời gian.
IV. Đồng bộ hóa theo một trật tự tổng quát chặt chẽ
Trong các hệ thống tập trung, mỗi loại tài nguyên được quản lý bởi một chương
trình cung cấp duy nhất. Chương trình này tiếp nhận tất cả các yêu cầu, khuyến nghị
giải phóng và sắp xếp chúng trong một hàng đợi xử lý theo kiểu loại trừ tương hỗ.
Trong các hệ phân tán, chương trình cung cấp nằm trên một trạm và các tiến
trình đề nghị từ các trạm khác. Các yêu cầu, khuyến nghị giải phóng được truyền cho
chương trình cung cấp thông qua hình thức thông điệp chuyển theo các kênh của hệ
thống viễn thông. Chính vì vậy, nhu cầu sắp xếp các yêu cầu này theo một trật tự nhất
định nào đó luôn được đặt ra.
Trật tự từng phần chỉ có thể áp dụng cho một số hệ thống, điều này có nghĩa là
một số hệ thống có thể gắn bó được thông qua việc sắp xếp các sự kiện theo trật tự
bằng quan hệ “có trước”. Tuy nhiên có rất nhiều hệ phân tán các sự kiện không thể sắp
được bằng trật tự từng phần, do vậy phải cần đến trật tự chặt chẽ (=>) của các sự kiện.
Nếu chỉ có một thông điệp đến chương trình cung cấp thì trật tự đến thể hiện một
trật tự chặt chẽ. Ngước lại, việc sắp xếp chúng phải theo kiểu loại trừ tương hỗ cho
hàng đợi cục bộ của trạm có chứa chương trình cung cấp. Điều đó cũng chi phép có
được một trật tự chắt chẽ.
.IV.1. Cấu trúc trật tự tổng quát chặt chẽ
Lamport định nghĩa trật tự chặt chẽ dựa trên quan hệ “có trước”, nó gán cho mỗi
trạm một số duy nhất và sau đó sử dụng số này để lập trật tự cho các sự kiện không sắp
xếp được thứ tự bằng quan hệ “có trước”.
o Trật tự nhất quán của các sự kiện phát
o Định dạng thông điệp từ Pi: (m, Tm, i)
o Tại tiến trình Pi, một sự kiện phát (m, Tm, j) từ Pj được gọi là có
trước sự kiện phát (n, Tn, k) từ Pk nếu :
Nếu T
m

o Khi nhận được thông điệp m, trạm nhận r cập nhật đồng hồ Cr
riêng theo (bằng cách lấy giá trị của thông điệp vừa nhận cộng thêm 1) :
Cr = Tm + 1 (điều này đảm bảo tính nhân-quả theo trật tự từng phần)
Trật tự sự kiện toàn bộ: Một sự kiện a sinh ra trên trạm i được đánh dấu bởi đồng
hồ cục bộ Ci , nếu a và b là hai sự kiện trên hai trạm i và j ta quan hệ sau:
HVTH: Đặng Ngọc Thắng Trang 14

a
C
i
C
i
+1

a
C
i
C
i
+1
(T
m
= C
e
(a) )

P
j
C
r

để cho một trạm có thể ra quyết định bằng việc tham chiếu duy 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.
Thuật toán loại trừ tương hỗ được mô tả theo các bước sau:
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, Hi, i),
trong đó Hi 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. 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. Theo cấu trúc, hàng đợi luôn
luôn chứa một thông điệp và chỉ thường trực trong mỗi trạm, bao gồm trạm cục bộ.
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.
3. Trên mỗi trạm, khi nhận được một thông điệp dạng (REQ, Hi, i) hay (REL,
Hi, i), thông điệp này thay thế thông điệp Mi bất chấp nó là gì. Khi nhận thông điệp
loại (ACQ, Hi, i), thông điệp này thay thế Mi ngoại trừ nếu Mi là một yêu cầu mà

.I.1. Giới thiệu
Mô hình Client/Server là mô hình tổ chức trao đổi thông tin trong đó mô tả cách
mà các máy tính có thể giao tiếp với nhau theo một phương thức nhất định. Phương
thức này là một chiến lược tổ chức phân cấp mà trong đó có một máy tính đặc biệt
phục vụ các yêu cầu về lưu trữ, xử lý, tính toán tất cả các máy trên mạng. Kiểu tổ chức
tổng quát của mô hình này là một mạng LAN được thiết lập từ nhiều máy tính khác
nhau, trong đó một máy tính gọi là Server. Một chương trình client chạy từ bất kỳ máy
tính nào trong mạng cũng có thể gởi yêu cầu của mình đến Server, khi server nhận
được các yêu cầu này thì nó sẽ thực hiện và gởi kết quả về cho Client.
Hình 5. Mô hình Client/Server
Có nhiều mô hình được sử dụng trong các chương trình mạng nhưng mô hình
Client/Server là mô hình chuẩn. Một Server là một quá trình, quá trình này chờ sự liên
hệ từ một Client. Một phiên làm việc điển hình của mô hình này như sau:
 Phía Client gởi một yêu cầu thông qua mạng đến Server để yêu cầu một số
dạng dịch vụ nào đó như lấy tên máy Server, lấy đồng hồ hệ thống, đăng ký
cấp bằng …
 Phía Server được khởi động trước trên hệ thống máy tính. Sau khi khởi động
nó sẽ chờ Client liên hệ nó để yêu cầu một số dịch vụ. Quá trình của Server
thành chia ra 2 kiểu:
 Khi chỉ có một yêu cầu của Client được Server phục vụ tại một
thời điểm thì gọi đó là Server lặp.
 Khi Server có thể phục vụ đồng thời nhiều yêu cầu từ Client gởi
đến gọi đó là Server đồng thời.
Client/Server là mô hình tổng quát nhất, trên thực tế thì một Server có thể được
nối tới nhiều Server khác nhằm làm việc hiệu quả hơn. Khi nhận được một yêu cầu từ
Client, Server này có thể gửi tiếp yêu cầu vừa nhận được cho Server khác ví dụ như
Database Server vì bản thân nó không thể xử lý yêu cầu này được. Máy Server có thể
thi hành các nhiệm vụ đơn giản hoặc phức tạp.
HVTH: Đặng Ngọc Thắng Trang 17
GVHD: PGS.TS Lê Văn sơn Tiểu luận Lập trình mạng

hoạt động chính là sự kết hợp giữa Client và Server với sự chia sẻ tài nguyên, dữ liệu
trên cả hai máy.
Trong mô hình Client/Server, Client được coi như là người sử dụng các dịch vụ
trên mạng do một hoặc nhiều máy chủ cung cấp và Server được coi như là người cung
cấp dịch vụ để trả lời các yêu cầu của các Clients. Điều quan trọng là phải hiểu được
vai trò hoạt động của nó trong một mô hình cụ thể, một máy Client trong mô hình này
lại có thể là Server trong một mô hình khác. Ví dụ cụ thể như một máy trạm làm việc
như một Client bình thường trong mạng LAN nhưng đồng thời nó có thể đóng vai trò
như một máy in chủ (printer server) cung cấp dịch vụ in ấn từ xa cho nhiều người khác
(Clients) sử dụng. Client được hiểu như là bề nổi của các dịch vụ trên mạng, nếu có
thông tin vào hoặc ra thì chúng sẽ được hiển thị trên máy Client.
.I.3. Server
Server còn được định nghĩa như là một máy tính nhiều người sử dụng
(multiuser computer). Vì một Server phải quản lý nhiều yêu cầu từ các Client trên
mạng cho nên nó hoạt động sẽ tốt hơn nếu hệ điều hành của nó là đa nhiệm với các
HVTH: Đặng Ngọc Thắng Trang 18
GVHD: PGS.TS Lê Văn sơn Tiểu luận Lập trình mạng
tính năng hoạt động độc lập song song với nhau như hệ điều hành UNIX,
WINDOWS Server cung cấp và điều khiển các tiến trình truy cập vào tài nguyên của
hệ thống.
Các ứng dụng chạy trên Server phải được tách rời nhau để một lỗi của ứng
dụng này không làm hỏng ứng dụng khác. Tính đa nhiệm đảm bảo một tiến trình
không sử dụng toàn bộ tài nguyên hệ thống. Server như là một nhà cung cấp dịch vụ
cho các Clients yêu cầu tới khi cần, các dịch vụ như cơ sở dữ liệu, in ấn, truyền file, hệ
thống Các ứng dụng Server cung cấp các dịch vụ mang tính chức năng để hỗ trợ cho
các hoạt động trên các máy Clients có hiệu quả hơn.
II. Mạng máy tính phân tán
Hệ thống tính toán phân tán đã tạo được bước ngoặt vĩ đại so với các hệ tập
trung và hệ khách chủ (Client/Server). Việc tính toán phân tán về cơ bản cũng giống
như việc tính toán của hệ khách chủ trên phạm vi rộng lớn. Dữ liệu được chứa trên

sẽ dùng để lưu trữ các dữ liệu di sản hoặc đóng vai trò kho dữ liệu (data warehouse).
HVTH: Đặng Ngọc Thắng Trang 19
GVHD: PGS.TS Lê Văn sơn Tiểu luận Lập trình mạng
Cơ chế nầy giúp xây dựng các trung tâm dữ liệu staging (công bố), phục vụ tốt cho
việc truy cập. Người dùng ở xa có thể truy cập dữ liệu trên hệ staging hay tại các máy
chủ cục bộ. Người dùng còn có thể trao đổi thông tin với nhau bằng thư điện tử và
hình thành các nhóm công tác.
IV. Giới thiệu phương thức triệu gọi đối tượng từ xa RMI (Remote
Method Invocation)
Ngày nay, cộng đồng những người lập trình bắt đầu nghĩ rằng “đối tượng có ở
mọi nơi”. Những đối tượng này, tất nhiên được hỗ trợ để trao đổi được với nhau theo
những giao thức chuẩn trên mạng. Ví dụ, bạn có một đối tượng ở máy trạm (máy
khách - Client), ở đó người sử dụng cần phải điền dữ liệu vào mẫu báo cáo. Đối tượng
này (đối tượng khách) có thể gửi một thông điệp (thỉnh cầu) cho đối tượng trên máy
chủ (đối tượng phục vụ - Server) trên mạng để yêu cầu cung cấp các thông tin cần
thiết. Đối tượng trên máy chủ truy nhập vào các CSDL để có được những thông tin mà
khách yêu cầu và gửi lại cho đối tượng khách. Đó chính là ý tưởng của Java-RMI,
phương thức lập trình triệu gọi từ xa. Lập trình phân tán đối tượng bằng cách triệu gọi
phương thức từ xa RMI là cách hợp tác giữa các đối tượng Java có những mã lệnh cài
đặt (bao gồm các phương thức và thuộc tính) nằm trên các máy khác nhau (chính xác
là nằm trên các JVM – máy ảo Java khác nhau) và có thể triệu gọi lẫn nhau để trao đổi
tin.
Trong mô hình Client/Server truyền thống, các yêu cầu được dịch sang một
format (dạng) trung gian (dạng từng cặp tên gọi / giá trị hoặc các dữ liệu trong XML).
Máy chủ Server phân tích format yêu cầu, xử lý để có được kết quả và gửi trả lời cho
máy khách Client. Máy khách phân tích format trả lời và hiển thị thông tin cho người
sử dụng.
.IV.1. Triệu gọi phương thức từ xa
Cơ chế triệu gọi từ xa có vẻ đơn giản hơn mô hình Client/Server. Nếu ta cần
truy cập tới một đối tượng ở trên một máy khác thì ta chỉ cần triệu gọi phương thức

thống tạo ra theo yêu cầu. Các lớp này chặn các lời gọi phương thức của
chương trình khách (Client) tới các biến tham chiếu và gửi tới dịch vụ triệu gọi
từ xa. Lớp Skeleton liên lạc với Stub thông qua liên kết RMI. Nó đọc các tham
số của lời triệu gọi từ xa từ một liên kết nào đó, thực hiện lời gọi tới đối tượng
thực thi dịch vụ từ xa và sau đó gửi các giá trị trả lại cho Stub. Trong Java 2
SDK, các giao diện mới được xây dựng đã làm cho Skeleton lỗi thời. RMI sử
dụng phép ánh xạ để thực hiện việc kết nối tới các đối tượng dịch vụ từ xa thay
cho Skeleton.
 Tầng tham chiếu từ xa là tầng tiếp theo. Tầng này dịch và quản lý các tham
chiếu tới các đối tượng dịch vụ từ xa. Ở JDK1.1, tầng này thực hiện két nối
theo cơ chế điểm – tới - điểm. Đến Java 2 SDK, tầng này được cải tiến để nâng
cao việc hỗ trợ để kích hoạt các đối tượng dịch vu từ xa đang chờ thực hiện
thông qua ROA, đó là cách kết nối Client/Server.
HVTH: Đặng Ngọc Thắng Trang 21
Stub & Skeleton
Tham chiếu từ xa
Stub & Skeleton
Tham chiếu từ xa
Tầng giao vận
Chương trình
khách
Chương trình
chủ
Hệ thống
RMI
Kiến trúc ba tầng của RMI
GVHD: PGS.TS Lê Văn sơn Tiểu luận Lập trình mạng
 Tầng giao vận dựa trên kết nối TCP/IP giữa các máy tính trong mạng. Ngay cả
khi hai chương trình chạy trên hai JVM trong cùng một máy, chúng cũng thực
hiện kết nối thông qua TCP/IP của chính máy đó. Tầng giao vận RMI được

 Tập hợp kết quả để trả lời hoặc thông báo các lỗi ngoại lệ
 Gửi trả lời gói các dữ liệu kết quả cho Stub ở trên máy khách.
HVTH: Đặng Ngọc Thắng Trang 22
GVHD: PGS.TS Lê Văn sơn Tiểu luận Lập trình mạng
Hình trên mô tả quá trình tổ chức gói các tham số, các dữ liệu trả lời và sự trao
đổi giữa các đối tượng trung gian trong kỹ thuật triệu gọi từ xa.
HVTH: Đặng Ngọc Thắng Trang 23
Computer A

A1
A2
B1_stub
C1_
stub
Computer B
B1_skel
B1
Computer C
C1
C1_
skel
GVHD: PGS.TS Lê Văn sơn Tiểu luận Lập trình mạng
CHƯƠNG 3
TRIỂN KHAI CHƯƠNG TRÌNH
I. Bài toán đặt ra
Xây dựng chương trình sắp xếp các thông điệp đến và xử lý đoạn găng với đa
Server có khả năng phát và nhận thông điệp.
II. Hướng giải quyết
Sử dụng thuật toán loại trừ tương hỗ để giải quyết yêu cầu của bài toán. Nguyên
lý của phương pháp này được khái quát như sau:

HVTH: Đặng Ngọc Thắng Trang 24
GVHD: PGS.TS Lê Văn sơn Tiểu luận Lập trình mạng
o (REP, Ci, i) : Hồi âm từ tiến trình Pi cho tiến trình Pj khi Pi nhận
được yêu cầu từ Pj.
o (REL, Ci, i) : Thông điệp giải phóng từ Pi thông báo cho biết nó
đã rời khỏi CS. Thông điệp này được gửi cho tất cả các tiến trình khác.
.III.3. Các biến tiến trình
o Ci : Đồng hồ cục bộ của Pi, khởi tạo từ 0.
o qi : Hàng đợi [0 … n-1] chứa các thông điệp.
.III.4. Thuật toán
o Khi một tiến trình tại trạm Si muốn thi hành đoạn găng, nó sẽ gửi
thông điệp REQ có đánh dấu thời gian cho tất cả các trạm trong hệ thống.
o Mỗi trạm Si duy trì một hàng đợi chứa các thông điệp yêu cầu
được sắp xếp theo trật tự các dấu thời gian; các đồng hồ logic và quan hệ
trật tự toàn bộ được sử dụng để gắn các dấu thời gian.
o Khi một trạm nhận được yêu cầu, nó sẽ đưa thông điệp đó vào
hàng đợi yêu cầu của nó theo thứ tự dấu thời gian và gửi một thông điệp trả
lời REP. Nếu cần, quan hệ trật tự toàn bộ được sử dụng để phá vỡ các sự
ràng buộc.
o Ý tưởng chung là một tiến trình không thể thi hành đoạn găng của
nó cho đến khi nó nhận được trả lời từ tất cả các trạm khác.
o Tóm lại, một trạm thi hành miền găng của nó khi:
 Nhận được thông điệp trả lời từ tất cả các trạm còn lại.
 Và yêu cầu REQ của nó là ở trên đỉnh của hàng đợi cục bộ của
nó.
o Khi một trạm hoàn thành miền găng của nó, nó sẽ gửi khuyến
nghị giải phóng REL đến tất cả các trạm. Yêu cầu của nó được loại khỏi tất
cả các hàng đợi tại thời điểm này. Nếu các trạm khác đang chờ để thi hành
miền găng của chúng, một trong các trạm đó bây giờ có thể bắt đầu thực
hiện miền găng của mình.


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