Tải bản đầy đủ (.pdf) (87 trang)

xây dựng công cụ lập trình cho tính toán thích nghi hiệu năng cao trên môi trường tính toán lưới

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (3.37 MB, 87 trang )




ỦY BAN NHÂN DÂN TP.HCM TRƯỜNG ðẠI HỌC BÁCH KHOA TP.HCM
SỞ KHOA HỌC VÀ CÔNG NGHỆ KHOA KHOA HỌC & KỸ THUẬT MÁY TÍNH






BÁO CÁO NGHIỆM THU
(Theo yêu cầu chỉnh sửa của hội ñồng cơ sở)






XÂY DỰNG CÔNG CỤ LẬP TRÌNH
CHO TÍNH TOÁN THÍCH NGHI HIỆU NĂNG CAO
TRÊN MÔI TRƯỜNG TÍNH TOÁN LƯỚI


Chủ nhiệm: TS. TRẦN VĂN HOÀI











THÀNH PHỐ HỒ CHÍ MINH
THÁNG 12/ 2009
ii

TÓM TẮT NỘI DUNG NGHIÊN CỨU
Hiện tại chúng tôi ñang cùng với Trường Kỹ Sư và Kiến Trúc Fribourg, Thụy Sĩ
nghiên cứu và phát triển một công cụ tính toán hiệu năng cao POP-C++ [20, 28]
dựa trên khái niệm ñối tượng phân bố hướng tài nguyên. POP-C++ hiện tại ñang ở
phiên bản 1.1.1 ñược xây dựng dưới dạng mã nguồn mở ñồng sở hữu bởi hai tác giả
là TS. Nguyễn Tuấn Anh và GS. Pierre Kuonen (Trường Kỹ Sư Kiến Trúc
Fribourg, Thụy Sĩ).
Việc phát triển ứng dụng dựa trên POP-C++ là khá ñơn giản và hiệu quả. POP-
C++ mở rộng C++ chỉ với một vài từ khóa mới cho phép khai báo các ñối tượng
chạy phân bố dựa trên các yêu cầu cao về chất lượng dịch vụ của tài nguyên (QoS).
POP-C++ cung cấp cùng một kiểu cú pháp ñể hiện thực các phương thức của ñối
tượng phân bố như trong C++. Viết một chương trình chạy trên môi trường lưới
cũng ñơn giản như là việc viết một chương trình chạy bằng C++.
Phiên bản 1.1.1 POP-C++ hiện tại mới cung cấp một số chức năng cơ bản nhất
như: trình biên dịch cho phép dịch source code sang ngôn ngữ ANSI C++, một
compiler front-end cho phép tự ñộng hóa quá trình dịch từ POP-C++ sang ngôn ngữ
máy, thư viện truyền thông giữa các ñối tượng song song phân bố dựa trên TCP/IP
và dạng nhị phân XDR, một số dịch vụ thực thi cho phép giao tiếp với PreWS
GRAM của bộ công cụ Globus Toolkit ñể thực thi ứng dụng. Việc hỗ trợ ña phương
thức giao tiếp (muti-protocols) và chuẩn dữ liệu (multi-encoding) hiện tại chưa
ñược hỗ trợ trong POP-C++. Phương thức giao tiếp giữa các ñối tượng song song
phân bố trên lưới tính toán hiện sử dụng các kết nối TCP/socket nên vẫn gặp vấn ñề

khi các tài nguyên tính toán nằm trong các mạng ảo hoặc ngăn cách bởi các
firewall. Các chuẩn giao tiếp lưới như OGSA, WSRF hiện vẫn chưa ñược hỗ trợ.
Các nội dung nghiên cứu chính của ñề tài gồm:
1. Tìm hiểu các chuẩn OGSI và WSRF.
2. Xây dựng công cụ hỗ trợ lập trình WSRF bằng cách mở rộng POP-C++:
• Tìm hiểu khả năng kích hoạt phương thức POP-C++ thông qua giao thức
HTTP/SOAP.
• Tìm hiểu khả năng mở rộng của thư viện hệ thống POP-C++.
• Mở rộng thư viện hỗ trợ ñồng thời các giao thức truyền thông khác nhau
dưới dạng các plugin.
• Xây dựng hệ thống thông ñiệp kích hoạt ñối tượng dựa trên
SOAP/WSRF.
• Xây dựng công cụ chuyển ñổi từ ñối tượng song song POP-C++ sang
dạng WSDL và ngược lại. Công cụ này cho phép các dịch vụ chuẩn
WSRF không viết bằng POP-C++ có thể gọi các dịch vụ WSRF/POP-
iii

C++ và ngược lại, các dịch vụ tính toán của POP-C++ có thể gọi các dịch
vụ WSRF khác (e.g. GT4 GRAM).
3. Tích hợp POP-C++ trên nền lưới EDAGRID (Campus Grid) nối và chia sẻ
các tài nguyên tính toán của ðHBK TPHCM.
4. Xây dựng và phát triển ứng dụng lưới và triển khai thử nghiệm trên môi
trường lưới EDAGRID:
• Song song hóa ứng dụng cho phép sử dụng tài nguyên phân bố về mặt vật
lý.
• Xây dựng Grid portal cho ứng dụng.
• Chạy, ño ñạc và ñánh giá hiệu quả.

iv


SUMMARY OF RESEARCH CONTENT
At the moment, depending on the concept of resources oriented distributed
objects, we, along with the College of Engineering and Architecture of Fribourg,
Switzerland, have been studying and developing a tool for high performance
computing - POP-C++ [20, 28]. The current open source version 1.1.1 of POP-C++
is owned by Dr. Tuan-Anh Nguyen and Prof. Pierre Kuonen (College of
Engineering and Architecture of Fribourg, Switzerland)
Developing an application using POP-C++ is quite simple. POP-C++ extends
C++ by adding some new keywords that allow declaring distributed objects based
on requirements of quality of services (QoS). POP-C++ supplies the same syntax
with C++ to implement methods of distributed objects. Writing a distributed
program in POP-C++ is as simple as writing a traditional program in C++.
The current version of POP-C++ (1.1.1) only supplies fundamental components
such as: a pre-compiler to convert POP-C++ source code to ANSI C++ language; a
front-end compiler to automatically compile POP-C++ code to machine code, to
distributed objects communication libraries based on TCP/IP connection and XDR
format, to some services that allow communicating to PreWS GRAM of Globus
Toolkit to launch an application. It has not supported multi-protocol and multi-
encoding in this version yet. Communicating between parallel objects based on
TCP/IP connections is not allowed when computing resources are located in virtual
networks or separated by firewall. Grid communicating standard such as OGSA,
WSRF has not been supported yet.
The project focuses on these main points:
1. Study OGSI and WSRF standards.
2. Build a tool supporting programming using WSRF by extending POP-C++:
• Study how to invoke a remote method by using HTTP/SOAP
• Study how to extend POP-C++ libraries
• Extend POP-C++ libraries to support multi-protocol and multi-encoding
as plugins
• Implement message-encoding based on SOAP/WSRF.

