1. Trang chủ
  2. » Luận Văn - Báo Cáo

VIẾT CHƯƠNG TRÌNH CÀI ĐẶT THUẬT TOÁN LAMPORT TRÊN SERVER (TIỂU LUẬN MÔN HỌC LẬP TRÌNH MẠNG)

30 658 3

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 30
Dung lượng 683 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

LỜI NÓI ĐẦU Công nghệ: bí quyết và giải pháp . Có lẽ đây là câu Slogan đã quá quen thuộc với mọi người trong giai đoạn hiện nay. Và công nghệ thông tin chính là giải pháp cho hầu hết các công việc trong kỷ nguyên này, đó là kỷ nguyên của nền văn minh dựa trên cơ sở của công nghiệp tri thức. Mở đầu cho cuộc cách mạng khoa học và công nghệ này là sự ra đời và phát triển ồ ạt của máy vi tính và các phương tiện xử lý thông tin khác. Cùng với sự phát triển nhanh chóng số lượng máy vi tính cũng như nhu cầu trao đổi thông tin trong mọi hoạt động xã hội loài người đòi hỏi sự phát triển đồng bộ các phương pháp truyền thông. Mạng máy tính ra đời làm cho thế giới của chúng ta “phẳng” ra và nhỏ lại. Trên thực tế, một xu hướng kỹ thuật mới được hình thành 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 trên cơ sở mạng máy tính. Song để khai thác có hiệu quả toàn bộ hệ thống, vấn đề quan trọng hàng đầu cần phải tính đến là các tài nguyên và chiến lược khai thác, sử dụng chúng một cách tối ưu nhất. Bản thân người sử dụng thuần tuý không thể tự xây dựng nên chiến lược đó được, mà nó là chức năng chủ yếu của các hệ thống tin học phân tán đồng thời cũng chính là đối tượng nghiên cứu của báo cáo này. Phạm vi và nhiệm vụ nghiên cứu của đề tài là nghiên cứu vấn đề đồng bộ hóa thời gian, thuật toán lamport cải tiến, thiết kế đ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ủa các thông điệp, xây dựng chương trình sắp xếp các thông điệp đến căn cứ vào giá trị của đồng hồ lamport và chương trình giám sát trình tự sắp xếp tại các server trên màn hình. Về mặt bố cục, ngoài phần mở đầu, tài liệu tham khảo và mục lục, báo cáo được chia làm các phần sau:  Cở sở lý thuyết.  Đồng bộ hoá thời gian trong hệ phân tán.  Cài đặt thuật toán Lamport trên n Server.  Kết luận. Chân thành cám ơn Thầy giáo PGS.TS. Lê Văn Sơn và anh Đặng Hùng Vĩ đã định hướng và cung cấp kiến thức và tài liệu để tôi hoàn thành báo cáo này. Do thời gian và kiến thức hạn chế nên đề tài chắc không tránh khỏi sai sót. Kính mong sự góp ý của Thầy giáo hướng dẫn và các bạn đồng môn.

Trang 2

Công nghệ: bí quyết và giải pháp Có lẽ đây là câu Slogan đã quá quen thuộc với

mọi người trong giai đoạn hiện nay Và công nghệ thông tin chính là giải pháp cho hầuhết các công việc trong kỷ nguyên này, đó là kỷ nguyên của nền văn minh dựa trên cơ sởcủa công nghiệp tri thức Mở đầu cho cuộc cách mạng khoa học và công nghệ này là sự

ra đời và phát triển ồ ạt của máy vi tính và các phương tiện xử lý thông tin khác

Cùng với sự phát triển nhanh chóng số lượng máy vi tính cũng như nhu cầu trao đổithông tin trong mọi hoạt động xã hội loài người đòi hỏi sự phát triển đồng bộ cácphương pháp truyền thông Mạng máy tính ra đời làm cho thế giới của chúng ta

Phạm vi và nhiệm vụ nghiên cứu của đề tài là nghiên cứu vấn đề đồng bộ hóa thờigian, thuật toán lamport cải tiến, thiết kế đa server theo kiểu ngang hàng có khả năngphát và nhận thông điệp, xây dựng cấu trúc của các thông điệp, xây dựng chương trìnhsắp xếp các thông điệp đến căn cứ vào giá trị của đồng hồ lamport và chương trình giámsát trình tự sắp xếp tại các server trên màn hình

