Kiến trúc của chương trình Client-Server cài đặt theo cơ chế lời gọi thủ

Một phần của tài liệu BÀI TIỂU LUẬN Môn học: CƠ SỞ DỮ LIỆU NÂNG : Tìm hiểu về hệ phân tán. (Trang 33 - 47)

tục xa.

Một ng ng Client-Server theo cơ chế RPC được ây ựng gồm có sáu phần như sơ đồ ưới đây:

Hình 2.1 - Kiến trúc chương trình kiểu RPC

Phần Client là một quá trình người ùng, nơi khởi tạo một lời gọi thủ t c từ a. M i lời gọi thủ t c ở a trên phần Client sẽ kích hoạt một thủ t c c c bộ tương ng nằm trong phần Stub của Client.

Phần ClientStub cung cấp một bộ các hàm c c bộ mà phần Client có thể gọi. M i một hàm của ClientStub đại iện cho một hàm ở a được cài đặt và thực thi trên Server.

M i khi một hàm nào đó của ClientStub được gọi bởi Client, ClientStub sẽ đóng gói một thông điệp để mô tả về thủ t c ở a tương ng mà Client muốn thực thi cùng với các tham số nếu có. Sau đó nó sẽ nhờ hệ thống RPCRuntime c c bộ g i thông điệp này đến phần Server Stub của Server.

Phần RPCRuntime quản l việc truyền thông điệp thông qua mạng gi a máy Client và máy Server. Nó đảm nhận việc truyền lại, báo nhận, chọn đường gói tin và m hóa thông tin. RPCRuntime trên máy Client nhận thông điệp yêu cầu từ ClientStub, g i nó cho RPCRuntime trên máy Server bằng lệnh sen (). Sau đó gọi lệnh wait() để chờ kết quả trả về từ Server.

Khi nhận được thông tiệp từ RPCRuntime của Client g i sang, RPCRuntime bên phía server chuyển thông điệp lên phần ServerStub.

ServerStub mở thông điệp ra em, ác định hàm ở a mà Client muốn thực hiện cùng với các tham số của nó. ServerStub gọi một thủ t c tương ng nằm trên phần Server.

Khi nhận được yêu cầu của ServerStub, Server cho thực thi thủ t c được yêu cầu và g i kết quả thực thi được cho ServerStub.

ServerStub đóng gói kết quả thực trong một gói tin trả lời, chuyển cho phần RPCRuntime c c bộ để nó g i sang RPCRuntime của Client .

RPCRuntime bên phía Client chuyển gói tin trả lời nhận được cho phần ClientStub. ClientStub mở thông điệp ch a kết quả thực thi về cho Client tại vị trí phát ra lời gọi thủ t c a.

Trong các thành phần trên, RPCRuntime được cung cấp bởi hệ thống. ClientStub và ServerStub có thể tạo ra thủ công (phải lập trình) hay có thể tạo ra bằng các công c cung cấp bởi hệ thống.

Cơ chế RPC được h trợ bởi hầu hết các hệ điều hành mạng cũng như các ngôn ng lập trình.

2.2 Kích hoạt phương thức xa (RMI- Remote Method Invocation ) 2.2.1 Giới thiệu

RMI là một sự cài đặt cơ chế RPC trong ngôn ng lập trình hướng đối tượng Java. Hệ thống RMI cho phép một đối tượng chạy trên một máy ảo Java này có thể kích hoạt một phương th c của một đối tượng đang chạy trên một máy ảo Java khác. Đối tượng có phương th c được gọi từ a gọi là các đối tượng ở a (Remote Object).

Một ng ng RMI thường bao gồm 2 phần phân biệt: Môt chương trình Server và một chương trình Client.

- Chương trình Server tạo một số các Remote Object, tạo các tham chiếu (reference) đến chúng và chờ nh ng chương trình Client kích hoạt các

- Chương trình Client lấy một tham chiếu đến một hoặc nhiều Remote Object trên server và kích hoạt các phương th c từ a thông qua các tham chiếu.

Một chương trình Client có thể kích hoạt các phương th c ở a trên một hay nhiều Server. T c là sự thực thi của chương trình được trải rộng trên nhiều máy tính. Đây chính là đặc điểm của các ng ng phân tán. Nói cách khác, RMI là cơ chế để ây ựng các ng ng phân tán ưới ngôn ng Java.

2.2.2 Kiến trúc của chương trình Client-Server theo cơ chế RMI

Kiến trúc một chương trình Client-Server theo cơ chế RMI được mô tả như hình ưới đây:

