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

Xây dựng hệ thống tải dịch vụ động hỗ trợ tính toán phân tán

62 384 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 62
Dung lượng 1,11 MB

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

Nội dung

Ý tưởng của vấn đề là trong một mạng tất cả các dịch vụ được đặttập trung tại một máy chuyên trách nào đó, khi có nhu cầu người sử dụng sẽ tải các dịch vụnày về máy cục bộ để sử dụng.. T

Trang 1

LỜI CẢM ƠN

“Cơm cha áo mẹ chữ thầy”, câu nói từ xưa đã thấm nhuần vào tâm tư tình cảm của mỗi người Việt Nam, mà tôi đã được học ngay từ thuở bé Hôm nay, được vinh dự hoàn thành một đề tài tốt nghiệp, tôi vui sướng nhường nào! Lúc này tôi lại càng trân trọng câu nói ấy hơn bao giờ hết.

Đúng vậy, nếu không có cha mẹ, không có thầy cô chắc chắn tôi sẽ không có được ngày hôm nay.

Trước tiên con xin thành kính cảm ơn cha mẹ, cha mẹ đã cho con tất cả để vững bước trên đường đời.

Tôi xin chân thành cảm ơn các thầy cô đã giúp đỡ, truyền đạt cho tôi những kiến thức quí báu trong suốt quá trình học tập tại trường.

Tôi xin chân thành cảm ơn thầy, đã tận tình chỉ bảo, cho tôi nhiều ý kiến quí giá để tôi có thể hoàn thành tốt đồ án tốt nghiệp này.

Cuối cùng, tôi xin cảm ơn tất cả mọi người, đã ủng hộ, giúp đỡ tôi trong thời gian qua.

Đà Nẵng 20/5/2003

Trang 2

Lời Cam Đoan.

Tôi xin cam đoan những điều dưới đây là sự thật, và sẽ chịu mọi trách nhiệm nếukhông đúng sự thật :

1- Đồ án được hoàn thành trên cơ sở kiến thức học được của bản thân, những

ý kiến định hướng của thầy hướng dẫn Nguyễn Tấn Khôi và sự nghiên cứu, lao động của tôi Không có sự sao chép, lắp ráp từ những dự án khác 2- Những vấn đề lý thuyết tham khảo, trong tất cả các tài liệu đã nêu ra trong

phần tài liệu tham khảo Những lý thuyết này là đúng, đã được triển khai ứng dụng và kiểm tra trong thực tế.

3- Những vấn đề kỹ thuật giải quyết vấn đề trong đề tài đã được kiểm tra,

chạy được như đã trình bày trong đồ án.

4- Đảm bảo chương trình chạy đúng, và chịu trách nhiệm về toàn bộ những gì

đã trình bày.

Đà Nẵng 20/5/2003.

Trang 3

MỤC LỤC

Chương 1 TỔNG QUAN VỀ ĐỀ TÀI 8

1 GIỚI THIỆU ĐỀ TÀI 8

2 HƯỚNG NGHIÊN CỨU 8

Chương 2 CƠ SỞ LÝ THUYẾT 10

1 LẬP TRÌNH MẠNG VỚI JAVA 10

1.1 Liên lạc trên internet 10

1.2 Dịch vụ từ phía máy chủ và khái niệm cổng 10

1.3 Mô hình khách chủ và khái niệm Socket 10

1.4 Các lớp cần thiết trong lập trình mạng với Java 11

1.5 Giới thiệu webserver và giao thức http 11

2 MÔ HÌNH PHÂN TÁN ĐỐI TƯỢNG RMI 11

2.1 Tìm hiểu cơ chế hoạt động của ứng dụng JavaRMI 13

2.2 Các vấn đề cần chú ý trong JavaRMI 13

2.3 Tìm hiểu tầng _Stub và _Skel 14

2.4 Tìm hiểu bộ đăng ký Rmiregistry và các hàm đăng kí 15

3 KỸ THUẬT LẬP TRÌNH PHÂN TÁN JAVARMI 16

3.1 Tổng quan một ứng dụng JavaRMI 16

3.2 Trình tự xây dựng ứng dụng JavaRMI 16

3.3 Các cách đăng ký đối tượng với rmiregistry 18

3.4 Truyền tham số khi gọi phương thức từ xa 18

3.4.1 Các giao tiếp Remote, Serializable và tham số 18

3.4.2 Chuyển đối tượng theo tham chiếu và kỹ thuật callback 19

3.5 Các kỹ thuật gọi đối tượng ở xa trong JavaRMI 21

3.5.1 Gọi bằng phương thức động, với kĩ thuật phản chiếu 21

Trang 4

3.5.2 Cơ chế tự kích hoạt với rmid.exe 22

3.5.3 Trình mồi nạp ứng dụng từ xa với bộ nạp lớp JavaRMI 23

3.6 Vấn đề bảo mật và kĩ thuật xuyên hầm trong JavaRMI 25

Chương 3 PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG 27

1 PHÂN TÍCH HỆ THỐNG THÔNG TIN 27

2 THIẾT KẾ VÀ TỔ CHỨC CƠ SỞ DỮ LIỆU 31

Chương 4 XÂY DỰNG CHƯƠNG TRÌNH 33

1 PHÂN TÍCH YÊU CẦU & KHÁI QUÁT MÔ HÌNH 33

2 THIẾT KẾ CHƯƠNG TRÌNH 35

2.1 Module RootServer 35

2.1.1 Kỹ thuật 35

2.1.3 Các lớp 37

2.2 Module ClientAgent 41

2.2.1 Kỹ thuật 41

2.2.2 Thuật toán 41

2.2.3 Các lớp 42

2.3 Module Client 44

2.3.1 Kỹ thuật 44

2.3.2 Thuật toán 45

2.3.3 Các lớp 45

3 XÂY DỰNG DỊCH VỤ ĐỂ TRIỂN KHAI TRÊN HỆ THỐNG 46

3.1 Các yêu cầu chung 46

3.2 Kĩ thuật 46

4 KẾT QUẢ CHƯƠNG TRÌNH 51

4.1 Chương trình Server 51

4.2 Chương trình Agent 52

4.3 Chương trình Client 53

Trang 5

4.4 Service 54

Chương 5 ĐÁNH GIÁ KẾT QUẢ 55

1 KẾT QUẢ ĐẠT ĐƯỢC 55

2 NHẬN XÉT 55

3 HƯỚNG PHÁT TRIỂN 55

4 KẾT LUẬN 56

Chương 6 Phụ Lục 57

Trang 6

DANH MỤC CÁC HÌNH VẼ & BẢNG BIỂU.

H1 Sự độc lập giữa khai báo và thực thi hành vi

H2 Các lớp sử dụng giao tiếp trong JavaRMI

H3 Kiến trúc JavaRMI

H4 Hoạt động của ứng dụng JavaRMI

H5 Mô hình ủy nhiệm (proxy pattern)

H6 Vai trò _stub và _skel

H7 Cơ chế đăng kí & truy tìm dịch vụ JavaRMI

H8 Hoạt động của hệ thống callback

H9 Kỹ thuật trình nạp mồi từ xa

H16 Biểu đồ hoạt động (Sơ đồ khối của hệ thống)

H17 Sơ đồ hoạt động của hệ thống

Trang 7

