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

Popjava thư viện lập trình cho ứng dụng song song và ứng dụng 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 (1.39 MB, 108 trang )

Đại Học Quốc Gia Tp. Hồ Chí Minh
TRƯỜNG ĐẠI HỌC BÁCH KHOA
--------------------

PHAN ĐÌNH HẢI SƠN

POPJAVA
THƯ VIỆN LẬP TRÌNH
CHO ỨNG DỤNG SONG SONG
VÀ ỨNG DỤNG LƯỚI
Chuyên ngành: Khoa học máy tính

LUẬN VĂN THẠC SĨ

TP. HỒ CHÍ MINH, tháng 12 năm 2008


i

TRƯỜNG ĐẠI HỌC BÁCH KHOA

CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM

PHÒNG ĐÀO TẠO SĐH

ĐỘC LẬP – TỰ DO – HẠNH PHÚC

Tp. HCM, ngày 07 tháng 12 năm 2008

NHIỆM VỤ LUẬN VĂN THẠC SĨ
Họ tên học viên: PHAN ĐÌNH HẢI SƠN



Phái: Nam

Ngày, tháng, năm sinh: 15-08-1983

Nơi sinh: TP. HCM

Chuyên ngành:

MSHV: 00706145

I- TÊN ĐỀ TÀI:

POPJava - thư viện lập trình cho ứng dụng song song và ứng dụng lưới
II- NHIỆM VỤ VÀ NỘI DUNG:
Xây dựng thư viện lập trình cho ứng dụng song song và ứng dụng lưới dựa
trên ngôn ngữ Java. Thư viện có khả năng sử dụng các run-time service của POPC++ system để chạy ứng dụng. Ứng dụng sử dụng thư viện POPJava có khả năng
giao tiếp với ứng dụng xây dựng bằng POP-C++ và ngược lại.
III- NGÀY GIAO NHIỆM VỤ: 01/2008
IV- NGÀY HOÀN THÀNH NHIỆM VỤ: 12/2008
V- CÁN BỘ HƯỚNG DẪN: TS. Nguyễn Tuấn Anh
CÁN BỘ HƯỚNG DẪN

CN BỘ MÔN

(Học hàm, học vị, họ tên và chữ ký)

QL CHUYÊN NGÀNH

TS. Nguyễn Tuấn Anh


TS. Đinh Đức Anh Vũ

Nội dung và đề cương luận văn thạc sĩ đã được Hội đồng chuyên ngành thông qua.
Ngày . . . . tháng. . . . năm. . . . . . . .
TRƯỞNG PHÒNG ĐT – SĐH

TRƯỞNG KHOA QL NGÀNH


ii

CƠNG TRÌNH ĐƯỢC HỒN THÀNH TẠI
TRƯỜNG ĐẠI HỌC BÁCH KHOA
ĐẠI HỌC QUỐC GIA TP. HỒ CHÍ MINH

Cán bộ hướng dẫn khoa học: TS. Nguyễn Tuấn Anh

Cán bộ chấm nhận xét 1: .......................................................................................

Cán bộ chấm nhận xét 2: .......................................................................................

Luận văn thạc sĩ được bảo vệ tại
HỘI ĐỒNG CHẤM BẢO VỆ LUẬN VĂN THẠC SĨ

TRƯỜNG ĐẠI HỌC BÁCH KHOA, ngày . . . . . tháng . . . . năm . . . . . . .


iii


LỜI CAM ĐOAN
Tôi cam đoan rằng, ngoại trừ các kết quả tham khảo từ các cơng trình khác
như đã ghi rõ trong luận văn, các cơng việc trình bày trong luận văn này là do chính
tơi thực hiện và chưa có phần nội dung nào của luận văn này được nộp để lấy một
bằng cấp ở trường này hoặc trường khác.
Ngày 07 tháng 12 năm 2008

Phan Đình Hải Sơn


iv

LỜI CẢM ƠN
Tôi xin gởi lời cảm ơn chân thành và sâu sắc nhất đến TS.
Nguyễn Tuấn Anh, người Thầy đã tận tình hướng dẫn tơi trong suốt
q trình thực hiện luận văn cao học và tạo mọi điều kiện để tơi có
thể hồn thành luận văn này.
Tơi cũng xin cảm ơn gia đình đã động viên và tạo mọi điều
kiện tốt nhất để tơi có thể tiếp tục theo đuổi việc học tập nghiên cứu.
Tôi trân trọng dành tặng thành quả của luận văn này cho Cha Mẹ.
Nhờ công lao dưỡng dục của Người mà chúng con mới có được
thành quả như ngày hôm nay. Con xin hứa sẽ tiếp tục cố gắng phấn
đấu để vươn cao hơn nữa.
Tôi gởi lòng tri ân đến tất cả bạn bè, những người
đã động viên, thăm hỏi cũng như đã có những giúp đỡ
thiết thực giúp tơi hồn tất luận văn này.