Hình 2.2 - Kiến trúc chương trình kiểu RMI

Trong đó:

- Server là chương trình cung cấp các đối tượng có thể được gọi từ xa.

- Client là chương trình có tham chiếu đến các phương th c của các đối tượng ở xa trên Server.

- Stub ch a các tham chiếu đến các phương th c ở a trên Server.

- Skeleton đón nhận các tham chiếu từ Stub để kích hoạt phương th c tương ng trên Server.

- Remote Reference Layer là hệ thống truyền thông của RMI.

Con đường kích hoạt một phương th c ở a được mô tả như hình ưới đây:

Hình 2.3 Cơ chế hoạt động của RMI (adsbygoogle = window.adsbygoogle || []).push({});

2.2.3 Các cơ chế liên quan trong một ứng dụng đối tượng phân tán

Trong một ng ng phân tán cần có các cơ chế sau:

- Cơ chế định vị đối tượng ở xa (Locate remote objects): Cơ chế này ác định cách th c mà chương trình Client có thể lấy được tham chiếu (Stub) đến các đối tượng ở a. Thông thường người ta s d ng một Dịch v danh bạ (Naming Service) lưu gi các tham khảo đến các đối tượng cho phép gọi từ a mà Client sau đó có thể tìm kiếm.

- Cơ chế giao tiếp với các đối tượng ở xa (Communicate with remote objects):

Chi tiết của cơ chế giao tiếp với các đối tượng ở a được cài đặt bởi hệ thống RMI.

- Tải các lớp dạng bytecodes cho các lớp mà nó được chuyển tải qua lại giữaMáy ảo (Load class bytecodes for objects that are passed around): Vì RMI cho phép các chương trình gọi phương th c từ a trao đổi các đối

tượng với các phương th c ở a ưới dạng các tham số hay giá trị trả về của phương th c, nên RMI cần có cơ chế cần thiết để tải m Bytecodes của các đối tượng từ máy ảo này sang máy ảo khác.

Hình ưới đây mô tả một ng ng phân tán ưới RMI s ng ịch v anh bạ để lấy các tham khảo của các đối tượng ở a.

Hình 2.4 Vai trò của dịch vụ tên

Trong đó:

- Server đăng k tên cho đối tượng có thể được gọi từ xa của mình với Dịch v danh bạ (Registry Server).

- Client tìm đối tượng ở a thông qua tên đ được đăng k trên Registry Server (looks up) và tiếp đó gọi các phương th c ở xa.

- Hình minh họa cũng cho thấy cách th c mà hệ thống RMI s d ng một WebServer sẵn có để truyền tải m byteco es của các lớp qua lại gi a Client và Server.

2.2.4 Cơ chế vận hành của của một ứng dụng Client-Server theo kiểu RMI

Tiến trình vận hành của một ng ng Client-Server theo kiểu RMI iễn ra như sau:

 Bước 1: Server tạo ra các đối tượng cho phép gọi từ a cùng với các Stub và Skeleton của chúng.

 Bước 2: Server s d ng lớp Naming để đăng k tên cho một đối tượng từ xa (1).

 Bước 3: Naming đăng k Stub của đối tượng từ xa với Registry Server (2).  Bước 4: Registry Server sẵn sàng cung cấp tham thảo đến đối tượng từ xa

khi có yêu cầu (3).

 Client yêu cầu Naming định vị đối tượng a qua tên đ được đăng k (phương th c lookup) với dịch v tên (4).

 Naming tải Stub của đối tượng xa từ dịch v tên mà đối tượng a đ đăng k về Client (5).

 Cài đặt đối tượng Stub và trả về tham khảo đối tượng xa cho Client (6).  Client thực thi một lời gọi phương th c a thông qua đối tượng Stub (7).

2.3 So sánh RPC và RMI

Sự giống nhau phương thức RPC và RMI:

- ng d ng để triệu gọi phương th c/ hàm từ xa. ng d ng trên máy A, gọi phương th c và hàm đặt trên máy B. Phương th c chạy trên máy tính ở xa, nên s d ng tài nguyên của máy ở a. Máy gọi hàm phải đợi một thời gian để cho máy ở xa thực hiện hàm và trả về kết quả

Sự khác nhau phương thức RPC và RMI:

- RPC: Gọi hàm và thủ t c ở xa bản chất từ client đến server

 Hướng thủ t c

 Triển khai được cho hai hệ thống khác nhau

 Viết bằng nhiều ngôn ng , hai phía client và server có cùng 1 ngôn ng . (adsbygoogle = window.adsbygoogle || []).push({});