Lời Mở Đầu

Sự phát triển của khoa học kỹ thuật, Công nghệ thông tin ngày càng đặt ra nhiều vấn

đề cần giải quyết Trong đó vấn đề thời gian và hiệu quả sử dụng các tài nguyên trongmạng để đáp ứng các yêu cầu của con người là rất quan trọng Chúng ta phải tìm cách khaithác tối đa khả năng của tài nguyên trong mạng, sao cho đáp ứng tốt nhất về nhu cầuthông tin của con người Như chúng ta đã biết, nhu cầu thông tin là vô hạn, nó đa dạng vềlĩnh vực phong phú về lượng, tuy nhiên tài nguyên lại rất hạn chế và không thể đáp ứng tốtmọi yêu cầu của con người Một môi trường tài nguyên cụ thể chỉ có thể đáp ứng tốt trongmột vài lĩnh vực thông tin nhất định Như vậy, vấn đề làm thế nào để trên cùng một nền tàinguyên như thế ta có thể nâng cao khả năng phục vụ cho nhiều đối tượng

Mặc khác, trong thực tế có không ít những bài toán yêu cầu một khối lượng tính toánrất lớn, cũng có những ứng dụng bắt buộc triển khai trên mạng và dữ liệu xử lí của nókhông tập trung mà phân tán trên các tài nguyên trong mạng

Ngày nay, lập trình và ứng dụng phân tán đã có những bước tiến đáng kể Mục tiêucủa nó là tận dụng tài nguyên, chia sẻ tài nguyên nhằm đáp ứng tốt hơn nhu cầu thông tincủa con người trên cơ sở nguồn tài nguyên cố định

Với những phân tích như trên ta thấy vấn đề cập nhật, tải các dịch vụ động trongmạng là rất quan trọng Ý tưởng của vấn đề là trong một mạng tất cả các dịch vụ được đặttập trung tại một máy chuyên trách nào đó, khi có nhu cầu người sử dụng sẽ tải các dịch vụnày về máy cục bộ để sử dụng Khi kết thúc dịch vụ thì tất cả các tài nguyên được giảiphóng, bỡi vì dịch vụ không được lưu cố định trên đĩa của máy cục bộ Như vậy, việc tảicác dịch vụ động đem lại các lợi ích sau:

- Cho phép tiết kiệm, chia sẻ được tài nguyên trong mạng

- Nâng cao tính đa dạng, phong phú và phân tán của dịch vụ

- Quản lý dịch vụ sẽ tập trung hơn, khi có thay đổi về dịch vụ sẽ tiết kiệm côngsức, chi phí xử lý

- Dịch vụ có tính cập nhật, tương thích cao

Với những kiến thức đã học được và sự định hướng của thầy hướng dẫn, tôi đã chọn

đề tài “Xây dựng hệ thống tải dịch vụ động hỗ trợ tính toán phân tán” nhằm giải quyết những vấn đề đã phân tích ở trên

Qua thời gian thực hiện đề tài tôi đã thu được những kết quả nhất định, tuy nhiên chắc còn nhiều thiếu sót Rất mong những ý kiến đóng góp quí giá của thầy cô, của các bạn

để đề tài được hoàn thiện và có thể triển khai ứng dụng trong thực tế

Trang 8

Chương 1 TỔNG QUAN VỀ ĐỀ TÀI

1 GIỚI THIỆU ĐỀ TÀI

“Tính toán phân tán” có nghĩa là việc tính toán không tập trung trên một máy

mà phải phân tán ở nhiều máy trên mạng, nhằm nâng cao tốc độ tính toán, tận dụngtốt các tài nguyên trên mạng Như vậy, nhiệm vụ của đề tài nhằm tìm hiểu các côngnghệ hỗ trợ lập trình mạng, hỗ trợ triển khai các ứng dụng phân tán và bước đầuthiết kế một hệ thống có thể hỗ trợ các tính toán phân tán ở một mức độ nào đó Trên tinh thần đó và trong quá trình thực hiện đồ án tốt nghiệp, tôi tiến hànhtìm hiểu và thiết kế một hệ thống đơn giản, trên đó ta có thể triển khai các dịch vụtính toán, các tính toán đó được phân phối tới các máy trong mạng để thực hiện saocho đạt hiệu quả tốt trong tính toán cũng như việc sử dụng tài nguyên trong mạng

Hệ thống được triển khai trên mạng và được triển khai những dịch vụ trên nó,khi hệ thống tiếp nhận yêu cầu tính toán căn cứ vào dịch vụ, tình trạng của hệ thốngmạng hiện tại, hệ thống sẽ phân phối công việc cho các máy chức năng và đóng vaitrò trung gian nhận gởi các yêu cầu cũng như kết quả Mọi tác động đến hệ thốngđều thực hiện tập trung tại một máy, các máy trong mạng tự động cập nhật lại

hệ thống

Vấn đề nảy sinh ở đây là, làm thế nào để đặt toàn bộ một ứng dụng hoàn chỉnhtrên một máy Sau đó phân phối các thành phần của ứng dụng đến các máy khác vàgọi thực thi các phần đó ngay tại các máy được phân phối rồi nhận kết quả trả về,nghĩa là phải triệu gọi các module chương trình thực thi tại một máy ở xa trongmạng

2 HƯỚNG NGHIÊN CỨU

Từ khái quát của đề tài ta thấy, đây là một ứng dụng để triển khai trên mạngmáy tính Đòi hỏi những kỹ thuật lập trình trên môi trường mạng, ứng dụng phảigọn, tính toán nhanh, đặc biệt là yêu cầu tương thích với một mạng hỗn tạp nhiềunền tảng phần cứng và hệ điều hành khác nhau

Ngày nay có nhiều công cụ sử dụng trong lập trình mạng Tuy nhiên căn cứchức năng và yêu cầu của hệ thống cần xây dựng, thì ngôn ngữ JAVA và các côngnghệ của nó là tốt hơn cả Đặc biệt ngay từ phiên bản 1.1 của bộ JDK hãng Sun đãđưa ra một công nghệ mới gọi là triệu gọi phương thức từ xa- Remote Method

Trang 9

invocation (JavaRMI) Đúng như tên gọi của nó, công nghệ này cho phép xây dựngcác ứng dụng có thể gọi các phương thức trên một máy khác Và đây cũng chính làchìa khóa để xây dựng hệ thống trong đề tài nêu ra Do đó trong đề tài đã chọnhướng nghiên cứu là kỹ thuật lập trình mạng với ngôn ngữ Java, công nghệJavaRMI Công nghệ này được tìm hiểu và ứng dụng xuyên suốt trong đề tài vàcũng là “trái tim” của hệ thống.

Dựa trên kỹ thuật lập trình mạng với Java và công nghệ JavaRMI , ta xâydựng một ứng dụng gồm ba thành phần chính để triển khai trên mạng, tương ứngvới các máy đóng vai trò là Client, Server và Agent Trong đó, Client là máy kháchyêu cầu các dịch vụ; Server là máy chủ chịu trách nhiệm điều khiển cả hệ thống,phân phối công việc và làm trung gian vận chuyển giữa máy khách và máy trạmchức năng; Agent là các máy trạm chức năng, nó được phân phối công việc từServer và thực thi các công việc đó