v


TĨM TẮT ĐỀ TÀI
POP-C++ là một trong nhiều cơng cụ lập trình lưới được xây dựng và đưa vào
sử dụng. POP-C++ System xây dựng các service hỗ trợ việc tìm kiếm và cấp phát
tài nguyên phù hợp với yêu cầu của ứng dụng.
Tuy nhiên, môi trường lưới là môi trường bất đồng nhất về cấu hình phần
cứng, platform và việc phát triển ứng dụng trên ngôn ngữ C++ không thực sự dễ
dàng. Thư viện POPJava được xây dựng trên ngôn ngữ Java nhằm đảm bảo ứng
dụng có thể tương thích với nhiều loại tài nguyên. POPJava sử dụng lại các runtime service của POP-C++ để tận dụng khả năng tìm kiếm và cấp phát tài nguyên
phù hợp của POP-C++. POPJava giúp người lập trinh xây dựng ứng dụng có khả
năng giao tiếp với ứng dụng xây dựng bằng POP-C++. Do đó, người lập trình có thể
xây dựng ứng dụng bao gơm một phần được phát triển bằng POPJava để có thể phát
triển nhanh chóng và một phần được phát triển bởi POP-C++ nhằm đảm bảo
performance.


vi

ABSTRACT
POP-Java programming tool, which is developed as a Java library provides a
Java-based implementation of parallel objects. The POP-Java applications can use
the existing runtime service of POP-C++ for deploying and running its components
over the Grid. Moreover, some performance-critical parts of POP-Java applications
can also be implemented by POP-C++.


vii

MỤC LỤC
NHIỆM VỤ LUẬN VĂN THẠC SĨ................................................................ i
LỜI CAM ĐOAN ........................................................................................... iii

TÓM TẮT ĐỀ TÀI ......................................................................................... v
ABSTRACT .................................................................................................... vi
MỤC LỤC ...................................................................................................... vii
DANH SÁCH HÌNH VẼ ................................................................................ xi
Chương 1: GIỚI THIỆU ĐỀ TÀI ................................................................. 1
1.1. Tổng quan về ”Grid Computing” ............................................................. 1
1.2. Cơng cụ lập trình trên mơi trường lưới..................................................... 2
1.3. Nhu cầu lập trình hướng đến chất lượng dịch vụ ..................................... 2
1.4. Lý do thực hiện đề tài ............................................................................... 3
1.5. Mục tiêu và giới hạn của đề tài ................................................................. 4
1.5.1. Mục tiêu ........................................................................................ 4
1.5.2. Phạm vi của đề tài: ........................................................................ 4
1.6. Cấu trúc của luận văn. .............................................................................. 5

Chương 2: CƠ SỞ LÝ THUYẾT................................................................... 6
2.1. Định nghĩa “Grid Computing” ................................................................. 6
2.2. So sánh Grid và hệ thống siêu máy tính thơng thường (super computer,
cluster) ................................................................................................................ 6
2.3. Phân loại “Grid Computing” .................................................................... 7
2.3.1. Computational grid ....................................................................... 7
2.3.2. Scavenging grid ............................................................................ 7
2.3.3. Data grid........................................................................................ 8
2.4. Các thành phần của môi trường Grid Computing .................................... 8
2.4.1. Portal/user interface ...................................................................... 8
2.4.2. Security ......................................................................................... 9
2.4.3. Broker.......................................................................................... 10
2.4.4. Scheduler..................................................................................... 11


viii


2.4.5. Data management........................................................................ 12
2.4.6. Job và resource management ..................................................... 12
2.4.7. Các chức năng khác .................................................................... 13
2.5. Ngơn ngữ lập trình cho Grid computing ................................................ 13

Chương 3: PARALLEL OBJECT MODEL .............................................. 16
3.1. Các đối tượng có thể chia sẻ phân tán .................................................... 16
3.2. Các yêu cầu về tài nguyên ...................................................................... 17
3.3. Các ngữ nghĩa gọi hàm (method invocation semantics) ........................ 17
3.3.1. Ngữ nghĩa ở phía gọi method có các ngữ nghĩa sau ................... 18
3.3.2. Ngữ nghĩa ở phía thực thi đối tượng có các ngữ nghĩa sau: ....... 18
3.4. POP-C++ programming language .......................................................... 19
3.4.1. Parclass method declarations and invocations ............................ 20
3.4.2. Object description ....................................................................... 21
3.4.3. Object events ............................................................................... 22
3.4.4. Mutual exclusive execution ........................................................ 22
3.4.5. Chương trình ví dụ ...................................................................... 22
Chương 4: MỘT SỐ CƠNG CỤ LẬP TRÌNH GRID COMPUTING KHÁC .. 25
4.1. Proactive ................................................................................................. 25
4.1.1. Developer Tools & IDE .............................................................. 26
4.1.2. Programming / Composing ......................................................... 26
4.1.3. Deployment & Virtualization ..................................................... 26
4.1.4. Services ....................................................................................... 27
4.1.5. Chương trình ví dụ ...................................................................... 27
4.2. OmniRPC................................................................................................ 29
4.2.1. Chương trình ví dụ của OmniRPC:............................................. 31
4.2.2. Mơi trường thực thi .................................................................... 31
4.2.3. Sử dụng OmniRPC agent để thực thi chương trình .................... 32
4.2.4. Viết chương trình thực thi tại máy ở xa (remote host) ............... 32