Về mặt bố cục, ngoài phần mở đầu, tài liệu tham khảo và mục lục, báo cáo được chialàm các phần sau:

 Cở sở lý thuyết

 Đồng bộ hoá thời gian trong hệ phân tán

 Cài đặt thuật toán Lamport trên n Server

Trang 3

CHƯƠNG I

CƠ SỞ LÝ THUYẾT

I.Các khái niệm cơ bản

1.1 Hệ thống tin học

Hệ thống tin học (Informatics System) là hệ thống bao gồm hai phần cơ bản là

phần cứng (hardware) hay là phần vật lý và phần mềm (software) là phần logic hay là

chương trình gắn bó hữu cơ với nhau và có khả năng xử lý thông tin Hệ thống tin học

gồm ba thực thể: phần cứng, phần mềm, dữ liệu

1.2 Hệ tin học phân tán

Hệ tin học phân tán là hệ thống không chia sẻ bộ nhớ và đồng hồ Điều đó cho phép phân biệt với một xu hướng tin học khác về phân tán các tính toán trên nhiều bộ xử

lý hay vi xử lý của hệ thống đa bộ xử lý

Hệ tin học phân tán đòi hỏi hệ thống phần cứng của mình phải trang bị bộ nhớ cục

bộ Các bộ xử lý trao đổi với nhau thông qua các hệ thống đường truyền khác nhau như làcáp quang, điện thoại, cáp chuyên dụng, bus trao đổi,

1.3 Tiến trình

Tiến trình (Process) là khái niệm khá quen thuộc và là đối tượng nghiên cứu của

hệ điều hành Trong hệ phân tán ta chỉ xem xét và bổ sung đặc điểm hoạt động và truycập của các tiến trình có nhu cầu cung cấp tài nguyên dùng chung

Các đặc điểm đó là :

o Các tiến trình được hình thành và điều khiển bởi hệ điều khiển duy nhất có nghĩa

là nếu trong các thành phần tham gia hệ phân tán như mạng máy tính, các hệ tậptrung, có thể có các hệ điều hành riêng với các tiến trình riêng của mình, thì

chúng cũng bị phái sinh lại trong nội dung của tiến trình mới, phân tán.

o Tiến trình là chương trình hay đoạn chương trình đang hoạt động trong hệ phântá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ựchiệ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ìnhphân tán như dự phòng và chống bế tắc, chống xung đột,

Trang 4

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à đốitượ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ếuvào bảng trạng thái, ảnh của thông tin toàn cục

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ớpvớ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

2.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ậtcủ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 truycậ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ốntruy 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 để giải

quyết các bài tóan đặt ra và cho kết quả nhanh chóng nhất Điều này cho phéptăng hiệu năng sử dụng thiết bị và hiệu quả hoạt động của chương trình

Hợp lực là nguyên nhân chính của sự tác động tương hỗ được lập trình giữacác tiến trình nhằm cho phép chúng tham gia vào các hành động chung

Sự tương tranh và hợp lực giữa các tiến trình đòi hỏi phải có trao đổi thông tin qua

lại với nhau Trong các hệ thống tập trung, điều đó được thực hiện nhờ thuật toán loại trừtương hỗ thông qua các biến cùng tác động trong một vùng nhớ chung Trong hệ tin họcphân tán, các thông tin cần trao đổi thông qua các thông điệp bằng các kênh viễn thông

Một sự hoạt động gắn bó của các chương trình cung cấp phân tán quản lý trên cùng một tập hợp các tài nguyên chỉ đạt được nếu tuân thủ các qui tắc sau:

Trang 5

STT Qui tắc

1 Các bộ cung cấp bắt buộc phải thực hiện cùng một giải thuật

2 Các bộ cung cấp đều nhận tất cả các thông điệp phát đi từ các tiến trình

3 Các thông điệp phải được xử lý cùng một trật tự như nhau trong các

chương trình cung cấp

Qui tắc cuối, nhấn mạnh đến sự thiết yếu phải có một trật tự duy nhất trên tập hợpcác thông điệp của hệ Trật tự này có thể được thực hiện thông qua việc hợp lực của cáctiến trình cung cấp Ở phần sau chúng ta nghiên cứu một số phương pháp sắp xếp nhằmxác lập một trật tự đảm bảo cho yêu cầu đồng bộ hóa

2.2 Vấn đề gắn bó dữ liệu

Gắn bó dữ liệu là quá trình khi thực hiện trao đổi thông tin qua lại với nhau vào tại một thời điểm t nào đó thì giá trị các tiến trình phải giống nhau Để hiểu rõ hơn về gắn bó dữ liệu ta xét bài toán bãi đỗ xe (Tr 157- Hệ tin học phân tán - L ê Văn Sơn – NXB ĐHQG

TP HCM)