Tuy nhiên, để hệ thống có tính nhất quán thì hầu như toàn bộ hệ thống đượcđặt trên Server, ở Client và Agent chỉ là một mẫu chương trình đơn giản có nhiệm

vụ kết nối Server để tải về các thành phần tương ứng trên Server

Trong phần tiếp theo của đồ án trình bày về lý thuyết lập trình mạng với Java

và kỹ thuật lập trình phân tán với công nghệ JavaRMI

Trang 10

Chương 2 CƠ SỞ LÝ THUYẾT

1 LẬP TRÌNH MẠNG VỚI JAVA.

Ngôn ngữ lập trình Java được công ty Sun Microsystem đưa ra vào năm 1990

Là ngôn ngữ lập trình mạnh mẽ, đặc biệt trong lĩnh vực phát triển các ứng dụng trênmạng Những đặc điểm của Java có thể mô tả ngắn gọn như sau: ”Java là ngôn ngữđơn giản, hướng đối tượng, phân tán, thông dịch, mạnh mẽ , bảo mật, cấu trúc độc lập, khả chuyển, hiệu quả cao và linh động”

1.1 Liên lạc trên internet.

Họ giao thức TCP/IP được xem là ngôn ngữ chung để các máy trên mạng cóthể “nói chuyện” với nhau Đây là những quy ước chung và là giao thức cốt lõi củagiao tiếp trong mạng Theo giao thức này, mỗi máy được đặt cho một tên riêng biệtgọi là địa chỉ IP, địa chỉ IP là duy nhất Các máy sẽ giao tiếp với nhau thông qua địachỉ IP này

Có hai cách chuyển dữ liệu trên mạng theo giao thức TCP và UDP Giao thứcTCP gởi từng gói dữ liệu đi, nơi nhận phải thông báo và kiểm tra xem dữ liệu đãđến đủ hay chưa, lỗi hay không lỗi Trước khi chuyển dữ liệu bao giờ cũng có sựkết nối giữa máy gởi , máy nhận và duy trì một tuyến kết nối trong quá trình truyền.Trái lại, giao thức UDP không có sự kết nối trước khi truyền, thông tin được đónggói gởi đi, mặc định bên nhận đang sẵn sàng và không có thông tin phản hồi từ bên nhận

1.2 Dịch vụ từ phía máy chủ và khái niệm cổng.

Khi kết nối vào máy chủ, ta có thể yêu cầu nhiều dịch vụ khác nhau; mỗi dịch

vụ đều có cách gởi nhận riêng TCP và UDP chỉ truyền dữ liệu giữa các máy còn dữliệu truyền tới dịch vụ nào thì thông qua khái niệm cổng (port) Mỗi dịch vụ sửdụng một cổng qui ước để trao đổi dữ liệu

1.3 Mô hình khách chủ và khái niệm Socket.

Có nhiều dịch vụ được kiến trúc theo mô hình khách chủ-Client/Server Theo mô hình này chương trình ở máy khách gởi yêu cầu tới Server và chương trìnhphía Server tiếp nhận, xử lý yêu cầu, sau đó gởi kết quả về Client Quá trình kết nối

và gởi dữ liệu thực hiện thông qua một cơ chế trừu tượng gọi là Socket Để tạo mộtkết nối qua Socket cần biết hai yếu tố là địa chỉ IP và cổng dịch vụ port

Trang 11

1.4 Các lớp cần thiết trong lập trình mạng với Java.

InetAddress dùng cho việc quản lý địa chỉ của máy theo tên và theo

số IP Cung cấp các phương thức để chuyển đổi và truy xuất địa chỉ IPSocket dùng tạo cổng để kết nối từ phía máy khách với máy chủ

ServerSocket dùng tạo cổng kết nối từ phía máy chủ với máy khách

DatagramSocket dùng chuyển đi một gói dữ liệu theo giao thức UDP

DatagramPacket dùng cho một gói chứa dữ liệu đi trên mạng theo UDP

URL là địa chỉ định vị tài nguyên trên mạng

1.5 Giới thiệu webserver và giao thức http.

Trình chủ Webserver là chương trình chạy trên máy chủ, có chức năng tươngtác với trình khách, xử lí dữ liệu, tìm kiếm thông tin và gởi kết quả về trình kháchtheo giao thức http

Giao thức http cung cấp cách thức giao tiếp giữa trình khách (thường là trình duyệt) và trình chủ Webserver Qua đó trình khách có thể gởi yêu cầu và nhận

về kết quả từ Webserver

2 MÔ HÌNH PHÂN TÁN ĐỐI TƯỢNG RMI.

Công nghệ JavaRMI(Remote Method invocation)-triệu gọi phương thức từ xa,lần đầu tiên được đề cập trong phiên bản 1.1 của bộ JDK đã đưa lập trình mạng lênmột mức cao hơn JavaRMI dễ sử dụng và là một công nghệ mạnh để phát triển cácứng dụng phân tán Muc tiêu của JavaRMI là cho phép xây dựng các chương trìnhJava có tích chất phân tán có mã lệnh hoàn toàn tương tự với các chương trình bình thường

Ý tưởng tạo ra các đối tượng phân tán ở xa của JavaRMI được tích hợp vàongôn ngữ Java và mô hình đối tượng cục bộ tạo ra một hệ thống thừa kế tính

an toàn, mạnh mẽ của Java trong vấn đề xử lí phân tán

So sánh đối tượng cục bộ và đối tượng ở xa

Vấn đề Đối tượng cục bộ Đối tượng từ xa

Định nghĩa Bằng một lớp Java Bằng giao tiếp interface được mở rộng từ

giao tiếp Remote

Thực thi Bằng lớp Java của nó Bằng những lớp trong giao tiếp

Khởi tao Toán tử new Không thể trực tiếp với new

Truy cập Trực tiếp qua biến đối

Trang 12

Giao tiếp interafce.

Kiến trúc JavaRMI dựa trên nguyên lý cơ bản là: Việc định nghĩa các hành vi

và thực thi các hành vi đó là độc lập với nhau

JavaRMI cho phép phần mã lệnh định nghĩa các hành vi và phần mã lệnh gọithực hiện các hành vi đó có thể đặt trên những máy khác nhau, tạo nên những hệthống phân tán trên mạng Trong các hệ thống đó ở phía máy khách chỉ quan tâmđến các khai báo hành vi của dịch vụ và máy chủ chịu trách nhiệm thực thi các hành

vi đó

Giao tiếp interface là phần định nghĩa các hành vi trong JavaRMI còn phầnthực hiện các hành vi này được khai báo trong các lớp thực thi implementation

H1.Sự độc lập giữa khai báo và thực thi hành vi.

Giao tiếp interface được sử dụng ở hai lớp phía client và server

H2.Các lớp sử dụng giao tiếp trong JavaRMI.

Các tầng trong kiến trúc JavaRMI.

Kiến trúc JavaRMI được chia ra làm 3 tầng:

- Tầng Stub và Skel: Là tầng thấp nhất trong kiến trúc JavaRMI, làm trung giancho sự giao tiếp giữa client và server

- Tầng tham chiếu từ xa- Remote Reference: Chịu trách nhiệm diễn dịch và quản

lý các tham chiếu từ xa, tầng này kết nối client với một đối tượng từ xa trênserver bằng đối tượng Remoteref

