LỜI MỞ ĐẦU Ngày nay, công nghệ mạng máy tính và Internet đã phát triển mạnh, cho phép chúng ta khai thác các nguồn tài nguyên là những kho tư liệu vô cùng rộng lớn về các lĩnh vực, và được bố trí ở những nơi rất xa nhau. Đối với các hệ thông tin lớn, dữ liệu không chỉ được lưu trữ và quản lý bởi các Server độc lập mà thường được phân tán trên nhiều Server và phân bổ ở các vị trí địa lý khác nhau. Hệ thống cho phép xử lý đa truy cập đồng thời cho phép đăng ký từ xa. Một trong những lợi ích của việc phân tán dữ liệu như vậy là nhằm chia yêu cầu xử lý dữ liệu cho nhiều máy nhằm tăng năng lực xử lý thông tin của hệ thống. Môn học Lập Trình Mạng dưới sự giảng dạy của PGS.TS Lê Văn Sơn, nhóm chúng em đã hiểu thêm được tầm quan trọng, những kiến thức mới của môn học. Vì vậy nhóm em đã chọn tiểu luận: + Xây dựng hệ thống 3 Server thể hiện khả năng phátnhận thông điệp. + Viết chương trình mô phỏng quá trình hoạt động của 3 loại thông điệp cơ bản REQ, ACQ và REL trong hệ tin học phân tán. Mặc dù nhóm chúng em đã cố gắng tìm hiểu, nghiên cứu nhưng do thời gian có hạn, khả năng cũng còn hạn chế nên nhóm không tránh khỏi những thiếu sót. Kính mong thầy xem xét, góp ý để nhóm chúng em hoàn thiện, hiểu rõ hơn nữa về công nghệ lập trình mới và tiên tiến này. Xin chân thành cảm ơn MỤC LỤC LỜI MỞ ĐẦU 1 I. Yêu cầu và Giải thuật 2 1. Yêu cầu 2 2. Giải thuật Loại trừ tương hỗ 2 3. Giải pháp cho vấn đề đoạn găng 4 4. Kiểm nghiệm giải thuật 4 5. Phản ứng với sự cố 5 6. Kết luận 5 II. Xây dựng chương trình 6 1. Giới thiệu ngôn ngữ Java 6 2. Kiến trúc và kỹ thuật RMI 7 2.1 Tổng quan về RMI 7 2.2 Kiến trúc RMI 8 2.3 Kỹ thuật RMI 10 3. Các Modules chương trình 12 4. Chương trình chạy thử 18 KẾT LUẬN 25 TÀI LIỆU THAM KHẢO 26
Báo cáo Lập Trình Mạng Khoa học máy tính – Khóa 11 ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC BÁCH KHOA TIỂU LUẬN MÔN HỌC LẬP TRÌNH MẠNG Đề tài: CHƯƠNG TRÌNH MÔ PHỎNG QUÁ TRÌNH HOẠT ĐỘNG CỦA 3 LOẠI THÔNG ĐIỆP CƠ BẢN REQ, ACQ VÀ REL TRONG HỆ TIN HỌC PHÂN TÁN Giáo viên hướng dẫn: PGS TS Lê Văn Sơn Hc viên thc hin: - Đoàn Ngọc Diễm My - Trần Thị Bích Đào Lớp : Khoa hc máy tính K11 Niên khoá : 2009- 2011 Đoàn Ngọc Diễm My – Trần Thị Bích Đào 1 Báo cáo Lập Trình Mạng Khoa học máy tính – Khóa 11 Đà N'ng, 03/2010 LỜI MỞ ĐẦU Ngày nay, công nghệ mạng máy tính và Internet đã phát triển mạnh, cho phép chúng ta khai thác các nguồn tài nguyên là những kho tư liệu vô cùng rộng lớn về các lĩnh vực, và được bố trí ở những nơi rất xa nhau. Đối với các hệ thông tin lớn, dữ liệu không chỉ được lưu trữ và quản lý bởi các Server độc lập mà thường được phân tán trên nhiều Server và phân bổ ở các vị trí địa lý khác nhau. Hệ thống cho phép xử lý đa truy cập đồng thời cho phép đăng ký từ xa. Một trong những lợi ích của việc phân tán dữ liệu như vậy là nhằm chia yêu cầu xử lý dữ liệu cho nhiều máy nhằm tăng năng lực xử lý thông tin của hệ thống. Môn học Lập Trình Mạng dưới sự giảng dạy của PGS.TS Lê Văn Sơn, nhóm chúng em đã hiểu thêm được tầm quan trọng, những kiến thức mới của môn học. Vì vậy nhóm em đã chọn tiểu luận: + Xây dựng hệ thống 3 Server thể hiện khả năng phát/nhận thông điệp. + Viết chương trình mô phỏng quá trình hoạt động của 3 loại thông điệp cơ bản REQ, ACQ và REL trong hệ tin học phân tán. Mặc dù nhóm chúng em đã cố gắng tìm hiểu, nghiên cứu nhưng do thời gian có hạn, khả năng cũng còn hạn chế nên nhóm không tránh khỏi những thiếu sót. Kính mong thầy xem xét, góp ý để nhóm chúng em hoàn thiện, hiểu rõ hơn nữa về công nghệ lập trình mới và tiên tiến này. Xin chân thành cảm ơn ! Đoàn Ngọc Diễm My – Trần Thị Bích Đào 2 Báo cáo Lập Trình Mạng Khoa học máy tính – Khóa 11 MỤC LỤC LỜI MỞ ĐẦU 1 1. Yêu cầu: 4 2. Giải thuật Loại trừ tương hỗ: 4 4. Kiểm nghiệm giải thuật: 6 Ta nhận thấy rằng: 7 5. Phản ứng với sự cố: 7 6. Kết luận: 7 KẾT LUẬN 26 TÀI LIỆU THAM KHẢO 27 Đoàn Ngọc Diễm My – Trần Thị Bích Đào 3 Báo cáo Lập Trình Mạng Khoa học máy tính – Khóa 11 I. Yêu cầu và Giải thuật: 1. Yêu cầu: + Xây dựng hệ thống 3 Server thể hiện khả năng phát/nhận thông điệp. + Viết chương trình mô phỏng quá trình hoạt động của 3 loại thông điệp cơ bản REQ, ACQ và REL trong hệ tin học phân tán. 2. Giải thuật Loại trừ tương hỗ: Loại trừ tương hỗ có thể được thực hiện trên một trạm trung tâm có nhiệm vụ nhận tất cả các thông điệp và khuyến nghị giải phóng. Trạm này duy trì một hàng đợi, sắp xếp các yêu cầu theo trật tự đến và phục vụ cho từng thông điệp một trong trật tự này. Phân tán giải thuật này kéo theo việc phân tán các chức năng cung cấp mà cần phải điều khiển hàng đợi trên trạm. Do vậy, một trạm chuyên cho việc nhận các yêu cầu và khuyến nghị giải phóng trên tất cả các trạm còn lại. Một trật tự giống nhau trên các trạm chỉ đạt được nếu ta áp dụng dấu trong các thông điệp bởi các đồng hồ logic truyền và đánh số các trạm. Quan hệ trật tự toàn bộ được định nghĩa, thêm vào đó, để cho một trạm có thể ra quyết định bằng việc tham chiếu duy nhất vào hàng đợi của mình, nó còn cần phải nhận một thông điệp của từng trạm khẳng định rằng không có thông điệp nào trước các thông điệp khác mà còn đang quá cảnh trên đường. Thuật toán Loại trừ tương hỗ có thể được mô tả như sau: + Trạm i của mạng có thể gửi thông điệp cho các trạm khác thông điệp có dạng (T, H i , i), trong đó H i là dấu của thông điệp có nghĩa là đồng hồ logic của nó và T có thể nhận một trong 3 giá trị REQ, REL, ACQ. Ba giá trị này xác định bản chất của ba loại thông điệp khác nhau: STT Thông điệp Giải thích 1 REQ Thông điệp REQ được phát đi cho tất cả các trạm, khi trạm i muốn vào trong đoạn găng 2 REL Thông điệp REL được phát đi cho tất cả các trạm, khi trạm i đã rời khỏi đoạn găng 3 ACQ Thông điệp ACQ được gửi bởi trạm j cho trạm i, khi trạm j đã nhận được từ trạm i thông điệp REQ + Mỗi trạm quản lý một hàng đợi các thông điệp được sắp xếp theo quan hệ <thời gian, số> của từng thông điệp. Theo cấu trúc, hàng đợi luôn luôn chứa một thông điệp và chỉ một thường trực trên mỗi trạm, bao gồm trạm cục bộ. Khi có một thông điệp được gửi đi bởi trạm i, đồng thời nó cũng được ghi trong hàng đợi của trạm này. Giả sử rằng mỗi hàng đợi ban đầu chứa các thông điệp: M i = (REL, H init , i) Trong đó, i, H init là thời điểm khởi sự giống nhau cho tất cả các trạm Đoàn Ngọc Diễm My – Trần Thị Bích Đào 4 Báo cáo Lập Trình Mạng Khoa học máy tính – Khóa 11 + Trên mỗi trạm, khi nhận được một thông điệp dạng (REQ, H i , i) hay (REL, H i , i), thông điệp này thay thế thông điệp M i bất chấp nó là gì. Khi nhận thông điệp loại (ACQ, H i , i), thông điệp này thay thế M i ngoại trừ M i là một yêu cầu mà trong trường hợp đó ACQ bị bỏ qua. Do vậy, ta có thể tiết kiệm việc gửi thông điệp ACQ cho trạm i khi trạm này đã gửi một thông điệp REQ và không còn thông điệp REL. + Trạm i được quyền vào đoạn găng khi thông điệp REQ của nó đến trước theo nghĩa của quan hệ <thời gian, số> của tất cả các thông điệp khác trong hàng đợi của nó. 3. Giải pháp cho vấn đề đoạn găng: + Khái niệm Tài nguyên găng: Những tài nguyên được hệ điều hành chia sẻ cho nhiều tiến trình hoạt động đồng thời dùng chung, mà có nguy cơ dẫn đến sự tranh chấp giữa các tiến trình này khi sử dụng chúng được gọi là tài nguyên găng. + Tài nguyên găng có thể là tài nguyên phần cứng hoặc tài nguyên phần mềm, có thể là tài nguyên phân chia được hoặc không phân chia được, nhưng đa số thường là tài nguyên phân chia được như là: các biến chung, các file chia sẻ. + Ví dụ sau sẽ cho ta thấy rõ hơn việc sử dụng tài nguyên găng: Giả sử có một chương trình, trong đó có hai tiến trình P1 và P2 hoạt động đồng thời với nhau. Tiến trình P1 phải tăng biến Count lên 1 đơn vị, tiến trình P2 phải tăng biến Count lên 1 đơn vị, với mục đích tăng Count lên được 2 đơn vị. Chương trình có thể thc hin như sau: 1. Tiến trình P1 ghi nội dung biến toàn cục Count vào biến cục bộ L1 2. Tiến trình P2 ghi nội dung biến toàn cục Count vào biến cục bộ L2 3. Tiến trình P1 thực hiện L1:= L1 + 1 và Count := L1 4. Tiến trình P2 thực hiện L2:= L2 + 1 và Count := L2 Như vậy thoạt nhìn ta thấy rằng chắc chắn Count đã tăng được 2 đơn vị, nhưng trong thực tế có thể Count chỉ tăng được 1 đơn vị. Bởi vì, nếu P1 và P2 đồng thời nhận giá trị của Count (giả sử ban đầu Count = 4) vào L1 và L2, sau đó P1 tăng L1 lên 1 và P2 tăng L2 lên 1 (L1 = 5, L2 = 5), rồi sau đó cả P1 và P2 đồng thời ghi giá trị biến L của nó vào lại Count, thì Count chỉ tăng được 1 đơn vị, Count = 6. Đây là điều mà chương trình không mong muốn nhưng cả chương trình và hệ điều hành đều khó có thể phát hiện được. Nguyên nhân ở trên là do 2 tiến trình P1 và P2 đồng thời truy xuất biến Count, cả khi nhận giá trị của Count, lẫn khi ghi giá trị vào Count. Trong trường hợp này tài nguyên găng là biến count. + Đoạn tới hạn (Critical Section): Đoạn Code trong các tiến trình đồng thời, có tác động đến các tài nguyên có thể trở thành tài nguyên găng được gọi là đoạn găng hay miền găng. Một giải pháp cho vấn đề đoạn găng phải thỏa mãn 3 yêu cầu: + Loại trừ lẫn nhau: nếu tiến trình P i đang thực hiện trong đoạn găng của nó thì các tiến trình khác không được thực hiện trong đoạn găng của chúng hay nói cách khác tại một thời điểm không thể có hai tiến trình nằm trong đoạn găng. Đoàn Ngọc Diễm My – Trần Thị Bích Đào 5 Báo cáo Lập Trình Mạng Khoa học máy tính – Khóa 11 + Chọn tiến trình tiếp theo được vào đoạn găng: nếu không có tiến trình nào đang trong đoạn găng của nó và một số tiến trình muốn vào đoạn găng của chúng thì chỉ những tiến trình đang không trong đoạn còn lại mới là ứng cử viên. + Chờ đợi có hạn: tồn tại giới hạn số lần các tiến trình khác được phép vào đoạn găng của chúng sau khi một tiến trình yêu cầu vào đoạn găng đến trước khi yêu cầu đó được đáp ứng. 4. Kiểm nghiệm giải thuật: Các yêu cầu vào đoạn găng được xử lý theo trật tự FIFO và theo quan hệ <thời gian, số>. Khi trạm i vào đoạn găng có nghĩa là nó đã nhận thông điệp từ tất cả các trạm khác và tất cả các thông điệp đều sau thông điệp REQ của nó. Ta kiểm tra các đặc tính sau đây: + Trạm i đang ở trong đoạn găng là trạm duy nhất nằm trong đoạn găng ấy. Thực tế cho thấy thông điệp REQ được phát đi bởi trạm i vẫn tiếp tục tồn tại trong các hàng đợi cho đến khi nó được thay thế bởi thông điệp REL. + Trạm đã yêu cầu vào đoạn găng phải đảm bảo thời hạn và phải ra khỏi đoạn găng sau một khoảng thời gian xác định. Thuật toán thể hiện tính đồng đều và tránh được tổn thất. Ví dụ: Xét một mạng gồm 3 trạm, trong số đó trạm 1 và trạm 2 yêu cầu vào đoạn găng tại thời điểm 2 của đồng hồ Logic của chúng. Tập hợp các thông điệp được truyền đi giữa chúng với nhau được mô tả theo hình vẽ sau và ta cũng có thể tìm thấy một số trạng thái của các hàng đợi thông điệp: Đoàn Ngọc Diễm My – Trần Thị Bích Đào 6 Đoạn găng của trạm 2 Đoạn găng của trạm 1 ACQ,6,3 REL,10,1 ACQ,9,1 ACQ,6,2 ACQ,4,3 REQ,2,1 REQ,2,2 REQ,2,1 REQ,2,2 1 2 3 7 8 9 10 Trạm 1 H 1 1 2 3 7 8 9 10 Trạm 2 H 2 1 2 3 7 8 9 10 Trạm 3 H 3 REL,10,1 Báo cáo Lập Trình Mạng Khoa học máy tính – Khóa 11 Ta nhận thấy rằng: + Trạm 1 vào đoạn găng tại H 1 = 7 + Trạm 2 vào đoạn găng tại H 2 = 11 5. Phản ứng với sự cố: Sự cố xảy ra với trạm chưa vào được trong đoạn găng không làm rối loạn hoạt động của giải thuật với điều kiện nó truyền thông điệp vang_mat cho việc chuyển tải ở mạng giao vận. Do có trang bị như thế, việc vào đoạn găng trở nên dễ dàng và nhanh chóng cho các trạm khác. Nếu trạm có sự cố đã gửi yêu cầu, thì nó kết thúc với lý do trở thành trước đối với tất cả các trạm khác. Khi một trạm lại được đưa vào trong mạng sau khi đã khắc phục sự cố, nó cần phải kiến tạo lại trạng thái hiện hành của các yêu cầu. Để đảm bảo điều đó, nó phát đi thông điệp vao_lai và để trả lời, các trạm gửi thời gian cuối cùng của các yêu cầu cuối cùng của nó REQ không được thoả mãn hoặc một thông điệp REL. Mạng cần phải bổ khuyết cho các trạm bị sự cố bằng cách gửi thông điệp vang_mat. Khi nó đã nhận tất cả các trả lời cho thông điệp vao_lai, trạm vừa đưa vào đó có thể bắt đầu lại bằng các yêu cầu. 6. Kết luận: Các dấu được cung cấp bởi đồng hồ Logic cho phép đánh dấu các sự kiện và xác định một tổng quát chặt chẽ. Nhưng tại đây không có quan hệ nào giữa các sự kiện và các giá trị của dấu. Trên một trạm cho trước, việc nhận một thông điệp có đóng dấu không thể cho nó biết còn sự kiện nào trước sự kiện đó đang ở trên đường. Như thế, ta còn phải nhận thông điệp từ các trạm khác còn lại. Đoàn Ngọc Diễm My – Trần Thị Bích Đào 7 Báo cáo Lập Trình Mạng Khoa học máy tính – Khóa 11 II. Xây dựng chương trình: 1. Giới thiệu ngôn ngữ Java: Java khởi thủy tên là Oak- là cây sồi mọc ở phía sau văn phòng của nhà thiết kế chính ông Jame Gosling, sau này ông thấy rằng đã có ngôn ngữ lập trình tên Oak rồi, do vậy nhóm thiết kế quyết định đổi tên, và “Java” là cái tên được chọn, Java là tên của một quán Cafe mà nhóm thiết kế Java hay đến đó uống. Java là một công nghệ xây dựng các ứng dụng phần mềm có vị trí rất lớn trong những năm cuối thế kỉ 20, đầu thế kỉ 21. Nó được coi là công nghệ mang tính cách mạng và khả thi nhất trong việc tạo ra các ứng dụng có khả năng chạy thống nhất trên nhiều nền tảng mà chỉ cần biên dịch một lần. Lần đầu tiên xuất hiện vào năm 1992 như là một ngôn ngữ dùng trong nội bộ tập đoàn Sun Microsystems để xây dựng ứng dụng điều khiển các bộ xử lý bên trong máy điện thoại cầm tay, lò vi sóng, các thiết bị điện tử dân dụng khác. Không chỉ là một ngôn ngữ, Java còn là một nền tảng phát triển và triển khai ứng dụng trong đó máy ảo Java, bộ thông dịch có vai trò trung tâm. Sun, công ty đã phát minh ra ngôn ngữ Java, chính thức ban hành bản Java Development Kit 1.0 vào năm 1996 hoàn toàn miễn phí để các nhà phát triển có thể tải về, học Java, xây dựng các ứng dụng Java và triển khai chúng trên các hệ điều hành có hỗ trợ Java. Hiện nay, công nghệ Java được chia làm ba bộ phận: J2SE Gồm các đặc tả, công cụ, API của nhân Java giúp phát triển các ứng dụng trên Desktop và định nghĩa các phần thuộc nhân của Java. J2EE Gồm các đặc tả, công cụ, API mở rộng J2SE để phát triển các ứng dụng qui mô xí nghiệp, chủ yếu để chạy trên máy chủ (server). Bộ phận hay được nhắc đến nhất của công nghệ này là công nghệ Servlet/JSP: sử dụng Java để làm các ứng dụng web. J2ME Gồm các đặc tả, công cụ, API mở rộng để phát triển các ứng dụng Java chạy trên điện thoại di động, thẻ thông minh, thiết bị điện tử cầm tay, robo và những ứng dụng điện tử khác Java đã trải qua 3 bước phát triển quan trọng: Java 1.0 gắn liền với bản JDK đầu tiên, Java 2 gắn với JDK 1.2 và Java 5 gắn với J2SDK 1.5 Ngày nay, khi nhắc đến Java người ta không còn chỉ nhắc đến Java như là một ngôn ngữ mà nhắc đến Java như là một công nghệ hay một nền tảng phát triển. Nó bao gồm các bộ phận: • Máy ảo Java: JVM • Bộ công cụ phát triển: J2SDK • Các đặc tả chi tiết kĩ thuật (Specifications) • Ngôn ngữ lập trình (Programming language) Đoàn Ngọc Diễm My – Trần Thị Bích Đào 8 Báo cáo Lập Trình Mạng Khoa học máy tính – Khóa 11 Tính uyển chuyển của ngôn ngữ Java thể hiện qua việc chương trình biên dịch Java chuyển đổi chương trình nguồn Java thành mã đối tượng, gọi là mã byte (bytecodes) - tập tin có tên quy ước với phần mở rộng là .class. Sau đó, máy ảo Java có trên máy điều khiển để thực thi. Mã máy chỉ thực hiện trên máy tính mà nó được biên dịch, trong khi bytecode có thể thực hiện trên bất kỳ hệ thống máy tính nào có trình điều khiển Java. Ngoài ra, tính uyển chuyển làm tăng khả năng tái sử dụng các lớp được tạo ra; các lớp cho phép thực hiện kỹ thuật kết nối động (Dynamic Binding) khi chương trình thực thi. 2. Kiến trúc và kỹ thuật RMI: 2.1 Tổng quan về RMI: Trong một ứng dụng không phân tán của Java, đoạn mã trong một đối tượng có thể gọi phương thức của một đối tượng khác và máy ảo Java phân giải địa chỉ và truyền tham số từ đối tượng gọi đến phương thức được gọi, ngoài ra nó cũng trả về các giá trị cho đối tượng gọi thực thi phương thức. Trong ứng dụng phân tán, mặc dù đoạn mã lập trình phương thức trông có vẻ giống như trong trường hợp ứng dụng không phân tán, nhưng là một cơ chế hoàn toàn khác nhau được dùng để móc những đối tượng này. Khi một đối tượng muốn gọi một phương thức, nó sẽ gọi một đối tượng bè bạn bên phía máy khách, đối tượng này sẽ đại diện cho đối tượng gọi phương thức bên phía máy chủ. Đối tượng này được gọi là Stub. Stub sẽ gọi kiến trúc RMI bên phía máy khách và di chuyển dữ liệu qua mạng đến kiến trúc RMI trên máy chủ, đến lược nó sẽ gọi thực thi một đối tượng bè bạn bên phía máy chủ gọi là Skeleton. Đối tượng Skeleton sẽ gọi phương thức của đối tượng thật sự bên phía máy chủ. Đến khi trả lại kết quả thì một cơ chế giống hệt như trên sẽ được gọi thực thi nhưng theo thứ tự ngược lại, khi đó kết quả trả về sẽ được truyền cho đối tượng Skeleton trên máy chủ, và được đối tượng này truyền theo đường Đoàn Ngọc Diễm My – Trần Thị Bích Đào 9 Báo cáo Lập Trình Mạng Khoa học máy tính – Khóa 11 mạng sử dụng kiến trúc RMI, tiếp đến nó sẽ gọi đối tượng Stub bên phía máy khách, và trả về giá trị cho đối tượng gọi phương thức. Cái hay của kiến trúc đối tượng phân tán RMI là người lập trình chỉ cần lập trình các lời gọi phương thức vì đối tượng được gọi đã hiện diện trong máy ảo Java của nó. Stub và Skeleton được phát sinh ra từ đối tượng gọi và đối tượng được gọi bằng cách sử dụng một công cụ biên dịch của RMI là RMIC. Các trình đóng gói ứng dụng phải đảm bảo là các Stubs phải được đóng gói kèm theo với các đoạn mã bên phía máy khách hay các tập tin Jar, và các Skeleton phải đi kèm với các đoạn mã bên phía máy chủ hoặc các thư viện JAR. Các Stub có thể được tự động tải về từ máy chủ khi có yêu cầu. Hình dưới đây minh họa luồng dữ liệu giữa Stub và Skeleton trong kiến trúc của RMI 2.2 Kiến trúc RMI: Ứng dụng phân tán trong Java thông qua cơ chế RMI (Remote Method Invocation) thực chất là sự kết hợp nhiều đối tượng đang tồn tại trên các máy khác nhau để giải quyết vấn đề. Đối tượng này sử dụng hàm của đối tượng khác ở xa để thực thi công việc. Khi đó việc gọi thực thi đối tượng ở xa cũng giống như gọi đối tượng địa phương. Để làm được điều này, ứng dụng phân tán RMI dùng bộ phận đăng ký dịch vụ (Registry) để quản lý hoạt động của các đối tượng trên mạng. Khi đó thông qua bộ phận đăng ký này, máy ảo Java đóng vai trò Server sẽ liên kết với đối tượng ở xa (Remote object). RMI cung cấp khả năng triệu gọi các phương thức của một đối tượng từ xa thông qua giao thức JRMP. Bằng cách này có thể liên lạc và thực thi các ứng dụng xuyên qua nhiều hệ thống trên một mạng. RMI-JRMP – Remote Method Invocation (RMI), một chuẩn dùng để gọi hàm từ xa dựa trên Java Remote Message Protocol (JRMP) Client tìm đến đối tượng ở xa thông qua tên đã đăng ký với bộ phận đăng ký Server này. Bộ phận đăng ký dịch vụ được thiết lập mặc định ở cổng 1099 thông qua RMIREGISTRY, có trong bộ công cụ phát triển Java (J2SDK). Đoàn Ngọc Diễm My – Trần Thị Bích Đào 10 [...]... quyết bài toán và từ đó đi xây dựng chương trình Về cơ bản, nhóm đã thực hiện được một số vấn đề như sau: Tìm hiểu và nắm được tương đối các kiến thức liên quan đến hệ phân tán và lập trình mạng trên nền Java Trình bày rõ giải thuật Loại trừ tương hỗ trong hệ phân tán và đưa ra hướng phát triển ứng dụng Đã cài đặt được bài toán thể hiện đa Server trong việc phát và nhận thông điệp Mặc dù nhóm...Báo cáo Lập Trình Mạng Khoa học máy tính – Khóa 11 RMI Registry RMI Client RMI Server Vị trí của hệ thống RMI trong ứng dụng phân tán được mô tả như hình dưới Trong đó các chương trình Client và Server trao đổi với nhau qua cầu nối của hệ thống RMI Kiến trúc của hệ thống RMI bao gồm các tầng như sau: + Tầng ứng dụng: Bao gồm ứng dụng Server và Client Server: • • • Hiện thực giao... Khoa học máy tính – Khóa 11 - Trường hợp Server 1 và Server 2 cùng gửi REQ: - Server 1 nhận thông điệp ACQ từ Server 3 và vào đoạn găng: Đoàn Ngọc Diễm My – Trần Thị Bích Đào 24 Báo cáo Lập Trình Mạng Khoa học máy tính – Khóa 11 - Server 2 vẫn nhận được ACQ từ Server 3, nhưng chưa vào được găng vì thông điệp REQ của nó yêu cầu sau Server 1 - Server 1 sau khi rời đoạn găng sẽ gửi thông điệp REL đến... Client Như vậy, trong quá trình thực hiện có 3 máy ảo Java hoạt động: + Quản lý bộ đăng ký (RmiRegistry) + Thực thi đối tượng nhằm xuất khẩu đối tượng ra ngoài + Thực thi chương trình của Client 2 .3 Kỹ thuật RMI: Cơ chế làm việc của chương trình trên Client và Server khi đã được đăng ký bởi bộ đăng ký Rmiregistry như sau: + Máy ảo Java (JVM) trên máy Server dùng hàm Bind() hoặc Rebind() của lớp Naming... REL đến các trạm, và Server 2 sẽ được quyền vào đoạn găng tiếp theo: - Và Server 2 gửi thông điệp REL sau khi đã rời đoạn găng: Đoàn Ngọc Diễm My – Trần Thị Bích Đào 25 Báo cáo Lập Trình Mạng Khoa học máy tính – Khóa 11 KẾT LUẬN Với yêu cầu tìm hiểu và xây dựng giải thuật, cài đặt chương trình xây dựng hệ thống 3 Server thể hiện khả năng phát nhận thông điệp, nhóm đã đầu tư nghiên cứu cơ sở lý thuyết,... 19 Báo cáo Lập Trình Mạng Khoa học máy tính – Khóa 11 4 Chương trình chạy thử: - Khởi động các Server: - Trạng thái của các SERVER hiển thị trên JSP: Đoàn Ngọc Diễm My – Trần Thị Bích Đào 20 Báo cáo Lập Trình Mạng Khoa học máy tính – Khóa 11 - Khởi động Server điều khiển thông điệp: - Khởi động Server kết nối JSP: - Các Port được mở và trạng thái từ chương trình: LISTENING: Trạng thái của PORT đang... lại và không được xem như một yêu cầu khởi tạo kết nối mới - Server 1 gửi thông điệp REQ: Đoàn Ngọc Diễm My – Trần Thị Bích Đào 22 Báo cáo Lập Trình Mạng Khoa học máy tính – Khóa 11 - Server 2, Server 3 nhận thông điệp và phản hồi ACQ, Server 1 bắt đầu vào đoạn găng: - Server 1 sau khi rời đoạn găng sẽ gửi thông điệp REL đến các Server khác: Đoàn Ngọc Diễm My – Trần Thị Bích Đào 23 Báo cáo Lập Trình. .. gian có hạn, trình độ cũng còn hạn chế nên nhóm không tránh khỏi những thiếu sót Kính mong thầy xem xét, góp ý để nhóm chúng em hoàn thiện, hiểu rõ hơn nữa về công nghệ lập trình mới và tiên tiến này Xin chân thành cám ơn Đoàn Ngọc Diễm My – Trần Thị Bích Đào 26 Báo cáo Lập Trình Mạng Khoa học máy tính – Khóa 11 TÀI LIỆU THAM KHẢO [ 1 ] TS Lê Văn Sơn, Hệ tin học phân tán, nhà xuất bản Đại học quốc gia... lý các sự kiện trong chương trình như chuột, bàn phím + Java.rmi: Công cụ để gọi hàm từ xa Chúng cho phép tạo đối tượng trên máy khác và sử dụng các đối tượng đó trên máy cục bộ Đoàn Ngọc Diễm My – Trần Thị Bích Đào 13 Báo cáo Lập Trình Mạng Khoa học máy tính – Khóa 11 + Java.security: Cung cấp các công cụ cần thiết để mã hóa và đảm bảo tính an toàn của dữ liệu truyền giữa máy trạm và máy chủ + Java.sql:... Các gói thông dụng thường được sử dụng: + Java.lang: Chứa các lớp quan trọng nhất của ngôn ngữ Java Chúng bao gồm các kiểu dữ liệu cơ bản như ký tự, số nguyên, Chúng cũng chứa các lớp làm nhiệm vụ xử lý lỗi và các lớp vào ra chuẩn Một vài lớp quan trọng khác như String hay StringBuffer + Java.applet: Đây là package nhỏ nhất chứa một mình lớp Applet Các Applet nhúng trong trang Web hay chạy trong Appletviewer . - In các thông điệp trong hàng đợi: - Thêm vào hàng đợi: Đoàn Ngọc Diễm My – Trần Thị Bích Đào 15 public void printQueue() { if (!change) return; int i=0; System.out.println(" Queue "); while