Tải bản đầy đủ (.pptx) (19 trang)

XÂY DỰNG HỆ THỐNG PHÂN TÁN SỬ DỤNG JAVARMI

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 (267.03 KB, 19 trang )

Nhóm 8. APPLE
7/5/2014Nhóm 8. APPLE1
Chuyên đề 1: Lập trình mạng
Đề tài: XÂY DỰNG HỆ THỐNG PHÂN
TÁN SỬ DỤNG JAVARMI
Thành viên:
-
Huỳnh Ngọc Nam
-
Hà Thị Thanh Hương
-
Nguyễn Minh Thắng
-
Trần Thị Đan Thanh
-
Nguyễn Thị Thanh Lan
-
Nguyễn Trọng Nghĩa
Nhóm 8. APPLE
7/5/2014Nhóm 8. APPLE2
Nội dung
Tổng quan về hệ phân tán
1
Phân tán đối tượng trong Java bằng RMI
2
Giới thiệu chương trình
3
Demo
4
Nhóm 8. APPLE
7/5/2014Nhóm 8. APPLE3


1. Tổng quan về hệ phân tán

Hệ phân tán là gì? Và yêu cầu để xây dựng một mạng phân
tán là gì?

Có nhiều định nghĩa về hệ phân tán.

Hệ phân tán = Mạng máy tính + Phần mềm hệ phân tán.

Hệ phân tán là tập hợp các máy tính tự trị được kết nối với
nhau bởi một mạng máy tính và được cài đặt phần mềm hệ
phân tán.
Nhóm 8. APPLE
7/5/2014Nhóm 8. APPLE4
Phân loại
Hệ phân tán
mang tính hệ
thống: Hệ
điều hành
phân tán.
Hệ phân tán
Hệ phân tán
mang tính ứng
dụng: Các hệ
thống truyền
tin phân tán.
Nhóm 8. APPLE
7/5/2014Nhóm 8. APPLE5
Các yêu cầu đối với các ứng dụng phân tán


Yêu cầu để xây dựng 1 ứng dụng phân tán đòi hỏi nhiều yếu tố khác
nhau, và khá phức tạp. Tuy nhiên, về cơ bản để thiết kế và triển khai
một ứng dụng phân tán cần lựa chọn 5 yếu tố sau đây:
Nhóm 8. APPLE
7/5/2014Nhóm 8. APPLE6
Kỹ thuật
phát triển
Mô hình
phát triển
Ngôn
ngữ lập
trình
Cơ sở dữ
liệu
Quản lý
bảo mật
Hệ phân tán
Các yêu cầu cơ
bản
Nhóm 8. APPLE
7/5/2014Nhóm 8. APPLE7
2. Phân tán đối tượng trong Java bằng
RMI

RMI(Remote Method Invocation) 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ột má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ợp trong ngôn ngữ Java.

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ác hành vi như một đối tượng thực
sự.
Nhóm 8. APPLE
7/5/2014Nhóm 8. APPLE8
Transport
Remote Reference Layer
Stub Stub
Client Server
Object Reference Remote Object
RMI
System
Client JVM Server JVM
Nhóm 8. APPLE
7/5/2014Nhóm 8. APPLE9
So sánh giữa gọi phương thức từ xa với
các lời gọi thủ tục từ xa RPC

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 Java truyề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ại RMI 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ấ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ừ xa 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.
Nhóm 8. APPLE
7/5/2014Nhóm 8. APPLE10
Đặc điểm

Ưu điểm:
- Đơn giản, dễ sử dụng.
- Trong suốt: lời gọi phương thức từ xa giống lời
gọi phương thức cục bộ.
- Độ tin cậy cao.
- An toàn và bảo mật (do JVM cung cấp).

Nhược điểm:
- Chỉ dùng cho java .
Nhóm 8. APPLE
7/5/2014Nhóm 8. APPLE11
Cách làm việc của RMI