4.2.5. Đăng kí chương trình thực thi ở xa ............................................. 33
4.2.6. Chương trình Client .................................................................... 34


ix

Chương 5: POPJava PROGRAMMING .................................................... 36
5.1. Các component lúc runtime của POPJava++ ......................................... 37
5.2. Sự mở rộng của POPJava từ Java ........................................................... 37
5.3. Kiến trúc của POPJava ........................................................................... 38
5.4. DataSwaper ............................................................................................. 42
5.5. POPObject .............................................................................................. 44
5.6. Protocol ................................................................................................... 46
5.6.1. Combox Server ........................................................................... 46
5.6.2. Combox ....................................................................................... 47
5.6.3. ComboxSocket ............................................................................ 48
5.7. Encoding ................................................................................................. 50
5.8. Service Adapter ...................................................................................... 54
5.9. Broker ..................................................................................................... 56
5.10.

Interface .............................................................................................. 58

5.11.

POPJavaFactory .................................................................................. 61
5.11.1. POPJavaFactory ........................................................................ 61
5.11.2. Class PJProxyFactory ............................................................... 63
5.11.3. Class PJMethodFilter ................................................................ 63


5.12.

Protocol Plugin.................................................................................... 63

5.13.

Encoding Plugin .................................................................................. 65

5.14.

Object Decsription: ............................................................................. 68

5.15.

Quy trình khởi tạo một parallel object: ............................................... 69

5.16.

Lập trình với POPJava ........................................................................ 72

Chương 6: ĐÁNH GIÁ POPJava ................................................................ 77
6.1. Khả năng tương thích với nhiều platform của POPJava ........................ 77
6.2. Khả năng tương thích của POPJava với POP-C++ ................................ 77
6.3. Tốc độ truyền dữ liệu của POPJava........................................................ 78
6.4. Hạn chế của POPJava ............................................................................. 81

Chương 7: KẾT LUẬN ................................................................................. 83
7.1. Những đóng góp của đề tài ..................................................................... 83
7.2. Hướng phát triển ..................................................................................... 84



x

TÀI LIỆU THAM KHẢO ............................................................................ 86
PHỤ LỤC A: Hướng dẫn xây dựng ứng dụng với POP-C++ và POPJava ... 87
1.

Chạy chương trình POPJava .................................................................... 87

2.

Object POPJava gọi Object POPJava ...................................................... 87

3.

Object POPJava gọi Object POP-C++ .................................................... 87

4.

Object POP-C++ gọi Object POPJava .................................................... 90

PHỤ LỤC B: Javassist ................................................................................... 92
1.

Reading writing bytecode ........................................................................ 92

2.

Định nghĩa một class mới ngay trong thời gian chạy: ............................ 93


3.

ProxyFactory............................................................................................ 94


xi

DANH SÁCH HÌNH VẼ
Hình 2.1: Userview của “Grid computing” ...................................................................... 9 
Hình 2.2: Security trong mơi trường lưới ...................................................................... 10 
Hình 2.3: Broker service ................................................................................................ 10 
Hình 2.4: Scheduler ........................................................................................................ 11 
Hình 2.5: Data management ........................................................................................... 12 
Hình 2.6: GRAM ............................................................................................................ 13 
Hình 3.1: Ngữ nghĩa gọi hàm: Đồng thời(Conc1, Conc2, Conc3), tuần tự (Seq1,
Seq2), và Mutex (Mutex1). ..................................................................................... 19 
Hình 3.2: Sự khác nhau giữa class trong C++ và parallel class trong POP-C++ .......... 19 
Hình 4.1: Grid Infrastructure Standards ......................................................................... 25 
Hình 4.2: Ứng dụng viết bằng OmniRPC ...................................................................... 30 
Hình 4.3: OmniRPC agent ............................................................................................. 32 
Hình 5.1: The layered architecture of POP programming system. ................................ 36 
Hình 5.2: Các component lúc runtime ........................................................................... 37 
Hình 5.3: Interface và broker trong POPJava ................................................................ 38 
Hình 5.4: Kiến trúc của POPJava................................................................................... 39 
Hình 5.5: ComboxSocket ............................................................................................... 48 
Hình 5.6: Qui trình tiếp nhận và xử lý request của ComboxServer ............................... 49 
Hình 5.7: Service Adapter .............................................................................................. 55 
Hình 5.8: Vai trị của broker .......................................................................................... 56 
Hình 5.9: Cấu trúc của Request Header ......................................................................... 57 
Hình 5.10: Qui trình xử lý request của Broker .............................................................. 58 