- RMI:

 Nền tảng phân tán trong java

 Hướng đối tượng: Cho phép nắm gi tham chiếu trong đối tượng

 RMI được tích hợp sẵn trong java

 Cho phép tham chiếu đến đối tượng, triệu gọi phương th c từ xa của đối tượng

 Có ịch v định vị đối tượng từ xa

2.4 Kết luận chương 2

Như vậy, 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ừ a làm việc với các đối tượng, cho phép các phương th c chấp nhậ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ừ a không h trợ khái

niệm đối tượng. Các thông điệp g i cho mộ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.

Chương 3 ỨNG DỤNG HỆ PHÂN TÁN

Chương 3 nêu ra một số bài toán mà hệ phân tán được áp ng và đi vào phân tích c thể một bài toán với cấu trúc của hệ thống và cách th c hoạt động của hệ phân tán.

3.1 Một số bài toán ứng dụng hệ phân tán

Một số bài toán mà hệ phân tán được áp ng:

 Dịch v g i rút tiền tại các ngân hàng: g i tiền nhiều nơi và rút nhiều nơi. Hệ phân tán đ được ng d ng trong dịch v ngân hàng. Việc khách hàng có thể thực hiện các giao ịch tại nhiều nơi trên Việt Nam hoặc thậm trí trên thế giới. Khách hàng g i tiền tại một chi nhánh A của một ngân hàng

thì có thể rút tại bất k chi nhánh B,C… của ngân hàng đó ch không nhất thiết phải tới đúng chi nhánh A để rút số tiền cần thiết khi mà khách hàng đi công tác hoặc du lịch.

 Hệ thống ATM: một ng d ng khác của hệ phân tán cho ngân hàng đó là khách hàng có thể tới các máy ATM được phân phối ở nhiều nơi để rút tiền mặt.

 Quản l công ân ra vào c a khẩu: ví như một người khách nước ngoài tới Việt Nam thì nhân viên hải quan sẽ biết người đó đ tới Việt Nam bao nhiêu lần và m i lần đó tới Việt Nam để làm gì. Có thể các lần trước thì người đó tới Việt Nam qua một của khẩu khác nhưng hệ thống vẫn biết là họ đ tới Việt Nam.

3.2 Hệ thống gửi – rút tiền tại các ngân hàng

Bài toán đ được nêu ở phần một. Dịch v g i rút tiền tại các ngân hàng như g i tiền nhiều nơi và rút nhiều nơi. Hệ phân tán đ được ng ng cho ịch v này. Việc khách hàng có thể thực hiện các giao ịch tại nhiều nơi trên Việt Nam hoặc thậm trí trên thế giới. Khách hàng g i tiền tại một chi nhánh A của một ngân hàng thì có thể rút tại bất k chi nhánh B,C… của ngân hàng đó ch không nhất thiết phải tới đúng chi nhánh A để rút số tiền cần thiết khi mà khách hàng đi công tác hoặc u lịch.

3.2.1 Kiến trúc hệ thống

Giả s hệ thống ngân hàng A có 6 chi nhánh được phân phối đều trên 3 miền đất nước. ng với m i chi nhánh ta có 1 máy con. M i miền đồng thời có một máy chủ để lưu tr liệu hệ thống của m i miền. Các máy con ở m i miền có kết nối với máy chủ ở miền đó. Hai máy con ở miền bắc chỉ có thể kết nối với máy chủ miền bắc. Các máy chủ có kết nối với nhau.

Kết nối gi a máy chủ và máy con, máy chủ với nhau thì ta có hai phương pháp bố trí kiến trúc:

Cách 1(hình 3.1 a): các kết nối: máy con – máy chủ, máy chủ - máy chủ đều thông qua mạng nội bộ của ngân hàng A.

Cách 2(hình 3.1 b): các kết nối đều qua Internet.

Hình 3.1 (a): kiến trúc hệ thống ngân hàng kết nối qua mạng nội bộ

3.2.2 Cơ chế hoạt động của hệ thống

Khi có khách hàng tới g i tiền, hệ thống sẽ hoạt động như sau: 1. Nhận yêu cầu g i tiền vào tài khoản X nào đó.

2. Tìm kiếm d liệu tài khoản có được lưu tại máy chủ kết nối với chi nhánh đó không.

3. Nếu có lưu thì cập nhật thông tin về số ư tài khoản của khách hàng và thông báo nếu đ cập nhật thành công.

