1. Trang chủ
  2. » Giáo Dục - Đào Tạo

TÌM HIỂU VỀ LẬP TRÌNH HỆ PHÂN TÁN TRONG JAVA

12 10 0

Đ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 12
Dung lượng 1,18 MB

Nội dung

BAN CƠ YẾU CHÍNH PHỦ HỌC VIỆN KỸ THUẬT MẬT Mà ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ BÁO CÁO TÌM HIỂU VỀ LẬP TRÌNH HỆ PHÂN TÁN TRONG JAVA Học phần : Nguyên lý hệ điều hành Sinh viên thực hiện: Nguyễn Thị Huế MSSV: AT13CLC0109 Nguyễn Thị Kim Huế MSSV: AT13CLC0110 Hoàng Đăng Luân MSSV: AT13CLC0115 Giảng viên: Lê Đức Thuận Khoa An toàn thông tin – Học viện kỹ thuật mật mã Hà Nội, 2017 Trang LỜI MỞ ĐẦU Hệ thống máy tính trải qua cách mạng Từ năm 1945 năm 1985, máy tính lớn đắt Hầu hết tổ chức có máy tính khơng biết cách nối chúng Đến năm 1980, hai mở rộng kỹ thuật thay đổi tình hình Thứ phát triển vi xử lý, từ CPU có bit phát triển thành 16, 32, 64 bit Nhiều CPU có lực tính tốn siêu máy tính với giá thấp Sự phát triển thứ hai phát minh mạng máy tính tốc độ cao, mạng cục (Local-area networks-LAN) cho phép hàng trăm máy tính kết nối với để trao đổi thông tin Mạng diện rộng (Wide-area network-WAN) cho phép hàng triệu máy tính trái đất kết nối với tốc độ truyền liệu từ 64Kbps đến gigabits giây Kết cải tiến mặt kỹ thuật đem lại kết nối dễ dàng nhiều hệ thống máy tính với để tạo mạng cao tốc Chúng thường gọi : mạng máy tính hệ phân tán Để xây dựng hệ phân tán hoạt động hiệu tối ưu, nhà thiết kế phải giải nhiều vấn đề có tính chiến lược Tiểu luận nhằm trình bày số vấn đề xây dựng hệ phân tán thông qua ngôn ngữ Java đưa số giải pháp nhằm giải vấn đề Đồng thời tiểu luận cịn đưa số ví dụ minh họa cho vấn đề giải pháp Trang MỤC LỤC Chương 1: TỔNG QUAN VỀ LẬP TRÌNH PHÂN TÁN 1.1.Lập trình phân tán gì? 1.2.Vấn đề gọi phương thức từ xa 1.3.Lập trình phân tán với Java Chương 2: LẬP TRÌNH PHÂN TÁN VỚI RMI 2.1.Giới thiệu: 2.2.Kiến trúc RMI 2.2.1.Giao diện (interface) - trái tim RMI: 2.2.2.Kiến trúc phân tầng RMI 2.3.Cài đặt ứng dụng RMI đơn giản 2.4.MỘT SỐ KHÁI NIỆM TRONG RMI 12 2.4.1.Registry 12 2.4.2.Biến Classpath 14 2.4.3.Codebase 15 2.5.CHUYỂN THAM SỐ TRONG LỜI GỌI PHƯƠNG THỨC TỪ XA 17 2.5.1.Chuyển tham số theo tham trị tham biến 17 2.5.2.Chuyển đối tượng đến trình chủ theo tham trị: 18 2.5.3.Chuyển đối tượng đến trình chủ theo tham biến: 21 2.6.TUẦN TỰ HÓA (SERIALIZABLE) ĐỐI TƯỢNG 25 2.7.MỘT SỐ KỸ THUẬT LẬP TRÌNH PHÂN TÁN VỚI RMI 27 2.7.1.RMI REGISTRY cách đăng ký đối tượng 27 2.7.2.Dùng đối tượng sản sinh nhiều đối tượng 30 2.7.3.Kỹ thuật gọi đối tượng xa phương pháp động ( DYNAMIC METHOD INVOKE ) 34 2.7.4.Tự động kích hoạt đối tượng từ xa (ACTIVITION) 37 2.7.5.Trình mồi nạp ứng dụng từ xa 42 Trang Chương 1: TỔNG QUAN VỀ LẬP TRÌNH PHÂN TÁN 1.1 Lập trình phân tán gì? Lập trình thơng thường máy cục bộ: Các đối tượng chương trình thủ tục , hàm nạp trực tiếp vào nhớ thực thi máy cục Đối với hàm có sẵn thư viện, người ta quan tâm đến tham số truyền cho kết trả Lập trình phân tán việc lập trình máy khác đối tượng chương trình gồm phương thức thuộc tính triệu gọi lẫn Computer A A2 Computer B A1 B1 C1 C2 Computer C Hình 1.1-1: Mơ hình triệu gọi đối tượng từ xa Trong minh họa trên, đối tượng A1 A2 máy A gọi nhau, B1 B2 máy B vậy, lời gọi cục Tuy nhiên, đối tượng A1 máy A gọi đối tượng C1 máy C hay B1 máy B gọi C1 máy C, lời gọi từ xa 1.2 Vấn đề gọi phương thức từ xa Trên máy cục bộ, phương thức chương trình quản lý định vị vùng nhớ, người lập trình cho phép thực lời gọi cách bình thường mà khơng cần quan tâm đến việc chúng giao tiếp với Còn phương thức máy khác hoạt động hai tiến trình, khơng gian địa khác nên việc truyền tham số, tham chiếu đến địa thực thông thường trong máy Trang Lời gọi phương thức cục ln đưa kết quả, có nghĩa thực việc gọi phương thức từ xa khơng thực cố mạng Đối với hàm máy cục bộ, tham số truyền cho hàm thường đưa vào ngăn xếp chương trình lấy để thực tham số truyền cho hàm xa phải đóng gói chuyển qua mạng theo giao thức mạng đến nơi cần đến 1.3 Lập trình phân tán với Java Java ngơn ngữ hỗ trợ lập trình phân tán với hai thư viện chuẩn RMI CORBA RMI chế gọi phương thức từ xa tích hợp ngơn ngữ Java Phương pháp lập trình RMI phương pháp hướng đối tượng, thao tác hay lời gọi phương thức liên quan đến đối tượng CORBA (Common Object Request Broker Architecture) đặc tả OMG (Object Management Group) dành cho việc đạt tính tương tác nút tính tốn phân tán Mục tiêu CORBA định nghĩa cấu trúc mà cho phép mơi trường khơng đồng liên lạc mức đối tượng, không quan tâm đến người thiết kế hai điểm cuối ứng dụng phân tán Corba ngôn ngữ trung lập thực thi rộng rãi platform khác *Sự khác RMI CORBA: - RMI phần J2SDK hàm thư viện hỗ trợ lời gọi phương thức từ xa trả giá trị cho ứng dụng tính tốn phân tán Ở ngôn ngữ Java sử dụng phía gọi phía bên phương thức gọi - CORBA chuẩn công nghiệp cho phép gọi phương thức từ xa nhận kết trả Nhưng khơng giống RMI, sử dụng bên phía gọi bên phía phương thức gọi sử dụng ngơn ngữ lập trình khác nhau, bao gồm trường hợp hai bên không sử dụng ngôn ngữ Java - RMI tập hàm thư viện đơn giản hai bên sử dụng ngơn ngữ lập trình kiến trúc máy Điều làm cho vấn để triệu gọi phương thức từ xa dễ giải - Bộ phát triển J2SDK hỗ trợ RMI CORBA, cho phép đối tượng Java gọi đối tượng CORBA sử dụng hai cách tiếp cận khác Trong giới hạn tiểu luận tìm hiểu phương pháp lập trình phân tán RMI Trang Chương 2: LẬP TRÌNH PHÂN TÁN VỚI RMI 2.1 Giới thiệu: RMI (Remote Method Invoke)– triệu gọi phương thức từ xa - công nghệ SUN giới thiệu JDK 1.1 (2/1997) mở thời kì cho lĩnh vực lập trình mạng Được thiết kế tương đối dễ sử dụng RMI công nghệ mạnh, cung cấp đầy đủ cơng cụ để người lập trình phát triển ứng dụng phân tán cách tốt Mục đích việc thiết kế RMI cho phép người lập trình phát triển chương trình phân tán Java với cú pháp ngữ nghĩa giống lập trình thơng thường Để làm việc này, họ ánh xạ lớp đối tượng làm việc máy ảo Java đơn thành lớp đối tượng làm việc môi trường phân tán 2.2 Kiến trúc RMI 2.2.1 Giao diện (interface) - trái tim RMI: Kiến trúc RMI dựa nguyên lý quan trọng: định nghĩa hành vi việc mô tả hành vi hai khái niệm riêng biệt RMI chấp nhận mã định nghĩa hành vi mã mô tả hành vi tách rời chạy máy ảo Java độc lập Điều cần làm hệ thống phân tán máy khách định nghĩa dịch vụ mong muốn máy chủ nơi cung cấp dịch vụ Trong RMI, việc định nghĩa dịch vụ từ xa viết interface Java Mô tả chi tiết dịch vụ từ xa viết lớp - class Yếu tố cần hiểu RMI là: giao diện định nghĩa hành vi đối tượng từ xa lớp mơ tả định nghĩa Hình 2.2-1: Giao diện lớp mô tả giao diện Trang Một giao diện không chứa mã thực thi RMI hỗ trợ hai lớp mô tả giao diện giống Lớp thứ mơ tả hành vi chạy server Lớp thứ hai hoạt động đối tượng trung gian cho dịch vụ từ xa chạy Client Biểu đồ minh họa Service Client Service Proxy Server RMI Service Implementation Một chương trình Client thực lời gọi phương thức thông qua đối tượng trung gian (proxy), RMI gửi đến máy ảo từ xa từ đến đối tượng mơ tả Bất kì giá trị trả tạo đối tượng mô tả gửi trở proxy sau proxy chyển đến chương trình máy khách 2.2.2 Kiến trúc phân tầng RMI RMI xây dựng từ lớp trừu tượng Client Program RMI System Server Program Stub & Skeletons Stub & Skeletons Remote Reference Layer Remote Reference Layer Transport Layer Hình 2.2-1: Kiến trúc phân tầng RMI Trang Client Object Remote Object Stub Skeleton Remote Reference Layer Remote Reference Layer TCP Transport Layer Transport Layer Hình 2.2-2: Hoạt động thành phần kiến trúc RMI Việc dùng kiến trúc phân lớp nên lớp cải tiến thay mà không ảnh hưởng đến tính chất hệ thống Ví dụ lớp transport thay lớp theo phương thức kết nối UDP/IP mà không ảnh hưởng lớp *Lớp trung gian (STUB SKELETON) Việc gọi phương thức từ xa không giống gọi phương thức thông thường máy Vì thế, lập trình phân tán, chế gọi từ xa đối tượng hai máy khác không gọi trực tiếp lẫn mà thông qua lớp trung gian Người lập trình khơng cần phải quan tâm lớp trung gian chứa làm việc Lớp trung gian đón đầu lời gọi phát sinh từ Client đến biến tham chiếu giao diện gửi lại lời gọi cho dịch vụ RMI từ xa Lớp trung gian tồn hai phía máy khách (nơi thực lời gọi) máy chủ (nơi cài đặt đối tượng gọi) Phía máy khách, lớp trung gian gọi Stub phía máy chủ, lớp trung gian gọi Skeleton Trang A2 Computer B B1_skel A1 B1_stub Computer A C1_stub B1 Computer C C1_skel C1 C2 Hình 2.2-3: Vai trò lớp trung gian stub skel Trong Java SDK, lớp skeleton khơng cịn RMI dùng reflection để tạo kết nối đến đối tượng dịch vụ từ xa *Remote Reference Layer Lớp làm phiên dịch quản lý tham chiếu tạo từ Client đến đối tượng từ xa Lớp Remote Reference Layers định nghĩa hỗ trợ ngữ nghĩa lời gọi kết nối RMI Lớp cung cấp đối tượng RemoteRef, đối tượng đại diện cho liên kết đến đối tượng thực dịch vụ từ xa Đối tượng stub dùng phương thức invoke() RemoteRef để chuyển tiếp lời gọi phương thức Đối tượng RemoteRef hiểu ngữ nghĩa từ lời gọi từ xa Trong JDK 1.1, RMI cung cấp cách cho Client để kết nối đến dịch vụ từ xa: unicast – nối Trước Client dùng dịch vụ từ xa, dịch vụ từ xa phải cài đặt Server export RMI Nếu dịch vụ chính, phải đặt tên đăng kí đến RMI Registry Trong Java SDK, RMI thêm ý nghĩa cho kết nối client-server Trong phiên này, RMI hỗ trợ đối tượng từ xa tích cực Khi lời gọi phương thức tạo từ proxy đến đối tượng activatable remote objects, RMI xác định đối tượng dịch vụ từ xa Trang không hoạt động, RMI khởi tạo đối tượng khơi phục trạng thái từ file đĩa Có thể có kiểu kết nối khác VD: với multicast, proxy đơn gửi yêu cầu đến nhiều đối tượng mô tả đồng thời… nhận đáp trả *Transport Layer - Tầng vận chuyển Tầng có nhiệm vụ tạo kết nối hai máy ảo Java (JVM) Tất kết nối kết nối mạng dùng giao thức TCP/IP Nếu hai máy ảo chạy máy vật lý, chúng kết nối thơng qua giao thức ngăn xếp TCP/IP máy tính Điều lí giải ta phải có cấu hình TCP/IP máy tính ta chạy ví dụ TCP/IP cung cấp kết nối an toàn hai máy dựa địa IP số hiệu cổng Trong phiên RMI tại, kết nối TCP/IP dùng cho tất kết nối từ máy đến máy khác Lúc đầu dùng TCP/IP, RMI dùng giao thức JRMP, giao thức Nhưng sau, có hai phiên Phiên phát hành với JDK 1.1, RMI yêu cầu dùng lớp Skeleton server Phiên thứ phát hành với Java SDK Nó cải tiến để đạt hiệu không yêu cầu lớp skeleton Một vài thay đổi với Java SDK interface khơng địi hỏi kế thừa từ java.rmi.Remote phương thức không cần thiết ném ngoại lệ RemoteException SUN IBM liên kết làm việc cho phiên RMI gọi RMI-IIOP, RMI-IIOP dùng giao thức IIOP để thay cho JRMP 2.3 Cài đặt ứng dụng RMI đơn giản Ở ứng dụng phân tán RMI đơn giản này, ta cần có hai chương trình, chương trình chạy Server chờ phục vụ yêu cầu tính tốn chương trình u cầu chạy máy Client Trang 10 RMI Calculator._Skel CalculatorClien t Calculator._Stub Client Server Calculator Hình 2.3-1: Triệu gọi đối tượng RMI Calculator từ xa Ở chương trình Server, ta cần mơ tả lớp giao tiếp đối tượng Calculator, sau cài đặt chi tiết cho đối tượng Calculator đưa cài đặt vào chương trình điều khiển gọi CalculatorServer Đầu tiên, ta đặc tả lớp giao tiếp đối tượng Calculator: // Calculator.java import java.rmi.*; interface Calculator extends Remote { public int Add(int a,int b) throws RemoteException; } Giải thích: Mục đích ứng dụng gọi từ xa đối tượng Calculator phương thức nó, để làm vậy, ta cần cài đặt đối tượng Calculator interface interface kế thừa từ interface Remote Remote interface rỗng, có chức thơng báo cho máy ảo Java biết interface kế thừa từ (Calculator) có khả giao tiếp từ xa *Cài đặt chi tiết cho đối tượng Calculator: // CalculatorImpl.java import java.rmi.*; class CalculatorImpl implements Calculator { public int Add(int a,int b) throws RemoteException { return a+b; } } *Đưa đối tượng Calculator vào chương trình phục vụ: // CalculatorServer.java Trang 11 import java.rmi.server.*; import java.rmi.*; class CalculatorServer { public static void main(String args[]) { try { CalculatorImpl c=new CalculatorImpl(); UnicastRemoteObject.exportObject(c); System.out.println ("Da Export doi tuong Calculator"); Naming.bind("rmi://localhost/CalcProg",c); System.out.println ("Da dang ki Calculator voi RMI"); } catch(Exception e){} } } Giải thích: Ta mô tả xong đối tượng Calculator, tự đối tượng chưa thể giao tiếp với bên Ta cần đưa vào chương trình CalculatorServer để phục vụ lời gọi từ xa UnicastRemoteObject.exportObject(c); Lệnh máy ảo Java nhận diện đối tượng c đối tượng có khả giao tiếp từ xa Naming.bind("rmi://localhost/CalcProg",c); Mục đích: đặt cho đối tượng c tên gợi nhớ đăng kí tên với quản lý RMI Các chương trình máy khách dựa vào tên để tham chiếu đến đối tượng tương ứng Cú pháp phương thức bind(rmi://hostname:port/ObjectName,Object) - rmi: giao thức dùng để đăng kí - hostname:port: địa IP tên máy số hiệu cổng máy nơi mà đăng kí RMI chạy - ObjectName: tên gợi nhớ đặt cho đối tượng (Object) cần đăng kí Bộ đăng kí rmiregisty: ta cần chạy đăng kí trước chạy chương trình CalculatorServer Khi thực thi, rmiregistry chờ để đón nhận kết nối phương Trang 12 ... định nghĩa h? ?nh vi việc mô tả h? ?nh vi hai khái niệm riêng biệt RMI chấp nhận mã định nghĩa h? ?nh vi mã mô tả h? ?nh vi tách rời chạy máy ảo Java độc lập Điều cần làm h? ?? thống phân tán máy khách định... MỞ ĐẦU H? ?? thống máy tính trải qua cách mạng Từ năm 1945 năm 1985, máy tính lớn đắt H? ??u h? ??t tổ chức có máy tính cách nối chúng Đến năm 1980, hai mở rộng kỹ thuật thay đổi tình h? ?nh Thứ phát triển... ln thực việc gọi phương thức từ xa khơng thực cố mạng Đối với h? ?m máy cục bộ, tham số truyền cho h? ?m thường đưa vào ngăn xếp chương trình lấy để thực tham số truyền cho h? ?m xa phải đóng gói chuyển