2.3 Trật tự từng phần

Cần chú ý rằng, trong các hệ thống tin học tập trung, vấn đề đồng bộ hoá được giảiquyết thông qua cơ chế loại trừ tương hỗ Cơ chế này cho phép sắp đặt (xác lập trật tự)hoàn toàn các sự kiện Trong thực tiễn, nói một cách chính xác, có một hệ thống vấn đề

về đồng bộ hoá chỉ đòi hỏi trật tự từng phần Chính vì vậy trật tự hoá từng phần giữa các

sự kiện mà các tiến trình của nó cần phải đồng bộ là vấn đề cần phải quan tâm giải quyết

Trong các hệ thống phân tán, việc đồng bộ hoá chỉ đặt ra duy nhất vấn đề thiết lậpmộ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ể hiện được thông qua việc trao đổi các thông điệp với nhau

III. Mô hình Client/Server

3.1 Giới thiệu về mô hình Client/Server

Mô hình được phổ biến nhất và được chấp nhận rộng rãi trong các hệ thống phân tán

là mô hình client/server Trong mô hình này sẽ có một tập các tiến trình mà mỗi tiến trìnhđóng vai trò như là một trình quản lý tài nguyên cho một tập hợp các tài nguyên chotrước và một tập hợp các tiến trình client trong đó mỗi tiến trình thực hiện một tác vụnào đó cần truy xuất tới tài nguyên phần cứng hoặc phần mềm dùng chung Bản thân cáctrình quản lý tài nguyên cần phải truy xuất tới các tài nguyên dùng chung được quản lýbởi một tiến trình khác, vì vậy một số tiến trình vừa là tiến trình client vừa là tiến trìnhserver Các tiến trình phát ra các yêu cầu tới các server bất kỳ khi nào chúng cần truyxuất tới một trong các tài nguyên của các server Nếu yêu cầu là đúng đắn thì server sẽthực hiện hành động được yêu cầu và gửi một đáp ứng trả lời tới tiến trình client

Trang 6

Mô hình client/server cung cấp một cách tiếp cận tổng quát để chia sẻ tài nguyêntrong các hệ thống phân tán Mô hình này có thể được cài đặt bằng rất nhiều môi trườngphần cứng và phần mềm khác nhau Các máy tính được sử dụng để chạy các tiến trìnhclient/server có nhiều kiểu khác nhau và không cần thiết phải phân biệt giữa chúng; cảtiến trình client và tiến trình server đều có thể chạy trên cùng một máy tính Một tiếntrình server có thể sử dụng dịch vụ của một server khác.

Mô hình truyền tin client/server hướng tới việc cung cấp dịch vụ Quá trình trao đổidữ liệu bao gồm:

Truyền một yêu cầu từ tiến trình client tới tiến trình server

Yêu cầu được server xử lý

Truyền đáp ứng cho client

Mô hình truyền tin này liên quan đến việc truyền hai thông điệp và một dạng đồng bộhóa cụ thể giữa client và server Tiến trình server phải nhận thức được thông điệp đượcyêu cầu ở bước một ngay khi nó đến và hành động phát ra yêu cầu trong client phải đượctạm dừng (bị phong tỏa) và buộc tiến trình client ở trạng thái chờ cho tớ khi nó nhận đượcđáp ứng do server gửi về ở bước ba

Mô hình client/server thường được cài đặt dựa trên các thao tác cơ bản là gửi (send)

Reply Execution

Wait

Server Client

Trang 7

Quá trình giao tiếp client và server có thể diễn ra theo một t rong hai chế độ: bịphong tỏa (blocked) và không bị phong tỏa (non-blocked).

Chế độ bị phong tỏa (blocked):

Trong chế độ bị phong tỏa, khi tiến trình client hoặc server phát ra lệnh gửi dữ liệu(send), việc thực thi của tiến trình sẽ bị tạm ngừng cho tới khi tiến trình nhận phát ra lệnhnhận dữ liệu (receive)

Tương tự đối với tiến trình nhận dữ liệu, nếu tiến trình nào đó (client hoặc server)phát ra lệnh nhận dữ liệu, mà tại thời điểm đó chưa có dữ liệu gửi tới thì việc thực thi củatiến trình cũng sẽ bị tạm ngừng cho tới khi có dữ liệu gửi tới

Chế độ không bị phong tỏa (non-blocked):