• Implement a tool that supports converting POP-C++ objects to WSDL
and vice versa. This tool makes standard WSRF services that are not
written in POP-C++ can invoke a service written in WSRF/POP-C++ and
vice versa, it also makes POP-C++ computing services be able to invoke
other services based on WSRF (e.g. GT4 GRAM).
3. Integrate POP-C++ into EDAGRID (Campus Grid) to connect and share
computing resources of HCMUT.
4. Build and develop grid applications and test them on EDAGRID:
v

• Parallel application to utilize physical distributed resources.
• Build a Grid portal for that application.
• Make some experiments to evaluate performance.

vi

MỤC LỤC

TÓM TẮT NỘI DUNG NGHIÊN CỨU ii

SUMMARY OF RESEARCH CONTENT iv

MỤC LỤC vi

DANH SÁCH CÁC CHỮ VIẾT TẮT viii

DANH SÁCH BẢNG ix

DANH SÁCH HÌNH x


PHẦN MỞ ðẦU xii

CHƯƠNG 1: TỔNG QUAN 1

1.1.

Tổng quan tình hình nghiên cứu thuộc lĩnh vực ñề tài 1

1.1.1.

Ngoài nước: 1

1.1.2.

Trong nước: 3

1.2.

Tính cấp thiết của ñề tài 5

1.3.

Ý nghĩa và tính mới về khoa học và thực tiễn 6

CHƯƠNG 2: NỘI DUNG NGHIÊN CỨU 7

2.1.

Phân tích yêu cầu bài toán 7


2.2.

Phân tích và tìm hiểu các công nghệ/hệ thống liên quan 8

2.2.1.

Tìm hiểu chuẩn WSRF 8

2.2.2.

Tìm hiểu giao thức SOAP của Web Services 14

2.2.3.

Tìm hiểu các thư viện xử lý XML hiện có 16

2.2.3.1.

Document Object Model (DOM) 17

2.2.3.2.

Simple API for XML (SAX) 18

2.2.3.3.

So sánh hai mô hình DOM và SAX 18

2.2.3.4.


Xerces-C++ 19

2.2.4.

Tìm hiểu thư viện hệ thống POP-C++ 19

2.2.5.

Cơ chế kích hoạt phương thức từ xa và ñịnh dạng thông ñiệp của POP-
C++ 22

2.2.5.1.

Cơ chế kích hoạt phương thức từ xa 23

2.2.5.2.

Cơ chế ñịnh dạng thông ñiệp của POP-C++ 24

2.3.

Mở rộng POP-C++ hỗ trợ lập trình lưới 26

2.3.1.

Thiết kế mở rộng POP-C++ hỗ trợ ñồng thời nhiều network protocol 26

2.3.2.

Xây dựng hệ thống truyền thông POP-C++/HTTP 31


2.3.3.

Thiết kế mở rộng POP-C++ hỗ trợ ñồng thời nhiều buffer 34

2.3.4.

Thiết kế hệ thống ñịnh dạng dữ liệu theo chuẩn WSRF 36

2.3.5.

Xây dựng hệ thống trao ñổi dữ liệu SOAP/XML 39

2.3.6.

Tích hợp hệ thống vào POP-C++ 41

2.4.

Tích hợp POP-C++ lên hạ tầng lưới EDAGrid 42

2.4.1.

Mô hình thực thi ứng dụng POP-C++ 42

2.4.2.

Qui trình thực thi ứng dụng 43

vii


2.4.3.

Mở rộng và tích hợp POP-C++ vào EDAGrid 44

2.4.4.

Cải tiến API giao tiếp giữa ứng dụng POP-C++ và môi trường thực thi .
45

2.4.4.1.

Runtime API hiện tại 45

2.4.4.2.

Nâng cấp và mở rộng API hiện có 46

2.4.5.

Nâng cấp dịch vụ ứng dụng hỗ trợ service plugin 47

2.4.6.

Tích hợp POP-C++ trên EDAGrid 48

2.5.

Công cụ hỗ trợ 50


2.5.1.

Công cụ chuyển ñổi các giao tiếp (API) WSRF và POP-C++ 51

2.5.1.1.

Kiến trúc POP-C++ compiler 51

2.5.1.2.

Công cụ tạo WSDL từ source POP-C++ 52

2.5.2.

Công cụ tự ñộng sinh ñối tượng song song từ ñặc tả WSDL/WSRF 53

2.5.2.1.

Cấu trúc file WSDL 54

2.5.2.2.

Cách hiện thực 56

2.6.

Ứng dụng POP-C++ cho bài toán thiết kế vi mạch 56

2.6.1.


Song song hóa giải thuật 56

2.6.2.

Xây dựng Grid portal cho ứng dụng 57

2.6.2.1.

Tìm hiểu EDAGrid 57

2.6.2.2.

Tìm hiểu bài toán thiết kế vi mạch 59

2.6.2.3.

Tìm hiểu Grid portal 60

2.6.2.4.

Thiết kế giao diện Portlet cho bài toán thiết kế vi mạch 62

CHƯƠNG 3: KẾT QUẢ VÀ THẢO LUẬN 66

3.1.

ðánh giá kết quả dựa trên sản phẩm KH&CN 66

3.2.


ðánh giá kết quả dựa trên việc chuyển giao công nghệ 67

3.3.

ðánh giá kết quả dựa trên việc xây dựng và phát triển hướng nghiên cứu 68

CHƯƠNG 4: KẾT LUẬN VÀ ðỀ NGHỊ 70

PHỤ LỤC 72

TÀI LIỆU THAM KHẢO 73


viii

DANH SÁCH CÁC CHỮ VIẾT TẮT
DOM Document Object Model
SAX Simple API for XML
SOAP Simple Object Access Protocol
WSDL Web Services Description Language
WSRF Web Service Resource Framework
XDR External Data Representation Standard

ix

DANH SÁCH BẢNG
Bảng 2 - 1: So sánh kích thước thông ñiệp XDR và SOAP 19

Bảng 2 - 2: Một số thư viện hệ thống của POP-C++ 21


Bảng 3 - 1: Sản phẩm của ñề tài so với bản ñăng ký 66

Bảng 3 - 2: Sản phẩm khoa học của ñề tài 67


x

DANH SÁCH HÌNH
Hình 1 - 1: Mô hình lập trình lưới (dựa trên [3]) 2
Hình 2 - 1: Cách tiếp cần hệ thống POP-C++ phiên bản 1.1.1 trong môi trường
có firewall 7

Hình 2 - 2: Mô hình ñề xuất hệ thống POP-C++ phiên bản mới trong môi trường
có firewall 8