Các Đối tượng ở phía Server đăng kí với bộ đăng kí RMI registry.

Client kiểm tra các đối tượng ở xa trong RMI Registry.

Vị trí của một đối tượng ở xa được xác định trong RMI Registry. Một
stub được trả về cho Client.


Remote object có thể được sử dụng tương tự như Local object để truy
xuất đến toàn bộ tài nguyên. Việc truyền thông giữa Client và Server
được xử lý bởi Stub.
Nhóm 8. APPLE
7/5/2014Nhóm 8. APPLE12
Object Reference
Stub
Client
call
Remote Object
Stub
Method_2
Method_n
Server
Object Reference + Method + Arrgument
Result or Exception
Nhóm 8. APPLE
7/5/2014Nhóm 8. APPLE13
Trình (bộ quản lý) đăng ký Registry

Là một chương trình dịch vụ chạy ở hậu trường (rmiregistry.exe),
thực hiện mở ổ cắm socket và lắng nghe các yêu cầu gởi đến cổng
mặc định 1099, có thể chỉ định một cổng khác với cổng 1099.
Ví dụ: C:\j2sdk1.4.0\bin\ rmiregistry.exe 9999

Đóng vai trò như là một DNS nhỏ cho các đối tượng từ xa thực hiện
tìm kiếm dịch vụ.
Nhóm 8. APPLE
7/5/2014Nhóm 8. APPLE14

Các lớp trung gian Stub
Client
Stub
Naming
Client JVM
4
5
6
7
7
Server
Stub
Remote
Object
Naming
Server JVM
1
rmiregistry
Stub
2
3
Nhóm 8. APPLE
7/5/2014Nhóm 8. APPLE15

Chúng ta sẽ xây dựng hai máy chứa các phương thức gọi từ xa:
o
Một máy có các phương thức cộng, trừ, nhân, chia 2 số, giải
các phương trình bậc 2, 4.
o
Một máy có phương thức tính khoảng cách giữa các điểm,

tính diện tích, chu vi của hình chữ nhật, hình tròn.

Hai máy này cho phép các máy khác có thể truy cập từ xa để sử
dụng các phương thức này. Các máy khác thực hiện truy cập từ
xa đến các phương thức trên để yêu cầu thực hiện công việc của
mình.
3. Giới thiệu chương trình
Nhóm 8. APPLE
7/5/2014Nhóm 8. APPLE16
Quá trình thực hiện
1. Tạo giao diện (interface) khai báo các phương thức được gọi từ
xa của đối tượng. (INTERFACE.java và INTERFACE1.java)
2. Tạo lớp cài đặt (class implement) cho giao diện đã được khai
báo. (REMOTE.java và REMOTE1.java)
3. Viết chương trình Server. (SERVER.java và SERVER1.java)
4. Viết chương trình Client. (CLIENTS.java)
5. Biên dịch các tập tin nguồn theo dạng RMI (rmic) để tạo ra các
lớp tương ứng và stub cho Server và Client. (Build.bat)
6. Khởi động dịch vụ tên. (rmiregistry)
7. Thực thi chương trình Server. (Server1.bat và Server2.bat)
8. Thực thi chương trình Client. (Clients.bat)
Nhóm 8. APPLE
7/5/2014Nhóm 8. APPLE17
Tổ chức chương trình
Server 1 Server 2 Client
INTERFACE.class INTERFACE1.class INTERFACE.class
REMOTE.class REMOTE1.class INTERFACE1.class
REMOTE_Stub.class REMOTE1_Stub.class REMOTE_Stub.class
SERVER.class SERVER1.class REMOTE1_Stub.class
CLIENTS.class

Nhóm 8. APPLE
7/5/2014Nhóm 8. APPLE18
4. Demo
Nhóm 8. APPLE
7/5/2014Nhóm 8. APPLE19
Thank You !
Cám ơn thầy và các bạn đã lắng nghe!

×