Trong chế độ này, khi tiến trình client hay server phát ra lệnh gửi dữ liệu thực sự,việc thực thi của tiến trình vẫn được tiến hành mà không quan tâm đến việc có tiến trìnhnào phát ra lệnh nhận dữ liệu đó hay không

Tương tự cho trường hợp nhận dữ liệu, khi tiến trình phát ra lệnh nhận dữ liệu, nó sẽnhận dữ liệu hiện có, việc thực thi của tiến trình vẫn được tiến hành mà không quan tâmđến việc có tiến trình nào phát ra lệnh gửi dữ liệu tiếp theo hay không

3.2 Các kiến trúc Client/Server

Client process

4.Client handles

reponse

Resource Server

process

2.Server handles request

3.Server sends response

1.Client sends request

Mô hình Client/Server

Client/Server hai tầng.

Kiến trúc client/server đơn giản nhất là kiến trúc hai tầng Trong thực tế hầu hết cáckiến trúc client/server là kiến trúc hai tầng Một ứng dụng hai tầng cung cấp nhiều trạmlàm việc với một tầng trình diễn thống nhất, tầng này truyền tin với tầng lưu trữ dữ liệutập trung Tầng trình diễn thông thường là client, và tầng lưu trữ dữ liệu là server

Hầu hết các ứng dụng Internet như là email, telnet, ftp thậm chí là cả Web là các ứngdụng hai tầng Phần lớn các lập trình viên trình ứng dụng viết các ứng dụng client/server

có xu thế sử dụng kiến trúc này

Trong ứng dụng hai tầng truyền thống, khối lượng công việc xử lý được dành chophía client trong khi server chỉ đơn giản đóng vai trò như là chương trình kiểm soát luồngvào ra giữa ứng dụng và dữ liệu Kết quả là không chỉ hiệu năng của ứng dụng bị giảm đi

do tài nguyên hạn chế của PC, mà khối lượng dữ liệu truyền đi trên mạng cũng tăng theo

Trang 8

Khi toàn bộ ứng dụng được xử lý trên một PC, ứng dụng bắt buộc phải yêu cầu nhiều dữliệu trước khi đưa ra bất kỳ kết quả xử lý nào cho người dùng Nhiều yêu cầu dữ liệucũng làm giảm hiệu năng của mạng Một vấn đề thường gặp khác đối với ứng dụng haitầng là vấn đề bảo trì Chỉ cần một thay đổi nhỏ đối với ứng dụng cũng cần phải thay đổilại toàn bộ ứng dụng client và server.

Client/Server ba tầng

Ta có thể tránh được các vấn đề của kiến trúc client/server hai tầng bằng cách mởrộng kiến trúc thành ba tầng Một kiến trúc ba tầng có thêm một tầng mới tác biệt việc xử

lý dữ liệu ở vị trí trung tâm

Theo kiến trúc ba tầng, một ứng dụng được chia thành ba tầng tách biệt nhau về mặtlogic Tầng đầu tiên là tầng trình diễn thường bao gồm các giao diện đồ họa Tầng thứhai, còn được gọi là tầng trung gian hay tầng tác nghiệp Tầng thứ ba chứa dữ liệu cầncho ứng dụng Tầng thứ ba về cơ bản là chương trình thực hiện các lời gọi hàm để tìmkiếm dữ liệu cần thiết Tầng trình diễn nhận dữ liệu và định dạng nó để hiển thị Sự táchbiệt giữa chức năng xử lý với giao diện đã tạo nên sự linh hoạt cho việc thiết kế ứngdụng Nhiều giao diện người dùng được xây dựng và triển khai mà không làm thay đổilogic ứng dụng

Tầng thứ ba chứa dữ liệu cần thiết cho ứng dụng Dữ liệu này có thể bao gồm bất kỳnguồn thông tin nào, bao gồm cơ sở dữ liệu như Oracale, SQL Server hoặc tài liệu XML

Kiến trúc n-tầng

Kiến trúc n-tầng được chia thành các tầng như sau:

• Tầng giao diện người dùng: quản lý tương tác của người dùng với ứng dụng

• Tầng logic trình diễn: Xác định cách thức hiển thị giao diện người dùng và các yêucầu của người dùng được quản lý như thế nào

• Tầng logic tác nghiệp: Mô hình hóa các quy tắc tác nghiệp,

• Tầng các dịch vụ hạ tầng: Cung cấp một chức năng bổ trợ cần thiết cho ứng dụngnhư các thành phần (truyền thông điệp, hỗ trợ giao tác)