Trang 13

- Tầng giao vận Transport: Tạo ra kết nối vật lý giữa các máy trên mạng, chuyểnthông tin dựa trên giao thức TCP/IP.

H3.Kiến trúc JavaRMI

2.1 Tìm hiểu cơ chế hoạt động của ứng dụng JavaRMI.

Một ứng dụng JavaRMI, được thiết kế thành hai phần: trên client và server.Cho phép đặt nội dung của hàm hay đối tượng ở một máy và gọi thực hiện từ mộtmáy khác Máy chứa mã lệnh và thực thi mã lệnh đó gọi là server còn máy thựchiện gọi là client Ở client chỉ cài đặt các khai báo của phương thức thông qua giaotiếp interface mà không cài đặt chi tiết phần thân phương thức

Sau khi xây dựng hoàn chỉnh một ứng dụng JavaRMI, ta tiến hành các thao tácsau để kích hoạt ứng dụng đó:

- Biên dịch các file java nguồn ra các file class

- Tạo các file trung gian sub và skel bằng trình rmic

- Đăng kí đối tượng trên server với bộ đăng ký rmiregistry

- Chạy chương trình trên client

Chương trình client tham chiếu đến đối tượng đã đăng ký trên server thôngqua giao tiếp trên client và giao thức JavaRMI để gởi triệu gọi đến server, servernhận lời triệu gọi đó và thực thi các phương thức rồi gởi kết quả về client Tất cảcác công việc tiếp nhận, gởi yêu cầu hoặc kết quả giữa hai bên được thực hiện thôngqua các lớp trung gian là stub ở client và skel ở server

H4.Hoạt động của ứng dụng JavaRMI.

2.2 Các vấn đề cần chú ý trong JavaRMI.

Các đối tượng trên các máy khác nhau hoạt động trên các tiến trình khác nhaunên việc tham chiếu biến, địa chỉ đối tượng là hoàn toàn khác nhau

Computer B implement

Computer B implement

Computer A interface

Computer A interface

request

result

RMI

Trang 14

Tham số, kết quả phải truyền qua mạng nên phải có cơ chế quản lý chặt chẽ dữliệu giữa các tiến trình.

2.3 Tìm hiểu tầng _Stub và _Skel.

Đây là tầng thấp nhất trong kiến trúc JavaRMI, trong tầng này Java sử dụng

mô hình thiết kế ủy nhiệm Trong mô hình này một đối tượng trong một môi trường có thể được đại diện bỡi một đối tượng khác trong môi trường khác, gọi

là đối tượng ủy nhiệm Đối tượng này biết cách lắng nghe các triệu gọi phươngthức giữa các đối tượng riêng biệt

H5.Mô hình ủy nhiệm (proxy pattern).

Trong mô hình này lớp _stub đóng vai trò là proxy, còn lớp implement củadịch vụ là RealSubject

Lớp _skel là lớp đóng vai trò trợ giúp, nó được tạo ra để JavaRMI sử dụng.Lớp _skel biết cách giao tiếp với lớp proxy _stub qua kết nối JavaRMI

Hai lớp _stub và _skel đóng vai trò trung gian trong giao thức JavaRMI Hailớp này luôn giữ một cuộc thoại với nhau, _stub tiếp nhận lời gọi đối tượng từ xasau đó đóng gói các tham số chuyển tới lớp _skel, lớp _skel nhận dữ liệu tháo gói

và thực hiện lời gọi tới đối tượng implement của dịch vụ, tiếp theo đóng gói kết quả

gởi về cho _stub, _stub nhận kết quả trả về cho đối tượng gọi.

6.Vai trò _stub và _skel

_skel class

Object B Computer B

_skel class

Object B Computer B

Computer A _stub class Object A

Computer A _stub class

Object A RMI

Trang 15

2.4 Tìm hiểu bộ đăng ký Rmiregistry và các hàm đăng kí.

Một câu hỏi đặt ra khi mới bắt đầu tìm hiểu JavaRMI là làm sao chương trình

ở client có thể tham chiếu đến đối tượng trên server và đăng kí đối tượng trên serverbằng cách nào? Tất cả nhờ vào bộ đăng ký rmiregistry của Java Đây là chươngtrình rmiregistry.exe trong bộ jdk, nó có trách nhiệm quản lý các đối tượng có khảnăng triệu gọi từ xa ở máy server và lắng nghe các triệu gọi từ client, tại một cổngdịch vụ nhất định, măc định rmiregistry hoạt động trên cổng 1099

Để một đối tượng có thể được triệu gọi từ xa, trước tiên nó phải đăng kí vớirmiregistry Trước khi máy khách muốn sử dụng đối tượng ở máy chủ, nó phải liênlạc với bộ đăng kí rmiregistry để lấy về tham chiếu đến đối tượng trên máy chủ.Quá trình đăng ký, truy tìm tên đối tượng được thực hiện bỡi các hàm giao tiếp API JNDI (Java naming directory interface)

 Phương thức đăng ký ở server Đối tượng trên server dùng hàmNaming.bind();

