HƯỚNG DẪN XÂY DỰNG HỆ THỐNG PHÂN TÁN SỬ DỤNG JAVARMI, CODE JAVARMI, GIÁO TRÌNH VỀ RMI BẰNG JAVA, ĐỒ ÁN VỀ HỆ PHÂN TÁN SỬ DỤNG JAVA RMI, DEMO JAVA RMI, ỨNG DỤNG JAVA RMI TRONG HỆ PHÂN TÁN, RMI VÀ LẬP TRÌNH MẠNG
Trang 1Nhóm 8 APPLE
7/5/2014
Nhóm 8 APPLE
1
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
Trang 2Nhóm 8 APPLE
7/5/2014
Nhóm 8 APPLE
2
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
Trang 3Nhóm 8 APPLE
7/5/2014
Nhóm 8 APPLE
3
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
Trang 4Nhóm 8 APPLE
7/5/2014
Nhóm 8 APPLE
4
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
Trang 5Nhóm 8 APPLE
7/5/2014
Nhóm 8 APPLE
5
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:
Trang 6Nhóm 8 APPLE
7/5/2014
Nhóm 8 APPLE
6
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
Trang 7Nhóm 8 APPLE
7/5/2014
Nhóm 8 APPLE
7
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ự.
Trang 8Nhóm 8 APPLE
7/5/2014
Nhóm 8 APPLE
8
Transport
Remote Reference Layer
RMI System
Trang 9Nhóm 8 APPLE
7/5/2014
Nhóm 8 APPLE
9
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
Trang 10Nhóm 8 APPLE
7/5/2014
Nhóm 8 APPLE
10
Đặ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
Trang 11Nhóm 8 APPLE
7/5/2014
Nhóm 8 APPLE
11
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
Trang 12Nhóm 8 APPLE
7/5/2014
Nhóm 8 APPLE
12
Object Reference
Stub
Client
call
Remote Object
Method_n
Server
Object Reference + Method + Arrgument
Result or Exception
Trang 13Nhóm 8 APPLE
7/5/2014
Nhóm 8 APPLE
13
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ụ
Trang 14Nhóm 8 APPLE
7/5/2014
Nhóm 8 APPLE
14
Các lớp trung gian Stub
Client
Stub Naming
Client JVM
4
5
6
7
7
Server
Stub RemoteObject Naming
Server JVM
1
rmiregistry
Stub 2
3
Trang 15Nhóm 8 APPLE
7/5/2014
Nhóm 8 APPLE
15
•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
Trang 16Nhóm 8 APPLE
7/5/2014
Nhóm 8 APPLE
16
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)
Trang 17Nhóm 8 APPLE
7/5/2014
Nhóm 8 APPLE
17
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
Trang 18Nhóm 8 APPLE
7/5/2014
Nhóm 8 APPLE
18
4 Demo
Trang 19Nhóm 8 APPLE
7/5/2014
Nhóm 8 APPLE
19
Thank You !
Cám ơn thầy và các bạn đã lắng nghe!