Trang 9

3.3 Lập trình phân tán với phương thức triệu gọi từ xa RMI

3.3.1 Tổng quan

RMI là một cơ chế cho phép một đối tượng đang chạy trên một máy ảo Java này( Java Virtual Machine) gọi các phương thức của một đối tượng đang tồn tại trên mộtmáy ảo Java khác (JVM)

Thực chất RMI là một cơ chế gọi phương thức từ xa đã được thực hiện và tích hợptrong ngôn ngữ Java Vì Java là một ngôn ngữ lập trình hướng đối tượng, nên phươngpháp lập trình trong RMI là phương pháp hướng đối tượng do đó các thao tác hay các lờigọi phương thức đều liên quan đến đối tượng Ngoài ra, RMI còn cho phép một Client cóthể gửi tới một đối tượng đến cho Server xử lý, và đối tượng này cũng có thể được xem làtham số cho lời gọi hàm từ xa, đối tượng này cũng có những dữ liệu bên trong và cáchành vi như một đối tượng thực sự

So sánh giữ gọi phương thức từ xa với các lời gọi thủ tục từ xa

Gọi phương thức từ xa không phải là một khái niệm mới Thậm chí trước khi ra đờilập trình hướng đối tượng phần mềm đã có thể gọi các hàm và các thủ tục từ xa Các hệthống như RPC đã được sử dụng trong nhiều năm và hiện nay vẫn được sử dụng

Trước hết, Java là một ngôn ngữ độc lập với nền và cho phép các ứng dụng Javatruyền tin với các ứng dụng Java đang chạy trên bất kỳ phần cứng và hệ điều hành nào có

hỗ trợ JVM Sự khác biệt chính giữa hai mục tiêu là RPC hỗ trợ đa ngôn ngữ, ngược lạiRMI chỉ hỗ trợ các ứng dụng được viết bằng Java

Ngoài vấn đề về ngôn ngữ và hệ thống, có một số sự khác biệt căn bản giữa RPC vàRMI Gọi phương thức từ xa làm việc với các đối tượng, cho phép các phương thức chấpnhận và trả về các đối tượng Java cũng như các kiểu dữ liệu nguyên tố (premitive type).Ngược lại gọi thủ tục từ xa không hỗ trợ khái niệm đối tượng Các thông điệp gửi chomột dịch vụ RPC (Remote Procedure Calling) được biểu diễn bởi ngôn ngữ XDR(External Data Representation): dạng thức biểu diễn dữ liệu ngoài Chỉ có các kiểu dữliệu có thể được định nghĩa bởi XDR mới có thể truyền đi

3.3.2 Mục đích của RMI

• Hỗ trợ gọi phương thức từ xa trên các đối tượng trong các máy ảo khác nhau

• Hỗ trợ gọi ngược phương thức ngược từ server tới các applet

• Tích hợp mô hình đối tượng phân tán vào ngôn ngữ lập trình Java theo một cách

tự nhiên trong khi vẫn duy trì các ngữ cảnh đối tượng của ngôn ngữ lập trình Java

• Làm cho sự khác biệt giữa mô hình đối tượng phân tán và mô hình đối tượng cục

bộ không có sự khác biệt

• Tạo ra các ứng dụng phân tán có độ tin cậy một cách dễ dàng

Trang 10

• Duy trì sự an toàn kiểu được cung cấp bởi môi trường thời gian chạy của nền tảngJava

• Hỗ trợ các ngữ cảnh tham chiếu khác nhau cho các đối tượng từ xa

• Duy trì môi trường an toàn của Java bằng các trình bảo an và các trình nạp lớp

3.3.3 Kiến trúc RMI

Sự khác biệt căn bản giữa các đối tượng từ xa và các đối tượng cục bộ là các đốitượng từ xa nằm trên một máy ảo khác Thông thường, các tham số đối tượng đượctruyền cho các phương thức và các giá trị đối tượng được trả về từ các phương thức thôngqua cách truyền theo tham chiếu Tuy nhiên cách này không làm việc khi các phươngthức gọi và các phương thức được gọi không cùng nằm trên một máy ảo