Naming.bind(“rmi://IP address/registryName/”,objectName);

- registryName: tên khi đăng kí, client sẽ tham chiếu đến tên này

- ObjectName: tên đối tượng cần đăng ký

- IP address địa chỉ máy chạy rmiregistry

 Phương thức truy tìm ở client Đối tượng trên client dùng hàmNaming.lookup ();

Naming.lookup( rmi://IP address/registryName );“rmi://IP address/registryName”); ”);

- registryName: tên đối tượng đã đăng ký trên server

H7.Cơ chế đăng kí & truy tìm dịch vụ JavaRMI.

Jvm server rmiregistry.exe

Jvm client client

Jvm server server

2.Naming.lookup()

1 Naming.bind() 3

4

Trang 16

1 Đăng ký đối tượng với rmiregistry.

2 Client truy tìm tham chiếu trên rmiregistry

3 Tham chiếu đối tượng trả về phía client

4 Thực hiện triệu gọi phương thức

3 KỸ THUẬT LẬP TRÌNH PHÂN TÁN JAVARMI

3.1 Tổng quan một ứng dụng JavaRMI

Một ứng dụng JavaRMI hoàn chỉnh gồm hai thành phần ở client và server:

 Phía client gồm có:

- Lớp giao tiếp interface Lớp cài đặt khai báo của các phương thức

- Lớp thực hiện triệu gọi đối tượng từ xa

- Lớp _stub là lớp trung gian phía client, nó được tạo tự động bỡi rmic

 Phía server:

- Lớp implement cài đặt cụ thể phần thân của các phương thức

- Lớp cài đặt để thực hiện đăng ký đối tượng với rmiregistr

- Lớp giao tiếp interface Lớp cài đặt khai báo của các phương thức

- Lớp _skel là lớp trung gian phía server, dược tạo tự động bỡi rmic

Đây chỉ là mô hình mẫu, trong khi cài đặt các ứng dụng cụ thể chúng ta có thểthay đổi các thành phần của ứng dụng Sao cho phù hợp với yêu cầu của ứng dụngđặt ra nhưng dù sao thì các thành phần này không thể thiếu được, nó chỉ có thể đổidạng, đổi vị trí, còn chức năng của nó vẫn tồn tại trong hệ thống

3.2 Trình tự xây dựng ứng dụng JavaRMI

Bước 1 Xây dựng đối tượng đặc tả giao tiếp interface.

Muốn đối tượng có khả năng giao tiếp được với các đối tượng ở xa ta phảikhai báo khả năng Remote, bằng cách cho lớp thừa kế lớp Remote và tất cả cácphương thức phải có khả năng ném ra ngoại lệ với RemoteException

Ví dụ khai báo:

public interface interfaceName extends Remote {

public type methodName(parameters)throws RemoteException;

}

Trang 17

Lớp giao tiếp Remote là một interface rỗng dùng đánh dấu cho máy ảo Javabiết được khả năng giao tiếp từ xa.

Bước 2 Xây dựng lớp thực thi implement

Trong lớp này phần thân của các phương thức được cài đặt đầy đủ, và đây chính là

mã nguồn sẽ thi hành khi gọi các phương thức từ xa Lớp này phải sử dụng giao tiếp

ta đã xây dựng trước

Ví dụ:

public class implementName implements interfaceName{

public type methodName(parameter)throws RemotException{

// method body;

} }

Bước 3 Xây dựng lớp đăng ký đối tượng trên server

Trong lớp này sẽ tạo ra một đối tượng implementName, sau đó dùng các hàm đểđăng ký đối tượng đó với rmiregistry

Các phần lệnh chính trong lớp này là:

+ Tạo đối tượng Object=new implementName();

+ Thông báo sự hiện diện của đối tượng có khả năng truy xuất từ xa

Bước 4 Xây dựng chương trình triệu gọi đối tượng từ xa trên máy khách.

Để truy tìm đối tượng từ xa, chương trình máy khách gọi phương thức tĩnhNaming.lookup(), phương thức này cần hai đối số là chuỗi định dạng địa chỉ máychủ và tên đối tượng đã đăng kí

interfaceName object=(interfaceName)Naming.lookup(url);

Chuỗi url có dạng rmi://hostname/registryName

Tóm lại: Các bước thiết kế ứng dụng JavaRMI như sau:

- Đặc tả lớp giao tiếp của đối tượng

- Dự vào đặc tả cài đặt đối tượng chi tiết

- Tạo các lớp trung gian nhờ trình rmic

- Cài đặt đối tượng trên máy server

- xây dựng lớp triệu gọi

Trang 18

3.3 Các cách đăng ký đối tượng với rmiregistry.

Để đối tượng sẵn sàng cho triệu gọi từ xa thì đối tượng phải đăng kí vớirmiregistry Bộ đăng kí này mở socket và lắng nghe kết nối ở một cổng nào đó

Ta có thể thay đổi cổng của rmiregistry bằng lệnh như sau: >_ rmiregistry.exe port Nhưng phải khởi động trình đăng ký ở bên ngoài ứng dụng

Tuy nhiên, Java cũng cho phép ứng dụng tự tạo bộ đăng ký riêng bằng mãlệnh ngay trong chương trình, bằng cách gọi phương thức tĩnh createRegistry() củalớp LocateRegistry

Ví dụ: LocateRegistry.createRegistry (số cổng); tuy nhiên hạn chế là khi đốitượng tự tạo bộ đăng ký trên cổng nào thì nó sẽ độc chiếm trên cổng đó và khôngcho phép các đối tượng khác đăng kí cùng cổng với nó

Một bộ đăng kí có thể quản lý nhiều đối tượng Người sử dụng có thể liên hệvới bộ rmiregistry để lấy về danh sách các dịch vụ đang đăng ký, điều này rất tiệndụng cho việc kiểm tra, lựa chọn các dịch vụ đang hoạt động

3.4 Truyền tham số khi gọi phương thức từ xa.

Truyền tham số là một trong những vấn đề quan trọng nhất khi gọi phươngthức vì tham số là yếu tố chủ yếu để ta có thể tác động vào bên trong phương thức.Tham số mang thông tin truyền vào phương thức và tải thông tin ra bên ngoài Khitriệu gọi phương thức từ xa tham số phải được đóng gói chuyển qua mạng, nên dữliệu đến có lỗi hay không quyết định sự thất bại hay thành công của việc gọi phươngthức Mặc khác truyền dữ liệu giữa hai tiến trình trên hai máy độc lập là vấn đềkhông đơn giản, cần có sự trợ giúp của các kỹ thuật tiện ích Hai nguyên tắc truyềntham số qua mạng như sau:

+ Tất cả các kiểu dữ liệu cơ bản chuyển theo tham trị

+ Những đối tượng truyền qua mạng cần phải cài đặt một trong haigiao thức sau: Remote truyền theo tham chiếu và Serializable truyền theo tham trị

3.4.1 Các giao tiếp Remote, Serializable và tham số.

Lớp giao tiếp Serializable chỉ là một lớp rỗng, dùng cho mục đích báo hiệu.Tất cả các đối tượng cài đặt giao tiếp Serializable đều được Java xem như có khảnăng tuần tự hóa Nghĩa là có thể yêu cầu Java lưu toàn bộ đối tượng xuống một tậptin, sau đó truyền tập tin đi trên mạng đến nơi cần sau đó có thể khôi phục đối tượng

về trạng thái ban đầu (lúc chuyển đi) để sử dụng mà không cần phải khởi tạo lại Với cơ chế truyền tham số theo tham trị, khi lời gọi hàm ở xa có tham số là

Trang 19

đối tượng thì đối tượng được đóng gói chuyển đến máy chủ Tại máy chủ đối tượngđược tháo gói để sử dụng như ban đầu Quá trình đóng gói đối tượng chuyển đi

được thực hiện nhờ lớp trung gian _stub; ngược lại, quá trình phục hồi đối tượng trên máy chủ được thực hiện nhờ lớp _skel Trong lập trình phân tán gọi qui trình

chuyển tham số là mashaling data

Tương tự lớp serializable, lớp giao tiếp Remote cũng dùng để đánh dấu khảnăng đối tượng được dùng làm tham số truyền trên mạng nhưng theo tham chiếu.Khi chuyển theo tham chiếu đối tượng không được đóng gói chuyển trực tiếp trênmạng mà chỉ truyền tham chiếu của nó cho trình chủ Như thế, tăng tốc độ thực thicủa chương trình, nâng cao xác suất thành công của việc gọi phương thức vì đốitượng được xử lý trực tiếp tại máy khách

3.4.2 Chuyển đối tượng theo tham chiếu và kỹ thuật callback.

Khi một đối tượng truyền theo tham chiếu thì thực sự bản thân đối tượngkhông chuyển đi mà chỉ truyền tham chiếu của nó tới trình chủ Việc xử lí đối tượngnày thực hiện ngay trên máy khách Do đó, phải có sự triệu gọi qua lại giữa trìnhkhách và trình chủ Từ vấn đề này nảy sinh kỹ thuật “gọi ngược” là callback rất hữudụng trong một số trường hợp khắc phục nhược điểm của vấn đề tryuền tham số quamạng Với kỹ thuật Callback trình chủ cũng có thể gọi ngược từ xa đến trình khách.Đây là một kỹ thuật tương đối khó mô tả nên để trình bày có hiệu quả ta tiếnhành xây dựng mô phỏng một ứng dụng đơn giản dựa trên kỹ thuật này

Chúng ta sẽ tạo ra hai đối tượng trên máy khách và máy chủ có thể triệu gọilẫn nhau Đầu tiên trình khách liên hệ bộ đăng ký rmiregistry để tham chiếu đến đốitượng trên máy chủ, tiếp đó trình khách tạo ra một đối tượng của máy khách đồngthời gọi phương thức của đối tượng chủ để đăng ký đối tượng khách đó với đốitượng chủ Bằng cách này, trình chủ không cần dùng hàm Naming.lookup() để truytìm đối tượng khách trên rmiregistry nữa mà có thể triệu gọi phương thức của đốitượng khách Ứng dụng được mô tả như sau:

1 Giao tiếp interface cho đối tượng trên máy khách AtClient

public interface AtClient extends Remote {

//phương thức thực thi trên máy khách

public type clientMethod(args)throws RemoteException;

}

2 Giao tiếp interface cho dối tượng trên máy chủ AtServer

public interface AtServer extends Remote {

// hàm này để đăng ký đối tượng khách với trình chủ

public void registerClient(AtClient c)throws RemoteException;

Trang 20

//phương thức thực thi trên máy chủ

public type callServerMethod(args)throws RemoteException;

}

3 Lớp cài đặt trên máy khách

public class AtClientimpl implements AtClient {

public type callClientMethod(args)throws RemoteException{ }

}

4 Lớp cài đặt trên máy chủ

public class AtServerimpl implements AtServer {

AtClient client;// để đăng ký với trình chủ

public void registerClient(AtClient c)throws RemoteException{

5 Chương trình triệu gọi trên máy khách

public class Client {

public static void main(String args[]) throws Exception{

AtClient client=new AtClientimpl();

6 Chương trình đăng ký đối tượng chủ với rmiregistry

public class Setup {

public static void main(String args[]) throws Exception{

AtServer server=new AtServerimpl();

H8 Hoạt động của hệ thống callback.

1 Đối tượng chủ đăng lý với rmiregistry

2 Đối tượng khách truy tìm đối tượng chủ

3 rmiregistry trả về tham chiếu đến đối tượng chủ

4 Đối tượng khách đăng ký với đối tượng chủ

Client clientObject

Server serverObject

Trang 21

3.5 Các kỹ thuật gọi đối tượng ở xa trong JavaRMI.

Trong các phần trước đã trình bày cách thức xây dựng, thực hiện một ứngdụng JavaRMI Tuy nhiên đó chỉ là những kỹ thuật hết sức cơ bản, còn không ítnhững hạn chế trong việc triển khai các ứng dụng Nhất là yêu cầu về tính đồng nhấtcủa dịch vụ, tính độc lập giữa bên cung cấp và bên sử dụng dịch vụ…Sau đây sẽtrình bày một số kỹ thuật rất tiện ích của JavaRMI trong việc xây dựng các dịch vụphân tán

3.5.1 Gọi bằng phương thức động, với kĩ thuật phản chiếu.

Trong nguyên lý cơ bản của JavaRMI để trình khách gọi được các phươngthức của đối tượng chủ thì ít nhất phải được cung cấp lớp giao tiếp interface của đốitượng Trình khách sẽ giựa vào giao tiếp này để chuyển kiểu khi lấy về được thamchiếu đối tượng chủ bằng hàm Naming.lookup(); Tuy nhiên nếu phía khách không

có lớp giao tiếp này thì sao? Nghĩa là, bằng cách nào đó lấy về tham chiếu và khôngcần lớp giao tiếp để chuyển kiểu Trong trường hợp này có thể sử dụng kỹ thuậtphản chiếu (reflect) của Java để thực hiện triệu gọi

Trước tiên lấy tham chiếu về ở dạng đối tượng tổng quát Sau đó dùng hàmgetMethod() để lấy về các phương thức của đối tượng đang có Cuối cùng dùng hàminvoke() để thực thi các phương thức bên trong đối tượng

Các phương thức cơ bản trong kỹ thuật này như sau:

+Tham chiếu đến đối tượng chủ ở dạng tổng quát

Object object=Naming.lookup(“rmi://hostname:port/registryName”);

+Truy tìm xuất xứ của đối tương

Class class=object.getClass(); hàm này trả về lớp của đối tượng

+Lấy về các phương thức của lớp

Method method=class.getMethod(“methodName”,parameterType);

Phương thức này trả về một đối tượng của lớp Method, là một phương thức cótên là methodName và các kiểu tham số được chỉ ra trong parameterType

+Gọi phương thức từ xa

Thông qua đối tượng phương thức mà ta đã truy tìm ra trước đó

method.invoke(object, arguments); phương thức này thực thi phương thứcđược miêu tả trong đối tượng method, với đối tượng object và danh sách các tham

số truyền vào phương thức là arguments

Trang 22

3.5.2 Cơ chế tự kích hoạt với rmid.exe.

Qui trình mà ta thực hiện để cài đặt một đối tượng JavaRMI là: Khởi động bộđăng ký rmiregistry, tạo đối tượng, đăng ký đối tượng và lắng nghe triệu gọi từ máy khách Nghĩa là các đối tượng đã cài đặt thì luôn ở trạng thái sẵn sàng Giả sử

có rất nhiều đối tượng cần phục vụ thì sẽ cấp phát bộ nhớ cho tất cả các đối tượngnày, điều này gây hao tốn tài nguyên, giảm tốc độ tính toán Vì không phải tất cảcác đối tượng đều được triệu gọi một lúc Tuy nhiên Java cung cấp cơ chế tự độngkích hoạt(activation) đối tượng trên máy chủ chỉ khi nào có yêu cầu từ máy kháchthì mới được kích hoạt để sử dụng Java cung cấp chương trình rmid.exe chịu tráchnhiệm tiếp nhận sự hiện diện của đối tượng và tự động khởi tao đối tượng khi cóyêu cầu Quá trình xây dựng ứng dụng theo cơ chế này khá phức tap và khác biệt sovới các cơ chế khác Cơ chế này có một số vấn đề trong cài đặt :

Trong cài đặt đối tượng chủ, đối tượng phải là lớp thừa kế lớp Activatable vìtất cả các lớp hỗ trợ cho kĩ thuật tự kích hoạt đều nằm trong gói thư việnJava.rmi.activation.*;

public class objectimplement extends Activable implements interfaceName

Phương thức khởi dựng của đối tượng chủ dùng kích hoạt đối tượng Khi dịch

vụ rmid kích hoạt đối tượng nó sẽ gọi phương thức Activationinstance.newinstance

và gián tiếp gọi đến phương thức khởi dựng

public objectimplement(ActivationiD id,arshalledObject data)

throws RemoteException{

Super(id,0);

}

Phương thức này nhận hai đối số, định danh kích hoạt(ActivationiD) do dịch

vụ rmid truyền vào, và data có kiểu đối tượng là MarshalledObject là đối tượng tổngquát có thể truyền qua mạng

Ta phải chuyển những thông tin này cho lớp cha bằng cách gọi hàmsuper(id,0); Lớp cha sẽ thông báo và đăng ký sự hiện diện của đối tượng với dịch vụrmid và máy ảo Java Các bước chính đăng kí đối tượng :

Đầu tiên tạo bảng thuộc tính chứa các giá trị cần thiết lập cho chính sách bảomật:

Properties prop=new Properties();

chỉ định tập tin bảo mật: prop.put(“Java.security.policy”,path);

Tạo môi trường chứa các đối tượng kích hoạt:

ActivationGroupDesc.CommandEnvironment ace=null;

Tạo thông tin về nhóm đối tượng kích hoạt:

Trang 23

ActivationGroupDesc exampleGroup= new ActivationGroupDesc(prop,ace);

Dựa vào thông tin của nhóm, ta yêu cầu hệ thống cung cấp một định danh kíchhoạt cho nhóm

ActivationGroupiD agi= ActivationGroupiD.getSystem().registerGroup(

ActivationDesc desc=new ActivationDesc(“implementName”,location,data);

Cuối cùng đăng ký đối tượng với dịch vụ kích hoạt rmid:

3.5.3 Trình mồi nạp ứng dụng từ xa với bộ nạp lớp JavaRMI.

Trong hệ thống mạng cho phép kết nối và điều khiển từ xa Java cung cấp một

kỹ thuật rất tiện ích, cho phép viết một ứng dụng hoàn chỉnh đặt toàn bộ ứng dụngtrên server sau đó có thể triệu gọi thực thi ứng dụng từ một máy client khác Trênmáy client hoàn toàn không cài đặt gì hết về ứng dụng đó

Thực hiện được kỹ thuật này chính là nhờ cơ chế JavaRMI của Java TrongJava bộ nạp lớp RMIClassLoader cho phép máy khách nạp các lớp về từ máy chủthông qua giao thức http RMIClassLoader chịu trách nhiệm tải về tất cả các lớpcon, các thư viện mà lớp nạp về cần đến Nên ta chỉ quan tâm tới mỗi một lớp cầntải về, không cần để ý tới các lớp liên quan khác

 Một số vấn đề kỹ thuật cần chú ý:

1 Để một lớp có thể được tải về và chạy trên một máy khác lớp đó phảiđược cài đặt giao tiếp Runnable

Trang 24

2 Chính giao tiếp Runnable cho phép thực thi chương trình khi gọiphương thức run() của giao tiếp này JavaRMI chỉ có trách nhiệm tải

về các lớp còn việc gọi thực hiện các lớp là do giao tiếp Runnablequyết định

Cài đặt lớp tải về như sau:

public lass ClassName implements Runnable{

public void run(){

cài đặt tất cả các công việc tại đây;

}

}

Phương thức run() là bắt buộc phải có, ta có thể đặt tất cả mã lệnh cần thực thitrong phương thức này, để khởi động lớp ta gọi phương thức run của nó

Như vậy, toàn bộ ứng dụng được đặt trên một máy và không nhằm mục đích

là thi hành ứng dụng ngay trên máy đó, cho nên cần phải có một chương trình nào

đó chịu trách nhiệm tải ứng dụng về từ máy ở xa và kích hoạt ứng dụng đó, và đâycũng chính là một phần chính của kỹ thuật này Xây dựng chương trình này để chạytrên máy khách Chương trình này gọi là trình mồi nạp ứng dụng từ xa

Trong chương trình ở phía máy khách ta không cần bất cứ lớp nào của ứngdụng cần gọi, tất cả ở trên webserver Do đó điều cần nhất là địa chỉ URL trỏ tới lớpdịch vụ trên máy chủ, và tên lớp cần tải về thì ta phải cung cấp Các câu lệnh quantrọng phải có như sau:

Lệnh nạp lớp ứng dụng về từ webserver qua giao thức http bằng bộ nạp lớpRMIClassLoader

Class ClassName=RMIClassLoader.loadClass(URL,ClassName);

URL là chuỗi chỉ định đường dẫn tới webserver, ClassName là tên lớp cần tải

về Khi đã tải được lớp về ta phải tạo một thể hiện cuả lớp đó thông qua giao tiếpRunnable

Runnable RunClass=(Runnable) ClassName.newinstance();

Cuối cùng là chạy lớp ứng dụng ngay trên máy khách

RunCalss.run();

Khi dùng kỹ thuật này để xây dựng ứng dụng cần chú ý:

- Phải có trình webserver chạy trên máy chủ

- Khi xây dựng xong ứng dụng phải biên dịch tất cả các tập tin liên quan ra fileclass sau đó đặt hết lên webserver

- Xây dựng chương trình riêng cho máy khách

Trang 25

H9:Kỹ thuật trình nạp mồi từ xa.

3.6 Vấn đề bảo mật và kĩ thuật xuyên hầm trong JavaRMI.

Trong cơ chế kết nối theo giao thức TCP/IP bằng socket, có dùng đến kháiniệm cổng Mỗi trình chủ phải hoạt động trên một cổng để lắng nghe yêu cầu từmáy khách

Khi dịch vụ hoạt động trên mạng cục bộ, điều này không có vấn đề gì vì có thể

tự do chỉ định số cổng cho socket(tất nhiên là không trùng các cổng nổi tiếng đãcó) Tuy nhiên ở mạng diện rộng internet luôn bị kiểm soát chặt chẽ các dịch vụ bỡitường lửa(firewal) Firewal là chương trình kiểm soát cách thức truyền dữ liệu vàkết nối mạng cục bộ với mạng internet, nhằm hạn chế sự truy cập từ mạng cục bộ rainternet

Vấn đề phát sinh là việc sử dụng cổng kết nối, khi các ứng dụng triển khai ramạng internet Hầu hết các firewal rất hạn chế số cổng cho phép kết nối Cổng 80kết nối theo giao thức http cho phép kết nối webserver được hầu hết các firewal chophép sử dụng Như vậy nếu các ứng dụng theo mô hình khách chủ triển khai trênmạng sử dụng cổng kết nối khác cổng 80 thì bị ngăn chặn bỡi tường lửa TrongJavaRMI sử dụng cổng mặc định 1099 để kết nối thì khi ứng dụng được triển khai

ra mạng internet sẽ dễ bị ngăn cấm bỡi tường lửa và không hoạt động được trêninternet

ClientService http

Client RMIclient

Server RMIserver Firewal

1099

80

Trang 26

Như vậy ta phải làm việc với webserver, ý tưởng của kỹ thuật này là lợi dụng tính

ưu tiên của cổng 80 để thưc hiện các kết nối và truyền dữ liệu qua mạng

Trước hết ta làm quen với khái niệm về một dạng chương trình làm việc vớiwebserver rất tiện ích gọi là servlet Servlet là một chương trình Java phía máy chủ,được trình chủ triệu gọi để xử lý các thông tin trên máy chủ trước khi trả kết quả vềcho máy khách Chính serverlet giúp khắc phục vấn đề firewal trong JavaRMI.Nguyên lý của tunnel là từ trình JavaRMI ở phía client có thể gởi yêu cầu đếnmáy chủ thông qua giao thức http qua cổng 80 Ở máy chủ thiết kế một servlet cókhả năng triệu gọi phương thức của đối tượng JavaRMI ở phía server Khi trình chủwebserver nhận yêu cầu từ máy khách, trình chủ sẽ gọi servlet để xử lý yêu cầu Sau đó trình chủ nhận kết quả thực thi JavaRMI phía server từ servlet và trả về chomáy khách thông qua http

H11.Cơ chế xuyên hầm.

Kết luận: Phần trên đã trình bày các lý thuyết cơ bản về công nghệ JavaRMI.Các kỹ thuật chính để xây dựng ứng dụng phân tán với JavaRMI, ứng với mỗi ứngdụng cụ thể mà chọn một kỹ thuật tốt nhất để áp dụng Tuy nhiên mỗi kỹ thuật đều

có những ưu khuyết điểm riêng của nó, do đó để xây dựng tốt các ứng dụng và pháthuy tối đa tính ưu việt của công nghệ thì kỹ thuật tốt nhất là “kỹ thuật tổng hợp”-trong một đề án phải biết kết hợp hợp lý các kỹ thuật vào trong các module của

đề án Mỗi module cần so sánh ưu nhược khi dùng các kỹ thuật khác nhau, để chọn

kỹ thuật tốt nhất

Trong phần tiếp theo của đồ án, tiến hành phân tích, xây dựng chương trìnhtheo yêu cầu của đề tài đặt ra, dựa trên “kỹ thuật tổng hợp” của công nghệJavaRMI

Client RMIclient

Server Webserver

RMIserver

Firewal

80 http

http

servlet

intranet internet

Trang 27

Chương 3 PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG

1 PHÂN TÍCH HỆ THỐNG THÔNG TIN.

Phần này thực hiện phân tích, mô hình hóa hệ thống nhằm cung cấp một môhình trừu tượng về hệ thống Qua đó đặt những nền tảng cho quá trình xây dựngchương trình về sau Sau đây là các mô hình được xây dựng dựa trên ngôn ngữchuẩn UML

H12 Biểu đồ trường hợp sử dụng (UC) của hệ thồng

Biểu đồ UC cho thấy các trường hợp hành động của hệ thống thực hiện nhằmđáp ứng các tác động của tác nhân bên ngoài Trong trường hợp này người sử dụngtác động vào hệ thống thực hiện ba công việc là:

- Sử dụng các dịch vụ trên hệ thống

- Thêm dịch vụ hoặc các máy chức năng agent

- Sửa đổi thông tin về các Agent hoặc dịch vụ

Trang 28

H13.Biểu đồ trình tự của UC sử dụng dịch vụ.

Biểu đồ trình tự mô tả tương tác giữa người sử dụng và các phần của hệ thốngtrong một trường hợp sử dụng nào đó Biểu đồ trình tự tập trung miêu tả trật tự cácthông điệp theo thời gian

Biểu đồ trên miêu tả các thông điệp trong UC sử dụng dịch vụ Khi người sửdụng muốn dùng dịch vụ phải thực hiện trình tự các bước sau:

1 Khởi động hệ thống

2 Agent login server

3 Server kiểm tra thông tin

4 Cài đặt các dịch vụ tương ứng với Agent đăng nhập

5 Gởi hồi đáp

6 Agent lấy về danh sách dịch vụ tương ứng

7 Agent tải các lớp của dịch vụ về từ Webserver

8 Agent cài đặt các dịch vụ

9 Client kết nối Server lấy về danh sách các dịch vụ hiện hành trên server

10 Người sử dụng chọn dịch vụ, client tải giao diện dịch vụ tương ứng

11 Client gởi yêu cầu của người sử dụng đến server

12 Server phân phối công việc cho Agent

13 Agent thực hiện công việc

14 Agent gởi kết quả về Server

15 Server trả kết quả về client

Trang 29

H14.Biểu đồ cộng tác của UC sử dụng dịch vụ.

Biểu đồ cộng tác của UC sử dụng dịch vụ, nó miêu tả tổ chức cấu trúc của cácđối tượng gởi nhận thông điệp, trình tự và chức năng của các thông điệp giữa cácđối tượng được mô tả trong biểu đồ trên

H15.Biểu đồ lớp

Trang 30

H16.Biểu đồ hoạt động (Sơ đồ khối của UC sử dụng dịch vụ).

Server Database+Service

Server Database+Service Webserver+Rmiregistry

Trang 31

H18.Biểu đồ triển khai của hệ thống.

Biểu đồ triển khai cho thấy kiến trúc hệ thống của phần cứng như các bộ xử lý,các thiết bị và các thành phần phần mềm thực hiện trên hệ thống Biểu đồ triển khaichỉ ra toàn bộ các thành phần, kết nối giữa chúng và các tiến trình chạy trên chúng.Biểu đồ trên miêu tả hệ thống triển khai trên ba nút là server, client và agent Trên server chứa các dịch vụ, cơ sở dữ liệu, trình webserveer và bộ đăng kýrmiregistry Trên client và agent chứa hai module chương trình tương ứng vớIchúng trong hệ thống Client giao tiếp với server thông qua hai giao tiếp http vàRMI Tương tự, agent giao tiếp với server bằng ba giao thức http, TCP/IP và RMI

2 THIẾT KẾ VÀ TỔ CHỨC CƠ SỞ DỮ LIỆU

Như đã thấy trong các phần trước, cơ sở dữ liệu của hệ thống đặt toàn bộ trênmáy server, bao gồm hai phần chính: Dữ liệu về các lớp của dịch vụ và dữ liệu vềthông tin quản lý các dịch vụ và các máy trạm chức năng

Mỗi dịch vụ ứng với một thư mục trên webserver, có tên trùng với tên dịch vụ, trong thư mục này đặt các file class biên dịch từ các lớp của dịch vụ Dữliệu một dịch vụ bao gồm các file sau:

- Atagentinterface , giao tiếp phía agent

- Atrootserverinterface, giao tiếp phía server

- Atagentimplement, lớp thi hành ở agent

- Atrootserverimplement, lớp thi hành ở server

- AtagentSetup, đăng ký dịch vụ phía agent

- Atrootserver Setup, đăng ký dịch vụ phía server

- MethodDescrIPtor, miêu tả phương thức

- GUI, giao diện người dùng của dịch vụ

Ngày đăng: 30/12/2015, 18:44

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
1. Giáo trình lý thuyết và bài tập Java,(1999),Trần Tiến Dũng,NXB Giáo dục Khác
2. Tự học ngôn ngữ lập trình Java,(1999),Đỗ Quang Thái,NXB Thống kê Khác
3. Java lập trình mạng,(2001),Nguyễn Phương Lan và Hoàng Đức Hải,NXB Giáo dục Khác
4. Hướng dẫn lập trình mạng,(2001),Đậu Quang Tuấn,NXB Trẻ Khác
5. Advanced Java Networking-Prashant Sridharan Khác
6. Tài liệu Fundamentals of JavaRMI -Govind Seshadri Khác
8. Hệ thống tin học phân tán(2002),TS Lê Văn Sơn,NXB Đại Học Quốc Gia Khác
9. Phân tích thiết kế hướng đối tượng(2002),Đặng Văn Đức,NXB Giáo dục Khác

HÌNH ẢNH LIÊN QUAN

H17. Sơ đồ hoạt động của hệ thống. - Xây dựng hệ thống tải dịch vụ động hỗ trợ tính toán phân tán
17. Sơ đồ hoạt động của hệ thống (Trang 5)
H17. Sơ đồ hoạt động của hệ thống. - Xây dựng hệ thống tải dịch vụ động hỗ trợ tính toán phân tán
17. Sơ đồ hoạt động của hệ thống (Trang 33)

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