Hình 2 - 3: Một lời gọi Web Service cơ bản [2] 9

Hình 2 - 4: Lời gọi Web Service không có trạng thái [2] 10

Hình 2 - 5: Lời gọi Web Service có trạng thái [2] 11

Hình 2 - 6: Mối quan hệ giữa OGSA, GT4, WSRF, và Web [2] 12

Hình 2 - 7: WS-Resource [2] 13

Hình 2 - 8: Gửi nhận thông ñiệp thông qua giao thức SOAP 14

Hình 2 - 9: Trao ñổi thông ñiệp dùng giao thức SOAP [7] 15

Hình 2 - 10: Cấu trúc của một SOAP message [12] 16


Hình 2 - 11: Cấu trúc cây của DOM [38] 17

Hình 2 - 12: Quá trình tạo các ñối tượng trong POP-C++ [19] 20

Hình 2 - 13: Lược ñồ lớp một số ñối tượng trong POP-C++ 21

Hình 2 - 14: Giao tiếp giữa các ñối tượng trong POP-C++ 23

Hình 2 - 15: Gửi nhận thông ñiệp giữa ñối tượng Interface và Object 24

Hình 2 - 16: ðịnh dạng của buffer 25

Hình 2 - 17: Mô hình kết nối giữa các ñối tượng combox trong POP-C++ 27

Hình 2 - 18: Quá trình kết nối giữa các ñối tượng trong POP-C++ sử dụng
combox 29

Hình 2 - 19: Quá trình load combox plugin của hệ thống POP-C++ 30

Hình 2 - 20: Giao tiếp giữa các ñối tượng sử dụng combox_http 32

Hình 2 - 21: Gửi nhận thông ñiệp giữa các ñối tượng thông qua buffer 34

Hình 2 - 22: Quá trình trao ñổi dữ liệu trong POP-C++ 36

Hình 2 - 23: Request message theo ñịnh dạng của WSRF 38

Hình 2 - 24: Response message theo ñịnh dạng của WSRF 39


Hình 2 - 25: Request SOAP message 41

Hình 2 - 26: Response SOAP message 41

Hình 2 - 27: Kiến trúc phân lớp của POP-C++ 42

Hình 2 - 28: Tương tác giữa dịch vụ ứng dụng (service A) và dịch vụ toàn cục
(service B) 43

Hình 2 - 29: Các bước khởi tạo thực thi parallel object 44

Hình 2 - 30: Tổ chức lại API của POP-C++ runtime service 46

Hình 2 - 31: Cơ chế plugin dịch vụ mới vào POP-C++ 48

Hình 2 - 32: Tích hợp POP-C++ vào EDAGrid 49

Hình 2 - 33: POP-C++ compiler 51

Hình 2 - 34: Các thành phần chính của POP-C++ parser 52

xi

Hình 2 - 35: Công cụ tạo WSDL từ POP-C++ 53

Hình 2 - 36: File WSDL ñịnh nghĩa phương thức cộng hai số nguyên 55

Hình 2 - 37: Giải thuật tạo file parclass từ file WSDL 56




xii

PHẦN MỞ ðẦU
1. Tên ñề tài: Xây dựng công cụ lập trình cho tính toán thích nghi hiệu năng cao
trên môi trường tính toán lưới
Chủ nhiệm ñề tài: TS. Trần Văn Hoài (thay cho TS. Nguyễn Tuấn Anh)
Cơ quan chủ trì: Trường ðại Học Bách Khoa
Thời gian thực hiện: Từ tháng 12/2007 ñến tháng 12/2009
Kinh phí ñược duyệt: 360.000 ngàn ñồng
Kinh phí cấp giai ñoạn 1: 200.000.000ñ theo thông báo số:270/TB-SKHCN ngày
05 tháng 12 năm 2007
Kinh phí cấp giai ñoạn 2: 90.000.000ñ theo thông báo số:96/TB-SKHCN ngày
22 tháng 05 năm 2009
2. Mục tiêu: ðề tài sẽ xây dựng phần mềm công cụ hỗ trợ lập trình lưới theo công
nghệ hướng ñối tượng với các mục tiêu sau:
• Hỗ trợ phát triển ứng dụng hiệu năng cao trên môi trường lưới.
• Các thành phần phân bố của ứng dụng có khả năng thích nghi và uyển
chuyển trong việc lựa chọn ñộng các giao thức truyền thông thích hợp.
• Nghiên cứu phát triển giải thuật hỗ trợ liên lạc giữa các components ở các
mạng khác nhau ngăn cách bởi firewall.
• Ứng dụng vào thiết kế vi mạch.
3. Sản phẩm của ñề tài:
TT

Tên sản phẩm
Yêu cầu khoa học
dự kiến ñạt ñược
Dự kiến nơi công bố
(Tạp chí, Nhà xuất bản)

Ghi chú
01 Bài báo khoa học về
mô hình lập trình lưới
- Tối thiểu 02 bài
báo
ðăng trên tạp chí trong
nước/quốc tế

02 - Luận văn thạc sĩ
- Luận văn ñại học
- 02 luận văn
- 02 luận văn





1

CHƯƠNG 1:
TỔNG
QUAN
1.1. Tổng quan tình hình nghiên cứu thuộc lĩnh vực ñề tài
1.1.1. Ngoài nước:
Tính toán lưới (Grid computing) [8][1] là một hướng nghiên cứu mới cho phép
sử dụng các tài nguyên phân bố ñể giải quyết các bài toán lớn trong khoa học và
thực tiễn; cho phép chia sẻ tri thức; và thực hiện các công việc mang tính cộng tác
(collaborative works). Thuật ngữ Grid ñầu tiên ñược sử dụng ñể chỉ ñến lưới các
máy tính ñơn thuần dùng cho tính toán, gọi là computational Grid - một hệ thống hạ
tầng phần mềm và phần cứng cho phép truy xuất rẻ và thuận tiện tới các hệ thống

