2.2 Giới thiệu giải thuật loại trừ tương hỗ Loại trừ tương hỗ có thể được điều khiển trên một trạm trung tâm có nhiệm vụ nhận tất cả các thông điệp và khuyến nghị giải phóng.. Một trật t
Trang 21
MỤC LỤC i
LỜI MỞ ĐẦU iii
CHƯƠNG 1 1
BẾ TẮC VÀ PHƯƠNG PHÁP PHÒNG TRÁNH BẾ TẮC TRONG HỆ TIN HỌC PHÂN TÁN 1
1 Khái niệm bế tắc 1
2 Phương pháp phòng tránh bế tắc 1
2 Phương pháp phòng tránh bế tắc 1
2.1 Sắp xếp kiểu đóng dấu 1
2.1 Sắp xếp kiểu đóng dấu 1
2.1.1 Đồng hồ logic 2
2.1.2 Minh họa trật tự từng phần 2
2.1.3 Gắn thời gian lôgic với các sự kiện 3
2.2 Giới thiệu giải thuật loại trừ tương hỗ 3
2.2 Giới thiệu giải thuật loại trừ tương hỗ 3
2.3 Kiểm nghiệm giải thuật 5
2.3 Kiểm nghiệm giải thuật 5
CHƯƠNG 2 7
LẬP TRÌNH PHÂN TÁN 7
1 Mô hình Client-Server 7
1 Mô hình Client-Server 7
1.1 Giới thiệu 7
1.1 Giới thiệu 7
1.2 Client 8
1.2 Client 8
1.3 Server 9
1.3 Server 9
2 Mạng máy tính phân tán 9
2 Mạng máy tính phân tán 9
3 Các điểm mạnh trong hệ phân tán 9
3 Các điểm mạnh trong hệ phân tán 9
4 Giới thiệu phương thức triệu gọi đối tượng từ xa RMI (Remote Method Invocation) 10
4 Giới thiệu phương thức triệu gọi đối tượng từ xa RMI (Remote Method Invocation) 10
4.1 Triệu gọi phương thức từ xa 10
Trang 34.2 Kiến trúc RMI Java 11
CHƯƠNG 3 15
XÂY DỰNG CHƯƠNG TRÌNH TRAO ĐỔI THÔNG ĐIỆP VỀ TRẠNG THÁI CUNG CẤP TÀI NGUYÊN GIỮA 5 SERVER 15
1 Hướng giải quyết 15
1 Hướng giải quyết 15
2 Thuật toán Lamport 15
2 Thuật toán Lamport 15
2.1 Các giả định 15
2.1 Các giả định 15
2.2 Các kiểu thông điệp 15
2.2 Các kiểu thông điệp 15
2.3 Các biến tiến trình 16
2.3 Các biến tiến trình 16
2.4 Thuật toán 16
2.4 Thuật toán 16
2.4 Nhận xét 16
2.4 Nhận xét 16
3 Kết quả Demo chương trình 17
3 Kết quả Demo chương trình 17
1 Đánh giá kết quả đã thực hiện 19
2 Hạn chế 19
3 Hướng phát triển ứng dụng 19
TÀI LIỆU THAM KHẢO 20
Trang 4Các mô hình tin học phân tán đã và đang là xu hướng chủ đạo trong công nghệ thông tin trong một thời gian, ít nhất là từ hai thập kỉ gần đây Tin học phân tán là cơ
sở tạo ra mạng môi trường tin học để đạt được việc sử dụng, thực thi máy tính hữu ích hơn, và nhờ đó có thể tiến xa hơn nữa Điều đó có nghĩa là có rất nhiều loại mô-đun khác nhau của một ứng dụng cần tích hợp với nhau để xem chúng như một ứng dụng dính liền Về cơ bản, có hai phần trong mô hình tin học phân tán, một khách (client) và một chủ (server), chạy trên các máy khác nhau trên mạng.
Cách chạy của một hệ phân tán phần lớn được xác định bởi sự sử dụng những chính sách nguyên thủy và luồng đồng bộ hóa middleware nằm bên dưới Trạng thái tự nhiên song song vốn có của các hệ phân tán có thể gây ra một số vấn đề, như những sự
Trang 6Ví dụ như hình vẽ sau đây:
T4 T3
Tr1 Tr2 Tr3
Hình 2 Đồ thị cung cấp tài nguyên bị bế tắcHình 2 cho phép chúng ta hình dung vấn đề một cách rõ ràng hơn Theo hình vẽ này, ta có 4 tài nguyên T1,T2, T3, T4 và có ba tiến trình nhu cầu tài nguyên là Tr1, Tr2, và
Tr3 Cả 3 tiến trình này đang ở tình trạng bế tắc Tiến trình Tr2 chờ tài nguyên T3 do Tr3
đang chiếm giữ Tiến trình Tr3 chờ tài nguyên T2 được giải phóng bởi Tr1 trạm Tr3 Thêm vào đó, tiến trình Tr1 chờ tiến trình Tr2 giải phóng T1
Lúc này, ta thấy có 2 chu trình kín trong đồ thị là:
Trang 7Trật tự các sự kiện được xác định dựa
trên các nguyên tắc sau:
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
p3 p4
q1 q2 q3 q4 q5
r1 r2 r3 r4
Trang 8- a → b : chúng ta có thể đi từ a đến b theo sơ đồ bằng cách di chuyển về phía trước theo thời gian dọc theo các đường tiến trình và thông điệp.
o Ví dụ : p1 → r4 (a tác động nhân quả đến b)
- Hai sự kiện là hợp lực nếu chúng có tác động nhân quả với nhau
o Ví dụ : p3 và q3 là hợp lực Cho dù q3 xảy ra tại thời điểm vật lý sớm hơn p3 , tiến trình P không biết tiến trình Q đã làm gì tại thời điểm q3 cho đến khi nó nhận được thông điệp tại thời điểm p4
2.1.3 Gắn thời gian lôgic với các sự kiện
Các đồng hồ lôgic: gán một số cho mỗi sự kiện cục bộ
Hệ thống các đồng hồ lôgic phải chính xác :
Điều kiện đồng hồ :
Để 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
2.2 Giới thiệu giải thuật loại trừ tương hỗ
Loại trừ tương hỗ có thể được điều khiển trên một trạm trung tâm có nhiệm vụ nhận tất cả các thông điệp và khuyến nghị giải phóng Trạm này duy trì một hàng đợi, sắp xếp các yêu cầu theo trật tự đến và phục vụ cho từng thông điệp một trong trật tự này
Phân tán giải thuật này 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
∀ sự kiện a,b : nếu a → b thì C(a) < C(b)
Trang 9yêu cầu và các khuyến nghị giải phóng từ tất cả các trạm còn lại Một trật tự giống nhau trên tất cả các trạm chỉ đạt được, nếu ta áp dụng dấu trong các thông điệp bởi đồng hồ
lô gích truyền và đánh số các 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 nhất vào hàng đợi của mình, nó còn cần phải 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à còn đang quá cảnh trên đường
Thuật toán loại trừ tương hỗ có thể mô tả theo sơ đồ sau đây
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ồ lô gích 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:
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 i, khi trạm j đã
nhận 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ỉ một 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, Hinit 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
M i = (REL,H init ,i)
Trang 10đ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à trong trường hợp đó ACQ bị bỏ qua Do vậy, ta có thể tiết kiệm việc gởi đi thông điệp ACQ cho trạm i khi trạm này đã gởi một thông điệp REQ và không còn thông điệp REL.
4 Trạm i được truyền vào đoạn găng khi thông điệp REQ của nó đến trước theo nghĩa của quan hệ ⇒ tất cả các thông điệp khác trong hàng đợi của nó Cần nhắc lại
rằng hàng đợi chứa một thông điệp loại này trên một trạm
2.3 Kiểm nghiệm giải thuật
Các yêu cầu vào đoạn găng được xử lý theo trật tự FIFO và theo quan hệ ⇒ Để chứng minh điều đó, ta lưu ý rằng khi trạm i quyết định vào đoạn găng, nó không thể
đưa vào trong mạng yêu cầu nào trước bối cảnh sau Thực tế, khi trạm i vào đoạn găng
có nghĩa là nó đã nhận thông điệp từ tất cả các trạm khác và tất cả các thông điệp đều sau thông điệp REQ của riêng nó.
Ta kiểm tra các đặc tính sau đây:
1 Trạm i đang ở trong đoạn găng là trạm duy nhất nằm trong đoạn găng ấy Thực tế cho thấy thông điệp REQ được phát bởi i vẫn tiếp tục tồn tại trong tất cả các hàng đợi cho đến khi nó được thay thế bởi thông điệp REL
2 Trạm đã yêu cầu vào đoạn găng phải đảm bảo thời hạn và phải ra khỏi đoạn găng sau một khoảng thời gian xác định Thuật toán thể hiện tính đồng đều và tránh được tổn thất
Trang 12CHƯƠNG 2 LẬP TRÌNH PHÂN TÁN
1 Mô hình Client-Server
1.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
đặ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 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ư
Trang 13Database 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.
Ví dụ như một máy chủ trả lời thời gian hiện tại trong ngày, khi một máy Client yêu cầu lấy thông tin về thời gian nó sẽ phải gửi một yêu cầu theo một tiêu chuẩn do Server định ra, nếu yêu cầu được chấp nhận thì máy Server sẽ trả về thông tin mà Client yêu cầu Có rất nhiều các dịch vụ Server trên mạng nhưng nó đều hoạt động theo nguyên lý là nhận các yêu cầu từ Client sau đó xử lý và trả kết quả cho client yêu cầu Thông thường chương trình Server và Client được thi hành trên hai máy khác nhau Cho dù lúc nào Server cũng ở trạng thái sẵn sàng chờ nhận yêu cầu từ Client nhưng trên thực tế một tiến trình liên tác qua lại (interaction) giữa Client và Server lại bắt đầu ở phía Client, khi mà Client gửi tín hiệu yêu cầu tới Server Các chương trình Server thường đều thi hành ở mức ứng dụng (tầng ứng dụng của mạng)
Sự thuận lợi của phương pháp này là nó có thể làm việc trên bất cứ một mạng máy tính nào có hỗ trợ giao thức truyền thông chuẩn cụ thể ở đây là giao thức TCP/IP Với các giao thức chuẩn này cũng giúp cho các nhà sản xuất có thể tích hợp nhiều sản phẩm khác nhau của họ lên mạng mà không gặp phải khó khăn gì Với các chuẩn này thì các chương trình Server cho một dịch vụ nào đấy có thể thi hành trên một hệ thống chia sẻ
thời gian (timesharing system) với nhiều chương trình và dịch vụ khác hoặc nó có thể
chạy trên chính một máy tính các nhân bình thường Có thể có nhiều chương Server cùng làm một dịch vụ, chúng có thể nằm trên nhiều máy tính hoặc một máy tính
1.2 Client
Trong mô hình Client/Server, người ta còn định nghĩa cụ thể cho một máy Client là một máy trạm mà chỉ được sử dụng bởi một người dùng với để muốn thể hiện tính độc lập cho nó Máy Client có thể sử dụng các hệ điều hành bình thường như Win9x, DOS, OS/2
Bản thân mỗi một Client cũng đã được tích hợp nhiều chức năng trên hệ điều hành
mà nó chạy, nhưng khi được nối vào một mạng LAN, WAN theo mô hình Client/Server thì nó còn có thể sử dụng thêm các chức năng do hệ điều hành mạng cung cấp với nhiều dịch vụ khác nhau (cụ thể là các dịch vụ do các Server trên mạng này cung cấp), ví dụ như nó có thể yêu cầu lấy dữ liệu từ một Server hay gửi dữ liệu lên Server đó Thực tế trong các ứng dụng của mô hình Client/Server, các chức nă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)
Trang 14sử 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.
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
2 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ặc 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 nhiều máy chủ ở tại nhiều vị trí địa lý khác nhau kết nối nhau thông qua mạng diện rộng WAN hình thành các nơi làm việc, các phòng ban, các chi nhánh của một cơ quan
Tính toán phân tán hình thành từ tính toán tập trung và chient/server Các mạng được xây dựng dựa trên kỹ thuật Web (ví dụ như: Internet; intranet…) là các mạng phân tán Hệ thống cơ sở dữ liệu back-end có thể được nối kết với các server Web để lấy được các thông tin động Kỹ thuật Web nầy đã mở ra hướng mới cho hệ phân tán Các trình duyệt Web giúp cho khách hàng trên toàn cầu kết nối với hệ thống Web chủ, mà không bị khống chế bởi bất kỳ hệ điều hành nào đang chạy trong máy của khách hàng nầy Một xu hướng mới khi xây dựng các intranet là dữ liệu phải được tập trung hóa tại một nhóm các máy chủ để có khả năng đáp ứng cùng một lúc cho nhiều người dùng Giờ đây các hệ thống mainframe đã thật sự trở lại vì tính năng xử lý mạnh mẽ Xu hướng nầy có lẽ trái ngược với việc tính toán phân tán nhưng trong thực tế chúng cùng tồn tại bên nhau
3 Các điểm mạnh trong hệ phân tán
Cơ chế tính toán phân tán hỗ trợ truy cập các dữ liệu được lưu ở nhiều nơi
Nhờ cơ chế nhân bản nên người dùng chỉ cần truy cập cục bộ cũng lấy được các thông tin từ các trung tâm chính ở rất xa
Hệ thống nầy khắc phục được các hiểm họa địa phương Vì nếu chúng ta không truy cập dữ liệu được tại vị trí nầy, chúng ta có thể thử ở nơi khác