Vì vậy, có ba cơ chế khác nhau được sử dụng để truyền các tham số cho các phươngthức từ xa và nhận các kết quả trả về từ các phương thức ở xa Các kiểu nguyên tố (int,boolean, double,…) được truyền theo tham trị Các tham chiếu tới các đối tượng từ xađược truyền dưới dạng các tham chiếu cho phép tất cả phía nhận gọi các phương thứctrên các đối tượng từ xa Các đối tượng không thực thi giao tiếp từ xa (nghĩa là các đốitượng không thực thi giao tiếp Remote) được truyền theo tham trị; nghĩa là các bản saođầy đủ được truyền đi bằng cách sử dụng cơ chế tuần tự hóa đối tuợng Các đối tượngkhông có khả năng tuần tự hóa thì không thể được truyền đi tới các phương thức ở xa.Các đối tượng ở xa chạy trên server nhưng có thể được gọi bởi các đối tượng đang chạytrên client Các đối tượng không phải ở xa, các đối tượng khả tuần tự chạy trên các hệthống client

Để quá trình truyền tin là trong suốt với người lập trình, truyền tin giữa client vàserver được cài đặt theo mô hình phân tầng như hình vẽ dưới đây

Stub & SkeletonTham chiếu từ xa

Stub & SkeletonTham chiếu từ xaTầng giao vận

Chương trình khách trình chủChương

Hệ thống

RMI

Kiến trúc ba tầng của RMI

Trang 11

Đối với người lập trình, client dường như truyền tin trực tiếp với server Thực tế,chương trình client chỉ truyền tin với đối tượng stub là đối tượng ủy quyền của đối tượngthực sự nằm trên hệ thống từ xa Stub chuyển cuộc đàm thoại cho tầng tham chiếu, tầngnày truyền tin trực tiếp với tầng giao vận Tầng giao vận trên client truyền dữ liệu đi trênmạng máy tính tới tầng giao vận bên phía server Tầng giao vận bên phía server truyềntin với tầng tham chiếu, tầng này truyền tin một phần của phần mềm server được gọi làskeleton Skeleton truyền tin với chính server Theo hướng khác từ server đến client thìluồng truyền tin được đi theo chiều ngược lại.

Cách tiếp cận có vẻ phức tạp nhưng ta không cần quan tâm đến vấn đề này Tất cảđều được che dấu đi, người lập trình chỉ quan tâm đến việc lập các chương trình có khảnăng gọi phương thức từ xa giống như đối với chương trình cục bộ

Trước khi có thể gọi một phương thức trên một đối tượng ở xa, ta cần một thamchiếu tới đối tượng đó Để nhận được tham chiếu này, ta yêu cầu một trình đăng ký tênrmiregistry cung cấp tên của tham chiếu Trình đăng ký đóng vai trò như là một DNS nhỏcho các đối tượng từ xa Một client kết nối với trình đăng ký và cung cấp cho nó mộtURL của đối tượng từ xa Trình đăng ký cung cấp một tham chiếu tới đối tượng đó vàclient sử dụng tham chiếu này để gọi các phương thức trên server

Trong thực tế, client chỉ gọi các phương thức cục bộ trên trong stub Stub là một đốitượng cục bộ thực thi các giao tiếp từ xa của các đối tượng từ xa

Tầng tham chiếu từ xa thực thi giao thức tầng tham chiếu từ xa cụ thể Tầng này độclập với các đối tượng stub và skeleton cụ thể Tầng tham chiếu từ xa có nhiệm vụ hiểutầng tham chiếu từ xa có ý nghĩa như thế nào Đôi khi tầng tham chiếu từ xa có thể thamchiếu tới nhiều máy ảo trên nhiều host

Tầng giao vận gửi các lời gọi trên Internet Phía server, tầng giao vận lắng nghe cácliên kết đến Trên cơ sở nhận lời gọi phương thức, tầng giao vận chuyển lời gọi cho tầngtham chiếu trên server Tầng tham chiếu chuyển đổi các tham chiếu được gửi bởi clientthành các tham chiếu cho các máy ảo cục bộ Sau đó nó chuyển yêu cầu cho skeleton.Skeleton đọc tham số và truyền dữ liệu cho chương trình server, chương trình server sẽthực hiện lời gọi phương thức thực sự Nếu lời gọi phương thức trả về giá trị, giá trị đượcgửi xuống cho skeleton, tầng tham chiếu ở xa, và tầng giao vận trên phía server, thôngqua Internet và sau đó chuyển lên cho tầng giao vận, tầng tham chiếu ở xa, stub trên phíaclient

3.3.4 Cơ chế hoạt động của RMI

Trang 12

Các hệ thống RMI phục vụ cho việc truyền tin thường được chia thành hai loại: client

và server Một server cung cấp dịch vụ RMI, và client gọi các phương thức trên đối tượngcủa dịch vụ này