tính toán hiệu năng cao ña dạng ñược phân bố về mặt ñịa lý [8].
Các nghiên cứu hiện tại trên thế giới và ở trong nước mới tập trung vào việc
phát triển các phần mềm quản lý hệ thống cho môi trường lưới (Grid middleware).
Các chuẩn về dịch vụ lưới như OGSI/OGSA, WSRF lần lượt ra ñời ñánh dấu những
cột mốc quan trọng trong việc giải quyết tính tương tác giữa các thực thể phân bố
trong môi trường lưới bất ñồng nhất. Các chuẩn này ñịnh nghĩa dịch vụ lưới như là
một dịch vụ Web có trạng thái (Stateful Web services) với hệ thống trao ñổi thông
ñiệp dựa trên XML.
Việc khai thác nguồn tài nguyên Grid một cách hiệu quả là một thách thức lớn
do môi trường này hoàn toàn khác với môi trường tính toán truyền thống. Sự khác
biệt này ñược thể hiện ở sáu ñặc ñiểm sau: (1) Khoảng cách ñịa lý giữa các tài
nguyên: tài nguyên không chỉ bó hẹp trong phạm vi một tổ chức mà nằm ở các tổ
chức cách xa nhau; (2) Số lượng các tài nguyên rất lớn, có thể ñạt tới hàng triệu nút;
(3) Sự hiểu biết cục bộ về môi trường lưới: người dùng không thể nắm ñược toàn bộ
môi trường lưới mà chỉ biết ñược một phần nhỏ của nó; (4) Tính bất ñồng nhất cao
của môi trường, cả phần cứng lẫn phần mềm; (5) Sự không ổn ñịnh và không an
toàn của môi trường do phần nhiều các hệ thống ñược kết nối với nhau qua Internet;
và (6) Mỗi một tài nguyên có thể ñược quản lý bởi một chủ thể khác nhau.
Sự khác biệt về bản chất giữa môi trường lưới với môi trường trính toán truyền
thống (cụm máy tính) như vừa nêu ở trên dẫn ñến việc khai thác ñồng thời các hệ
thống máy tính mạnh ñược phân bố ở các ñịa ñiểm khác nhau trong môi trường lưới
ñể giải quyết các bài toán lớn là một thách thức. Các công cụ hỗ trợ lập trình lưới
cho tính toán hiệu năng cao (Ví dụ: PVM [30], MPI [26]) hiện mới chỉ dừng lại ở
mức hỗ trợ triển khai từ xa vào một hệ thống tính toán cụ thể thông qua cổng lưới
(Grid portal). Các ứng dụng lưới có khả năng sử dụng ñồng thời nhiều tài nguyên
phân bố ñòi hỏi người lập trình phải có kiến thức về môi trường lưới ñồng thời phải
cấu hình môi trường một cách thích hợp. ðiều này dẫn ñến việc lập trình trên lưới
vẫn còn là xa lạ với người dùng bình thường.
2


Do vậy, việc xây dựng một công cụ và mô hình lập trình lưới cho tính toán hiệu
năng cao với khả năng khai thác hiệu quả các tài nguyên phân bố của lưới tính toán
là một việc làm cần thiết khi các hạ tầng lưới của Việt Nam ñã và ñang ñược xây
dựng. Công cụ này phải ñơn giản hóa việc khai thác sức mạnh tính toán lưới mà
người sử dụng ngay cả khi không biết nhiều về môi trường lưới vẫn có thể dễ dàng
sử dụng ñể phát triển ứng dụng lưới. Thay vì phát triển các ứng dụng theo dạng
hướng tài nguyên (resource-centric) truyền thống (xác ñịnh các tài nguyên cụ thể ñể
chạy ứng dụng), công cụ cần phát triển ứng dụng theo dạng hướng dịch vụ (service-
centric) (yêu cầu ñộng các dịch vụ với một chất lượng dịch vụ QoS ñịnh sẵn mà
không cần quan tâm ñến dịch vụ ñó chạy ở ñâu).
Trên thế giới, việc nghiên cứu và phát triển công cụ lập trình lưới cho tính toán
hiệu năng cao ñược phân hóa thành hai hướng ñộc lập:
• Các công cụ hỗ trợ phát triển dịch vụ lưới (Grid services): cho phép xây
dựng các dịch vụ lưới dựa trên các chuẩn OGSI/OGSA [33] hoặc WSRF
[34]. Các dịch vụ lưới này thường tương ñối chậm (do trao ñổi thông ñiệp
dùng XML) nên thường chúng chỉ ñóng vai trò như là một “cổng lưới” (Grid
portal) cho phép người dùng truy cập vào các ứng dụng tính toán song song
hiệu năng cao trong hệ thống cục bộ. Do OGSI (2003) và WSRF (2005) là
các chuẩn mới nên hiện tại, các công cụ phát triển các dịch vụ theo các chuẩn
này chưa nhiều và ña phần vẫn dựa trên các công cụ sẵn có của Web
services.
• Công cụ phát triển ứng dụng hiệu năng cao: các thành phần phân bố không
phải là Grid services mà chúng sử dụng các giao thức, ñịnh dạng dữ liệu ñặc
biệt ñể trao ñổi (tốc ñộ cao). Các ứng dụng phát triển bởi các công cụ loại
này thường có ưu ñiểm về mặt tốc ñộ nhưng việc tương tác giữa các thành
phần phân bố bất ñồng nhất gặp nhiều khó khăn.

Hình 1 - 1: Mô hình lập trình lưới (dựa trên [3])
Nhiều công cụ và mô hình lập trình lưới ñã ñược nghiên cứu phát triển và ñược
Lee phân loại như trong Hình 1 - 1. Tuy nhiên, việc kết hợp và biến các dịch vụ lưới

thành một thành phần của một ứng dụng song song hiệu năng cao hiện vẫn chưa
làm ñược.
3

1.1.2. Trong nước:
Tính toán lưới còn rất mới mẻ tại Việt Nam và số lượng các nhóm nghiên cứu
cũng như các dự án nghiên cứu về công nghệ lưới còn rất ít. Mặc dù nhu cầu về tính
toán trong khoa học và công nghệ ở Việt Nam cũng như trên thế giới ngày càng gia
tăng và khoa học tính toán ñược áp dụng vào nhiều lĩnh vực. Về mặt phát triển ứng
dụng, người ta mới chỉ dừng lại ở mức sử dụng các công cụ tính toán hiệu năng cao
truyền thống như MPI, PVM ñể xây dựng và triển khai ứng dụng trên các hệ thống
máy tính ña xử lý hoặc máy tính cụm cục bộ ñược kết nối bởi ñường truyền tốc ñộ
cao, ñồng nhất và ổn ñịnh. Việc triển khai ứng dụng hiệu năng cao khai thác ñồng
thời sức mạnh tính toán giữa các sites khác nhau vẫn còn là câu hỏi ngỏ.
Tại Việt Nam, nhiều nơi sở hữu các hệ thống máy tính mạnh nhưng chúng ta
chưa thể chia sẻ và phối hợp hữu hiệu các hệ thống máy tính này thành một hệ
thống lớn hơn ñể cùng giải quyết các ứng dụng có nhu cầu tính toán thật lớn. ðiều
này ñược giải thích bởi hai nguyên nhân: (1) chúng ta còn thiếu các công cụ và phần
mềm lưới quản lý các tài nguyên phân bố phù hợp với hoàn cảnh Việt Nam; (2)
Hiện còn thiếu các công cụ lập trình cấp cao hỗ trợ phát triển và triển khai ứng dụng
trên môi trường lưới tính toán.
Nhu cầu về tính toán trong khoa học và công nghệ ở Việt Nam ñược thể hiện rõ
trong các hội thảo về “Tính toán hiệu năng và Tính toán lưới” tổ chức tại Hà Nội và
TP. Hồ Chí Minh vào tháng 1 năm 2004, hội thảo về “Xây dựng và phát triển khoa
học và công nghệ tính toán tại TP. Hồ Chí Minh giai ñoạn 2006-2010” tổ chức tại
TP. Hồ Chí Minh vào tháng 1 năm 2006, hội thảo quốc tế “Tính toán nâng cao và
ứng dụng” (ACOMP2007) tổ chức tại ðH Bách Khoa TPHCM vào tháng 3 năm
2007, hội nghị quốc tế lần thứ 4 về tính toán khoa học hiệu năng cao (HPSC2009),
tổ chức tại Hà Nội vào tháng 3 năm 2009, hội thảo quốc tế “PRAGMA 17 and
International Workshop on GEO Information” tổ chức tại Hà Nội vào tháng 10 năm

