TíNH TOáN PHÂN TáN VớI RMI TS. ngô đăng quang KS. nguyễn minh ngọc Viện Khoa học v công nghệ XDGT Trờng Đại học Giao thông Vận tải Tóm tắt: Tính toán phân tán l một trong những chủ đề thời sự hiện nay trong công nghệ thông tin. ý tởng chính của lập trình phân tán l liên kết v tận dụng tối đa các nguồn ti nguyên v ngời dùng thông qua các liên kết mạng. Ngy nay, với tốc độ đờng truyền mạng ngy cng cao v khả năng xử lý của các hệ thống tính toán ngy cng lớn, tính toán trở nên phổ biến v có hiệu quả. Có khá nhiều công nghệ tính toán phân tán đã đợc giới thiệu nh DCOM, CORBA, RMI, Webservice, Internet Agent, v.v Mỗi công nghệ đều có điểm mạnh v điểm yếu khác nhau v thích hợp cho những ứng dụng nhất định. Bi báo trình by tổng quan về một công nghệ tính toán phân tán khá mạnh l RMI v minh hoạ cách ứng dụng nó thông qua một ví dụ xây dựng một hệ thống phân tán phân tích phần tử hữu hạn. Summary: Distributed computing is now a topical issue in the information industry. The main goal of distributed computing is to connect users and take the full advantage of the others resources over a network. Increasing desktop CPU power and communications bandwidth has also helped to make distributed computing a more practical idea. There are different mechanisms which can build a distributed computing system: DCOM, CORBA, RMI, Webservice, Internet Agent, etc. Each has its power and limits depending on what problem to be solved. This paper provides a broad overview of a powerful mechanism developed by Sun Microsystem, the Remote Method Invocation (RMI) and an illustration of how to use it in an example about truss solved by FEM (Finite Element Method) over RMI technology. CT 2 i. Giới thiệu chung Tính toán phân tán (TTPT) là một trong những vấn đề thời sự hiện nay của khoa học máy tính và công nghệ thông tin. ý tởng chính của lập trình phân tán là liên kết và tận dụng tối đa các nguồn tài nguyên và ngời dùng thông qua các liên kết mạng. Ngày nay, khi tốc độ đờng truyền mạng ngày càng cao và khả năng xử lý của các hệ thống tính toán ngày càng lớn, TTPT đang đợc ứng dụng ngày càng phổ biến. Có rất nhiều công nghệ khác khác nhau có thể đợc sử dụng để xây dựng nên một hệ thống TTPT nh DCOM, CORBA, RMI, Webservice, Internet Agent, v.v Mỗi công nghệ trong số chúng đều có những điểm mạnh và điểm yếu khác nhau và đợc sử dụng tuỳ thuộc vào từng bài toán cụ thể. ii. RMI 1. Khái niệm Thông thờng các chơng trình đợc viết dới dạng thủ tục hay hàm gọi. Mã lệnh của hàm hay thủ tục đợc nạp thẳng vào bộ nhớ trong và thực thi ngay trên máy địa phơng. Tuy nhiên, trong rất nhiều trờng hợp, các nguồn lực tính toán của một máy không đáp ứng đủ nhu cầu tính toán và các ứng dụng cần sử dụng các hàm hay đối tợng nằm ở trên các máy khác. Vấn đề kỹ thuật ở đây là cách nạp nội dung của hàm hay đối tợng ở một máy nào đó và gọi chúng. Đây chính là nội dung của lập trình phân tán mã lệnh. RMI theo nghĩa tiếng Anh là gọi phơng thức ở xa là cách thức giao tiếp giữa các đối tợng Java có mã lệnh cài đặt (bao gồm phơng thức và thuộc tính) nằm trên các máy khác nhau có thể triệu gọi lẫn nhau. 2. Cơ chế hoạt động ứng dụng RMI bao gồm 2 nhóm chơng trình chính: một nhóm chơng trình cung cấp dịch vụ đóng vai trò trình chủ và một hay nhiều chơng trình sử dụng dịch vụ đợc gọi là trình khách. Trình chủ tạo ra các đối tợng ở xa (remote object) tức là các đối tợng có thể truy cập đợc từ các trình khách nằm ở các máy tính khác, đăng ký địa chỉ và chờ trình khách gọi các phơng thức của đối tợng đó. Trình khách lấy các địa chỉ của các đối tợng ở xa trên trình chủ và gọi các phơng thức của chúng. Các phơng thức này đợc thực hiện trên trình chủ. RMI tạo ra các cơ chế cho phép trình chủ và trình khách liên kết và trao đổi thông tin qua lại. Với nguyên tắc hoạt động này, ứng dụng RMI là một loại ứng dụng ứng dụng phân tán đối tợng. Các vấn đề cần thực hiện khi phát triển hệ thống phân tán đối tợng RMI là: - Quản lý tham chiếu của đối tợng ở xa, để có thể gọi các phơng thức của các đối tợng ở xa, các ứng dụng khách cần có tham chiếu đến các đối tợng này. RMI cung cấp 3 phơng pháp để các ứng dụng khách nhận đợc tham chiếu này: sử dụng tham chiếu đợc quản lý bởi dịch vụ quản lý tên (naming service) của RMI, chuyển tham chiếu dới dạng thông số hay kết quả trả về (return value). - Kết nối với đối tợng ở xa. Quá trình này đợc RMI thực hiện tự động, lập trình viên chỉ cần sử dụng các phơng thức đã đợc xây dựng sẵn. CT 2 - Truyền dữ liệu. Dữ liệu đợc truyền theo phơng thức serialization của Java, và do đó, không bị phá vỡ cấu trúc. Hình 1 mô tả một ứng dụng phân tán RMI sử dụng bộ registry để tạo ra tham chiếu đến đối tợng ở xa. Trình chủ gọi bộ registry để đăng ký (hay bind) một tên cho đối tợng ở xa. Trình khách tìm kiếm đối tợng ở xa theo tên và thực hiện phơng thức trên nó. Mô hình này cũng thể hiện việc hệ thống RMI sử dụng Web server để tải các lớp đã đợc biên dịch từ trình chủ đến trình khách, từ trình khách đến trình chủ cho các đối tợng khi cần thiết. URL Protocol URL Protocol RMI RMI Client Server Registry WebserverWebserver RMI URL Protocol Hình 1. Hệ thống RMI 3. Ưu nhợc điểm của RMI Ưu điểm lớn của RMI là lập trình viên không cần bận tâm đến các phơng thức truyền dữ liệu và các phơng thức ở xa, RMI tự động thực hiện những công việc này. Dữ liệu truyền qua lại sử dụng Java RMI đợc bảo toàn về kiểu. Đây là một thế mạnh của công nghệ này. Với công nghệ liên kết mạng truyền thống, dữ liệu đợc truyền đi dới dạng mã, khi đến máy nhận, chúng cần đợc xử lý ở dạng không kiểu. Quá trình này nhiều khi gây khó khăn cho việc định dạng dữ liệu. Một trong những nét đặc trng chỉ có ở RMI là khả năng tải các bytecodes (hay mã) của một lớp đối tợng mặc dù lớp này cha hề đợc định nghĩa ở trên máy khách. Kiểu dữ liệu và hoạt động của đối tợng này, lúc đầu chỉ tồn tại trên một máy, nay có thể chuyền tới một máy khác ở xa. RMI chuyển nguyên kiểu dữ liệu của các đối tợng, vì thế hoạt động của đối tợng là không thay đổi khi chúng đợc chuyển sang một máy khác. Điều này cho phép các kiểu dữ liệu mới có thể đợc sử dụng trên máy mới này, vì thế hoạt động của chơng trình trở nên năng động hơn. Tuy nhiên, nhợc điểm của RMI là các ứng dụng RMI chỉ chạy trên môi trờng của Java vì thế yêu cầu ở đây là cả máy chủ và máy khách đều phải đợc cài Java. Một nhợc điểm nữa của RMI là khi kết nối với mạng diện rộng Internet các ứng dụng của RMI bị chặn lại bởi tờng lửa (Firewall) vì RMI không sử dụng cổng 80 là cổng của dịch vụ http (cổng mà hầu nh mọi tờng lửa đều cho qua). Vì thế để sử dụng RMI trên mạng diện rộng các ứng dụng phải sử dụng cơ chế trung gian thông qua cổng 80 của dịch vụ http server. 4. Tạo các ứng dụng phân tán sử dụng RMI Các ứng dụng phân tán với RMI đợc xây dựng theo các bớc sau: CT 2 4.1. Thiết kế v lập trình (thực thi) các thnh phần của ứng dụng Công việc đầu tiên trong việc xây dựng các hệ thống phần mềm là xác định cấu trúc của ứng dụng. Với RMI, công tác này còn bao gồm cả việc xác định những thành phần là đối tợng địa phơng và những thành phần là đối tợng ở xa. Các bớc chính ở đây là: - Định nghĩa các giao diện ở xa: Một giao diện ở xa chứa các phơng thức có thể đợc gọi bởi trình khách. Các trình khách đợc lập trình với các giao diện ở xa mà không phải với các lớp thực thi của các giao diện đó. Một phần của việc thiết kế những giao diện ở xa là xác định các đối tợng địa phơng sẽ đợc sử dụng làm tham số và trị trả về cho các phơng thức đó. - Lập trình các đối tợng ở xa: Các đối tợng ở xa phải thực thi một hay nhiều giao diện ở xa. Lớp của các đối tợng ở xa có thể bao gồm nhiều phần thực thi của các giao diện khác (cả cục bộ và ở xa) và các phơng thức khác. Nếu bất kỳ lớp địa phơng nào đợc sử dụng làm tham số và và trị trả về cho bất kỳ một phơng thức nào thì chúng cũng phải đợc thực thi. - Lập trình trình khách: Các trình khách sử dụng các đối tợng ở xa có thể đợc lập trình tại bất kỳ thời điểm nào sau khi giao diện ở xa đợc định nghĩa, và cả sau khi các đối tợng ở xa đã đợc triển khai. 4.2. Dịch mã v tạo stub Quá trình này gồm 2 bớc. Bớc đầu tiên, các tệp tin mã chứa các thực thi của các giao diện ở xa, các lớp trình chủ, các lớp trình khách sẽ đợc dịch bằng javac. Bớc thứ 2, các stub (bản sao) cho các đối tợng ở xa sẽ đợc tạo ra bằng trình biên dịch rmic. RMI sử dụng một lớp stub của đối tợng ở xa nh một lớp ủy nhiệm trên trình khách. Với lớp ủy nhiệm trình khách có thể liên lạc đợc với đối tợng ở xa. 4.3. Lm cho các lớp có thể truy cập đợc trên mạng Các tệp tin lớp chứa các giao diện, stubs, và các lớp khác cần phải đa lên Webserver để trình khách có thể tải chúng xuống đợc. 4.4. Khởi động ứng dụng Việc khởi động chơng trình bao gồm chạy chơng trình RMI registry, trình khách và trình chủ. 5. Tùy biến của RMI Ngoài khả năng triệu gọi một chiều theo kiểu trình chủ đợc trình khách triệu gọi từ xa, RMI còn cung cấp khả năng triệu gọi hai chiều, theo đó các trình khách cũng có thể đợc triệu gọi từ trình chủ. Nói cách khác, trình khách không cần chuyển đối tợng cho trình chủ theo trị mà có thể chuyển theo tham chiếu. Trong ứng dụng RMI, các đối tợng cần đợc đăng ký với rmiregistry, và khi số lợng các đối tợng này tăng lên, việc quản lý trở nên phức tạp. Để hạn chế khó khăn này, RMI cung cấp khả năng xây dựng một đối tợng duy nhất và đăng ký đối tợng này với rmiregistry. Nhiệm vụ của đối tợng trên chỉ dùng để tạo ra các đối tợng con khác. Một đối tợng nh vậy trong mô hình tính toán phân tán gọi là factory object (đối tợng mẹ). CT 2 Số lợng các đối tợng cần đợc đăng ký với rmiregistry ngày càng lớn thì bộ nhớ mà trình chủ cần phải cấp phát cho chúng cũng ngày càng lớn. RMI cung cấp cơ chế tự động kích hoạt đối tợng từ xa cho phép ngời dùng chỉ cần đăng ký sự hiện diện của đối tợng trên máy chủ mà không cần cấp phát bộ nhớ cho đối tợng trong trạng thái sẵn sàng. iii. Xây dựng một hệ thống phân tích phần tử hữu hạn dựa trên công nghệ RMI của Java 1. Kiến trúc hệ thống Việc phân tích phần tử hữu hạn của các ứng dụng lớn đòi hỏi phải sử dụng nguồn lực của nhiều máy tính đồng thời. Nh đã giới thiệu ở trên, RMI là công cụ cho phép thực hiện điều đó một cách tơng đối đơn giản. Ví dụ này trình bày cách xây dựng một hệ thống phân tích phần tử hữu hạn đơn giản. Hệ thống gồm hai phần chính là trình khách và trình chủ. Toàn bộ quá trình tính toán chính đều thực hiện trên trình chủ. Trình khách là ứng dụng sử dụng các dịch vụ mà trình chủ cung cấp. Nhiệm vụ của trình khách là cung cấp các thông số đầu vào cần thiết cho quá trình phân tích nh các tham số kết cấu, tải trọng, vật liệu, v.v và thể hiện kết quả mà quá trình tính toán ở trình chủ cung cấp. Các đối tợng của trình chủ cũng có thể nằm trên nhiều máy tính khác nhau. Tuy nhiên, trong ví dụ này, các đối tợng thực hiện quá trình tính toán đều đợc thiết kế nằm ở một máy tính. Hình 2 thể hiện kiến trúc hệ thống của ứng dụng. FEMClient (Trình khách) FEMServer (Trình khách) FEMInterface Mạng máy tính FEMImplement Matrix TrussSolution Hình 2. Kiến trúc hệ thống 2. Chi tiết các thành phần của ứng dụng a. Matrix Matrix là lớp thực hiện các tính toán ma trận cần thiết cho việc phân tích phần tử hữu hạn nh cộng, trừ, nhân, chia, nghịch đảo ma trận, cắt hàng, cắt cột, v.v b. TrussSolution Lớp TrussSolution chứa các phơng thức tính toán kết cấu giàn theo phơng pháp phần tử hữu hạn. c. FEMInterface Đây là lớp giao diện ở xa, chứa một phơng thức duy nhất, Solution , có nhiệm vụ tiếp nhận dữ liệu đầu vào và cung cấp kết quả là nội lực trong các thanh giàn. Các tham số đầu vào của phơng thức này là các thông số của kết cấu: Ma trận tọa độ nút. Ma trận liên kết. CT 2 Véc tơ độ cứng. Ma trận liên kết. Ma trận ngoại lực. d. FEMImpl Lớp thực thi của giao diện FEMInterface. Lớp này sử dụng lớp TrussSolution để thực thi các tính toán trên máy chủ. e. FEMServer FEMServer là lớp tạo trình chủ để đăng ký lớp thực thi. Lớp này thực hiện hai công việc: + Đăng ký RMISecurityManager. + Tạo đối tợng thuộc lớp FEMImpl. Đối tợng FEMImpl có trách nhiệm đăng ký với bộ RMI registry. f. FEMClient Lớp này đăng ký với RMI Security Manager, sau đó sử dụng phơng thức tĩnh Naming.lookup() để tạo đờng dẫn đến đối tợng ở xa. Chú ý rằng trình khách sử dụng giao diện để giữ đờng dẫn và giúp phơng thức có thể gọi đợc. 3. Ví dụ ứng dụng Ví dụ với một giàn nh trên hình 3 đã đợc sử dụng để tính toán trên hệ thống phân tán. ứng với sơ đồ kết cấu trên, dữ liệu đầu vào do chơng trình FEMClient cung cấp có dạng sau: //Nodes coordinates double[][] dNodeCoordinates = { { -4, 3}, { 0, 3}, { 4, 3}, { 0, 0} }; //Element Connectivity Hình 3. Ví dụ ứng dụng int [][] iElemNodeLists = {{ 1, 2}, { 2, 3}, { 1, 4}, { 2, 4}, { 3, 4}}; Module đn hồi của thanh: E=3000daN/cm 2 //Materials Properties double [] dElemMaterial = { EA, EA, EA, EA, EA}; Diện tích mặt cắt thanh: A=2cm 2 //Freedom Tags int [][] iFreedomTags = {{ 1, 1}, { 0, 0}, { 0, 0}, { 0, 1}}; //Freedom Values double [][] dFreedomValues = {{ 0, 0}, { 0, 0}, { 0, 100}, { 0, 0}}; Hình 4 minh hoạ kết quả tính toán đợc thể trên FEMClient. CT 2 Hình 4. Kết quả tính toán đợc thể hiện trên FMClient iv. Kết luận Sử dụng RMI trong phát triển hệ thống TTPT thể hiện nhiều u điểm cho phép kỹ s có thể tập trung giải quyết bài toán mà không cần quan tâm nhiều đến các vấn đề về mạng. Với RMI, các bài toán lớn có thể đợc giải quyết trên các máy tính có cấu hình thấp, các máy khách chỉ cần gửi các đối tợng kích thớc lớn lên máy chủ có cấu hình mạnh nhờ tính toán giúp. Và trong bối cảnh an ninh mạng ngày càng đợc quan tâm, các cơ chế bảo vệ của Java giúp cho các hệ thống TTPT trên RMI trở nên an toàn hơn và đợc nhiều ngời sử dụng hơn. Tuy nhiên công nghệ RMI không phải là công nghệ tối u vì RMI chỉ hoạt động trên môi trờng của Java. Tài liệu tham khảo [1], http://en.wikipedia.org/wiki/Distributed_computing. [2]. Leon Erlanger, Distributed Computing: An Introduction, http: //www.extremetech.com/article2/0,1697,1153023,00.asp. [3]. Petri Niska, Aapo Rautiainen, Java in Distributed Computing, http://www.niksula.cs.hut.fi/~pate/Tik- 76.270/javasem3.html. [4]. Nguyễn Phơng Lan, Hong Đức Hải. Java lập trình mạng, NXB Giáo dục, 2001. [5]. The Java Tutorial. [6]. Jbuilder SamplesĂ . TíNH TOáN PHÂN TáN VớI RMI TS. ngô đăng quang KS. nguyễn minh ngọc Viện Khoa học v công nghệ XDGT Trờng Đại học Giao thông Vận tải Tóm tắt: Tính toán phân tán l một trong. dụng nhất định. Bi báo trình by tổng quan về một công nghệ tính toán phân tán khá mạnh l RMI v minh hoạ cách ứng dụng nó thông qua một ví dụ xây dựng một hệ thống phân tán phân tích phần tử. i. Giới thiệu chung Tính toán phân tán (TTPT) là một trong những vấn đề thời sự hiện nay của khoa học máy tính và công nghệ thông tin. ý tởng chính của lập trình phân tán là liên kết và tận dụng