Hình 5.11: Vai trị của Interface ..................................................................................... 59 
Hình 5.12: Hoạt động của Interface ............................................................................... 59 
Hình 5.13: Quá trình binding giữa Interface và Broker ................................................. 60 
Hình 5.14: Quá trình chuyển lời gọi hàm thành Request............................................... 61 
Hình 5.15: POPJavaFactory ........................................................................................... 62 
Hình 5.16: ComboxFactory............................................................................................ 64 
Hình 5.17: ComboxPlugin ............................................................................................. 65 


xii

Hình 5.18: BufferPlugin ................................................................................................. 66 
Hình 5.19: BufferPlugin ................................................................................................. 67 
Hình 5.20: Qui trình khởi tạo parallel object ở máy cục bộ .......................................... 71 
Hình 5.21: Qui trình khởi tạo parallel object ở máy ở xa .............................................. 72 
Hình 6.1: Chương trình kiểm tra tốc độ truyền nhận giữa các parallel object............... 78 
Hình 6.2: Tốc độ truyền dữ liệu giữa hai Object POP-C++ .......................................... 79 
Hình 6.3: Tốc độ truyền dữ liệu giữa Object POP-C++ và Object POPJava ................ 79 
Hình 6.4: Tốc độ truyền dữ liệu giữa Object POPJava và Object POP-C++ ................ 80 
Hình 6.5: Tốc độ truyền dữ liệu giữa Object POP-C++ và Object POPJava ................ 80 
Hình 7.1: Vấn đề Firewall .............................................................................................. 84 
Hình 7.2: Phương án để vượt qua Firewall .................................................................... 85 


Chương 1: Giới thiệu đề tài

Trang 1

Chương 1
GIỚI THIỆU ĐỀ TÀI

1.1. Tổng quan về ”Grid Computing”
“Grid Computing” đang nhận được rất nhiều sự quan tâm trong ngành công
nghiệp công nghệ thơng tin. Mặc dù nó đã được sử dụng trong các học viện và các
cộng đồng khoa học từ lâu nhưng các chuẩn mực, kĩ thuật, công cụ và sản phẩm vẫn
đang được xây dựng để có thể sử dụng trong thương mại. Cũng như nhiều kĩ thuật
mới khác, có rất nhiều công cụ "Grid Computing" đã được xây dựng và sử dụng; và
một trong những công cụ được sử dụng nhiều nhất để tạo ra và quản lý môi trường
lưới là Globus Toolkit. [1]
“Grid Computing” cũng tương tự như mạng lưới điện thực tế. Một khi cơ sở
hạ tầng của “Grid Computing” được xây dựng hoàn chỉnh, người sử dụng có thể
truy xuất vào một máy tính ảo có độ tin cậy và thích hợp với nhu cầu của họ. Máy
tính ảo này sẽ bao gồm rất nhiều tài nguyên khác nhau bao gồm máy tính cá nhân,
PDA, máy chủ, cluster… Nhưng người sử dụng không thể thấy được những tài
nguyên cá nhân cũng giống như người sử dụng điện không thể thấy được nguồn
điện được sinh ra như thế nào, từ than đá, khí đốt, sức gió hay sức nước.
Để đạt được như vậy, cần phải xây dựng một chuẩn cho “Grid Computing” về
tính bảo mật thơng tin. Chuẩn Open Grid Service Architecture (OGSA) và các công
cụ được cung cấp bởi Globus Toolkit đã cung cấp một framework để xây dựng một
hệ thống “Grid Computing” đảm bảo sự bảo mật. Trước tiên, các doanh nghiệp, tổ
chức có thể xây dựng cơ sở hạ tầng “Grid Computing” của riêng họ; nhưng vào thời
gian sau, những lưới này cần được kết nối lại. Việc kết nối có thể thực hiện đươc
thơng qua chuẩn OGSA và việc xây dựng lưới tính tốn có sức mạnh tương tự như
lưới điện sẽ trở thành hiện thực.


Chương 1: Giới thiệu đề tài

Trang 2

1.2. Công cụ lập trình trên mơi trường lưới