Ngày đăng: 28/12/2021, 09:59

HÌNH ẢNH LIÊN QUAN

Hình 1.1-1: Mô hình triệu gọi các đối tượng từ xa - TÌM HIỂU VỀ LẬP TRÌNH HỆ PHÂN TÁN  TRONG JAVA
Hình 1.1 1: Mô hình triệu gọi các đối tượng từ xa (Trang 4)
Hình 2.2-1: Giao diện và lớp mô tả giao diện. - TÌM HIỂU VỀ LẬP TRÌNH HỆ PHÂN TÁN  TRONG JAVA
Hình 2.2 1: Giao diện và lớp mô tả giao diện (Trang 6)
Hình 2.2-1: Kiến trúc phân tầng của RMI - TÌM HIỂU VỀ LẬP TRÌNH HỆ PHÂN TÁN  TRONG JAVA
Hình 2.2 1: Kiến trúc phân tầng của RMI (Trang 7)
Hình 2.2-2: Hoạt động của các thành phần trong kiến trúc RMI - TÌM HIỂU VỀ LẬP TRÌNH HỆ PHÂN TÁN  TRONG JAVA
Hình 2.2 2: Hoạt động của các thành phần trong kiến trúc RMI (Trang 8)
Hình 2.2-3: Vai trò của các lớp trung gian stub và skel - TÌM HIỂU VỀ LẬP TRÌNH HỆ PHÂN TÁN  TRONG JAVA
Hình 2.2 3: Vai trò của các lớp trung gian stub và skel (Trang 9)
Hình 2.3-1: Triệu gọi đối tượng RMI Calculator từ xa - TÌM HIỂU VỀ LẬP TRÌNH HỆ PHÂN TÁN  TRONG JAVA
Hình 2.3 1: Triệu gọi đối tượng RMI Calculator từ xa (Trang 11)

TỪ KHÓA LIÊN QUAN

w