2009. Các chuyên gia và các nhà nghiên cứu trong nhiều lĩnh vực khác nhau như
sinh tin học, vật lý, hóa học, viễn thám tham gia các hội thảo này ñều có chung
nhận ñịnh là tính toán hiệu năng cao và tính toán lưới là cần thiết vì ngày càng
nhiều các bài toán trong các ngành khoa học khác nhau có ñộ phức tạp cao cần phải
ñược giải quyết trên các hệ thống máy tính mạnh hay trên lưới tính toán. Tại các
nước phát triển như Mỹ, Nhật, Anh, ðức họ có nhiều trung tâm máy tính mạnh
nhưng Việt Nam không thể ñầu tư xây dựng nhiều trung tâm tính toán như vậy do
ñiều kiện kinh tế. Trong khi ñó, hệ thống mạng máy tính tại Việt Nam ñang phát
triển mạnh và ñã có khả năng liên kết các hệ thống máy tính trong nước với nhau.
Việc khai thác sức mạnh tính toán của môi trường lưới kết nối các hệ thống máy
tính mạnh này thông qua các công cụ hỗ trợ lập trình cấp cao là khả thi và có ý
nghĩa thiết thực.
4

Khai thác hiệu quả các hệ thống máy tính mạnh và liên kết chúng ñể cùng giải
quyết một bài toán lớn là một trong các mục tiêu chính của tính toán lưới. Vấn ñề
này chưa ñược giải quyết một cách có hệ thống tại Việt Nam vì các nhóm nghiên
cứu về công nghệ lưới còn rất ít và lĩnh vực này còn mới mẻ. Theo sự hiểu biết của
chúng tôi thì ñã có một số nhóm bắt ñầu nghiên cứu về công nghệ lưới tại: ðại học
Bách Khoa – ðHQG TP.HCM, ðại học Khoa học Tự nhiên – ðHQG TP.HCM, ðại
học Bách Khoa Hà Nội, Phân viện Công nghệ Thông tin TP.HCM, Viện Toán học –
Viện Khoa học và Công nghệ Việt Nam Trong những năm gần ñây có một số ñề
tài làm về tính toán lưới. Tuy nhiên các ñề tài này tập trung phát triển ứng dụng là
chính, sử dựng các cổng truy cập lưới (Grid Portal) mà chưa quan tâm ñến việc phát
triển, xây dựng hạ tầng lưới tính toán chuẩn cũng như phát triển mô hình và công cụ
lập trình lưới. Các nhóm nghiên cứu thiên về ứng dụng ñã phát triển khá mạnh ở
Việt Nam (chẳng hạn như nhóm ở Phân viện Công nghệ Thông tin TP.HCM). Tuy
nhiên, nếu có ñược một công cụ lập trình tốt thì các nghiên cứu của những nhóm
ứng dụng sẽ phát triển xa hơn nữa. Công cụ ñược các nhóm sử dụng là Globus
Toolkit (GT) [10] và phiên bản MPI cho GT (MPICH-G) [27]. Mô hình lập trình

này còn một số ñiểm hạn chế: không thể triển khai ứng dụng ñồng thời trên nhiều
nút lưới khác nhau, không tối ưu và giảm hiệu quả khi tốc ñộ mạng và tốc ñộ tài
nguyên tính toán chậm và bất ñồng nhất, không hỗ trợ sử dụng ñộng các tài nguyên
tính toán, v.v.
Riêng tại khoa KH&KTMT ðH Bách Khoa TPHCM, chúng tôi cũng ñã có
những nghiên cứu bước ñầu về công cụ lập trình trên lưới tính toán như POP-C++
[15][18][28]. POP-C++ mở rộng ngôn ngữ C++ cho phép các ñối tượng (objects)
tự ñộng tìm kiếm các tài nguyên tính toán thích hợp. Các ngữ nghĩa của việc kích
hoạt phương thức (method invocation semantics) cũng dược mở rộng cho phép
người dùng ñịnh nghĩa và kiểm soát các mức ñộ song song khác nhau của ñối tượng
phân bố. POP-C++ ñã ñược Viện Nghiên Cứu Tuyết Liên Bang Thụy Sĩ sử dụng ñể
phát triển ứng dụng tính toán lưới cho bài toán mô hình phát triển tuyết tại vùng núi
Alpine của Thụy Sĩ [11]. Ngoài POP-C++, một loạt các công cụ hỗ trợ lập trình
song song phân bố cũng ñã ñược xây dựng và triển khai thử nghiệm trên các hệ
thống máy tính cụm như DPPT (Distributed and Parallel Programming Tool) [13],
VEPAD (Virtual Environment for Parallel And Distributed programs developing)
[23], Grid-enabled Meta-Heuristics Framework [5].
Việc nghiên cứu công cụ hỗ trợ phát triển ứng dụng lưới là cần thiết, nhất là khi
các dự án về hạ tầng lưới ñang ñược hình thành và ñi vào hoạt ñộng như EDAGrid
[16] - Campus Grid kết nối các máy tính cụm và PCs tại ðH Bách Khoa TPHCM
(dự án Vườn ươm công nghệ 2005-2008), VN-Grid Core - Lưới tính toán kết nối
các hệ thống máy tính mạnh và các máy tính ñơn lẻ thuộc ðH Quốc Gia TPHCM
(ñề tài trọng ñiểm ðH Quốc Gia TPHCM 2007-2010). Một hạ tầng lưới chỉ có thể
5

phát huy ñược hiệu quả của mình khi việc phát triển và triển khai ứng dụng dễ dàng
và hiệu quả. Công cụ lập trình chính là chiếc cầu nối quan trọng giữa hạ tầng lưới
và các ứng dụng tính toán hiệu năng cao.
Nói tóm lại, còn rất nhiều thách thức trong nghiên cứu tính toán lưới ở Việt
Nam, cả về hạ tầng, công cụ phát triển lẫn ứng dụng. Việc xây dựng công cụ hỗ trợ