Globus Toolkit đã đưa ra chuẩn OGSA, cũng như một framework để mỗi tổ
chức có thể tự xây dựng cho mình một mơi trường lưới. Tuy nhiên việc lập trình
trên mơi trường lưới vẫn cịn đang được bỏ ngỏ. Globus Toolkit mới chỉ đưa ra các
API cho phép submit một job lên môi truờng lưới, theo dõi và lấy kết quả thực thi
của một job.
Hiện nay đã có một số mơ hình lập trình trên Grid được xây dựng và đưa vào
thử nghiệm như ProActive[4], POP-C++ [3], Grid RPC[8].
ProActive là một thư viện trên ngôn ngữ Java giúp đơn giản hóa việc lập trình
và thực thi các ứng dụng song song trên mạng LAN, Cluster và các Data Center
Servers, Grid, trên các hệ điều hành Linux, Windows, Mac. [4]
POP-C++[3] bao gồm một trình biên dịch, một hệ thống run-time hỗ trợ cho
việc lập trình và thực thi ứng dụng song song trên LAN, Cluster, Grid. Ngôn ngữ
POP-C++ là mở rộng của ngôn ngữ C++ hiện thực mơ hình đối tượng song song
(parallel object model) và u cầu tài nguyên(resource requirement). Hệ thống runtime của POP-C++ giúp việc tìm kiếm tài nguyên phù hợp với yêu cầu của từng mơ
hình đối tượng song song.
Omni RPC là một hiện thực của mơ hình Grid RPC, sử dụng Globus như là cơ
sở hạ tầng để có thể đưa ứng dụng chạy trên mơi trường lưới.

1.3. Nhu cầu lập trình hướng đến chất lượng dịch vụ
Sự ra đời của mạng lưới thơng minh có băng thơng lớn và các cơ sở hạ tầng
mạng tốt, như những mạng lưới có băng thông lớn dựa trên Generalized
MultiProtocol Label Switching (GMPLS) và Automatically Switched Optical
Networks (ASON)/Automatically Switched Transport Networks (ASTN), đang cổ
vũ cho sự phát triển tính tốn lưới từ mạng nội bộ (LAN) đến mạng diện rộng
(WAN).


Chương 1: Giới thiệu đề tài

Trang 3


Trong khi ở mạng LAN, các tài nguyên gần như đồng nhất, các ứng dụng tính
tốn lưới hầu như được tận dụng cho tài nguyên mạng, thì trong mạng diện rộng
(WANs), tài nguyên được chia sẻ giữa các ứng dụng không đồng nhất khác nhau về
cấu hình, băng thơng, platform; do đó việc phân bổ, lựa chọn tài nguyên thích hợp
là một vấn đề hết sức khó khăn. Ngồi ra, các tài ngun trong lưới thường không
ổn định, nảy sinh ra nhiều vấn đề ảnh hưởng đến chất lượng của dịch vụ. Do đó,
nhu cầu bảo đảm chất lượng dịch vụ đối với các ứng dụng “Grid Computing” là hết
sức quan trọng.

1.4. Lý do thực hiện đề tài
Mặc dù Globus đã đưa ra chuẩn OGSA và một framework giúp cho việc xây
dựng môi trường lưới dễ dàng và việc tích hợp các mơi trường lưới trở nên hiện
thực, nhưng vẫn chưa có một chuẩn mực nào cho việc xây dựng một cơng cụ lập
trình cho các ứng dụng chạy trên lưới.
Như đã nói ở trên, môi trường lưới là một môi trường rất không đồng nhất về
tài nguyên như cấu hình phần cứng, platform… nên ứng dụng chạy trên mơi trường
lưới cần có khả năng thích ứng với nhiều loại platform khác nhau, cấu hình phần
cứng khác nhau. Ngồi ra, nhằm đảm bảo chất lượng dịch vụ, cũng như tận dụng
được sức mạnh của mơi trường lưới, cần có một dịch vụ để tìm kiếm tài nguyên
thích hợp cho ứng dụng.
Đề tài này sẽ xây dựng một thư viện POPJava trên ngôn ngữ Java nhằm giúp
đỡ việc phát triển ứng dụng trên môi trường lưới. Vì thư viện được phát triển trên
ngơn ngữ Java nên ứng dụng sử dụng thư viện này tất nhiên có khả năng thích ứng
cao với nhiều loại platform, nhiều cấu hình phần cứng khác nhau. Ngơn ngữ Java
cũng rất mạnh và rất tiện lợi cho việc phát triển ứng dụng, nó hỗ trợ rất nhiều thư
viện, cơng cụ khiến việc lập trình trở nên dễ dàng hơn. Ngồi ra, để thỏa mãn việc
tìm kiếm tài ngun thích hợp cho ứng dụng, POPJava sẽ sử dụng hệ thống runtime của POP-C++.



Chương 1: Giới thiệu đề tài

Trang 4