Server RMI phải đăng ký với một dịch vụ tra tìm và đăng ký tên Dịch vụ này chophép các client truy tìm chúng, hoặc chúng có thể tham chiếu tới dịch vụ trong một môhình khác Một chương trình đóng vai trò như vậy có tên là rmiregistry, chương trình nàychạy như một tiến trình độc lập và cho phép các ứng dụng đăng ký dịch vụ RMI hoặcnhận một tham chiếu tới dịch vụ được đặt tên Mỗi khi server đựơc đăng ký, nó sẽ chờcác yêu cầu RMI từ các client Gắn với mỗi đăng ký dịch vụ là một tên được biểu diễnbằng một xâu ký tự để cho phép các client lựa chọn dịch vụ thích hợp Nếu một dịch vụchuyển từ server này sang một server khác, client chỉ cần tra tìm trình đăng ký để tìm ra

vị trí mới Điều này làm cho hệ thống có khả năng dung thứ lỗi-nếu một dịch vụ khôngkhả dụng do một máy bị sập, người quản trị hệ thống có thể tạo ra một thể hiện mới củadịch vụ trên một hệ thống khác và đăng ký nó với trình đăng ký RMI

Các client RMI sẽ gửi các thông điệp RMI để gọi một phương thức trên một đốitượng từ xa Trước khi thực hiện gọi phương thức từ xa, client phải nhận được một thamchiếu từ xa Tham chiếu này thường có được bằng cách tra tìm một dịch vụ trong trìnhđăng ký RMI Ứng dụng client yêu cầu một tên dịch vụ cụ thể, và nhận một URL trỏ tớitài nguyên từ xa Khuôn dạng dưới đây được sử dụng để biểu diễn một tham chiếu đốitượng từ xa:

và skeleton

Đối tượng stub là một đối tượng ủy quyền, truyền tải yêu cầu đối tượng tới serverRMI Cần nhớ rằng mỗi dịch vụ RMI được định nghĩa như là một giao tiếp, chứ khôngphải là một chương trình cài đặt, các ứng dụng client giống như các chương trình hướngđối tượng khác Tuy nhiên ngoài việc thực hiện công việc của chính nó, stub còn truyềnmột thông điệp tới một dịch vụ RMI ở xa, chờ đáp ứng, và trả về đáp ứng cho phươngthức gọi Người phát triển ứng dụng không cần quan tâm đến tài nguyên RMI nằm ở đâu,

nó đang chạy trên nền nào, nó đáp ứng đầy đủ yêu cầu như thế nào Client RMI đơn giản

Trang 13

gọi một phương thức trên đối tượng ủy quyền, đối tượng này quản lý tất cả các chi tiết càiđặt.

Tại phía server, đối tượng skeleton có nhiệm vụ lắng nghe các yêu cầu RMI đến vàtruyền các yêu cầu này tới dịch vụ RMI Đối tượng skeleton không cung cấp bản cài đặtcủa dịch vụ RMI Nó chỉ đóng vai trò như là chương trình nhận các yêu cầu, và truyềncác yêu cầu Sau khi người phát triển tạo ra một giao tiếp RMI, thì anh ta phải cung cấpmột phiên bản cài đặt cụ thể của giao tiếp Đối tượng cài đặt này được gọi là đối tượngskeleton, đối tượng này gọi phương thức tương ứng và truyền các kết quả cho đối tượngstub trong client RMI Mô hình này làm cho việc lập trình trở nên đơn giản, vì skeletonđược tách biệt với cài đặt thực tế của dịch vụ Tất cả những gì mà người phát triển dịch

vụ cần quan tâm là mã lệnh khởi tạo (để đăng ký dịch vụ và chấp nhận dịch vụ), và cungcấp chương trình cài đặt của giao tiếp dịch vụ RMI

Với câu hỏi các thông điệp được truyền như thế nào, câu trả lời tương đối đơn giản.Việc truyền tin diễn ra giữa các đối tượng stub và skeleton bằng cách sử dụng các socketTCP Mỗi khi được tạo ra, skeleton lắng nghe các yêu cầu đến được phát ra bởi các đốitượng stub Các tham số trong hệ thống RMI không chỉ hạn chế đối với các kiểu dữ liệunguyên tố-bất kỳ đối tượng nào có khả năng tuần tự hóa đều có thể được truyền như mộttham số hoặc được trả về từ phương thức từ xa Khi một stub truyền một yêu cầu tới mộtđối tượng skeleton, nó phải đóng gói các tham số (hoặc là các kiểu dữ liệu nguyên tố, cácđối tượng hoặc cả hai) để truyền đi, quá trình này được gọi là marshalling Tại phíaskeleton các tham số được khôi phục lại để tạo nên các kiểu dữ liệu nguyên tố và các đốitượng, quá trình này còn được gọi là unmarshaling Để thực hiện nhiệm vụ này, các lớpcon của các lớp ObjectOutputStream và ObjectInputStream được sử dụng để đọc và ghinội dung của các đối tượng

