3.3.1.1. NetSolve
NetSole là một ứng dụng client/server đuợc thiết kếđể giải quyết những vấn đề tính tốn khoa học trong mơi trường phân phối.
Agent
Agent Network of servers Client
Client MPP servers Scalar server request choice reply Hình 3-1 : Mơ hình NetSolve
Hệ thống Netsolve dựa trên những hệ thống phân phối, được kết nối thơng qua mạng LAN hay WAN. Những chương trình từ máy khách Netsolve cĩ thể được viết bằng C hay FORTRAN, và sử dụng Web để giao tiếp với Server. Một server Netsolve cĩ thể sử dụng một số gĩi phần mềm liên quan đến khoa học để cung cấp cho những phần mềm tính tốn. Những giao tiếp truyền thơng bên trong Netsolve thơng qua những socket. Netsolve đáp ứng những khả năng cho việc tìm kiếm những tài nguyên máy tính trên một mạng máy
tính, chọn những tài nguyên sẵn dùng tốt nhất, giải quyết một vấn đề, và trả kết quả cho người sử dụng.
3.3.1.2. Legion
Là một hệ thống trên cơ sở đối tượng được phát triển ở đại học Virginia (Hoa Kỳ). Legion cung cấp kiến trúc phần mềm để hệ thống những máy tính phân phối khắp nơi, với số lượng khổng lồ cĩ thể giao tiếp với nhau một cách dễ dàng. Trong hệ thống Legion, cĩ những đặc điểm sau sau:
- Mọi thứ là một đối tượng. Những đối tượng đặc trưng cho tất cả các phần cứng và phần mềm. Mỗi đối tượng là một xử lý hoạt động, đáp ứng những yêu cầu giải pháp cho những đối tượng khác bên trong hệ thống. Legion định nghĩa một tập API cho việc giao tiếp đối tượng. Nhưng khơng phải là ngơn ngữ lập trình hay giao thức truyền thơng.
- Những lớp quản lý những trường hợp. Mọi đối tượng Legion được định nghĩa và quản lý bởi chính đối tượng hoạt động .Những lớp đối tượng cĩ những khả năng như sau: tự tạo một trường hợp thể hiện (instance), lập biểu cho việc thực thi, làm cho một đối tượng khác hoạt động, hay khơng hoạt động, và cung cấp thơng tin về trạng thái cho những đối tượng thuộc về các máy tính khác.
Những người dùng cĩ thểđịnh nghĩa thêm các lớp mới. Giống ngơn ngữ lập trình hướng đối tượng, người dùng cĩ thểđịnh nghĩa lại hay viết lại những chức năng của một lớp. Đặc điểm này cho phép những chức năng này cĩ thể thêm, hay xố tùy theo nhu cầu của người dùng.
Hệ thống Legion hỗ trợ một tập các dạng đối tượng cốt lõi : • Những lớp và lớp tựđịnh nghĩa
• Những đối tượng chủ : Những đối tượng chủ là sự trừu tượng hĩa của việc xử lý những tài nguyên, chúng cĩ thể thể hiện một bộ xử lý
Globus cung cấp một cơ sở hạ tầng phần mềm, làm cho những ứng dụng cĩ thể quản lý phân phối những tài nguyên tính tốn khổng lồ như một máy tính đơn ảo.
Một Grid, là một cở sở hạ tầng phần cứng và phần mềm, cung cấp truy xuất các tài nguyên khắp nơi dùng cho tính tốn cấp cao, dù cho sự phân phối thuộc về địa lý của tài nguyên và người sử dụng cĩ sự cản trở. Globus cung cấp những dịch vụ cơ bản và những khả năng được yêu cầu để cấu trúc một mạng tính tốn lưới. Bộ cơng cụ bao gồm một tập hợp các thành phần bổ sung cho những dịch vụ cơ bản, chẳng hạn như bảo mật, định vị tài nguyên, quản lý tài nguyên, và dịch vụ truyền thơng.
Mạng tính tốn lưới được hỗ trợ một số lượng lớn những ứng dụng và mơ hình lập trình, đĩ là một điều thiết yếu.Vì thế, việc cung cấp hơn một mơ hình lập trình chuẩn, chẳng hạn như mơ hình lập trình hướng đối tượng là điều thiết yếu. Globus cung cấp một số dịch vụ cho phép những nhà phát triển cơng cụđặc biệt hay những ứng dụng cĩ thể sử dụng để tạo ra những yêu cầu cụ thể cho chính họ. Phương pháp này chỉ khả thi khi những dịch vụ cĩ sự khác biệt và được định nghĩa tốt thơng qua những tập API của nĩ, Globus được kiến tạo như một tầng kiến trúc với những dịch vụ cấp cao được xây dựng trên những dịch vụ cốt lõi ở tầng thấp hơn. Bộ cơng cụ Globus được phân thành những mơ đun, và một ứng dụng cĩ thể khai thác những đặc điểm này của từng mơ đun của Globus, chẳng hạn như sự quản lý tài nguyên hay hạ tầng thơng tin, mà khơng sử dụng những thư viện truyền thơng của Globus. Bộ cơng cụ Globus hỗ trợ những dịch vụ sau :
• GSI (Grid Security Infrastructure): kiến trúc bảo mật • GridFTP: giao thức truyền tập tin
• GRAM (Globus Resource Allocation Manager): quản lý các tài nguyên trên mơi trường Grid.
• Metacomputing Directory Service • Globus Access to Secondary Storage
• Advanced Resource Reservation và Allocatoin(GARA)
Hình 3-2 : Các thành phần của Globus
Globus cĩ thể được nhìn nhận như một hệ thống cơ bản cho tính tốn lưới, ngồi việc cung cấp cho nhà phát triển ứng dụng một tập thư viện API đặc trưng cho các dịch vụ Globus mà cung cấp. Globus cịn cung cấp cho những nhà phát triển ứng dụng một phương tiện hiện thực cho việc bổ sung các dịch vụđể cung ứng cho mơi trường thực thi ứng dụng trên một vùng rộng lớn.
3.3.2. Những mơ hình lập trình và cơng cụ hỗ trợ
Cho đến lúc này, gần 20 năm nghiên cứu và phát triển trong ngành lập trình song song và phân bố. Việc thiết kế hệ thống phân bố đã hướng nền phát tiển kỹ thuật phần cứng lên một tầm cao mới và ước hẹn cĩ thể xây dựng được hệ thống tốt, cải thiện được trạng thái hiện thời và sử dụng lại hệ thống. Sự phát triển Grid computing cũng lấy gốc từ việc tính tốn song song và phân bố này, bởi vì chúng đã xác lập được những phương pháp lập trình nền tảng cho
Mơ hình lập trình Shared-state đặc trưng cho sự liên kết chặt chẽ ,những ngơn ngữ đồng bộ và những mơ hình thực thi cho những máy tính chia sẻ bộ nhớ và hệ thống mạng chia sẻ vùng nhớ giữa các máy tình, với băng tầng truyền thơng cao và độ trễ trong việc truyền thơng thấp. Việc này quyết định mơi trường Grid và sẽ làm tác động đến các cơng cụ lập trình khác trở nên khơng hiệu quả, vì thế cần cĩ một số mơ hình lập trình thiết yếu dựa trên hình thức chia sẻ trạng thái, và như thế trình sản xuất và tiêu thụ dữ liệu giữa các tiến trình được phân chia rõ ràng hơn trên mơi trường Grid.
• JavaSpaces
Javaspaces là một sự bổ sung dựa trên Java với khái niệm khơng gian biến (tuplespace) Linda, điều này được minh hoạ bằng một tập biến được thể hiện bởi một tập các đối tượng. Sử dụng Java cĩ đặc điểm là nhiều client và server tương tác với nhau mà khơng liên quan đến những kiến trúc của bộ xử lý và hệ điều hành. Sử dụng JavaSpaces nhìn nhận một ứng dụng như một tập những xử lý giao tiếp với nhau bằng cách nhận và đưa những đối tượng vào một hay nhiều vùng khơng gian (space). Một khơng gian (space) là một kho chứa đối tượng cụ thể và được chia sẻ và được truy xuất thơng qua mạng máy tính. Những xử lý sử dụng kho chứa như một kỹ thuật trao đổi dữ liệu thay vì phải giao tiếp trực tiếp với nhau. Những thao tác chính là một xử lý cĩ thể cĩ một khơng gian để đặt, nhận, đọc, sao chép những đối tượng .Trên thao tác nhận hay đọc, đối tượng nhận được xác định bởi một thao tác cĩ tính chất kiểm tra sự gần giống liên kết (associative matching ). Sự gần giống này gồm dạng và số lượng thành phần liên kết với đối tượng đặt vào khơng gian. Một lập trình viên muốn xây dựng một ứng dụng trên nền tảng như thế này nên thiết kết cấu trúc dữ liệu phân phối giống như một tập những đối tượng được lưu trữ trong một hay nhiều khơng gian.
Sự tiếp cận mới mà mơ hình lập trình JavaSpace mang lại cho lập trình viên là xây dựng những ứng dụng phân phối dễ dàng hơn trên mơi trường Grid.
Hiện thời thì việc viết ứng dụng đựa trên JavaSpace được hỗ trợ trên Grid sử dụng cơng cụ Java của Sun cho Globus.
Trong những mơ hình truyền thơng điệp, những tiến trình được phân chia riêng khơng gian bộ nhớ, và thơng tin trao đổi bằng cách truyền thơng điệp từ một tiến trình đến các tiến trình cịn lại. Sự song song hố thể hiện rõ ràng bằng các thơng điệp, nĩ mang lại cho người sử dụng đầy đủ quyền điều khiển tiến trình mà những mơ hình lập trình khác khơng cĩ.
• MPI và những biến thể của nĩ:
MPI (Message Passing Interface) là một chuẩn rất phổ biến cho lập trình truyền thơng điệp. Trong phần sau chúng em sẽ mơ tả kỹ hơn.
MPCH-G2 là một sự bổ sung của chuẩn thư viện MPI cho Grid, sử dụng những dịch vụ của Globus và cho phép lập trình viên kết nối nhiều máy tính với kiến trúc khác nhau để chạy ứng dụng MPI.
MPICH-G2 tự động chuyển đổi dữ liệu trong những thơng điệp được gửi giữa những máy tính với kiến trúc khác nhau và hỗ trợ truyền thơng đa giao thức bằng cách tự chọn giao thức mạng TCP cho việc truyền thơng điệp giữa các máy tính với nhau.
Sư phổ biến của MPI kéo theo sự xuất hiện một số những biến thể của nĩ, liên quan đến những vấn đề của Grid như tựđộng hố quản lý tiến trình, và nhiều thao tác hiệu quả liên quan đến nhiều tiến trình.
Ví dụ thư viện MagPIe là một sự bổ sung cho những thao tác liên quan đến nhiều tiến trình (collective operation) của MPI chằng hạn như phân bố dữ liệu dạng broadcast, đồng bộ các tiến trình, và những tốn tử tính tốn gộp với sự tối ưu hố về thuật tốn cho những hệ thống rộng lớn như Grid. Những thao tác này sẽđược nĩi đến chi tiết trong phần lập trình MPI tiếp theo.
Stampi hỗ trợ trình quản lý tiến trình tự động, MPI-IO và MPI-2. MPI_Connect hỗ trợ cho những ứng dụng MPI khác nhau, của các nhà phân phối MPI khác nhau cĩ thể giao tiếp được với nhau.
Những trình gửi thơng điệp đều cĩ những thơng số thiết yếu cho những trình nhận thơng điệp để xác định thơng điệp này, và quyết định xử lý thơng điệp hay khơng dựa trên dạng thơng điệp. Ngữ nghĩa liên quan đến dạng thơng điệp thường được định nghĩa bởi các nhà thiết kế ứng dụng. Những hình thức gọi hàm từ xa RPC (Remote Procedure Call) và cung cấp phương thức từ xa RMI (Remote Method Invocation) cung cấp những khả năng như thế này. Những cấu trúc giao tiếp giữa trình gửi và trình nhận giống như là một ngơn ngữ hơn là những lời gọi hàm thư viện đơn giản chỉ di chuyển dữ liệu giữa nhiều điểm A và B của mơ hình truyền thơng điệp.
Những mơ hình RPC và RMI cung cấp một kỹ thuật đơn giản và dễ hiểu cho sự quản lý tính tốn từ xa. Ngồi chức năng là một kỹ thuật cho quản lý các dịng điều khiển và dữ liệu. RPC và RMI cịn cho phép kiểm tra các dạng tham số và số lượng tham số. RPC và RMI cĩ thể được dùng để xây dựng những mơ hình cấp cao hơn cho Grid, như những thành phần, những dịch vụ mạng v.v...
• RPC hướng Grid
GridRPC là một mơ hình RPC và là thư viện API cho Grid. Bên cạnh cung cấp ngữ nghĩa chuẩn RPC cịn cung cấp sự thực thi bất đồng bộ, song song các tác vụ v.v..
Ba khả năng rất quan trong mà GridPRC cung cấp cho người sử dụng cái nhìn trong suốt về cách quản lý tiến trình như sau:
+ Tìm kiếm và lập biểu tự động cho tài nguyên (Dynamic resoure discovery and scheduling). Những dịch vụ RPC cĩ thểđược đặt bất kỳ ở đâu trên Grid. Tìm kiếm, lựa chọn, và lập biểu cho sự thực thi từ đằng xa được thực hiện dựa trên những ràng buộc,những yêu cầu cơ bản của người sử dụng. + Bảo mật (security): Bảo mật Grid thơng qua GSI và chứng thực X.509 là điều cần thiết cho hệđiều hành trong một mơi trường mở. Globus là cơng cụ Grid hỗ trợ bảo mật này .
+ Khả năng dung lỗi (Fault tolerance): Thơng qua việc kiểm tra các nút, giảm thiểu hay chạy lại các ứng dụng trên các nút nhằm bảo đảm độ tin cậy
Trình quản lý giao tiếp là một vấn đề quan trọng cho tất cả các mơ hình gọi hàm từ xa (RPC). Điển hình là một ngơn ngữ định nghĩa giao tiếp (Interface Definition Languague IDL). Và như thế GridRPC cũng được thiết kế với một số những thuộc tính trong trường hợp cải thiện khả năng dùng lại và dễ bổ sung và triển khai:
+ Hỗ trợ cho một ngơn ngữđăc tả giao tiếp cụ thể: Bao gồm nhiều tham số dạng ma trận, những tham số dạng ma trận chia sẻ bộ nhớ, tham số tập tin, và những tham số này đều được gọi tham chiếu qua hàm.
+ Quản lý ngơn ngữđặc tả giao tiếp ở máy chủ: Chỉ cĩ những máy chủ GridRPC quản lý và giám sát tiến trình tác vụ. Máy khách cĩ nhiệm vụ đơn giản hơn ,chỉ thực thi tiến trình.
• Java RMI
Những phương thức Java được cung cấp từ xa làm cho những lập trình viên cĩ thể tạo những ứng dụng phân phối dựa trên ngơn ngữ lập trình Java. RMI thừa kế thiết kế từ RPC cơ bản, nhưng nĩ cĩ những đặc điểm phân biệt với RPC cơ bản. Với RMI, một chương trình chạy trên máy ảo Java cĩ thể yêu cầu những phương thức của những đối tượng khác bên trong các máy ảo khác. Thuận lợi chính của RMI là mơ hình hướng đối tượng thực sự, hỗ trợ tất cả các dạng dữ liêu của một chương trình Java, và cĩ sự hỗ trợ thu gom rác của chương trình. Do đĩ Java RMI cung cấp một giao diện lập trình cấp cao, rất thích hợp cho tính tốn lưới.
3.3.2.4. Mơ hình hỗn hợp
Sự tự nhiên của tính tốn lưới là tạo ra tất cả các nguồn tài nguyên máy tinh được sẵn dùng trong ứng dụng Grid. Vì thế, một số ứng dụng sẽ muốn thực thi cả bên trong và xuyên suốt khơng gian địa chỉ. Thực thi nhiều tiểu trình trong cùng một khơng gian địa chỉ được phân phối, và cũng thơng qua dữ
cung cấp với những mục tiêu của việc sản xuất một giao tiếp lập trình chuẩn cho những máy tính chia sẻ bộ nhớ song song, và sử dụng những ngơn ngữ như Fortran, C và C++. OpenMP cho phép những đoạn mã thực thi song song (vịng lập DO song song), định nghĩa dữ liệu chia sẻ (SHARED) và đồng bộ hố các xử lý.
3.3.2.4. Mơ hình Peer-to-Peer
Tính tốn peer – peer là sự chia sẻ của những tài nguyên máy tính và những dịch vụ bằng cách trao đổi trực tiếp giữa các hệ thống.
• JXTA
Một họ những giao thức thiết kế đặc biệt cho tính tốn P2P là JXTA. Tên JXTA được trích dẫn từ “juxtapose” và cĩ nghĩa đơn giản như hình thức tính tốn P2P, client/server và tính tốn dựa trên Web. Như vậy, JXTA là một tập hợp những giao thức tổng quát P2P, được định nghĩa trong những thơng điệp XML, cho phép một số thiết bị đã kết nối trên mạng sắp xếp từ những máy điện thoại di động (cell phone) và những thiết bị máy tính bỏ túi (PDA) đến những máy tính (PC) và máy chủ (server) để giao tiếp và làm việc với nhau ở hình thức P2P.
3.3.3. Mơi trường cài đặt
3.3.3.1. Tồng quan
Chúng em đã thử cài đặt Globus phiên bản 3.2 nhưng hiệu quả cài đặt khơng cao. Việc cài đặt và lập trình trên máy đơn hầu nhưđơn giản, chỉ cần vài thao tác cĩ thể xong. Nhưng việc cài đặt trên một mạng LAN thì khĩ khăn trong việc thơng nhau giữa các máy sử dụng Globus.
Chúng em quyết định sử dụng mơi trường lập trình truyền thơng điệp LAM/MPI.
Là phiên bản nguồn mở, cung cấp miễn phí với chuẩn MPI. LAM/MPI được nghiên cứu, phát triển và hỗ trợ bởi phịng thí nghiệm hệ thống mở (Open Systems Lab) ở trường đại học Indiana. LAM/MPI hỗ trợ tất cả các chuẩn MPI-1 và nhiều chuẩn MPI-2.
LAM/MPI khơng chỉ là thư viện bổ sung các hàm API của MPI ,mà cịn là mơi trường thực thi LAM: 1 tầng người dùng, mơi trường nền tảng trung gian, nĩ cung cấp nhiều dịch vụ cho những chương trình MPI. Cả những thành