1.5. Mục tiêu và giới hạn của đề tài
1.5.1. Mục tiêu
Mục tiêu của đề tài là xây dựng một thư viện POPJava trên ngôn ngữ Java hỗ
trợ việc phát triển các ứng dụng trên mơi trường lưới, hỗ trợ object resource
requirement. Chương trình viết bằng POPJava có khả năng tương thích với chương
trình viết bằng POP-C++. Nhờ đó người dùng có thêm lựa chọn khi phát triển ứng
dụng trên mơi trường lưới: có thể chuyển một phần hoặc tồn bộ chương trình đã
phát triển trên POP-C++ thành chương trình phát triển trên POPJava. Ngồi ra,
POPJava cũng phải sử dụng được hệ thống run-time có sẵn của POP-C++ để tận
dụng các dịch vụ tìm kiếm, quản lý tài nguyên, theo dõi ứng dụng của hệ thống
POP-C++.
Một mục tiêu khác của POPJava là xây dựng một kiến trúc cho phép người
dùng phát triển các giao thức truyền nhận dữ liệu, cách thức mã hóa dữ liệu truyền
nhận như các plugin.
1.5.2. Phạm vi của đề tài:
• Xây dựng một interface chuẩn cho việc mã hóa (encoding) dữ liệu truyền
nhận, người dùng có thể hiện thực interface này để đưa ra một kiểu mã
hóa dữ liệu khác tối ưu hơn hoặc đáp ứng tốt hơn yêu cầu của họ, gọi là
các encoding-plugin.
• Xây dựng một interface chuẩn cho việc truyền nhận dữ liệu (protocol) giữa
các node trên lưới, người dùng cũng có thể đưa ra một phương thức truyền
nhận khác với điều kiện phải hiện thực đầy đủ interface này, gọi là các
protocol-plugin.
• Xây dựng cơ chế load các plugin trên trong thời gian thực thi vào hệ thống,
cho phép chương trình của người sử dụng lựa chọn các plugin thích hợp
cho ứng dụng của họ.



Chương 1: Giới thiệu đề tài

Trang 5

• Xây dựng các encoding-plugin và protocol-plugin chuẩn có khả năng giao
tiếp với các plugin của POP-C++, nhờ đó các object của POPJava và POPC++ có khả năng tương tác với nhau.
• Xây dựng hệ thống Exception để người dùng có thể gỡ lỗi chương trình dễ
dàng.
• Xây dựng các class đóng gói các kiểu dữ liệu nguyên tố, kiểu dữ liệu input
để kiểu dữ liệu trong Java và C++ tương thích với nhau.
• Xây dựng Factory để sinh ra các Parallel Object.

1.6. Cấu trúc của luận văn.
Chương một giới thiệu tổng quan về Grid Computing, các cơng cụ lập trình
trên mơi trường lưới cũng như nhu cầu lập trình hướng đến chất lượng dịch vụ.
Phần cuối của chương một tóm tắt mục tiêu và phạm vi của đề tài.
Chương hai giới thiệu Grid Computing, phân loại Grid Computing và các
thành phần của môi trường lưới, cơ sở hạ tầng lưới và các vấn đề về kiến trúc của
ứng dụng lưới.
Chương ba trình bày mơ hình parallel object và ngơn ngữ POP-C++.
Chương bốn giới thiệu hai cơng cụ lập trình lưới là ProActive và OmniRPC.
Chương năm giới thiệu thư viện POPJava, thư viện lập trình trên ngơn ngữ
Java hỗ trợ việc xây dựng ứng dụng lưới.
Chương sáu đánh giá khả năng tương thích với nhiều platform của POPJava,
khả năng tương thích của POPJava với POP-C++, và hiệu suất của POPJava. Phân
cuối chương sáu trình bày những hạn chế của POPJava.
Cuối cùng, chương bảy nói về những đóng góp của đề tài cũng như hướng
phát triển của đề tài.



Chương 2: Cơ sở lý thuyết

Trang 6

Chương 2
CƠ SỞ LÝ THUYẾT
2.1. Định nghĩa “Grid Computing”
“Grid computing” là một dạng của hệ thống máy tính song song, một hệ thống
siêu máy tính ảo, tổ hợp bởi các cluster độc lập, các máy tính cá nhân, laptop,
PDA… để tận dụng các tài nguyên rảnh rỗi để giải quyết các bài toán lớn, giải quyết
các nhiệm vụ đòi hỏi thời gian rất lớn để hồn thành. Ngồi ra, “Grid Computing”
có thể dùng để cung cấp các dịch vụ tính tốn và lưu trữ trực tuyến.
Kĩ thuật này đã được ứng dụng trong ngành khoa học tính tốn hiệu năng cao
để giải quyết các bài tốn lớn trong tốn học, sinh học; và nó cịn được dùng trong
các cơng ty thương mại cho những ứng dụng khác nhau như nghiên cứu, phát minh
thuốc chữa bệnh, dự đốn tình hình kinh tế, phân tích địa chấn, xử lý dữ liệu trong
việc hỗ trợ thương mại và Web service.