Sơ đồ gọi phương thức của các đối tượng ở xa thông qua lớp trung gian được cụ thểhoá như sau:

Stub Object somemethod(…)

Skeleton Object somemethod(…)

ResponseRequest

Trang 14

• Ta có đối tượng C1 được cài đặt trên máy C Trình biên dịch rmic.exe sẽ tạo ra hailớp trung gian C1_Skel và C1_Stub Lớp C1_Stub sẽ được đem về máy A Khi A1 trênmáy A gọi C1 nó sẽ chuyển lời gọi đến lớp C1_Stub, C1_Stub chịu trách nhiệm đóng góitham số, chuyển vào không gian địa chỉ tương thích với đối tượng C1 sau đó gọi phươngthức tương ứng.

• Nếu có phương thức của đối tượng C1 trả về sẽ được lớp C1_Skel đóng gói trảngược về cho C1_Stub chuyển giao kết quả cuối cùng lại cho A1 Nếu khi kết nối mạnggặp sự cố thì lớp trung gian Stub sẽ thông báo lỗi đến đối tượng A1 Theo cơ chế này A1luôn nghĩ rằng nó đang hoạt động trực tiếp với đối tượng C1 trên máy cục bộ

• Trên thực tế, C1_Stub trên máy A chỉ làm lớp trung gian chuyển đổi tham số vàthực hiện các giao thức mạng, nó không phải là hình ảnh của đối tượng C1 Để làm đượcđiều này, đói tượng C1 cần cung cấp một giao diện tương ứng với các phương thức chophép đối tượng A1 gọi nó trên máy A

Computer B

Computer A A

1 A

B 1

B1 — Skel

Trang 15

CHƯƠNG 2.

ĐỒNG BỘ HÓA THỜI GIAN TRONG HỆ PHÂN TÁN

2.1 Thời gian lôgic và trật tự sự kiện từng phần.

Trong các hệ tin học tập trung, vấn đề đồng bộ hóa được giải quyết thông qua cơ chếloại trừ tương hỗ Cơ chế này cho phép xác lập trật tự hoàn toàn các sự kiện Tuy nhiê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ầnphải quan tâm giải quyết

Trong hệ phân tán, việc đồng bộ hóa chủ yếu yêu cầu 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ự đó có thể thể hiện thông qua việc trao đổi cácthông điệp với nhau

Trở lại năm 1979, Lamport đã đưa ra rằng hai sự kiện từ các trạm khác nhau chỉ cóthể có trật tự nếu chúng được tách rời với nhau bằng cách gửi và nhận thông điệp Ngượclại, cho dù một sự kiện xảy ra trước sự kiện khác theo thời gian, không có cách nào cho

sự kiện thứ hai có thể quan sát trật tự này và vì vậy, không có cách nào cho sự chính xáccủa nó phụ thuộc vào nó Giả định ở đây là không có sự quan sát bên ngoài của trật tự sựkiện Nếu sự chính xác của hệ thống phụ thuộc vào trật tự được quan sát bởi con người,

ví dụ, thì sự quan sát Lamport không áp dụng Tuy nhiên, sự chính xác trật tự chỉ phụcthuộc vào sự đồng bộ bên trong của các sự kiện và vì thế định nghĩa của Lamport có thể

a “xảy ra trước” c (a  c) - bắc cầu -

Ngày đăng: 12/11/2014, 08:52

HÌNH ẢNH LIÊN QUAN

Sơ đồ gọi phương thức của các đối tượng ở xa thông qua lớp trung gian được cụ thể hoá như sau: - VIẾT CHƯƠNG TRÌNH CÀI ĐẶT  THUẬT TOÁN LAMPORT TRÊN SERVER (TIỂU LUẬN MÔN HỌC LẬP TRÌNH MẠNG)
Sơ đồ g ọi phương thức của các đối tượng ở xa thông qua lớp trung gian được cụ thể hoá như sau: (Trang 13)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w