lập trình hiệu năng cao trên lưới sẽ thúc ñẩy khai thác sức mạnh tính toán lưới cho
các bài toán lớn, tạo ñà cho các ngành có nhu cầu tính toán cao phát triển.
1.2. Tính cấp thiết của ñề tài
Nhu cầu về tài nguyên tính toán trong việc giải quyết các bài toán lớn trong khoa
học, công nghệ, kinh tế xã hội là có thực. Việc xây dựng các hệ máy tính song song
cho từng ñơn vị này ñòi hỏi các nguồn ñầu tư rất lớn và khó khả thi trong ñiều kiện
hiện tại của Việt Nam. Một hướng giải quyết khả thi và ít tốn kém chính là tập hợp
các tài nguyên tính toán hiện có (máy tính cụm, các PCs trong các phòng thí
nghiệm, trạm làm việc, v.v.) ở các cơ quan, ñơn vị khác nhau thành một hệ thống
máy tính mạnh ñủ ñể ñáp ứng các nhu cầu tính toán cho các bài toán trên.
Với sự phát triển nhanh chóng của mạng viễn thông, hạ tầng vật lý cho một môi
trường chia sẻ tài nguyên diện rộng là hoàn toàn khả thi tại Việt Nam. Nhiều dự án
ñã và ñang ra ñời với mục tiêu xây dựng các phần mềm hệ thống quản lý môi
trường lưới như EDAGrid- xây dựng Campus Grid kết nối tài nguyên tính toán của
(toàn bộ) ðH Bách Khoa TPHCM (ñề tài Vườn ươm Công nghệ 2005-2008 do TS.
Trần Văn Hoài chủ nhiệm), VN-Grid Core-xây dựng lưới tính toán chia sẻ tài
nguyên các trường thành viên ðH Quốc Gia TPHCM hướng tới hình thành lưới tính
toán Quốc gia (ñề tài trọng ñiểm ðH Quốc Gia TPHCM 2007-2010 do TS. Nguyễn
Thanh Sơn làm chủ nhiệm). Các dự án này tập trung vào xây dựng phần mềm hệ
thống quản lý các nút lưới cũng như các dịch vụ gắn kết các nút lưới thành các máy
tính ảo mạnh.
Tuy vậy, việc lập trình và triển khai ứng dụng hiệu năng cao trên các hạ tầng
lưới trên hiện vẫn gặp khó khăn do thiếu các công cụ hỗ trợ. Hơn nữa, ñộ phức tạp
cao của môi trường này ñòi hỏi người dùng phải có những kiến thức nhất ñịnh về hệ
thống lưới. Trong ñề tài VN-Grid ñang ñược phát triển, ngoài việc xây dựng hạ
tầng, nhóm nghiên cứu này cũng hướng ñến thử nghiệm sử dụng khả năng của lưới
tính toán vào bài toán CFD trong mô phỏng hàng không. Tuy nhiên, một khó khăn
chính của người làm trong nhóm hàng không là họ có ít kiến thức về lập trình trên
cluster, lưới. Vì thế hiện nay khả năng sử dụng hiệu quả tài nguyên tính toán lưới là
còn khá hạn chế.

Mục tiêu của ñề tài này chính là xây dựng môi trường lập trình lưới hỗ trợ phát
triển ứng dụng hiệu năng cao hướng ñến chất lượng dịch vụ. Cùng với các dự án hạ
6

tầng lưới, kết quả của ñề tài là phần bổ sung cho hạ tầng lưới, thúc ñẩy tính toán
lưới phát triển.
ðề tài còn tạo ra cơ hội ñể nhóm cán bộ Việt Nam tham gia nghiên cứu với các
khoa học gia nước ngoài trong lĩnh vực tính toán lưới.
1.3. Ý nghĩa và tính mới về khoa học và thực tiễn
ðề tài xây dựng công cụ lập trình lưới giúp dễ dàng triển khai ứng dụng song
song theo mô hình ñối tượng song song ñộng hướng ñến chất lượng dịch vụ. ðây
chính là một ñiểm mới của công cụ ñược xây dựng so với các công cụ lập trình lưới
hiện có. Bằng việc sử dụng nền ngôn ngữ hướng ñối tượng C++, mở rộng ngôn ngữ
này cho phép thêm vào chương trình các ñối tượng song song, ñề tài mở ra một
phương pháp phát triển ứng dụng hiệu năng cao thích hợp với môi trường tính toán
lưới.
Một ñiểm mới khác của ñề tài chính là khả năng thích nghi với các nền tảng
phần cứng và hạ tầng mạng hiện có của Việt Nam bằng cách lựa chọn ñộng
protocols liên lạc và ñịnh dạng thông ñiệp trao ñổi giữa các ñối tượng song song
phân bố trên môi trường lưới, giúp nâng cao hiệu năng của ứng dụng.
Trong khi một loạt các dự án xây dựng hạ tầng lưới tính toán ñã và ñang ñược
triển khai xây dựng tại TP Hồ Chí Minh như EDAGrid, VN-Grid Core, việc hỗ trợ
các công cụ lập trình là hết sức cần thiết và mang ý nghĩa thực tiễn nhằm ñẩy nhanh
và chia sẻ hiệu quả nguồn tài nguyên tính toán sẵn có cho các tính toán khoa học, kỹ
thuật, tiết kiệm ñầu tư hạ tầng tính toán mới.
7

CHƯƠNG 2: NỘI DUNG NGHIÊN CỨU
2.1. Phân tích yêu cầu bài toán
Sau khi tìm hiểu hệ thống POP-C++ phiên bản 1.1.1, chúng tôi ñã khái quát cách

tiếp cận của hệ thống như trong mô hình sau (Hình 2 - 1).