2.2. So sánh Grid và hệ thống siêu máy tính thơng thường (super
computer, cluster)
Thơng thường Grid được tổ hợp bởi rất nhiều máy tính rất khác nhau về cấu
hình phần cứng như mainboard, CPU, bộ phận lưu trữ, network interface… được
kết nối qua một hệ thống mạng cá nhân hoặc internet thông qua network interface
thông thường như Ethernet. Điều này hoàn toàn khác với hệ thống siêu máy tính
thơng thường, một hệ thống đồng nhất về cấu hình, được kết nối thông qua một hệ
thống mạng tốc độ rất cao và ổn định.
Lợi điểm chính của Grid là các node có thể được xây dựng từ những máy tính
thơng thường mà khi kết nối lại thì có sức mạnh như một siêu máy tính, nhưng chi

phí xây dựng thấp. Tuy nhiên, nhược điểm của Grid là cấu hình phần cứng giữa các
node rất khác nhau, hệ thống lưu trữ và hệ thống mạng kết nối giữa các node khơng
có tốc độ cao và ổn định.


Chương 2: Cơ sở lý thuyết

Trang 7

Do đó, Grid thích hợp cho các ứng dụng tính tốn song song có thể chia ra các
ứng dụng con chạy độc lập, ít giao tiếp với nhau, ít địi hỏi việc đồng bộ dữ liệu
giữa các node.
Khả năng mở rộng của Grid cao hơn nhờ vào khả năng kết nối các Grid với
nhau thơng qua mơi trường Internet.
Cũng có một số khác biệt trong việc phát triển và cài đặt ứng dụng. Việc viết
chương trình có thể chạy trên mơi trường của Grid là khá khó khăn vì chương trình
này phải có khả năng chạy trên các mơi trường có cấu hình phần cứng, băng thông
mạng và hệ điều hành khác nhau, tài ngun khơng ổn định.

2.3. Phân loại “Grid Computing”
“Grid Computing” có thể được sử dụng để đáp ứng nhiều loại ứng dụng với
các yêu cầu khác nhau. Thông thường, Gird được phân loại theo loại giải pháp mà
nó tập trung khai thác nhất. Người ta phân loại Grid thành ba loại như dưới đây.
Tuy nhiên, khơng có một ranh giới rõ ràng giữa ba loại đó và người ta có thể kết
hợp giữa chúng để tạo ra một loại Grid mới nhằm đáp ứng nhu cầu sử dụng. Và khi
xem xét việc phát triển ứng dụng trên hạ tầng lưới, người sử dụng cần lưu ý rằng
loại môi trường lưới đang sử dụng sẽ ảnh hưởng rất lớn đến hiệu suất của ứng dụng.
2.3.1. Computational grid
Computational grid tập trung vào việc xây dựng quản lý các tài ngun phục
vụ tính tốn. Đối với computational grid, hầu như các node trong grid là các server

hiệu suất cao.
2.3.2. Scavenging grid
Scavenging grid thường được sử dụng với số lượng lớn các máy tính desktop
nhằm tận dụng tài nguyên của chúng khi rảnh rỗi. Người chủ sở hữu các máy
desktop đó thường cho phép mơi trường lưới điều khiển khi máy tính rảnh.


Chương 2: Cơ sở lý thuyết

Trang 8

2.3.3. Data grid
Data grid chịu trách nhiệm cho việc lưu trữ và cung cấp khả năng truy xuất dữ
liệu giữa các tổ chức khác nhau. Người dùng không phải quan tâm tới việc dữ liệu
thực sự nằm ở chỗ nào. Ví dụ, chúng ta có hai trường đại học cùng làm cơng việc
nghiên cứu trên các dữ liệu riêng biệt. Data grid cho phép họ truy xuất, quản lý dữ
liệu và theo dõi việc truy xuất dữ liệu của từng người dùng như người nào đã truy
xuất dữ liệu nào.

2.4. Các thành phần của môi trường Grid Computing
Phần này sẽ mô tả ở mức tổng qt các thành phần chính yếu của mơi trường
lưới. Tuỳ thuộc vào việc thiết kế và mục đích của lưới, một số thành phần có thể
cần thiết hoặc khơng cần thiết, và trong một số trường hợp, chúng có thể được kết
hợp thành một dạng lai.
2.4.1. Portal/user interface
Đối với người sử dụng, sức mạnh của grid như một thùng chứa ở phía sau bức
tường, và người sử dụng khơng nên thấy được cấu trúc phức tạp của “Grid
Computing”. Mặc dù giao diện người sử dụng nhìn thấy có thể ở nhiều dạng khác
nhau và được dùng cho các ứng dụng khác nhau, nhưng Grid nên được coi như một
loại portal. Đa số người sử dụng đều quen thuộc với khái niệm Web portal: Web

