Tìm ra các tài nguyên hiện cĩ trên mạng là một phần quan trọng của tính tốn lưới. Mã nguồn của chương trình lưới sẽ chỉ ra rõ ràng những máy (host) thích hợp nào để chạy chương trình. Tuy nhiên bởi vì Grid chứa đựng nhiều dịch vụ cố định, nên chúng cũng vẫn phải cĩ khả năng tìm ra các dịch vụ này và các giao diện mà chúng hỗ trợ. Cách sử dụng các dịch vụ này phải cĩ khả năng tái lập trình và kết hợp lại theo một cách thống nhất. Vì thế mơi trường và cơng cụ lập trình phải chú ý tìm ra các dịch vụ hiện cĩ và cung cấp cho người dùng các cách thức tường minh hay ngầm ẩn để khai thác chúng trong quá trình xây dựng và triển khai các ứng dụng Grid.
3.2.3. Hiệu năng
Rõ ràng đối với nhiều ứng dụng Grid, vấn đề hiệu năng là điều rất đáng quan tâm. Bởi vì Grid sử dụng băng thơng hỗn tạp và các hệ thống phân cấp ẩn cho nên điều này gây khĩ khăn cho việc đạt được hiệu năng tốt nhất và cách sử dụng hiệu quả các nguồn tài nguyên.
Tuy nhiên đối với nhiều ứng dụng, đểđạt hiệu năng đáng tin cậy cũng là một vấn đề khá quan trọng. Một mơi trường động và khơng đồng nhất cĩ thể tạo ra nhiều khả năng thực thi khác nhau mà cĩ thể sẽ khơng được chấp nhận trong nhiều tình huống. Vì thế trong mơi trường chia sẽ, chất lượng dịch vụ sẽ trở nên càng cần thiết nhằm đạt được hiệu năng đáng tin cậy trên một cấu hình tài nguyên đã cho. Trong khi người dùng cĩ thể yêu cầu mơ hình theo một hiệu năng nào đĩ, tuy nhiên sẽ hợp lý hơn nếu hiệu năng cung cấp nằm bên trong một khoảng giới hạn nào đĩ.
3.2.4. Dung lỗi
Việc cần cĩ nhiều cấp độ dung lỗi trong mơi trường Grid là hồn tồn cần thiết. Điều này đặc biệt đúng khi các ứng dụng khởi tạo hàng ngàn các cơng việc độc lập tương tự với nhau trên hàng ngàn máy trạm (host). Rõ ràng khi số lượng các tài nguyên tham gia tính tốn ngày càng tăng thì cũng làm gia tăng xác suất bị hỏng. Các chương trình Grid phải cĩ khả năng kiểm tra các lỗi khi đang thực thi, và bên cạnh đĩ cũng phải cung cấp khả năng phục hồi và phản ứng khi cĩ lỗi xảy ra ở cấp độ chương trình. Tại thời điểm đĩ các cơng cụ cũng phải bảo đảm cho các phép tính cũng được thực thi ở cấp độ tối thiểu khi cĩ lỗi xảy ra.
3.2.5. Bảo mật
Chúng ta sẽ cịn tiếp tục chứng kiến sự phát triển của tính tốn lưới trên nhiều domain chia sẽ, như là các mạng. Trong khi việc cung cấp một chức năng chứng thực mạnh giữa hai site là cực kỳ quan trọng, thì bên cạnh đĩ việc quản lý chương trình trên nhiều site cũng là điều khơng đơn giản. Vì thế, một phương pháp bảo mật cĩ cấp khả năng xác thực người dùng phải được tích hợp vào trong các mơ hình lập trình lưới.
hiện bởi việc thực thi tuần tự các hàm trên dữ liệu trong bộ nhớ. Quá trình chuyển đổi này cĩ thể là sự xây dựng của một số các mơ hình liên quan đến ngữ nghĩa của mã nguồn và sự áp dụng một số tính năng cải tiến như tối ưu, dọn dẹp bộ nhớ, và kiểm tra phạm vi. Sự kết hợp các siêu mơ hình tương tự sẽ gĩp phần xây dựng chương trình Grid.
3.3. Tổng quát về các mơi trường hỗ trợ
3.3.1. Một số mơi trường Grid
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