4. Nếu d liệu trên máy chủ đó không có thì yêu cầu đó sẽ được g i tới hai máy chủ còn lại. Tìm được máy chủ chưa thông tin tài khoản đó thì việc cập nhật sẽ được thực hiện. Thông báo trả lại cho máy chủ ban đầu và máy chủ này sẽ chuyển tiếp thông báo cho máy con tại chi nhánh mà đ g i yêu cầu chuyển tiền lúc đầu. (adsbygoogle = window.adsbygoogle || []).push({});

Tương tự như vậy cho giao ịch khách hàng lúc rút tiền. Việc g i và rút tiền chỉ khác nhau là một giao ịch là thêm tiền vào tài khoản khách hàng còn rút tiền là trừ bớt.

Một ví c thể, một người đến g i tiền tại chi nhánh ở miền bắc và thông tin tài khoản của họ được lưu tại máy chủ miền bắc thì hệ thống sẽ hoạt động như hình 3.2.

Hình 3.2: khách hàng gửi tiền tại miền bắc và tài khoản của khách hàng đó cũng được lưu tại máy chủ miền bắc

Với trường hợp khách hàng g i tiền tại miền bắc nhưng thông tin tài khoản lại lưu tại máy chủ miền nam thì hệ thống sẽ hoạt động như hình 3.3

Hình 3.3: khách hàng gửi tiền tại miền bắc nhưng thông tin tài khoản lại lưu tại máy chủ miền nam

Tóm lại, hệ phân tán có nhiều ng ng trên thực tế. Nó giải quyết một số vấn đề về tính kinh tế, tốc độ hệ thống. Chương này đ nêu c thể kiến trúc của một hệ phân tán trong ngân hàng và cơ chế hoạt động của hệ thống đó.

KẾT LUẬN

Vai trò của hệ phân tán đối với sự phát triển của máy tính là không thể bàn c i, đặc biệt khi quy mô các hệ thống máy tính ngày càng lớn như hiện nay. Các đặc tính của hệ phân tán giúp nó có điều kiện thuận lợi cho việc phát triển.

Tuy nhiên bên cạnh các đặc tính thuận lợi của hệ phân tán, tồn tại rất nhiều vấn đề trong việc ây ựng hệ thống để đảm bảo cá tính chất tốt đó của hệ. Do đó việc nghiên c u hệ phân tán ngày càng đóng vai trò quan trọng trong việc ây ựng các mạng máy tính.

Trong số các đặc tính của hệ phân tán, tính trong suốt là đặc tính quan trọng, tạo điều kiện để khai thác hiệu quả hệ phân tán đồng thời đảm bảo tính tiện d ng cho người ùng. Việc nghiên c u tính trong suốt tạo điều kiện để phát triển và nâng cao hiệu năng của hệ thống, đồng thời vẫn đảm bảo hệ phân tán là hệ thống ph c v người ùng.

TÀI LIỆU THAM KHẢO

[1]. Colin J. Fidge (February 1988). "Timestamps in Message-Passing Systems That Preserve the Partial Ordering". In K. Raymond (Ed.). Proc. of the 11th Australian Computer Science Conference (ACSC'88). pp. 56–66. Retrieved 2009- 02-13.

[2].Mattern, F. (October 1988), "Virtual Time and Global States of Distributed Systems", in Cosnard, M., Proc. Workshop on Parallel and Distributed Algorithms, Chateau de Bonas, France: Elsevier, pp. 215–226.

[3].lmeida, Paulo; Baquero, Carlos; Fonte, Victor (2008), "Interval Tree Clocks: A Logical Clock for Dynamic Systems", in Baker, Theodore P.; Bui, Alain; Tixeuil, Sébastien, Principles of Distribute Systems, Lecture Notes in Computer Science, 5401, Springer-Verlag, Lecture Notes in Computer Science, pp. 259–274

[4]. Torres-Rojas, Francisco; Ahamad, Mustaque (1999), "Plausible clocks: constant size logical clocks for distributed systems", Distributed Computing (Springer Verlag) 12 (4): 179–195.

[5]. S. Mullender ed., "Distributed Systems", 2nd ed., Addison-Wesley, 1993 [6]. Jie Wu, "Distributed Systems Design", Addison-Wesley, 2008

[7]. G. Coulouris, J. Dollimore, T. Kinberg, "Distributed systems : Conceptand Design“, Australia. IASTED, ACTA Press.

Một phần của tài liệu BÀI TIỂU LUẬN Môn học: CƠ SỞ DỮ LIỆU NÂNG : Tìm hiểu về hệ phân tán. (Trang 33 - 47)