portal cung cấp một interface duy nhất để truy xuất các nguồn thông tin các nhau.
Trong khi đó, Grid portal cung cấp một interface để người sử dụng có thể chạy ứng
dụng và sử dụng các tài nguyên và dịch vụ được cung cấp bởi Grid. Như vậy, người
sử dụng sẽ coi Grid như một tài ngun tính tốn ảo, giống như người tiêu dùng
điện đối với mạng lưới điện thực tế.


Chương 2: Cơ sở lý thuyết

Trang 9

Hình 2.1: Userview của “Grid computing”
2.4.2. Security
Một trong những vấn đề quan trọng của “Grid computing” là vấn đề bảo mật.
Mọi môi trường lưới phải có cơ chế để đảm bảo tính bảo mật, bao gồm việc xác
thực (authentication), ủy quyền (authorization), mã hóa dữ liệu… GSI (The Grid
Security Infrastructure) trong Globus Tollkit cung cấp cơ chế bảo mật vững chắc
bao gồm việc hiện thực OpenSSL. Nó cũng cung cấp cơ chế single sign-on; vì vậy
khi một người dùng đã được xác thực, proxy certificate được khởi tạo và sử dụng
cho tất cả trường hợp người đó sử dụng lưới cho tới khi thốt ra. Khi thiết kế mơi
trường lưới chúng ta có thể sử dụng GSI sign-in để sử dụng portal hoặc xây dựng
riêng một cơ chế bảo mật cho portal. Sau đó portal sẽ chịu trách nhiệm quản lý việc
log-in của người dùng.


Chương 2: Cơ sở lý thuyết

Trang 10

Hình 2.2: Security trong môi trường lưới

2.4.3. Broker
Một khi đã được xác thực, người dùng sẽ được phép chạy ứng dụng. Tùy
thuộc vào ứng dụng, và các thông số được cung cấp bởi người dùng, ở giai đoạn
tiếp theo, chúng ta cần phải nhận dạng các tài nguyên thích hợp trong lưới. Nhiệm
vụ này có thể được gọi là broker. Mặc dù khơng có broker nào được cung cấp bởi
Globus, nhưng Globus cung cấp một service LDAP, service này gọi là Grid
Information Service, hoặc Monitoring and Discovery Service, chịu trách nhiệm
cung cấp thông tin của tác tài nguyên trong hệ thống.

Hình 2.3: Broker service


Chương 2: Cơ sở lý thuyết

Trang 11

2.4.4. Scheduler
Sau khi tài nguyên đã được xác định, bước tiếp theo là phải định thời cho từng
job chạy trên lưới. Nếu một tập hợp các job độc lập thực thi, công việc định thời sẽ
rất đơn giản. Tuy nhiên nếu người dùng muốn đặt chỗ một số tài nguyên để một số
job của ứng dụng có thể chạy đồng thời (trong trường hợp này, các job này cần phải
giao tiếp với nhau), khi đó bộ định thời cần được xây dựng để quản lý, định thời các
job.
Globus Toolkit chưa bao gồm một bộ định thời, nhưng có một số bộ định thời
có sẵn đã được kiểm tra và có thể sử dụng trong Globus.
Cũng cần lưu ý rằng có nhiều cấp độ định thời trong mơi trường lưới. Ví dụ,
một cluster có thể được coi là một tài nguyên, nhưng bản thân cluster đó cũng có bộ
định thời riêng quản lý các node của nó. Một bộ định thời meta scheduler sẽ quản
lý, định thời các job trên cluster, trong khi bộ định thời riêng của cluster sẽ chịu
trách nhiệm định thời các job trên các node của nó.


Hình 2.4: Scheduler


Chương 2: Cơ sở lý thuyết

Trang 12

2.4.5. Data management
Nếu mọi dữ liệu, kể cả dữ liệu cho từng module của ứng dụng, không nằm trên
node mà job được thực thi thì cần phải có một cơ chế bảo mật cho các phương thức
truy xuất dữ liệu giữa các node trong lưới. Globus Toolkit đã cung cấp một
component quản lý dữ liệu đảm bảo chức năng như trên là Grid Access to
Secondary Storage, ví dụ như GridFTP. GridFTP được xây dựng trên protocol FTP
chuẩn, nhưng thêm chức năng GSI để xác thực và ủy quyền người sử dụng. Do đó
một khi người dùng đã có một chứng thực, người đó có thể sử dụng GridFTP để
truy xuất dữ liệu mà không cần phải login vào mỗi node.

Hình 2.5: Data management
2.4.6. Job và resource management
Grid Resource Allocation Manager cung cấp service để có thể thực thi job trên
tài nguyên cụ thể, kiểm tra trạng thái và lấy về kết quả khi nó hoàn thành.


×