Hình 2 - 1: Cách tiếp cần hệ thống POP-C++ phiên bản 1.1.1 trong môi trường có
firewall
Khi người dùng yêu cầu tạo một ñối tượng mới bằng ngôn ngữ POP-C++, thông
qua hạ tầng lưới, ñối tượng này ñược cấp phát chạy trên một tài nguyên nào ñó của
lưới thỏa mãn yêu cầu người dùng. Khi ñó ñối với người dùng, họ không cần quan
tâm ñối tượng thực sự mà họ yêu cầu ñang chạy trên máy nào hay trên tài nguyên
nào của lưới. Và kể từ khi yêu cầu POP-C++ tạo ñối tượng song song, người dùng
có thể tương tác với nó như thể ñối tượng này ñang chạy trên máy cục bộ vậy.
Khi người dùng triệu gọi một phương thức nào ñó của ñối tượng ở xa, thông qua
môi trường lưới, họ có thể tương tác trực tiếp với ñối tượng ñó thông qua cách thức
ñược quy ñịnh bởi POP-C++. Trong phiên bản 1.1.1, các ñối tượng giao tiếp với
nhau thông qua kết nối socket, vì vậy các giao tiếp giữa các ñối tượng này phần lớn
bị firewall chặn lại, chính vì vậy mà ở phiên bản hiện tại, các ñối tượng POP-C++
không thể hoạt ñộng khi chúng bị ngăn cách bởi firewall hay các ñối tượng POP-
C++ không thể giao tiếp trong môi trường lưới có firewall.
Cũng giống như vậy, khi các ñối tượng song song của POP-C++ bị ngăn cách
bởi mạng ảo, chúng không thể thấy ñược ñịa chỉ IP của nhau. Thay vào ñó chúng
giao tiếp với nhau thông qua proxy. Tuy nhiên các proxy trong thực tế thường
không cho phép việc kết nối vào nó thông qua một cổng bất kỳ ñể ñảm bảo an ninh.
Chính vì vậy mà kết nối socket từ một ñối tượng song song vào proxy server thường
không ñược chấp nhận vì một kết nối socket yêu cầu mở một cổng bất kỳ ñể giao
tiếp và truyền nhận dữ liệu.
Với phân tích ñó, nhóm chúng tôi ñã ñề ra giải pháp ñể giải quyết vấn ñề trên –
dùng giao thức HTTP ñể gửi nhận dữ liệu giữa các ñối tượng trong lưới khi môi
trường lưới có firewall hay khi các ñối tượng bị ngăn cách với nhau bởi mạng ảo.
Cách tiếp cận mà nhóm chúng tôi ñề xuất có thể khái quát như trong mô hình dưới
ñây (Hình 2 - 2).
8



Hình 2 - 2: Mô hình ñề xuất hệ thống POP-C++ phiên bản mới trong môi trường có firewall
Với mô hình ở Hình 2 - 2 trong môi trường có firewall, sau khi ñược phân bố
trên tài nguyên lưới, các ñối tượng giao tiếp với nhau thông qua giao thức HTTP, vì
vậy mà dữ liệu gửi nhận giữa chúng không bị chặn lại bởi firewall vì hầu hết
firewall không chặn giao thức HTTP.
Giống như vậy trong môi trường có mạng ảo, các ñối tượng song song sau khi
ñược phân bố trên tài nguyên lưới, chúng giao tiếp với nhau thông qua proxy server.
Vì hầu hết các proxy hiện tại không chặn giao thức HTTP, do ñó mà các kết nối từ
một ñối tượng ñến proxy ñều ñược proxy chấp nhận và chuyển dữ liệu nó nhận
ñược cho ñối tượng còn lại. Bằng cách này các ñối tượng trong môi trường lưới bị
ngăn cách bởi mạng ảo vẫn có thể kết nối ñược với nhau.
ðể hiện thực mô hình hệ thống POP-C++ sử dụng giao thức HTTP, trước hết
chúng tôi ñã tìm hiểu các công nghệ có liên quan: tìm hiểu chuẩn WSRF trong phần
2.2.1, tìm hiểu giao thức SOAP trong phần 2.2.2, tìm hiểu các thư viện xử lý XML
trong phần 2.2.3. Sau ñó chúng tôi tìm hiểu sâu hơn về hệ thống POP-C++: các thư
viện hệ thống (phần 2.2.4), và cơ chế hoạt ñộng chi tiết của hệ thống (phần 2.2.5).
Sau khi ñã có kiến thức nền tảng cần thiết, chúng tôi bắt tay vào việc thiết kế chi
tiết hệ thống như sẽ ñược trình bày trong phần 2.3.
2.2. Phân tích và tìm hiểu các công nghệ/hệ thống liên quan
2.2.1. Tìm hiểu chuẩn WSRF
Như ñã trình bày trong phần 2.1, ñể khắc phục nhược ñiểm của hệ thống POP-
C++ phiên bản 1.1.1, nhóm chúng tôi ñề xuất xây dựng giao thức HTTP ñể thực
hiện việc giao tiếp dữ liệu giữa các ñối tượng trong môi trường lưới. Hiện tại Grid
có hỗ trợ chuẩn WSRF hoạt ñộng dựa trên giao thức HTTP và ñang hoạt ñộng rất
tốt. Với sự kết hợp giữa WSRF và HTTP, ta có thể xây dựng hệ thống tận dụng
ñược những ưu ñiểm của HTTP và WSRF như không phụ thuộc vào ngôn ngữ lập
trình, không phụ thuộc vào platform, không bị hạn chế bởi firewall.
Hiện tại Web Service ñang nổi lên như là một kiến trúc dùng ñể xây dựng các

ứng dụng phân bố. Web Service dựa trên mô hình kiến trúc hướng dịch vụ (SOA)
với client là người yêu cầu dịch vụ, còn server là người cung cấp dịch vụ. Cách tiếp
9

cận của Web Service khác với các cách tiếp cận truyền thống trong Java RMI,
CORBA, DCOM bằng cách dựa trên các chuẩn mở là XML và HTTP – các chuẩn
ñang rất phổ biến hiện nay và ñang ñược hỗ trợ rộng rãi.
Với cách tiếp cận ñó, Web Service có một ưu ñiểm hơn hẳn các cách tiếp cận
khác là client và server có thể giao tiếp với nhau thông qua giao thức HTTP, vì vậy
việc giao tiếp này có thể thực hiện ñược trong môi trường mạng ảo hay trong môi
trường giữa các mạng khác nhau có sử dụng firewall.

Hình 2 - 3: Một lời gọi Web Service cơ bản [2]
Dựa vào Hình 2 - 3, ta thấy khi client muốn giao tiếp với server, nó gọi client
stub ñể chuyển yêu cầu sang bên server. Bên server có server stub có nhiệm vụ lắng
nghe các request từ client gửi ñến, và gửi các request ñó cho server thực hiện. Sau
khi thực hiện xong request của client, server gửi kết quả cho client thông qua server
stub. Bên client, sau khi gửi request cho server thực hiện, client stub lắng nghe
response gửi trả về từ server stub và chuyển các response ñó cho client. Khi ñó kết
thúc quá trình gọi một service giữa client và server.
Client stub và server stub giao tiếp với nhau thông qua môi trường internet với
giao thức bất kỳ, miễn sao request từ client có thể truyền ñến ñược cho server theo
ñúng ñịnh dạng mà Web Service quy ñịnh. Tuy nhiên, hiện nay giao thức chủ yếu
ñược dùng ñể truyền nhận giữa client và server là HTTP. Với cơ chế ñó thì client và
server có thể giao tiếp ñược với nhau mà không bị firewall ngăn cản. ðây cũng
chính là ñiểm khác biệt chính của Web Services với Java RMI, CORBA, DCOM vì
các kỹ thuật còn lại sử dụng các giao thức giao tiếp tối ưu, hoặc là ñặc trưng của
ngôn ngữ ñó, hoặc là chúng sử dụng thêm một số luật do chúng quy ñịnh ñể truyền
nhận dữ liệu ñược nhanh chóng. Vì vậy mà các giao thức này thường không ñi qua
ñược firewall vì cổng giao tiếp của chúng phụ thuộc vào ứng dụng.

Web Service là dịch vụ không có trạng thái (stateless), nó không có khả năng
lưu giữ thông tin hoặc trạng thái của các lần gọi trước. Vì vậy khi client gửi một
request ñến cho server yêu cầu server thực hiện một hành ñộng gì ñó, sau khi kết
nối này chấm dứt thì trạng thái của server sau khi thực hiện hành ñộng ñó không
ñược lưu lại. Do ñó, lần sau nếu client lại yêu cầu server thực hiện hành ñộng ñã gọi
lần trước thì server lại phục vụ yêu cầu ñó như lúc ñầu.
10


Hình 2 - 4: Lời gọi Web Service không có trạng thái [2]
Như ở Hình 2 - 4, khi client gọi hàm cộng thêm 5 thì server trả về kết quả là 5.
Khi ñó trạng thái bên server không lưu lại giá trị 5 khi kết nối ñến client chấm dứt.
Tiếp theo client yêu cầu server cộng thêm 6, do server không lưu trạng thái của nó
lúc trước nên nó phục vụ yêu cầu này như cách nó ñã phục vụ yêu cầu lần trước.
Tức kết quả trả về của nó là 6. Tương tự khi client yêu cầu server cộng thêm 7, kết
quả server trả về là 7.
Với tính chất không có trạng thái, Web Service có thể cung cấp một số dịch vụ
không yêu cầu phải lưu giữ thông tin trạng thái của các lần gọi trước. Ví dụ như
dịch vụ dự báo thời tiết, khi người dùng hỏi tình trạng thời tiết ở một nơi nào ñó vào
một thời ñiểm trong tương lai, dịch vụ Web không cần phải biết thông tin trạng thái
của các lần gọi trước ñó, nó cũng không cần phải quan tâm lúc trước người này có
gửi các yêu cầu tương tự như vậy hay không. Tuy nhiên trong môi trường tính toán
lưới, việc sử dụng các thông tin trạng thái là thường xuyên. Vì vậy cần phải mở
rộng Web Service ñể nó trở thành dịch vụ có trạng thái.
11


Hình 2 - 5: Lời gọi Web Service có trạng thái [2]
Hình 2 - 5 minh họa một dịch vụ có trạng thái, lúc ñầu server có trạng thái là 0,
khi client yêu cầu dịch vụ cộng thêm 5, server trả về kết quả là 5 và nó lưu trạng

thái của nó hiện tại là 5. Sau ñó client yêu cầu dịch vụ cộng thêm 6, lúc này server
sẽ lấy thông tin trạng thái hiện tại của nó là 5 cộng thêm với giá trị ñược yêu cầu là
6, kết quả mà server trả về là 11, và trạng thái hiện tại của server là 11. Tương tự,
khi client yêu cầu dịch vụ cộng thêm 7, server trả về kết quả là 18 và lưu trạng thái
hiện tại của nó là 18.
Với mô hình gọi dịch vụ như thế này, ta có dịch vụ Grid Service – dịch vụ lưới.
Như vậy ta có thể hiểu Grid Service là dạng mở rộng của Web Service, khi nó có
kết hợp các thông tin trạng thái. Nói cách khác, Grid Service là Web Service có
trạng thái hay Grid Service là Web Service kết hợp với các tài nguyên ñể lưu giữ
thông tin trạng thái.
12


Hình 2 - 6: Mối quan hệ giữa OGSA, GT4, WSRF, và Web [2]
Như vậy Grid Service là dạng mở rộng của Web Service, ñể viết nên một Grid
Service, người ta cũng phải tuân theo các chuẩn của Web Service, tuy nhiên do Grid
Service có thêm thông tin trạng thái nên người ta phải mở rộng các chuẩn của Web
Service hiện có, tạo thành chuẩn mới – Web Service Resource Framework (WSRF).
ðây là chuẩn mà người dùng phải tuân theo khi muốn tạo một Grid Service.
WSRF là một khung mẫu ñịnh nghĩa các ñặc tả mà người dùng phải tuân theo ñể
tạo thành công một Grid Service. Nó ñưa ra thêm mốt số khái niệm mới ñể diễn tả
trạng thái của một service như khái niệm tài nguyên WS-Resource dùng ñể mô hình
hóa, quản lý và lưu giữ các thông tin trạng thái. Khi muốn biết trạng thái của một
service nào ñó, ta chỉ cần xét xem tài nguyên của nó nằm ở ñâu, lấy các thông tin
trạng thái trên tài nguyên ñó sẽ quyết ñịnh ñược thông tin của service. Một tài
nguyên có trạng thái kết hợp với Web Service ñược xem như là WS-Resource (Hình
2 - 7).
13



Hình 2 - 7: WS-Resource [2]
Các ñặc tả mà WSRF ñưa ra bao gồm:
• WS-ResourceLifetime: cung cấp một số cơ chế ñơn giản giúp quản lý thời
gian sống của các tài nguyên lưu giữ thông tin trạng thái. ðặc tả này cung
cấp cơ chế cho phép người dùng gửi các request yêu cầu Grid Service hủy
một tài nguyên lưu giữ trạng thái ngay lập tức hay sau một khoảng thời gian
nào ñó. Nó cũng cung cấp một interface cho phép WS-Resource tự ñộng hủy
sau một khoảng thời gian xác ñịnh trước.
• WS-ResourceProperties: ðặc tả này dùng ñể miêu tả các thuộc tính của
một tài nguyên lưu giữ thông tin trạng thái. Việc khai báo các thuộc tính của
một WS-Resource biểu diễn một phép chiếu hay một cái nhìn về trạng thái
của WS-Resource. ðặc tả này cũng ñược dùng ñể xác ñịnh các thuộc tính của
tài nguyên ñược ñịnh nghĩa như thế nào và chúng ñược truy xuất ra sao.
Một tài nguyên có thể ñược cấu thành từ một hay nhiều thuộc tính. Ví dụ
trong Hình 2 - 7, mỗi tài nguyên có 3 thuộc tính: Filename, Size, và
Descriptors. WS-ResourceProperties ñịnh nghĩa một tập các phương thức
trao ñổi thông ñiệp chuẩn cho phép người dùng có thể gửi yêu cầu ñể lấy giá
trị các thuộc tính hay cập nhật giá trị các thuộc tính ñó.
• WS-Notification: Mặc dù không phải là ñặc tả của WSRF, WS-Notification
là một tập các ñặc tả gần với nó. ðặc tả này cho phép một Grid Service ñược
cấu hình giống như một người gửi thông báo, và một client ñược cấu hình
giống như là một người nhận thông báo. ðiều này có nghĩa là khi có một
thay ñổi xảy ra trong Grid Service (hay chính xác hơn là một trong các WS-

×