nghiÊn cỨu phÁt triỂn Ứng dỤng trÊn grid
TRANSCRIPT
KHÓA LUẬN TỐT NGHIỆP ĐẠI HỌC CHÍNH QUY
Ngành: Công nghệ thông tin
HÀ NỘI - 2006
NGHIÊN CỨU PHÁT TRIỂN ỨNG DỤNG
TRÊN GRID
Lê Bá Dũng
ĐẠI HỌC QUỐC GIA HÀ NỘITRƯỜNG ĐẠI HỌC CÔNG NGHỆ
KHÓA LUẬN TỐT NGHIỆP ĐẠI HỌC CHÍNH QUY
Ngành: Công nghệ thông tin
HÀ NỘI - 2006
NGHIÊN CỨU PHÁT TRIỂN ỨNG DỤNG TRÊN GRID
Ngô Cao CườngLê Bá Dũng
Trần Thiện Thịnh
ĐẠI HỌC QUỐC GIA HÀ NỘITRƯỜNG ĐẠI HỌC CÔNG NGHỆ
Cán bộ hướng dẫn: ThS.Nguyễn Nam Hải
Lời cảm ơn
Trước tiên, chúng em muốn gửi lời cảm ơn chân thành và sâu sắc nhất đến
thầy giáo, ThS. Nguyễn Nam Hải, người đã tận tình hướng dẫn chúng em trong suốt
quá trình làm nghiên cứu khoa học và làm khóa luận tốt nghiệp.
Chúng em cũng xin gửi lời cảm ơn chân thành đến các thầy giáo, cô giáo đã
giảng dạy chúng em trong những năm qua, những kiến thức mà các thầy cô đã dạy là
hành trang vững chắc để chúng em bước vào cuộc sống.
Cuối cùng chúng em xin gởi lời cảm ơn đến gia đình và bè bạn, những người
đã luôn ở bên động viên, giúp đỡ chúng em trong cuộc sống.
Hà Nội 5-2006
i
Tóm tắt
Trong vài năm trở lại đây tính toán mạng lưới (Grid computing) đã phát triển
mạnh mẽ, mở ra các giải pháp mới cho các ứng dụng đòi hỏi khả năng tính toán lớn.
Grid computing có thể được sử dụng cho các bài toán nghiên cứu về sinh học, y học,
vật lí, hóa học…cũng như các ứng dụng trong phân tích và đánh giá tài chính, khai phá
dữ liệu, các ứng dụng trong chính phủ điện tử và rất nhiều các loại ứng dụng khác.
Trong khóa luận tốt nghiệp này, chúng tôi trình bày một cách tổng quan về
công nghệ Grid computing như ưu nhược điểm, các mô hình kiến trúc và công nghệ
liên quan. Trên cơ sở đó đi sâu vào tìm hiểu quy trình xây dựng và triển khai một ứng
dụng trên môi trường Grid computing dựa trên nền tảng của bộ công cụ Globus
Toolkit phiên bản 4.0. Để lấy ví dụ, chúng tôi trình bày chi tiết các bước để triển khai
một ứng dụng có sẵn – Math Service và chi tiết các bước xây dựng cũng như triển khai
một ứng dụng mới – Bài toán tìm số nguyên tố Merssene.
ii
Mục lục
Lời cảm ơn....................................................................................................................i
Tóm tắt........................................................................................................................ ii
Bảng các ký hiệu viết tắt............................................................................................ix
Mở đầu.........................................................................................................................1
Chương 1. Cơ bản về Grid Computing...................................................................4
1.1. Grid Computing là gì?..................................................................................4
1.2. Lợi ích của Grid Computing.........................................................................5
1.2.1. Khai thác tài nguyên xử lý.....................................................................5
1.2.2. Khả năng xử lý song song.....................................................................6
1.2.3. Sự cộng tác các tài nguyên ảo và tổ chức ảo.........................................6
1.2.4. Sự truy cập tới các tài nguyên khác.......................................................7
1.2.5. Cân bằng tài nguyên..............................................................................8
1.2.1. Độ tin cậy..............................................................................................9
1.2.2. Khả năng quản lý.................................................................................10
Chương 2. Các thuật ngữ và khái niệm.................................................................12
2.1. Các kiểu tài nguyên.....................................................................................12
3.1.1. Tài nguyên tính toán............................................................................12
3.1.2. Kho lưu trữ..........................................................................................12
3.1.3. Truyền thông.......................................................................................13
3.1.4. Phần mềm và bản quyền......................................................................13
3.1.5. Các thiết bị đặc biệt, sức chứa, kiến trúc và quyền hạn......................14
2.2. Công việc và ứng dụng...............................................................................14
2.3. Lập lịch, đặt chỗ, và quét dọn.....................................................................15
2.4. Các gói phần mềm grid...............................................................................16
iii
3.4.1. Gói quản lý..........................................................................................16
3.4.2. Gói lập lịch..........................................................................................17
3.4.3. Các gói truyền thông...........................................................................18
3.4.4. Gói quan sát và đo đạc.........................................................................18
2.5. Các cấu hình mạng grid..............................................................................18
Chương 3. Người dùng trong mạng Grid Computing...........................................21
3.1. Người dùng bình thường.............................................................................21
3.1.1. Tham gia vào grid và cài đặt các phần mềm.......................................21
3.1.2. Đăng nhập vào grid.............................................................................21
3.1.3. Truy vấn và đưa công việc..................................................................22
3.1.4. Cấu hình dữ liệu..................................................................................22
3.2. Nhà quản trị................................................................................................22
3.2.1. Cài đặt..................................................................................................23
3.2.2. Quản lý người dùng.............................................................................23
3.2.3. Chứng thực..........................................................................................23
3.2.4. Quản lý tài nguyên...............................................................................24
Chương 4. Một số chuẩn trong môi trường Grid...................................................25
4.1. Kiến trúc dịch vụ Grid mở - Open Grid Services Architecture (OGSA)....25
4.2. Cơ sở hạ tầng của dịch vụ Grid mở - Open Grid Service Infrastructure
(OGSI)....................................................................................................................26
4.3. GridFTP......................................................................................................27
4.4. Cơ chế tài nguyên của dịch vụ Web – Web service resource framework.. 27
4.5. Một số chuẩn của dịch vụ Web...................................................................28
4.6. Tổng kết chương.........................................................................................29
Chương 5. Tổng quan về dịch vụ Web..................................................................30
5.1. Ưu điểm của dịch vụ Web so với các công nghệ khác...............................30
5.2. Nhược điểm khi dùng dịch vụ Web............................................................31
iv
5.3. Lời gọi dịch vụ Web điển hình...................................................................31
5.4. Địa chỉ dịch vụ Web...................................................................................32
5.5. Kiến trúc dịch vụ Web................................................................................32
5.6. Ứng dụng dịch vụ Web...............................................................................33
5.7. Các bước để gọi một dịch vụ Web..............................................................34
5.8. Tổng kết chương.........................................................................................35
Chương 6. Cơ chế tài nguyên của dịch vụ Web – Web service resource
framework 36
6.1. Quản lí trạng thái tài nguyên trong dịch vụ Grid........................................36
6.1.1. Dịch vụ Grid là gì................................................................................36
6.1.2. Những yêu cầu của dịch vụ Grid theo chuẩn OGSA...........................37
6.2. Chuẩn WSRF..............................................................................................37
6.2.1. Khái niệm WS-Resource.....................................................................38
6.2.2. Các thành phần trong WSRF...............................................................39
6.3. Tổng kết chương.........................................................................................40
Chương 7. An ninh trong mạng Grid....................................................................41
7.1. Các yêu cầu về an ninh trong mạng lưới....................................................41
7.2. Cơ sở hạ tầng an ninh của mạng lưới..........................................................43
7.2.1. Truy cập vào mạng lưới.......................................................................44
7.2.2. Xác thực và quyền hạn........................................................................44
7.3. Tổng kết chương.........................................................................................45
Chương 8. Các thành phần của Globus Toolkit 4.0..............................................46
8.1. Tổng quan về Globus Toolkit 4.0...............................................................46
8.2. Các thành phần thường trực........................................................................46
8.2.1. Java WS Core......................................................................................47
8.2.2. C WS Core...........................................................................................47
8.2.3. Python WS Core..................................................................................47
v
8.3. Các thành phần bảo mật..............................................................................47
8.3.1. Thẩm định và cấp phép WS.................................................................48
8.3.2. Thẩm định và cấp phép Pre-WS..........................................................48
8.3.3. Dịch vụ cấp phép cộng đồng (Community Authorization Service -
CAS) 48
8.3.4. Dịch vụ uỷ quyền.................................................................................48
8.3.5. SimpleCA............................................................................................48
8.3.6. GSI-OpenSSH.....................................................................................48
8.4. Các thành phần quản lý dữ liệu...................................................................49
8.4.1. GridFTP...............................................................................................49
8.4.2. Truyền Tệp tin cậy (Reliable File Transfer - RFT).............................49
8.4.3. Dịch vụ mô hình hoá địa chỉ (Replica Location Service - RLS).........50
8.4.4. Dịch vụ sao lưu dữ liệu (Data Replication Service - DRS).................50
8.4.5. Các dịch vụ kiểm tra và khám phá thông tin (Monitoring and
Discovery Services - MDS)................................................................................51
8.4.6. Index service........................................................................................51
8.5. Các thành phần quản lý thi hành.................................................................51
8.5.1. WS GRAM..........................................................................................51
Chương 9. Cài đặt và cấu hình Globus Toolkit 4.0...............................................52
9.1. Download Globus Toolkit 4.0....................................................................52
9.2. Mô hình môi trường mạng Grid..................................................................52
9.3. Cài đặt Globus Toolkit 4.0..........................................................................54
9.3.1. Cài đặt các phần mềm yêu cầu cho Globus Toolkit 4.0......................54
9.3.2. Cấu hình môi trường Linux cho Globus Toolkit 4.0...........................55
9.3.3. Cài đặt Globus Toolkit 4.0..................................................................56
9.4. Cấu hình và thử nghiệm môi trường Grid...................................................58
9.4.1. Cấu hình các biến môi trường.............................................................58
vi
9.4.2. Cấu hình bảo mật.................................................................................58
9.4.3. Cấu hình Java WS Core.......................................................................63
9.4.4. Cấu hình và kiểm tra GridFTP............................................................64
9.5. Gỡ bỏ Globus Toolkit 4.0...........................................................................65
Chương 10. Các bước lập trình một chương trình Grid.......................................66
10.1. Giới thiệu sơ lược về chương trình Math Service...................................66
10.2. Các bước lập trình chương trình Math Service.......................................66
10.2.1. Bước 1: Định nghĩa giao diện dịch vụ.................................................67
10.2.2. Bước 2: Thực thi dịch vụ.....................................................................70
10.2.3. Bước 3: Định nghĩa việc triển khai dịch vụ.........................................73
10.2.4. Bước 4: Biên dịch và tạo tệp GAR......................................................74
10.2.5. Bước 5: Triển khai dịch vụ..................................................................75
10.3. Chạy thử chương trình Math Service......................................................76
Chương 11. Tự xây dựng một dịch vụ Grid: Bài toán số nguyên tố...................78
11.1. Giới thiệu công cụ phát triển...................................................................79
11.1.1. Giới thiệu công cụ GT4IDE................................................................80
11.1.2. Cài đặt GT4IDE...................................................................................80
11.2. Tạo project GT4 với GT4IDE.................................................................81
11.3. Thuật toán tìm số nguyên tố Mersenne...................................................83
11.3.1. Các khái niệm và mệnh đề...................................................................84
11.3.2. Một số thuật toán tiêu biểu..................................................................84
11.3.3. Lựa chọn thuật toán.............................................................................87
11.4. Phân tích và thiết kế bài toán..................................................................88
11.4.1. Mô tả hệ thống.....................................................................................88
11.4.2. Phân tích hệ thống...............................................................................90
11.4.3. Thiết kế hệ thống.................................................................................92
11.5. Kết quả thử nghiệm.................................................................................98
vii
11.5.1. Viết mã chương trình...........................................................................98
11.5.2. Giao diện của chương trình client:....................................................100
11.5.3. Biên dịch và chạy chương trình.........................................................100
11.6. Kết luận về bài toán Số nguyên tố........................................................102
Kết luận....................................................................................................................103
Tài liệu tham khảo...................................................................................................104
viii
Bảng các ký hiệu viết tắt
Ký hiệu viết tắt Ý nghĩaAPI Application Programming Interface – Giao diện lập trình ứng
dụngCA Certificate Authority – Cơ quan chứng thực
CAS Community Authorization Service - Dịch vụ cấp phép cộng đồng CORBA Common Object Request Broker Achitecture
DRS Data Replication Service - Dịch vụ sao lưu dữ liệuFTP File Transfer Protocal - Giao thức truyền tệpGSI Grid Security Infrastructure - Cơ sở hạ tầng an ninh mạng lướiGT Globus Toolkit
HTTP Hypertext Markup Language- Ngôn ngữ đánh dấu siêu văn bảnMDS Monitoring and Discovery Services - Các dịch vụ kiểm tra và
khám phá thông tinOSGA Open Grid Services Architecture - Kiến trúc dịch vụ web mởOSGI Open Grid Service Infrastructure - Cơ sở hạ tầng dịch vụ web mởRFT Reliable File Transfer - Truyền Tệp tin cậy RLS Replica Location Service - Dịch vụ mô hình hoá địa chỉRMI Remote Method Invocation - RPs Resource Properties - thuộc tính tài nguyênSOA Service Oriented Architechture - Kiến trúc hướng dịch vụ
SOAP Simple Object Access Protocol - Giao thức truy cập đối tượng đơn giản
UDDI Universal Description, Discovery and Integration - chuẩn dịch vụ Tích hợp, Khám phá và Mô tả Toàn cầu
URI Uniform Resource Identifiers - Địa chỉ dịch vụ WebWSDL Web serivce definition Language -Ngôn ngữ mô tả dịch vụ webWSRF Web service resource framework - Cơ chế tài nguyên của dịch vụ
WebXML eXtensible Markup Language - Ngôn ngữ Đánh dấu Mở rộng
ix
x
Mở đầu
Hiện nay, Mạng lưới tính toán (Grid Computing) đang là “điểm nóng” công
nghệ trên các diễn đàn công nghệ thông tin trên khắp thế giới. Trên thế giới, công nghệ
Grid (Grid Technologies) đang được giới khoa học – công nghệ nghiên cứu, phát triển
sôi nổi. Grid Computing hiện đang là nền tảng công nghệ chủ đạo của mạng Internet
thế hệ mới, giữ vai trò giống như giao thức TCP/IP đối với mạng Internet hiện nay.
Ở Việt Nam hiện nay, Grid Computing đang còn là một vấn đề khá mới mẻ.
Đã có một số nhóm, tổ chức nghiên cứu về Grid Computing, tuy quy mô và điều kiện
nghiên cứu còn rất hạn chế. Nhận thấy những ý nghĩa thiết thực của Grid Computing
có thể mang lại trong tương lai, nhóm sinh viên chúng tôi quyết định đi vào nghiêu
cứu Grid Computing về công nghệ và phát triển ứng dụng mang tính thực tiễn trong
cuộc sống.
Các chương trình chạy trên môi truờng mạng lưới có một số ưu điểm nổi trội
hơn so với các chương trình chạy trên máy tính thông thường. Chẳng hạn như: thời
gian xử lý công việc ngắn hơn nhờ khả năng tính toán song song, hiệu suất sử dụng tài
nguyên tính toán cao hơn nhờ khả năng phân tán tài nguyên. v.v... Với những ưu điểm
đó của các chương trình Grid, chúng tôi nghiên cứu đề tài: “Nghiên cứu phát triển ứng
dụng trên Grid”.
Đề tại được chia thành các chương, nội dung chính của các chương gồm có:
Chương 1: Cơ bản về Grid Computing?
Chương này giới thiệu khái niệm Grid Computing để có thể hình dung được
thế nào là Grid Computing và các khả năng mà Grid Computing có thể thực hiện được.
Chương 2: Các thuật ngữ và khái niệm
Grid Computing là lĩnh vực công nghệ khá mới mẻ nên xuất hiện nhiều thuật
ngữ mới. Để có thể đi sâu vào nghiêu cứu Grid, chương này giới thiệu các thuật ngữ
và khái niệm được dùng trong Grid.
Chương 3: Người dùng trong mạng Grid Computing
Chương này mô tả các cấp độ người dùng trong mạng Grid.
Chương 4: Một số chuẩn trong môi trường Grid
Chương này giới thiệu một số công nghệ chuẩn trong Grid Computing.
1
Chương 5: Tổng quan về dịch vụ Web
Dịch vụ Web là cơ sở cho dịch vụ Grid. Chương này giới thiệu các công nghệ
của dịch vụ Web.
Chương 6: Cơ chế tài nguyên của dịch vụ Web - WSRF
Chương này giới thiệu một chuẩn của dịch vụ Grid, đó là WSRF
Chương 7: An ninh trong Mạng Grid
Bảo mật là vấn đề quan trọng trong mạng Grid Computing. Chương này đề
cập đến những yêu cầu trong vấn đề bảo mật của Grid Computing
Chương 8: Các thành phần của Globus Toolkit 4.0
Globus Toolkit 4.0 là công cụ nền tảng để phát triển các ứng dụng Grid, đang
được sử dụng phổ biến hiện nay. Chương này giới thiệu một số thành phần của bộ
công cụ này.
Chương 9: Cài đặt và cấu hình Globus Toolkit 4.0
Chương này hướng dẫn cài đặt bộ công cụ Globus Toolkit 4.0.
Chương 10: Các bước lập trình một chương trình Grid
Chương này giới thiệu các bước tiến hành xây dựng một chương trình Grid.
Chương 11: Tự xây dựng một dịch vụ Grid: Bài toán Số nguyên tố
Chúng tôi xây dựng một ứng dụng mang tính thực tiễn, đó là bài toán: Số
nguyên tố.
Mỗi thành viên trong nhóm thực hiện một số chương nhất định, cụ thể như
sau:
Từ Chương 1 đến Chương 3: Ngô Cao Cường.
Từ Chương 4 đến Chương 7: Trần Thiện Thịnh.
Từ Chương 8 đến Chương 10: Lê Bá Dũng.
Chương 11: Chương trình Số nguyên tố được tất cả các thành viên cùng
thiết kế và cùng tìm hiểu thuật toán. Các module chương trình được phân chia
như sau:
2
Ngô Cao Cường viết các module quản lý các tài nguyên trong
Service bao gồm các lớp: PrimeResource, PrimeFactoryService và
PrimeResouceHome.
Lê Bá Dũng viết các module tìm kiếm và phân phối các công việc
trong Service bao gồm các lớp: PrimeService và PrimePKC.
Trần Thiện Thịnh viết chương trình Client.
3
Chương 1.Cơ bản về Grid Computing
Chương này mô tả định nghĩa về Grid computing và các lợi ích chính của Grid
computing bao gồm:
Khai thác tài nguyên xử lý
Khả năng xử lý song song
Cộng tác các tài nguyên ảo và tổ chức ảo
Truy cập tới các tài nguyên khác
Cân bằng tài nguyên
Tính tin cậy
Khả năng quản lý
1.1. Grid Computing là gì?
Có nhiều cách khác nhau để định nghĩa thế nào là Mạng tính toán lưới (Grid
Computing). Để có thể hình dung Grid Computing là gì, chúng ta có thể tưởng tượng
nó như một mạng lưới điện mà mọi người chỉ cần cắm phích điện vào để sử dụng mà
không cần biết nguồn điện từ đâu đến.Tương tự như vậy, trong Grid Computing, một
người dùng nào đó có thể truy nhập vào các tài nguyên (bao gồm: bộ xử lý, ổ lưu trữ,
dữ liệu...) mà không cần biết các tài nguyên này nằm ở đâu, chúng dùng công nghệ gì,
cấu hình phần cứng như thế nào,.v.v.
Grid computing đã phải trải qua nhiều công đoạn hợp nhất các công nghệ và
giải pháp để đạt được thành quả như hiện nay. Nhân tố cơ bản của Grid là công nghệ
phân tán các thiết bị tính toán. Với công nghệ này, ta có thể chia sẻ tài nguyên và liên
kết các tổ chức lại với nhau. Đây còn gọi là công nghệ ảo hóa. Để có được một môi
trường hỗn hợp có thể chia sẻ tài nguyên, ngoài công nghệ ảo hóa, Grid còn dùng các
công nghệ khác trong các lĩnh vực lập lịch, tài chính, bảo mật,.v.v.
Sự ảo hóa trong môi trường grid có nhiều cấp độ khác nhau. Mỗi cấp độ phụ
thuộc vào phạm vi và tính đồng nhất của tổ chức. Hình 1 mô tả từng cấp độ của sự ảo
hóa từ đơn giản đến phức tạp khi đi theo chiều từ trái sang phải. Ở hình trái nhất là tổ
chức đồng nhất, đơn tài nguyên. Tài nguyên ở đây có thể là CPU, ổ lưu trữ,các thiết bị
và chương trình. Tiếp đến là hệ thống hỗn hợp gồm nhiều tài nguyên khác nhau. Cấp
4
độ ảo hóa phức tạp hơn là ảo hóa trong một xí nghiệp. Hình bên phải là mức độ ảo hóa
cao nhất với phạm vi trên toàn mạng Internet, bao gồm các đa tổ chức hỗn hợp.
1.2. Lợi ích của Grid Computing
1.2.1. Khai thác tài nguyên xử lý
Một trong những tính năng cơ bản của tính toán mạng lưới là khả năng chạy
một chương trình trên nhiều máy tính khác nhau. Trong một mạng lưới bao gồm nhiều
máy tính, có một số máy ở trạng thái bận do khối lượng công việc lớn, một số khác ở
trạng thái rỗi do khối lượng công việc nhỏ.
Trong hầu hết các tổ chức, luôn có những khối lượng lớn những tài nguyên
dùng để tính toán. Trung bình mỗi ngày, mỗi máy tính có thời gian trung ở trạng thái
thái bận là 5%. Điều đó chứng tỏ khối lượng tài nguyên rỗi trong một mạng là rất lớn.
Grid cung cấp một khung làm việc (framework) để tận dụng những tài nguyên này và
vì thế có thể tăng hiệu quả trong việc sử dụng các tài nguyên.
Ngoài tài nguyên xử lý, tài nguyên lưu trữ cũng được sử dụng hiệu quả hơn
nhờ Grid computing. Grid tận dụng các dung lượng đĩa cứng còn trống trong các máy
tính để tập hợp thành một tài nguyên lưu trữ ảo trọng mạng.
5
Hình 1: Sự ảo hóa với nhiều cấp độ
1.2.2. Khả năng xử lý song song
Khả năng kết hợp nhiều CPU cùng xử lý song song là một tính năng hấp dẫn
của Grid computing.
Các chương trình chạy trên môi trường Grid sử dụng các thuật toán để phân
chia công việc xử lý thành nhiều thành phần độc lập. Mỗi CPU trên mỗi máy tính
trong mạng đảm nhận việc xử lý một hay nhiều thành phần đó. Tính độc lập của các
thành phần càng cao thì chương trình càng dễ dàng được mở rộng trên phạm vi mạng
lưới nhiều máy tính hơn. Một mạng lưới được gọi là hoàn hảo nếu với mười máy tính,
tốc độ xử lý của mạng tăng lên gấp mười. Tuy nhiên, trên thực tế không có mạng lưới
hoàn hảo.
Có hai lí do chính để mạng lưới trên thực tế không thể trở thành hoàn hảo.
Thứ nhất là: việc sử dụng thuật toán phân chia công việc ảnh hưởng lớn đến hiệu năng
tính toán chung của mạng. Thứ hai là: các thành phần của công việc không hoàn toàn
độc lập với nhau.
Không phải ứng dụng nào cũng có thể chuyển đổi để Grid có thể xử lý song
song. Hơn nữa, không có một công cụ nào có thể chuyển đổi một ứng dụng bất kỳ
sang dạng chạy song song trên grid. Khả năng xử lý song song của một chương trình
trên mạng lưới phụ thuộc vào người thiết kế, và đó không phải là công việc đơn giản.
1.2.3. Sự cộng tác các tài nguyên ảo và tổ chức ảo
Một khả năng khác của grid computing là tạo nên môi trường cộng tác rộng
lớn, đồng nhất. Mỗi môi trường đó được gọi là một tổ chức ảo. Grid computing thậm
chí có khả năng tạo nên một môi trường rộng lớn hơn bằng cách kết hợp các tổ chức
ảo, không đồng nhất với nhau để cùng cộng tác với nhau. Hình 2 mô tả môi trường
không đồng nhất đó. Mỗi người sử dụng mạng lưới được phân bổ vào một tổ chức ảo
nào đó. Các tổ chức ảo này có thể chia sẻ tài nguyên với nhau như một mạng lưới lớn.
Chia sẻ tài nguyên bắt đầu với dữ liệu dạng tệp hay cơ sở dữ liệu. Lưới dữ liệu
có thể mở rộng dữ liệu theo nhiều cách khác nhau. Đầu tiên, tệp hay cơ sở dữ liệu có
thể được trải rộng trên nhiều hệ thống tạo nên dung lượng lớn hơn rất nhiều so với hệ
thống đơn. Cách trải dữ liệu này có thể tăng tốc độ truyền dữ liệu với công nghệ
striping. Dữ liệu thường xuyên được sao lưu phục vụ cho việc khôi phục dữ liệu.
Ngoài việc chia sẻ tài nguyên là các tệp và cơ sở dữ liệu, ta có thể chia sẻ
nhiều tài nguyên khác, như các thiết bị chuyên dụng, phần mềm, dịch vụ, ...Những tài
6
nguyên này được “ảo hóa” để giữ chúng đồng bộ trong một hệ thống mạng luới không
đồng nhất. Các tài nguyên đó gọi là các tài nguyên ảo.
Những người tham gia hay sử dụng grid là một thành viên trong một tổ chức
nào đó. Grid có thể yêu cầu người dùng đó tuân thủ các luật lệ, quyền hạn sử dụng, từ
đó có thể giải quyết được các vấn đề về ưu tiên, bảo mật,...
1.2.4. Sự truy cập tới các tài nguyên khác
Ngoài CPU và tài nguyên lưu trữ, Grid còn có thể truy nhập đến những tài
nguyên khác. Các tài nguyên này có thể được cung cấp dưới dạng số lượng hoặc khả
năng lưu trữ, băng thông. Ví dụ, nếu một người muốn tăng băng thông truy nhập
Internet để thực hiện việc khai thác dữ liệu tìm kiếm, công việc này có thể phân chia
giữa các máy trong mạng grid có đường truyền Internet không phụ thuộc nhau. Trong
trường hợp này, khả năng tìm kiếm được nhân lên, khi mỗi máy có đường truyền riêng
biệt. Nếu các máy chia sẻ đường kết nối Internet, thì nó sẽ không tăng băng thông.
Trong một mạng lưới, một số máy tính nào có thể được cài đặt những phần
mềm đắt tiền, có bản quyền mà một máy khác không có. Người sử dụng máy tính
7
Hình 2: Mạng grid ảo không đồng nhất
không cài đặt phần mềm đó có thể sử dụng phần mềm này bằng cách gửi công việc
đến máy tính được cài phần mềm để yêu cầu xử lý. Đó là khả năng tận dụng phần
mềm của Grid.
Một vài máy tính có thể có những thiết bị đặc biệt, chẳng hạn như máy in. Hầu
hết các máy in được sử dụng từ xa. Grid có thể chia sẽ được những thiết bị đặc biệt
này. Thậm chí grid có thể chia sẻ những thiết bị, tài nguyên phức tạp như máy chuẩn
đoán bệnh hay robot hỗ trợ phẫu thuật
1.2.5. Cân bằng tài nguyên
Grid liên kết các tài nguyên từ nhiều máy khác nhau tạo thành một hệ thống
duy nhất. Grid có thể thực hiện cân bằng tài nguyên trong các chương trình bằng cách
lập lịch làm việc cho các công việc, như hình 3 dưới đây. Chức năng này có ý nghĩa rất
lớn trong việc xử lý các trường hợp quá tải về xử lý, tính toán trong một tổ chức. Chức
năng cân bằng có thể được thực theo 2 cách sau:
Những điểm quá tải được đưa đến những máy rỗi trên mạng lưới.
Nếu toàn mạng grid đã bận, những công việc có độ ưu tiên thấp được
tạm ngừng nhường cho những công việc khác có độ ưu tiên cao.
Đôi khi có những công việc đột ngột được tăng độ ưu tiên do cần hoàn thành
gấp. Grid không thể xử lý được những công việc cần hoàn thành quá gấp. Tuy nhiên
grid có thể phân chia nó thành nhiều công việc nhỏ và huy động một lượng lớn tài
nguyên để xử lý nó một cách nhanh nhất.
8
Hình 3: Công việc được chuyển đến phần ít bận hơn trong mạng
Một lợi ích khác khi dùng grid là cân bằng tải. Khi một công việc liên lạc với
một công việc khác, với Internet, hoặc các tài nguyên khác, Grid có thể lập lịch cho
chúng để có thể giảm thiểu tối đa lưu lượng đường truyền cũng như khoảng cách
truyền. Điều này giúp Grid có thể giảm thiểu tắc nghẽn mạng.
Cuối cùng, Grid còn có khả năng thương mại tài nguyên. Các trạng thái của tất
cả các tài nguyên trong mạng được Grid quản lý. Các tổ chức trên grid có thể tạo tài
khoản và trả tiền để sử dụng các tài nguyên này khi cần thiết. Điều này tạo nên tài
chính mạng lưới.
1.2.6. Độ tin cậy
Những hệ thống tính toán mạnh sử dụng phần cứng đắt tiền để tăng độ tin cậy.
Chúng sử dụng bộ xử lý kép để khi hỏng hóc có thể thay thế bộ xử lý thứ hai mà
không cần tắt hệ thống. Các nguồn và hệ thống làm mát cũng đều được nhân bản. Hệ
thống còn sử dụng một nguồn đặc biệt có thể phát điện khi nguồn điện bị mất. Tất cả
chúng tạo nên một hệ thống tin cậy, tuy nhiên, giá thành cho hệ thống này rất cao.
Trong tương lại, một mạng lưới có thể có khả năng thay thế một hệ thống đáng
tin cậy như thế. Grid mới chỉ bắt đầu công nghệ này. Mô hình máy chủ đáng tin cậy sử
dụng Grid có thể được mô tả như sau. Một mạng lưới gồm nhiều máy tính được phân
bố khắp nới. Do đó, khi có một sự cố tại một nốt mạng nào đó trên mạng lưới, các
điểm khác sẽ không bị ảnh hưởng. Khi một máy tính bị hỏng hóc, phần mềm quản lý
trong Grid có thể tự động chuyển công việc xử lý từ máy này đến một máy nào đó
trong mạng. Trong trường hợp quan trọng, nhiều bản sao của công việc được tạo ra và
được chuyển đến nhiều máy khác nhau trên mạng lưới như hình 4 dưới đây.
9
Những hệ thống grid như thế sẽ tạo nên khả năng tính toán tự động. Nó là một
dạng phần mềm có khả năng tự sửa lỗi trên grid, trước khi thông báo cho bộ xử lý hay
người quản lý biết. Về nguyên tắc, hầu hết những hệ thống tin cậy đắt tiền ngày nay
dựa vào phần cứng hoàn toàn cũng có thể dùng phần mềm để tạo nên sự tin cậy đó.
1.2.7. Khả năng quản lý
Việc ảo hóa tài nguyên và nhiều hệ thống hỗn hợp được tạo ra trên grid sẽ tạo
nên quy mô rộng hơn, các thiết bị được phân phối nhiều hơn. Nó làm cho các nhà
doanh nghiệp dễ dàng quản lý chi phí và tài nguyên tính toán trên phạm vi lớn.
Grid quản lý độ ưu tiên giữa các dự án. Trước đây, mỗi dự án quản lý riêng tài
nguyên và chi phí của nó. Có thể những tài nguyên đang rỗi trong khi các dự án khác
gặp sự cố, cần thêm những tài nguyên khác. Với tầm nhìn bao quát, grid có thể giải
quyết dễ dàng tình huống này. Trong hình 5, nhà quản lý có thể thay đổi các quyền hạn
với tài nguyên để các tổ chức khác có thể chia sẻ hay sử dụng.
10
Hình 4: Nhiều bản sao của công việc được tạo ra
11
Hình 5: Nhà quản trị có thể điều chỉnh chính sách thích hợp với tài nguyên
Chương 2.Các thuật ngữ và khái niệm
2.1. Các kiểu tài nguyên
Một mạng grid là tập hợp máy móc, đôi khi là các nút, thành viên, người
quyên góp, máy chủ, khách... Tất cả chúng tạo nên tài nguyên của grid. Một vài tài
nguyên có thể được sử dụng bởi tất cả mọi người sử dụng trên grid, trong khi số khác
được giới hạn sử dụng.
3.1.1. Tài nguyên tính toán
Tài nguyên thường thấy nhất trên grid là tài nguyên tính toán được cung cấp
bởi các bộ xử lý trên các máy của grid. Các bộ xử lý có thể khác nhau về tốc độ, kiến
trúc, hay các thiết bị đi kèm như bộ nhớ, ổ lưu trữ. Có ba cách chính để tận dụng tài
nguyên tính toán trên grid.
Cách đầu tiên đơn giản nhất là chạy ứng dụng trên một máy đang rỗi trên grid.
Cách thứ hai là phân chia ứng dụng thành nhiều phần rồi chạy song song trên
các bộ xử lý khác nhau.
Cách thứ ba là chạy ứng dụng, cần được xử lý nhiều lần, trên nhiều máy khác
nhau trên grid. Khả năng mở rộng là thước đo bộ xử lý được sử dụng trên grid hiệu
quả như thế nào. Nếu hai bộ xử lý hoàn thành ứng dụng trong một nửa thời gian, đó là
sự phân chia hoàn hảo. Tuy nhiên có giới hạn như đã nói ở trên khi một ứng dụng chỉ
có thể phân chia thành một số giới hạn các phần độc lập với nhau.
3.1.2. Kho lưu trữ
Tài nguyên thứ hai được sử dụng thường xuyên trong grid là kho lưu trữ. Một
mạng lưới kết hợp các kho dữ liệu thường được gọi là “lưới dữ liệu” (data grid). Mỗi
máy trên grid thường cung cấp cho grid một số lượng kho lưu trữ nhất định. Kho lưu
trữ có thể là bộ nhớ trong hoặc bộ nhớ thứ cấp – đĩa cứng. Bộ nhớ trong có tốc độ
nhanh nhưng chỉ lưu trữ tạm thời. Nó có thể dùng làm dữ liệu đệm để chạy chương
trình.
Bộ nhớ thứ cấp có thể dùng để tăng khả năng lưu trữ, hiệu năng, hay độ tin
cậy dữ liệu. Nhiều hệ thống grid hiện nay dùng các hệ thống tệp AFS( Andrew File
System) , NFS (Network File System), DFS (Distributed File System), GPFS (General
12
Parallel File System. Chúng có tốc độ khác nhau, mức bảo mật và độ tin cậy cũng khác
nhau.
Sức lưu trữ có thể tăng bằng cách sử dụng ổ lưu trữ trên nhiều máy khác nhau
với hệ thống tệp hợp nhất. Mỗi tệp hay CSDL có thể lưu trữ trên một vài máy hay vài
ổ đĩa trên mạng grid. Một hệ thống tệp hợp nhất có thể tạo nên một tên hợp nhất cho
các ổ lưu trữ trên grid. Điều này tạo điều kiện cho người sử dụng có thể dễ dàng truy
cập dữ liệu mà không cần biết vị trí chính xác của nó.
Các hệ thống tệp tiến bộ trên grid có khả năng tự động nhân bản dữ liệu, để
tăng độ tin cậy và tốc độ. Một bộ lập lịch thông minh trên grid có khả năng lựa chọn
những thiết bị lưu trữ thích hợp để lưu trữ dữ liệu, dựa vào những mẫu đã sử dụng.
Một hệ thống tệp grid còn có thể ghi nhật ký để dữ liệu có thể được khôi phục
dễ dàng khi gặp sự cố. Ngòai ra, các hệ thống tệp còn có cơ chế chuẩn hóa để tránh
xung đột khi nhiều user cùng chia sẻ và cập nhật dữ liệu
3.1.3. Truyền thông
Sự phát triển nhanh chóng của truyền thông ngày nay đã tạo nên grid. Chính vì
vậy mà một trong những tài nguyên quan trọng khác của grid là khả năng truyền dữ
liệu, bao gồm cả khả năng truyền dữ liệu trong grid hay ra ngoài mạng grid. Khả năng
truyền dữ liệu trong grid là quan trọng để lập lịch và gửi các công việc. Băng thông
giới hạn sẽ ảnh hưởng tới hiệu năng của grid.
Truyền thông ngoài mạng grid ra Internet, ví dụ, như khi xây dựng một hệ
thống tìm kiếm. Các máy trong grid ngoài việc liên kết với nhau còn phải nối ra ngoài
Internet. Khi các đường kết nối của các máy này không cùng chia sẻ đường truyền
Internet, chúng sẽ góp phần nâng tổng băng thông của grid lên.
3.1.4. Phần mềm và bản quyền
Grid có thể có những phần mềm đắt tiền không thể cài đặt lên toàn bộ máy
trong mạng. Khi sử dụng grid, những công việc cần dùng phần mềm này sẽ được gửi
tới máy có cài phần mềm. Điều này có thể giúp các tổ chức tiết kiệm chi phí rất nhiều.
Một vài phần mềm có điều khỏan cho phép cài trên tất cả các máy trong grid
nhưng lại hạn chế số máy có thể chạy đồng thời một lúc. Chương trình quản lý giấy
phép sẽ kiểm tra có bao nhiêu thể hiện của phần mềm đang chạy và ngăn chặn chúng
chạy quá số lượng đã mua.
13
3.1.5. Các thiết bị đặc biệt, sức chứa, kiến trúc và quyền hạn
Các nền tảng trên grid thường sẽ yêu cầu các kiến trúc, hệ điều hành, thiết bị
khác nhau. Mỗi chúng là một loại tài nguyên mà grid sẽ sử dụng để thực hiện các công
việc khác nhau. Một vài phần mềm chỉ có thể chạy trên những yêu cầu về phần cứng
nhất định, chẳng hạn như x86 hay PowerPC. Những thuộc tính này cần được xem xét
khi đưa các công việc vào thực thi.
Trong vài trường hợp, nhà quản trị có thể tạo ra những tài nguyên nhân tạo
được sử dụng bởi bộ lập lịch để phân công công việc. Ví dụ, một vài máy tính được
thiết kế chỉ để dùng cho nghiên cứu y khoa. Khi có một công việc nghiên cứu y khoa
thì bộ lập lịch sẽ phân công cho các máy trên thực hiện công việc đó. Một vài máy
khác chỉ tham gia vào grid khi nó không được dùng cho mục đích quân sự. Trong
trường hợp này, những công việc yêu cầu tài nguyên quân sự sẽ không được phân bổ
cho các máy trên. Các nhà quản trị phải phân loại các công việc để thực hiện phương
pháp này.
2.2. Công việc và ứng dụng
Dù rất nhiều loại tài nguyên của grid được chia sẻ và sử dụng, chúng luôn luôn
được truy cập thông qua ứng dụng hay công việc. Chúng ta dùng định nghĩa “ứng
dụng” như là cấp cao nhất của công việc trên grid. Tuy nhiên từ “công việc” cũng
được dùng với nghĩa tương đương. Ứng dụng có thể được chia thành nhiều công việc,
như hình 6 dưới đây. Các công việc, có thể được chia tiếp thành các công việc nhỏ
hơn. Grid còn dùng các thuật ngữ giao dịch, đơn vị công việc để chỉ công việc.
Công việc là những chương trình được thực thi trên một điểm của grid. Chúng
có thể là thực hiện tính toán, thi hành một câu lệnh, di chuyển dữ liệu. Một ứng dụng
grid được tổ chức như tập hợp các công việc được thiết kế để chạy song song trên các
máy khác nhau.
14
Các công việc có thể bị phụ thuộc lẫn nhau nên không phải lúc nào cũng có
thể cùng một lúc chạy song song. Ví dụ, chúng ta có một công việc yêu cầu dữ liệu
đầu vào phải được copy đến một máy. Một vài công việc khác đòi hỏi dữ liệu đầu ra,
nhưng chúng không thể thực thi nếu công việc trước chưa được hoàn thành. Một công
việc có thể sinh ra nhiều công việc con khác nhau. Sau đó, dữ liệu của tất cả các công
việc con được tập hợp để tạo nên kết quả cuối cùng của ứng dụng.
2.3. Lập lịch, đặt chỗ, và quét dọn
Hệ thống grid có nhiệm vụ gửi các công việc đến các máy cần thiết để thực
thi. Với hệ thống grid đơn giản nhất, người sử dụng sẽ chọn máy thích hợp cho công
việc của anh ta sau đó thực hiện dòng lệnh để đưa công việc đó đến máy đã chọn. Các
hệ thống grid hiện đại hơn bao gồm một bộ lập lịch có tác dụng tự động tìm kiếm
những máy tính thích hợp cho công việc đang chờ đợi thực thi.
Trong các hệ thống grid quét dọn, mỗi máy tính rỗi sẽ gửi thông báo tình trạng
của mình đến điểm quản lý của grid. Điểm quản lý này sẽ chỉ định cho máy này thực
hiện công việc tiếp theo mà máy có thể thực thi được. Việc này được thực hiện một
cách kín đáo đối với những người sử dụng bình thường. Nếu máy tính bận với những
15
Hình 6: Một ứng dụng có thể là một hay nhiều công việc được lập lịch chạy trên grid
công việc riêng của máy, thì công việc grid sẽ tạm ngưng. Điều này khiến cho khó có
thể tính trước được thời gian sẽ hoàn thành công việc trên grid.
Ứng dụng chạy ở chế độ quét dọn sẽ đặt nó vào trong hệ thống với độ ưu tiên
thấp nhất. Vì thế, nó sẽ chỉ được chạy khi không có bất cứ chương trình nào khác đang
chạy. Với những bộ xử lý tốc độ cao ngày nay, ứng dụng grid có thể chạy trong vài
phần trăm giây, thậm chí là giữa các lần bấm phím của người dùng.
Để có thể dự đoán dễ dàng hơn, các máy tính grid thường được thiết kế riêng
cho grid và không bị chi phối bới các công việc khác. Điều này cho phép bộ lập lịch có
thể tính toán thời gian trung bình để hoàn thành các công việc.
Các tài nguyên trong grid có thể được đặt chỗ trước với một tập hợp công
việc. Sự đặt chỗ này giống như hệ thống sắp xếp đặt phòng. Nó bảo đảm sự hoàn
thành đúng hạn và chất lượng dịch vụ. Khi quyền hạn được thông qua, tài nguyên đặt
chỗ có thể được quét dọn để chạy những công việc có độ ưu tiên thấp trong khi chờ
những công việc đã đặt trước nó. Với sự kết hợp của lập lịch, đặt chỗ, quét dọn có thể
tạo nên một grid hoản hào.
Lập lịch và đặt chỗ có thể tiến hành dễ dàng nếu chỉ có một tài nguyên tham
gia, như CPU. Tuy nhiên việc tối ưu trên grid sẽ dùng nhiều tài nguyên cho việc đặt
chỗ vào lập lịch. Ví dụ, chúng ta luôn mong muốn công việc sẽ được phân công cho
máy gần dữ liệu mà công việc dùng nhất. Điều đó sẽ giảm lưu lượng băng thông và
tăng khả năng mở rộng. Chính vì vậy, bộ lập lịch sẽ sử dụng đến kinh nghiệm. Kinh
nghiệm này sẽ tìm ra sự kết hợp tốt nhất cho lập lịch và đặt chỗ để đạt hiệu quả cao
nhất.
2.4. Các gói phần mềm grid
3.4.1. Gói quản lý
Tất cả các hệ thống mạng lưới grid đều có những gói phần mềm quản lý. Thứ
nhất, đó là những phần mềm để quản lý tài nguyên và người sử dụng trên mạng. Đây
là những thông tin chính dùng để quyết định các công việc trên grid sẽ được phân bổ
đến đâu.
Thứ hai, có các gói phần mềm đo đạc để quyết định dung lượng các nốt trên
lưới và tình trạng của các nốt này. Các thông tin này dùng để lập lịch các công việc
trên lưới. Chúng còn được dùng để đánh giá tình trạng của grid, để cảnh báo các vấn
16
đề như ngừng hoạt động, tắc nghẽn. Chúng còn được dùng để lựa chọn các mẫu và
thống kê.
Thứ ba, các hệ thống phần mềm hiện đại của grid có khả năng tự động quản lý
tất cả các mặt của mạng lưới. Đó là tự động tính toán, tự động khôi phục lỗi. Các phần
mềm sẽ tự động khôi phục từ tình trạng tắc nghẽn, quá tải, đưa công việc trở lại bình
thường.
3.4.2. Gói lập lịch
Hầu hết các hệ thống grid có chứa phần mềm lập lịch. Phần mềm này nằm ở
trên máy chạy công việc được yêu cầu bởi người sử dụng. Trong trường hợp đơn giản
nhất, nó chỉ đơn giản là phân bổ công việc cho máy có cấu hình tài nguyên phù hợp.
Tuy nhiên, trong các bộ lập lịch nâng cao thì còn rất nhiều công việc phải làm.
Một vài bộ lập lịch có hệ thống ưu tiên công việc. Nó được thực hiện với hàng
đợi công việc, mỗi công việc có độ ưu tiên khác nhau. Nếu một máy tính sẵn sàng để
thực hiện công việc tiếp theo, công việc có độ ưu tiên cao nhất sẽ được đưa vào thực
hiện. Chính sách cũng được đưa vào trong bộ lập lịch. Chính sách bao gồm nhiều ràng
buộc về công việc, người sử dụng, hay tài nguyên. Ví dụ, có chính sách cấm một công
việc được thực thi tại một thời điểm nhất định.
Bộ lập lịch luôn luôn ảnh hưởng trực tiếp đến tải của mạng. Chúng sử dụng bộ
đo đạc để xác định tình trạng xử lý hiện thời của một máy để xem chúng đang bận hay
rỗi. Bộ lập lịch có thể tổ chức theo dạng thừa kế. Ví dụ, một bộ lập lịch lớn có thể đưa
công việc cho bộ lặp lịch cụm hoặc các bộ lặp lịch ở cấp thấp hơn.
Các bộ lặp lịch tiến bộ hơn sẽ quản lý tình trạng công việc trong lưu lượng làm
việc chung. Nếu một công việc bị mất do mạng hay hệ thống bị trục trặc, một bộ lặp
lịch tốt sẽ tự động đưa công việc vào thưc hiên ở một nơi khác. Tuy nhiên nếu công
việc đã bị quá thời gian quy định, chúng không thể được lập lịch lại.
Việc đặt chỗ trước tài nguyên trên grid được thực hiện thông qua hệ thống đặt
chỗ. Nó hơn cả một bộ lặp lịch. Đầu tiên nó là hệ thống lịch cho việc đặt chỗ trước tài
nguyên và bảo vệ những công việc khác dùng tài nguyên này. Hơn nữa nó có thể tạm
ngừng hoặc thậm chí ngừng hẳn công việc đang chạy ở một máy khi hạn đặt chỗ đã
đến, máy phải phục vụ cho công việc đã đặt trước.
17
3.4.3. Các gói truyền thông
Một mạng grid thường có các gói giúp công việc liên lạc giữa các máy. Ví dụ,
một công việc được chia thành nhiều công việc nhỏ. Mỗi công việc nhỏ này là một
phân mảnh trên grid. Tuy nhiên, ứng dụng cần tất cả các phân mảnh này liên lạc với
nhau. Một phân mảnh cần liên lạc với các phần còn lại, thiết lập đường truyền, và gửi
dữ liệu cần thiết. Chuẩn mở Message Passing Interface (MPI) thường được dùng trong
grid giúp việc truyền thông dữ liệu hiệu quả hơn.
3.4.4. Gói quan sát và đo đạc
Như đã nói ở trên bộ lập lịch tác động tới tải của lưới. Thường thì grid sẽ bao
gồm một vài công cụ cho phép tính toán tải hiện thời và các hoạt động trên các máy.
Phần mềm này đôi khi được gọi là bộ cảm ứng tải.
Sự tính toán thông tin trên không chỉ dùng lập lịch mà nó còn được dùng để
phát hiện các mẫu chung thường được sử dụng. Số liệu thống kê có thể đưa ra xu
hướng cần thêm các phần cứng mới. Các số liệu đo đạc của một công việc cụ thể có
thể được thu nhặt để dự đoán tài nguyên cho lần chạy tiếp theo. Dự đoán tốt thì grid sẽ
hoạt động hiệu quả cao hơn.
Các số liệu đo đạc cũng có thể dùng cho mục đích tài chính, hoặc các nhà
phân phối tài nguyên, hay quản độ ưu tiên.
2.5. Các cấu hình mạng grid
Grid có thể được xây dựng với mọi kích cỡ, từ một vài máy cho đến nhiều tập
hợp máy trên khắp thế giới. Trong phần này, chúng ta sẽ miêu tả một vài mô hình grid
với kích cỡ khác nhau.
18
Như hình trên, một mạng grid đơn giản nhất gồm một vài máy, tất cả giống
nhau về cấu hình phần cứng và hệ điều hành, nối vào mạng nội bộ. Kiểu mạng này
dùng hệ thống đồng nhất và có thể được sử dụng cho những ứng dụng chuyên môn.
Các máy này thường là một bộ phận của một tổ chức, và chúng không yêu cầu một
quyền hạn đặc biệt hay các chính sách bảo mật. Vì chúng có chung hệ điều hành và
phần cứng nên việc lựa chọn phần mềm là rất dễ dàng. Nhiều người gọi chúng là
cụm máy tính (cluster) hơn là lưới (grid).
Mô hình tiếp theo bao gồm nhiều máy hỗn hợp khác nhau. Với cấu hình
này, sẽ có nhiều loại tài nguyên hơn. Hệ thống grid sẽ phải có thành phần lập lịch.
Các máy trong mạng có thể ở các bộ phận khác nhau nhưng thường ở cùng một tổ
chức. Cấu hình này thường được gọi là intragrid.
Khi grid được mở rộng đến nhiều bộ phận khác nhau, quyền hạn được yêu
cầu để xem cách grid được sử dụng. Có nhiều độ ưu tiên khác nhau ở các bộ phận
hoặc ở các ứng dụng đối với từng loại tài nguyên trên grid. Các vấn đề về bảo mật
cũng được các tổ chức đề cập đến. Các dữ liệu nhạy cảm của bộ phận này được bảo
vệ để tránh truy cập ở các bộ phận khác. Các máy chuyên dụng phục vụ được đưa
vào để tăng tốc độ vào tin cậy của dịch vụ.
19
Hình 7 : Một mạng grid đơn giản
Mạng lưới grid có thể phát triển quy mô lớn về không gian khi các tổ chức
có các bộ phận ở những thành phố hay các nước khác nhau. Các đường truyền
chuyên dụng được sử dụng giữa các bộ phận này. Trong nhiều trường hợp, các
kênh VPN được sử dụng để kết nối các bộ phận của tổ chức qua Internet. Trong
trường hợp này, grid phải được thiết kế chặt chẽ để tránh xung đột.
Như hình 8 dưới đây, mạng lưới có thể phát triển liên tổ chức, để thực hiện
những dự án chung, như dự án tìm số nguyên tố lớn của GIMPS (Great Internet
Mersenne Prime Search). Mô hình này được gọi là intergrid. Mức bảo mật cao nhất
được sử dụng trong mô hình này. Các tài nguyên có thể được mua từ những nhà
cung cấp đáng tin cậy.
20
Hình 8 : Một mạng grid toàn cầu phức tạp
Chương 3.Người dùng trong mạng Grid Computing
Phần này mô tả về người dùng và nhà quản trị trong grid computing.
3.1. Người dùng bình thường
Mục này miêu tả những hoạt động trong môi trường grid dưới vai trò của một
người sử dụng bình thường.
3.1.1. Tham gia vào grid và cài đặt các phần mềm
Người dùng đầu tiên phải đăng ký tham gia vào grid và cài đặt các phần mềm
cần thiết trên máy của anh ta.
Đăng ký tham gia vào grid đòi hỏi xác thực cho vấn đề bảo mật. Người sử
dụng thông báo định danh (ID) của anh ta cho cơ quan chứng thực CA (Certificate
Authority). Cơ quan chứng thực cần chắc chắn rằng người sử dụng là có thật. CA cấp
một chứng chỉ đặc biệt cho phần mềm kiểm tra định danh của người dùng. Người dùng
có trách nhiệm giữ các thẻ chứng thực đã được phát.
Một khi người sử dụng đã được xác thực, phần mềm grid được cung cấp cho
người sử dụng để anh ta có thể cài lên máy của mình và sử dụng grid. Phần mềm này
tự động được cấu hình bởi hệ thống quản lý grid. Theo cách này, người sử dụng có thể
tiến hành cài đặt rất đơn giản. Trong các hệ thống ít tự động hơn, người dùng phải tự
hỏi điểm quản lý để biết được thông tin cấu hình chính xác. Người dùng cũng có thể
hỏi người quản trị grid định danh của anh ta trên grid.
3.1.2. Đăng nhập vào grid
Hầu hết các hệ thống grid đều yêu cầu người sử dụng phải đăng nhập vào hệ
thống với định danh đã được đăng ký. Có các hệ thống grid sử dụng chính hệ thống
định danh của grid để phân biệt người sử dụng. Cách này tỏ ra thuận tiện hơn với
người sử dụng, giúp tránh được vấn đề trùng lặp định danh giữa các máy. Nó làm cho
grid trông giống như một máy tính cực lớn hơn là một tập hợp các máy khác nhau.
Khi đã đăng nhập, người sử dụng có thể sử dụng truy vấn và đưa lên grid các
công việc cần thực hiện. Một vài hệ thống grid cho phép sử dụng chức năng truy vấn
khi chưa đăng nhập vào hệ thống hay thậm chí người sử dụng chưa đăng ký với grid.
21
3.1.3. Truy vấn và đưa công việc
Người dùng có thể truy vấn grid để xem grid bận như thế nào, các công việc
được tiến hành ra sao, hay để tìm kiếm các tài nguyên. Grid cung cấp công cụ truy vấn
bằng cả dòng lệnh và đồ họa (GUIs). Công cụ dòng lệnh tiện lợi khi người dùng muốn
viết một đoạn kịch bản (script) thực hiện một lô công việc. Ví dụ, người dùng muốn
thực hiện đồng thời tìm kiếm tài nguyên, đưa công việc lên tài nguyên đó, xem xét quá
trình thực hiện, và kết quả đưa ra.
Khi đưa các công việc lên grid người dùng phải làm ba bước.
Đầu tiên, dữ liệu đầu vào và các tệp thực thi được gửi đến máy thực hiện công
việc.
Thứ hai, công việc sẽ được thực thi trên các máy.
Thứ ba, kết quả chạy công việc sẽ được gửi trở lại người đưa công việc lên.
Khi công việc gồm nhiều công việc con khác nhau thì đòi hỏi phải thu nhặt
các kết quả và tập hợp chúng lại với nhau, thường được thực hiện bởi một ứng dụng ở
máy đã gửi công việc lên. Khi số lượng công việc con trở nên quá lớn, công việc thu
nhặt kết quả cũng có thể được phân tán ra nhiều máy khác nhau.
3.1.4. Cấu hình dữ liệu
Dữ liệu được sử dụng trong các công việc ở grid có thể ở trong hay ngoài
mạng grid. Các dữ liệu này có thể tạo nên lưu lượng giao thông rất lớn. Vì thế cần thiết
phải sắp xếp chúng để đạt được sự lưu thông nhỏ nhất trên grid.
Ví dụ, nếu có một số lượng lớn công việc con của một ứng dụng cần chạy
nhiều lần lặp lại, dữ liệu có thể được sao lưu đến các máy và sử dụng lại trong lần chạy
tiếp theo. Sẽ tốt hơn nếu chúng ta dùng các hệ thống tệp mạng (networded file system)
để chia sẻ dữ liệu, bởi vì với các hệ thống này dữ liệu sẽ được chuyển từ trung tâm đến
ứng dụng hiệu quả hơn.
3.2. Nhà quản trị
Mục này miêu tả những hoạt động trong môi trường grid dưới vai trò của một
người quản trị.
22
3.2.1. Cài đặt
Đầu tiên, hệ thống grid phải được cài đặt trên các máy đã được cấu hình. Các
máy này phải được kết nối với băng thông đủ rộng tới các máy khác trên mạng grid.
Cần dự đoán được các sự cố có thể xảy ra và đưa hệ thông hoạt động trở lại khi gặp
các sự cố này. Các máy trong mạng phải được cấu hình có khả năng khôi phục hệ
thống khi gặp hỏng hóc. Các dữ liệu quan trọng cần được theo dõi và sao lưu thường
xuyên.
Sau khi đã cài đặt, các phần mềm trong grid cần được cấu hình về địa chỉ và
định danh. Nhà quản trị có mọi quyền để quản lý grid.
3.2.2. Quản lý người dùng
Một trong các chức năng của nhà quản trị là quản lý người dùng. Nhà quản trị
có nhiệm vụ quản lý quyền hạn của những người dùng tren mạng. Khi một người dùng
đăng nhập vào hệ thống, định danh của họ phải được thông qua cơ quan chứng thực
CA. Người dùng này và thẻ chứng thực của họ được đưa vào danh sách người dùng
trên hệ thống grid. Trong nhiều trường hợp, nhà quản trị cần đưa thông tin của người
dùng đến các máy khác trên mạng.
3.2.3. Chứng thực
Cần phải đảm bảo mức bảo mật cao nhất cho grid vì grid được dùng để chạy
các công việc chứ không chỉ là để chia sẻ dữ liệu. Chính vì thế nó có thể nảy sinh
virus, “ngựa thành Troa”, hay các cuộc tấn công vào mạng grid. Cơ quan chứng thực
(Certificate Authority) là một phần rất quan trọng trong bảo mật của grid. Một tổ chức
có thể chọn cơ quan chứng thực ở ngoài và tự xử lý nó.
Những nhiệm vụ cơ bản của cơ quan chứng thực là:
Xác định định danh cửa người yêu cầu chứng thực.
Phân phát, xóa, lưu trữ chứng thực.
Bảo vệ máy chủ của cơ quan chứng thực.
Duy trì, bảo dưỡng tên và chứng thực của người dùng.
Hoạt động đăng nhập
Cơ quan chứng thực dùng hệ thống mã hóa khóa công khai. Trong hệ thống
này, khóa được đi theo cặp, khóa công khai và khóa bí mật. Một người có thể mã hóa
dữ liệu và người kia có thể giải mã nó. Khóa bí mật được người dùng giữ kín và không
để lộ cho ai khác biết. Khi người dùng dùng khóa bí mật để mã hóa, người nhận dùng
23
khóa công khai để giải mã nó. Tuy nhiên ai nhận được dữ liệu cũng có thể giải mã nó
khi biết khóa công khai. Nếu người gửi dùng mã hóa kép với cả khóa công khai và mã
bí mật, thì tạo ra sự bảo mật tốt hơn. Người nhận dùng khóa bí mật của anh ta để giải
mã, sau đó dùng khóa công khai của người gửi để giải mã lần hai.
3.2.4. Quản lý tài nguyên
Một nhiệm vụ khác của nhà quản trị là quản lý các tài nguyên trong mạng
grid. Nó bao gồm thiết lập các quyền sử dụng của người dùng đối với tài nguyên, theo
dõi tài nguyên, và quản lý hệ thống tài chính. Sử dụng các thống kê có thế giúp dự
đoán được xu hướng cần thêm phần cứng, giảm lãng phí phần cứng, cũng như điều
chỉnh độ ưu tiên và chính sách để đạt được kết quả chung tốt nhất.
Một vài gói phần mềm grid, như bộ lập lịch, sử dụng độ ưu tiên và các chính
sách để lập lịch. Nhà quản trị có trách nhiệm cấu hình các ưu tiên hay chính sách để
đạt được kết quả chung tốt nhất.
24
Chương 4.Một số chuẩn trong môi trường Grid
Tính toán mạng lưới có thể mô tả bằng nhiều khái niệm và có thể được định
nghĩa theo nhiều cách khác nhau. Nhưng về cơ bản nó cung cấp khả năng tính toán
phân tán và tận dụng các tài nguyên. Để có thể thống nhất và làm cho các tài nguyên
trên nhiều nền tảng phần cứng, phần mềm khác nhau có thể cùng tồn tại, và hoạt động
với nhau đòi hỏi phải có các chuẩn. Trong chương này chúng ta sẽ xem xét một số
chuẩn cơ bản được áp dụng cho tính toán mạng lưới.
Một số yêu cầu với tính toán mạng lưới:
Hỗ trợ việc thực thi chương trình trên nhiều nền tảng khác nhau
Cơ sở hạ tầng an toàn
Khả năng di chuyển, tái tạo và tập hợp dữ liệu
Khả năng phát hiện tài nguyên
Quản lí tài nguyên
Có nhiều chuẩn khác nhau cho mỗi yêu cầu kể trên. Sau đây là một số chuẩn
tiêu biểu.
4.1. Kiến trúc dịch vụ Grid mở - Open Grid Services Architecture (OGSA)
Kiến trúc dịch vụ Grid mở là một mở rộng của kiến trúc tính toán mạng lưới
nhằm kết hợp với kiến trúc dịch vụ Web (Web service), được phát triển bởi nhóm
Globus và IBM. Khái niệm này lần đầu tiên được đưa ra tại diễn đàn Grid toàn cầu
(Global Grid Forum), Toronto, Canada năm 2002.
Ý tưởng này bắt nguồn từ thực thế rằng hai công nghệ Grid và dịch vụ Web
tuy có cách tiếp cận khác nhau như cùng chung một mục đích: "Chia sẻ tài nguyên và
hỗ trợ tạo ra các tổ chức ảo". Trong kiến trúc dịch vụ Web, điều này được thực hiện
bằng cách chia sẻ dữ liệu, lôgic, và qui trình giao dịch thương mại giữa các thành viên
tham gia vào thương mại điện tử (một dạng tổ chức ảo). Đối với Grid, tổ chức ảo chia
sẻ cho nhau các tài nguyên tính toán và cơ sở dữ liệu nhằm mục đích giải quyết các bài
toán khoa học công nghệ. Cả hai loại tổ chức ảo nói trên đều không giới hạn về không
gian địa lý. Điểm khác biệt chính đó là "dịch vụ Web" nhắm tới các dịch vụ liên tục
(persistent), trong khi Grid hỗ trợ dịch vụ tạm thời (transient).
25
Một số quy ước đã được mô tả trong tài liệu đặc tả dịch vụ Grid bao gồm:
Cách thức tạo và khai thác dịch vụ Grid
Cách thức đặt tên và tham chiếu tới các thể hiện (instance) của dịch
vụ Grid.
Cách mô tả các giao diện cho dịch vụ Grid.
Hình 9: Kiến trúc OGSA
4.2. Cơ sở hạ tầng của dịch vụ Grid mở - Open Grid Service Infrastructure
(OGSI)
OGSI là một mở rộng của OGSA, OGSI định nghĩa các giao diện cụ thể cho
các dịch vụ thực thi các chức năng được định nghĩa trong OGSA.
Hơn nữa OGSI còn định ra các cơ chế cho việc khởi tạo, quản lí và trao đổi
thông tin giữa các dịch vụ Grid. Theo OGSI thì dịch vụ Grid là một dịch vụ Web mà
tuân theo một tập các giao diện và hoạt động, các giao diện và hoạt động này xác định
cách thức mà một client tương tác với dịch vụ Grid.
Các giao diện và hoạt động đó cùng với các cơ chế khác của OGSI về khởi tạo
và phát hiện dịch vụ Grid cung cấp một nền tảng cho môi trường Grid. OGSI cũng đưa
ra ngôn ngữ mô tả dịch vụ Web – Web serivce definition Language (WSDL) để mô tả
các giao diện.
26
Hình 10: Các thành phần trong OGSI
4.3. GridFTP
GridFTP là một giao thức truyền dữ liệu an toàn và tin cậy, với hiệu xuất cao
và tối ưu cho mạng diện rộng, có băng thông lớn. Giao thức GridFTP dựa trên nền
tảng của giao thức FTP với những mở rộng cho phù hợp với môi trường Grid. Các tài
liệu đặc tả về giao thức GridFTP có thể được tìm thấy trong diễn đàn Grid toàn cầu.
GridFTP sử dụng khả năng bảo mật cơ bản của Grid trên cả hai kênh: kênh
điều khiển và kênh dữ liệu.Sử dụng nhiều kênh dữ liệu để truyền song song, truyền
từng phần tệp, truyền cho bên thứ ba…Do vậy GridFTP có thể sử dụng để chuyển
những tệp (đặc biệt là những tệp có dung lượng lớn) trong mạng một cách hiệu quả và
tin cậy.
4.4. Cơ chế tài nguyên của dịch vụ Web – Web service resource framework.
Về cơ bản WSRF định ra một tập các đặc tả để mô tả mối quan hệ giữa các
dịch vụ Web (thông thường là không có trạng thái) và các tài nguyên trạng thái
(stateful resources). Bằng việc kết hợp giữa các dịch vụ Web chuẩn với sự quản lí các
tài nguyên trạng thái, WSRF cung cấp khả năng lưu trạng thái cho dịch vụ Web.
27
WSRF là một chuẩn chung, bao gồm một số chuẩn khác như:
Tài nguyên
Vòng đời của tài nguyên
Các thuộc tính của tài nguyên
Nhóm dịch vụ
Các lỗi
Các thông báo
Các chủ đề
Hình sau đây mô tả mối liên hệ giữa dịch vụ Web, WSRF và OGSA
4.5. Một số chuẩn của dịch vụ Web
Do sự giống nhau giữa dịch vụ Grid và dịch vụ Web mà các chuẩn của dịch vụ
Web cũng được áp dụng cho dịch vụ Grid. Một số chuẩn quan trọng nhất đó là
Ngôn ngữ Đánh dấu Mở rộng – eXtensible Markup Language (XML): là một ngôn
ngữ đánh dấu với mục đích chung được tổ chức W3C đề nghị.
Ngôn ngữ mô tả dịch vụ Web - Web Service Description Language (WSDL): là
một ngôn ngữ được xây dựng dựa trên định dạng ngôn ngữ XML. Nhằm mô tả các
28
Hình 11: mối liên hệ giữa dịch vụ Web, WSRF và OGSA
giao diện chung, cách giao tiếp, tên gọi, các giao thức và định dạng gói tin của dịch
vụ Web.
Giao thức truy cập đối tượng đơn giản - Simple Object Access Protocol (SOAP):
giao thức mạng cho phép các đối tượng phần mềm được phát triển bởi những ngôn
ngữ lập trình khác nhau và chạy trên những nền tảng hoàn toàn khác biệt có thể
tương tác với nhau. SOAP được phát triển dựa trên chuẩn XML.
Universal Description, Discovery and Integration (UDDI): chuẩn dịch vụ Tích hợp,
Khám phá và Mô tả Toàn cầu, hoạt động như một dịch vụ đăng ký và định vị có
khả năng xác nhận và phân loại các ứng dụng dịch vụ Web, giúp người sử dụng dễ
dàng tìm thấy chúng trên mạng.
4.6. Tổng kết chương
Trong chương này đã giới thiệu một cách tổng quát một số chuẩn đã được đề
xuất và sử dụng trong môi trường tính toán mạng lưới và các dịch vụ Grid. Cũng như
một số chuẩn liên quan với công nghệ dịch vụ Web – Web service.
29
Chương 5. Tổng quan về dịch vụ Web
Dịch vụ Web là một công nghệ tính toán phân tán giống như CORBA, RMI,
hay EJB. Nó cho phép mở rộng các ứng dụng theo mô hình client/server.
Ví dụ, giả sử một công ty có nhiều cửa hàng phân bố rải rác tại nhiều thành
phố. Tuy nhiên danh sách các mặt hàng được bán chỉ nằm tại cơ sở dữ liệu của văn
phòng trung tâm, do đó cần phát triển một phần mềm tại các cửa hàng để truy xuất
catalog này. Danh sách này có thể được công bố (publish) thông qua dịch vụ Web gọi
là ShopService. Khách hàng clients (máy tính tại các cửa hàng) sẽ liên hệ với dịch vụ
Web (tại máy chủ) và gửi yêu cầu cung cấp dịch vụ (service request) về catalog. Máy
chủ sẽ gửi trả lại catalog qua một đáp ứng dịch vụ (service response).
5.1. Ưu điểm của dịch vụ Web so với các công nghệ khác
Dịch vụ Web là độc lập với nền tảng và ngôn ngữ, bởi vì nó sử dụng ngôn ngữ
chuẩn XML. Nghĩa là, chương trình chạy trên máy khách có thể được lập trình
bằng C++ và chạy trên hệ điều hành Windows, trong khi dịch vụ Web được viết
bằng Java và chạy trên hệ điều hành Linux.
Hầu hết các dịch vụ Web dùng giao thức HTTP để trao đổi thông điệp (như: thông
điệp yêu cầu dịch vụ và thông điệp trả lời của dịch vụ). Điều này cho phép ta có thể
xây dựng các ứng dụng ở phạm vi toàn cầu dùng Internet làm phương tiện truyền
thông – do không bị các hạn chế về tường lửa.
30
Hình 12: dịch vụ web
5.2. Nhược điểm khi dùng dịch vụ Web
hiệu quả không cao: Bởi vì mọi dữ liệu trao đổi với dịch vụ Web đều dùng XML
nên chắc chắn sẽ cồng kềnh vào kém hiệu quả hơn so với các ứng dụng sử dụng mã
nhị phân. Tuy nhiên với sự tăng tốc mạnh mẽ của công nghệ máy tính điện tử, tốc
độ và hiệu quả của các ứng dụng dựa trên dịch vụ web ngày càng được cải thiện.
dịch vụ không phong phú: Hiện tại, các dịch vụ Web mới chỉ cung cấp một vài
dạng dịch vụ cơ bản. Trong khi CORBA đem lại cho ngừơi lập trình nhiều dịch vụ
hỗ trợ như lưu trữ, thông báo, quản lí vòng đời, quản lí các giao dịch.
Một tính chất quan trọng của dịch vụ Web đó là nó hướng tới các hệ thống
phân tán liên kết lỏng, trong khi các công nghệ khác như CORBA và EJB phát triển
trên các hệ thống phân tán liên kết chặt trong đó client và server phụ thuộc vào nhau.
Đối với dịch vụ Web, client không cần phải duy trì liên kết với dịch vụ Web cho tới
khi nó thực sự cần tới dịch vụ này. Các hệ thống phân tán liên kết chặt rất thích hợp
với các ứng dụng intranet trong phạm vi một công ty, nhưng không khả thi hoặc kém
hiệu quả ở qui mô Internet. Đây chính là thế mạnh của dịch vụ Web Services, vì thế nó
được chọn để phát triển dịch vụ Grid.
5.3. Lời gọi dịch vụ Web điển hình
Sơ đồ dưới đây liệt kê toàn bộ các bước liên quan tới một lời gọi dịch vụ Web
hoàn chỉnh.
31
Hình 13:Lời gọi web
Bởi chương trình khách không chứa bất cứ thông tin về các dịch vụ Web hiện thời,
vì vậy trước hết nó phải đi tìm dịch vụ Web nào phù hợp với yêu cầu. Ví dụ như ta
đang quan tâm đến nơi chứa dịch vụ Web cung cấp thông tin về nhiệt độ tại các
thành phố. Chúng ta sẽ liên hệ với UDDI registry để hỏi về điều này.
UDDI registry sẽ trả lời cho chúng ta biết server nào cung cấp dịch vụ mà ta cần (ví
dụ như. nhiệt độ tại các thành phố).
Tuy biết được nơi cung cấp dịch vụ, ta cần phải biết cách thức gọi dịch vụ. Ví dụ,
phương thức gọi dịch vụ để lấy thông tin về nhiệt độ tại một thành phố có thể là
Temperature getCityTemperature(int CityPostalCode), nhưng cũng có thể là int
getCityTemp(string cityName, bool isFarenheit). Vì thế ta phải hỏi server để có
được mô tả chi tiết cách gọi dịch vụ.
Dịch vụ Web sẽ trả lời bằng một thông điệp sử dụng ngôn ngữ chung WSDL.
Tại bước này chương trình khách sẽ thực hiện lời gọi dịch vụ bằng ngôn ngữ
SOAP, ví dụ như gửi một yêu cầu SOAP request về nhiệt độ tại một thành phố nào
đó.
Server sẽ trả lời bằng một thông điệp SOAP response chứa thông tin được yêu cầu
hoặc thông báo lỗi trong trường hợp sự cố hoặc yêu cầu sai.
5.4. Địa chỉ dịch vụ Web
Địa chỉ của dịch vụ Web cũng có dạng giống như địa chỉ trang Web. Địa chỉ
một dịch vụ Web được mô tả bằng một URI (Uniform Resource Identifiers) tương tự
như URL cho một trang Web.
Ví dụ, UDDI registry có thể trả về một URI sau cho dịch vụ Web cung cấp
thông tin thời tiết tại Mỹ:
http://webservices.mysite.com/weather/us/WeatherService
5.5. Kiến trúc dịch vụ Web
Hình sau mô tả kiến trúc dịch vụ Web:
32
Service Discovery: Phần này chịu trách nhiệm tìm kiếm các dịch vụ Web phù hợp
với yêu cầu đặt ra. Nó thường được điều khiển bởi UDDI (Universal Description,
Discovery, and Integration).
Service Description : Một trong những đặc trưng của dịch vụ Web là tự mô tả (self-
describing). Nghĩa là, nó sẽ tự mô tả các thao tác mà nó cung cấp cũng như cách
thức gọi nó. Mô tả này được viết bằng ngôn ngữ đặc tả dịch vụ Web - Web
Services Description Language (WSDL).
Service Invocation : Việc gọi hay yêu cầu thực thi một dịch vụ Web bao gồm việc
chuyền thông điệp SOAP giữa client và server. SOAP đặc tả cách thức định dạng
yêu cầu tới server cũng như cách thức mà server trả lời.
Transport : Cuối cùng, toàn bộ những thông điệp này cần được trao đổi giữa client
và server. Giao thức chịu trách nhiệm làm việc này là HTTP (HyperText Transfer
Protocol), cũng là giao thức trao đổi trang Web truyền thống.
5.6. Ứng dụng dịch vụ Web
Một ứng dụng dịch vụ Web có cấu trúc giống như một ứng dụng client/server
viết bằng CORBA hay RMI. Một khi trong ứng dụng cho client cần gọi một dịch vụ
Web, các lập trình viên cần phải viết một đoạn mã gọi là client stub để thực hiện công
việc này (hiện nay có nhiều công cụ cho phép sinh tự động các client stub này dựa vào
mô tả WSDL của dịch vụ Web đó).
33
Hình 14: Kiến trúc dịch vụ web
Do đó, ta không cần phải hiểu rõ mọi bước gọi thực thi dịch vụ Web một cách
chi tiết. Khi viết ứng dụng cho client ta chỉ cần quan tâm tới bốn sự kiện sau:
Định vị dịch vụ Web phù hợp với yêu cầu thông qua UDDI.
Nhận mô tả WSDL của dịch vụ Web này.
Chỉ cần sinh ra đoạn mã client stub một lần rồi đưa vào ứng dụng trên client.
Ứng dụng sẽ sử dụng stub này mỗi khi nó gọi dịch vụ Web.
Việc lập trình cho ứng dụng trên server cũng không mấy khó khăn. Ta không
cần phải viết một chương trình server phân tích các yêu cầu SOAP và sinh ra các đáp
ứng SOAP mà chỉ cần cài đặt các chức năng cho dịch vụ Web và sau đó sinh ra các
đoạn mã cho server stub (đôi khi được gọi là skeleton) chịu trách nhiệm phân tích các
yêu cầu và gửi chúng tới dịch vụ đã được cài đặt. Kết quả sau khi thực thi dịch vụ lại
được trao cho server stub để sinh ra đáp ứng tương ứng. Server stub có thể được sinh
ra từ mô tả WSDL hoặc từ các ngôn ngữ định nghĩa giao diện (như IDL). Hơn nữa cả
dịch vụ và server stubs đều được quản lý bởi một module gọi là Web Service
container, nhằm đảm bảo các yêu cầu HTTP tới một dịch vụ Web sẽ được chuyển tới
server stub tương ứng.
5.7. Các bước để gọi một dịch vụ Web
Giả sử ta đã định vị được dịch vụ Web mong muốn và đã sinh ra được đoạn
mã client stubs từ đặc tả WSDL của dịch vụ này. Tương tự chương trình bên phía
server cũng đã có server stubs.
34
Hình 15:Các bước gọi dịch vụ web
Mỗi khi cần gọi dịch vụ Web, ứng dụng client sẽ gọi client stub. Client stub sẽ tạo
ra một yêu cầu SOAP hợp lệ từ các tham số truyền tới từ ứng dụng. Đây còn gọi là
quá trình marshaling hay serializing.
Yêu cầu SOAP được đến server qua mạng sử dụng giao thức HTTP. Web Services
container nhận yêu cầu SOAP và chuyển tới server stub. Server stub sau đó sẽ
chuyển đổi yêu cầu SOAP này thành cái gì đó mà chương trình cài đặt dịch vụ
hiểu. Quá trình này gọi là unmarshaling hay deserializing.
chương trình cài đặt dịch vụ thực hiện yêu cầu được giao từ service stub. Kết quả
sẽ được trao cho server stub để chuyển đổi thành một đáp ứng SOAP.
Đáp ứng SOAP này được gửi trả về client stub qua mạng dùng giao thức HTTP.
Client stub nhận đáp ứng rồi chuyển đổi thành dữ liệu mà ứng dụng client có thể
hiểu.
Cuối cùng, ứng dụng nhận được kết quả từ lời gọi dịch vụ Web và tiếp tục công
việc của mình.
5.8. Tổng kết chương
Trong chương này ta đã tìm hiểu về công nghệ dịch vụ Web: kiến trúc, ưu
nhược điểm, các ứng dụng, cách thức truy cập dịch vụ. Qua đó thấy được lí do sử dụng
công nghệ dịch vụ Web để phát triển dịch vụ Grid.
35
Chương 6.Cơ chế tài nguyên của dịch vụ Web – Web service
resource framework
Môi trường Grid bao gồm một tập các tài nguyên được chia sẻ. Các tài nguyên
có thể là các ứng dụng phần mềm, cơ sở dữ liệu, băng thông mạng, bản quyền phần
mền, không gian lưu trữ…Việc chia sẻ tài nguyên trong môi trường phân tán, không
đồng nhất đã nảy sinh các vấn đề trong việc quản lí và chia sẻ các tài nguyên này. Đó
là vấn đề trong cơ chế truy cập, phát hiện, xác thực và chứng thực tài nguyên.
Trong chương này sẽ giới thiệu một số khái niệm cơ bản trong việc quản lí
trạng thái tài nguyên trong bối cảnh của môi trường tính toán mạng lưới.
6.1. Quản lí trạng thái tài nguyên trong dịch vụ Grid
6.1.1. Dịch vụ Grid là gì
Có thể hiểu một dịch vụ Grid là một giao diện dịch vụ kết hợp với một mạng
luới tài nguyên. Tài nguyên và trạng thái của tài nguyên được điều khiển và quản lí
bằng các dịch vụ Grid trong một môi trường Grid. Một dịch vụ Grid có thể thao tác
với nhiều tài nguyên và ngược lại một tài nguyên cũng có thể được sử dụng bởi nhiều
dịch vụ Grid khác nhau.
Các tài nguyên có thể phải tương tác hay kết hợp với nhau tùy theo đòi hỏi của
yêu cầu. Hơn nữa các tài nguyên lại được lưu trữ trên một môi trường không đồng
nhất. Do đó đòi hỏi framework phải trừu tượng hóa chi tiết việc cài đặt cho một môi
trường cụ thể ra khỏi sự truyền thông thực sự giữa các dịch vụ Grid. Kiến trúc hướng
dịch vụ (Service Oriented Architechture - SOA) là một kiến trúc thỏa mãn yêu cầu
trên.
Tất cả các tài nguyên (vật lí hay logic) trong mạng tương thích với chuẩn
OGSA được mô hình như là các dịch vụ Grid. Các dịch vụ Grid xây dựng trên chuẩn
SOA thúc đẩy sự phát trển của công nghệ dịch vụ Web. Điều đó cho phép các dịch vụ
Grid sử dụng các khả năng của mô hình truyền thông dịch vụ Web, mô tả của dịch vụ,
và phát hiện dịch vụ. Các chuẩn của dịch vụ Web đã phát triển và cho phép các giao
tác với dịch vụ Web diễn ra an toàn và tin cậy. Lựa chọn công nghệ dịch vụ Web để
xây dựng các dịch vụ Grid tương thích với chuẩn OGSA đã thúc đẩy sự phát triển của
kiến trúc dịch vụ Web và các chuẩn của nó.
36
6.1.2. Những yêu cầu của dịch vụ Grid theo chuẩn OGSA
Tất cả các dịch vụ Grid đều phải tuân theo đặc tả yêu cầu của OGSA để có thể
quản lí trạng thái của các tài nguyên phân tán một cách an toàn và tin cậy. Một số yêu
cầu chính mà mô hình dịch vụ OGSA đòi hỏi dịch vụ Grid tương thích phải cung cấp
là:
Khởi tạo tài nguyên: nghĩa là có thể khởi tạo các thể hiện của các tài nguyên gắn
với dịch vụ Grid theo một thao tác nào đó. Thể hiện có thể được tạo mới hoàn toàn
hoặc khởi tạo lại từ trạng thái đã được lưu trữ của tài nguyên đó.
Định danh và tham chiếu duy nhất: khi có một thể hiện của tài nguyên thì môi
trường Grid yêu cầu có một tham chiếu duy nhất trên mạng tham chiếu tới tài
nguyên và các thông tin để có thể tương tác với thể hiện đó thông qua dịch vụ Grid.
Quản lí vòng đời: quản lí vòng đời nhằm xác định thời gian hoạt động của tài
nguyên, thời gian đó có thể hết hạn sau một khoảng thời gian hay ngay lập tức.
Đăng kí và phát hiện dịch vụ: đây là một tập các thao tác liên quan tới khả năng tìm
kiếm thể hiện của dịch vụ Grid và các thông tin về thời gian triển khai, thời gian
chạy của chúng.
Thông báo: là cơ chế truyền thông không đồng bộ để thông báo cho các client đã
đăng kí về các sự kiện cụ thể nào đó ví dụ: sự kiện về vòng đời của tài nguyên, sự
kiện về sự thay đổi của các thuộc tính của tài nguyên…
Hiện nay có hai chuẩn để cài đặt dịch vụ Grid tương thích với chuẩn OGSA đang
tồn tại đó là
Cơ sở hạ tầng của dịch vụ Grid mở - Open Grid Service Infrastructure (OGSI)
Cơ chế tài nguyên của dịch vụ Web – Web service resource framework (WSRF).
Chuẩn OGSI ra đời sớm hơn và được cài đặt trong phiên bản thứ ba của
Globus Toolkit (GT3). Chuẩn WSRF ra đời muộn hơn và được cài đặt trong phiên bản
thứ tư của Globus Toolkit (GT4). Chuẩn WSRF đang dần thay thế chuẩn OGSI trong
việc cài đặt các dịch vụ Grid trên môi trường mạng lưới.
6.2. Chuẩn WSRF
Trong phần này sẽ trình bày một số khái niệm và cơ chế chính được đề cập
đến trong chuẩn WSRF.
37
6.2.1. Khái niệm WS-Resource
WS-Resource là sự kết hợp giữa dịch vụ web và tài nguyên trạng thái, và có
thể được mô hình bằng công thức sau đây:
Web service + Stateful Resource = WS-Resource
Trong đó Stateful Resource (tài nguyên trạng thái) có các dữ liệu trạng thái
được mô tả bằng một tài liệu bằng ngôn ngữ XML, có một vòng đời xác định, được
biết và sử dụng bởi một hay nhiều dịch vụ web. Tài nguyên trạng thái có thể được thực
thi bằng nhiều cách khác nhau, có thể sử dụng tệp trong hệ thống tệp, các bản ghi
trong cơ sở dữ liệu, hoặc theo một cấu trúc dữ liệu riêng của ứng dụng.
Ví dụ: Hình dưới đây mô tả mối quan hệ giứa một dịch vụ dựng phim với tài
nguyên trạng thái của nó. Các thao tác mà dịch vụ cung cấp và các tài nguyên trạng
thái đều được mô tả trong tệp mô tả bằng ngôn ngữ WSDL.
Mỗi WS-Resource bao gồm một hoặc nhiều thuộc tính, giá trị của các thuộc
tính đó là trạng thái của WS-Resource, thay đổi giá trị của các thuộc tính là thay đổi
trạng thái của WS-Resource.
WSRF là một tập các đặc tả nhằm định ra một mô hình thông điệp chuẩn, hay
nói một cách khác đó là những cách để yêu cầu lấy hoặc cập nhật giá trị của một hay
nhiều thuộc tính của tài nguyên. Như vậy WSRF đã xác định một cách chung để làm
việc với WS-Resource: tương tác với các thuộc tính của WS-Resource, nhóm các WS-
Resource…
38
Hình 16:WS-Resource
6.2.2. Các thành phần trong WSRF
WSRF bao gồm năm đặc tả:
WS-ResourceProperties (WSRF-RP)
WS-ResourceLifetime (WSRF-RL)
WS-ServiceGroup (WSRF-SG)
WS-Base Faults (WSRF-BF)
WS-RenewableReferences (WSRF-RR)
Sau đây là bảng tóm tắt các đặc tả trên
Tên đặc tả Mô tả
WS-ResourceProperties Mô tả các thuộc tính của WS-Resource, các các
thuộc tính này được khai báo trong tệp WSDL, mô
tả cách tương tác (lấy giá trị, thay đổi giá trị) với
các thuộc tính nà
y, mô tả cách để thay đổi, thêm, xóa thuộc tính của
một WS-Resource
WS-ResourceLifetime Định nghĩa xem một WS-Resource sẽ được hủy như
thế nào: được container hủy tự động sau một thời
39
Hình 17: Các thành phần WSRF
gian, hay được chương trình client gọi lệnh hủy khi
chương trình client không cần đến WS-Resource
nữa.
WS-ServiceGroup Định nghĩa cách để tạo ra tập các dịch vụ Web
WS-Base Faults Định nghĩa cách xác định lỗi trong một ứng dụng
dựa trên WSRF
WS-Renewable
References
Chú thích rằng cần phải lấy tham chiếu mới khi
tham chiếu cũ kết thúc.
6.3. Tổng kết chương
Trong chương này đã trình bày vấn đề quản lí tài nguyên trạng thái trong dịch
vụ Grid. Và các đặc tả trong chuẩn WSRF nhằm phục vụ cho việc quản lí tài nguyên.
40
Chương 7. An ninh trong mạng Grid
Một câu hỏi thường được đặt ra khi đề cập đến môi trường mạng lưới đó là
tính an toàn của mạng lưới đó. Trong chương này sẽ đề cập đến một số vấn đề, kĩ thuật
và giải pháp an ninh cần thiết để xây dựng một môi trường Grid mạnh và an toàn.
7.1. Các yêu cầu về an ninh trong mạng lưới
An ninh là một yêu cầu cơ bản trong thiết kế một mạng lưới. Các thành phần
an ninh cần thiết cơ bản đó là các cơ chế xác thực, chứng thực, bảo mật các trao đổi
giữa các máy tính trong mạng grid. Nếu thiếu đi chức năng đó sự toàn vẹn, bảo mật
của quá trình sử lí dữ liệu trong mạng lưới sẽ có nguy cơ rủi ro cao. Sau đây là một số
yêu cầu về an ninh trong mạng lưới.
Môi trường mạng lưới thường được các tổ chức ảo (VO) – Tổ chức ảo là một
nhóm động các cá nhân, các nhóm, các tổ chức chia sẻ tài nguyên với nhau - sử dụng
để kết hợp việc chia sẻ và quản lí tài nguyên. Một tổ chức ảo có thể bao gồm nhiều tổ
chức khác nhau vì vậy một ứng dụng mạng lưới có thể trải rộng trên nhiều phạm vi
hành chính. Mỗi một phạm vi này có thể có những yêu cầu công việc cũng như các
chính sách khác nhau. Như vậy cơ sở hạ tầng an ninh của mạng lưới phải thỏa mãn
những chính sách an ninh cục bộ của mỗi tổ chức cũng như các chính sách an ninh của
tổ chức ảo đề ra. Để đạt được điều đó, cơ sở hạ tầng an ninh mạng lưới phải có khả
năng cùng làm việc giữa các miền trong khi vẫn giữ được sự phân cách rõ ràng của các
cơ chế, chính sách an ninh của các tổ chức (cả tổ chức ảo và tổ chức thật). Do vậy các
thách thức về an ninh trong môi trường mạng lưới đó là:
- Khả năng tích hợp: cơ sở hạ tầng an ninh mạng lưới phải có khả năng tích hợp
được với các cơ sở hạ tầng an ninh đã tồn tại sẵn trên môi trường chủ, môi
trường nền. Trên cơ sở đó mở rộng và cung cấp các dịch vụ an ninh mới.
- Khả năng cùng làm việc: các dịch vụ mạng lưới có thể trải rộng trên nhiều
miền, môi trường chủ do đó cần phải có khả năng tương tác với nhau để cho
phép trao đổi thông điệp trong các miền cũng như cho phép mỗi thành viên xác
định chính sách an ninh được sử dụng trong các hội thoại an toàn, cung cấp cơ
chế để nhận biết một người dùng của miền này trong một miền khác.
41
- Mối quan hệ tin cậy: một yêu cầu dịch vụ mạng lưới có thể trải rộng trên nhiều
miền an ninh. Do đó đòi hỏi phải thiết lập mối quan hệ tin cậy giữa các miền.
Do tính chất động của môi trường mạng lưới nên không thể thiết lập được mối
quan hệ tin cậy giữa các điểm cuối (end-to-end) trước khi mà ứng dụng được
chạy. Vấn đề thiết lập mối quan hệ tin cậy càng trở nên phức tạp với các dịch
vụ mạng lưới tạm thời.
Ở mức độ tổng thể các yêu cầu an ninh mạng lưới có thể được xác định như
sau:
- Xác thực (authentication): khả năng cung cấp một giao diện để có thể gắn vào
một cơ chế xác thực khác, đồng nghĩa với việc chuyển cơ chế xác thực.
- Ủy thác (delegation): khả năng cung cấp một cơ chế ủy thác các quyền truy cập
của một người dùng tới các dịch vụ trong khi vẫn đảm bảo các quyền truy cập
được ủy thác được giới hạn cho các nhiệm vụ được thực hiện trong sự giới hạn
của chính sách an ninh.
- Đăng nhập một lần (single logon): Khả năng một người dùng đã đăng nhập
không phải đăng nhập lại khi truy cập tới các tài nguyên mạng lưới khác.
- Thời gian tồn tại của chứng nhận người dùng (credentials) và gia hạn chứng
nhận: khả năng làm mới các chứng nhận của người dùng nếu thời gian hoàn
thành của một hoạt động của một ứng dụng nào đó lớn hơn thời gian tồn tại của
các chứng nhận người dùng đó.
- Chứng thực (authorization): khả năng kiểm soát sự truy cập tới các bộ phận của
mạng lưới dựa trên các chính sách về quyền hạn của người dùng.
- Riêng tư (privacy): cho phép người sử dụng, người cung cấp dịch vụ xác định
và thi hành các chính sách riêng tư.
- Bảo mật (confidentiality): khả năng bảo mật nội dung trên đường truyền và
trong các bộ phận của mạng lưới (lưới tương thích với chuẩn OGSA).
- Toàn vẹn thông tin (Message integrity): Đảm bảo rằng những thay đổi trái phép
nội dung thông tin có thể được xác định tại nơi nhận.
- Trao đổi chính sách (policy exchange): cho phép sự thỏa thuận về an ninh giữa
người dùng dịch vụ và người cung cấp dịch vụ dựa trên chính sách an ninh.
42
- Bản ghi an toàn (Secure logging): là cơ sở cho việc thừa nhận và kiểm định cho
phép các dịch vụ đánh nhãn thời gian và ghi lại nhiều loại thông tin mà không
làm gián đoạn hay thay đổi thông tin của bên đối địch.
- Đảm bảo (assurance): là chất lượng của mức độ bảo đảm an ninh.
- Có thể điều khiển (manageability): yêu cầu này chủ yếu liên quan đến các vấn
đề về quả lí dịch vụ an ninh: quản lí nhận dạng, quản lí chính sách…
- Vượt qua tường lửa (firewall traversal): khả năng đi qua tường lửa mà không
phải thỏa hiệp với các chính sách điều khiển cục bộ của tường lửa.
- Bảo vệ cơ sở hạ tầng OGSA: bảo vệ các thành phần lõi của OGSA
Sơ đồ dưới đây cung cấp cái nhìn tổng thể các thành phần của một mô hình an
ninh mạng lưới để giải quyết các yêu cầu đề ra ở trên.
Hình 18: mô hình an ninh mạng lưới
7.2. Cơ sở hạ tầng an ninh của mạng lưới
Trong phần nãy sẽ trình bày những cơ chế cơ bản được sử dụng Cơ sở hạ tầng
an ninh mạng lưới – Grid Security Infrastructure (GSI) – được cung cấp bởi Globus
Toolkit.Và các dịch vụ an ninh mà GSI cung cấp.
43
7.2.1. Truy cập vào mạng lưới
Để có thể thiết lập một môi trường mạng lưới sử dụng các thành phần của
GSI, ta cần tạo ra một tập các khóa cho mã hóa công khai, và yêu cầu chứng nhận từ
Certificate Authority (CA) và sao chép khóa công khai của CA. Hình sau đây mô tả
từng bước quá trình thiết lập truyền thông trong GSI.
- bước 1: sao chép khóa công khai của CA về máy sẽ cài đặt GSI
- bước 2: tạo khóa bí mật và yêu cầu chứng nhận
- bước 3: gửi yêu cầu chứng nhận cho CA (qua email hay qua một đường truyền
tin cậy khác)
- bước 4: CA sử dụng khóa riêng của mình để kí vào yêu cầu chứng nhận và gửi
lại chứng nhận đó.
Khi thủ tục đó kết thúc ta sẽ nhận được một chứng nhận số đã được kí bởi CA,
ta sẽ có ba tệp quan trọng trên máy cài Grid đó là:
- Khóa công khai của CA
- Khóa bí mật của máy cài Grid
- Chứng nhận số đối với máy cài Grid.
7.2.2. Xác thực và quyền hạn
Để có thể đảm bảo rằng đối tác trong phiên truyền thông trong mạng lưới là
đối tác tin cậy, ta có thể sử dụng chức năng xác thực của GSI. Sau khi ta đã được xác
thực có thể tài nguyên mạng lưới yêu cầu phải xác định các quyền truy cập. Khi đó ta
có thể sử dụng chức năng kiểm tra quyền của GSI. Sau đây ta sẽ mô tả các bước để xác
thực, kiểm tra quyền của một máy A (người dùng trên máy A) bởi một máy B trong
mạng lưới. Hầu hết các bước là để xác thực, trừ bước cuối cùng để kiểm tra quyền hạn.
- Bước 1: người dùng trên máy A hay một ứng dụng trên máy A gửi chứng nhận
của nó tới máy B.
44
Hình 19: Cơ chế bảo mật grid
- Bước 2: máy B sẽ sử dụng khóa công khai của A để trích ra tiêu đề từ chứng
nhận được gửi ở bước 1
- Bước 3: máy B sinh ra một số ngẫu nhiên và gửi lại cho máy A
- Bước 4: máy A nhận được số ngẫu nhiên đó rồi sử dụng khóa riêng của mình để
mã hóa số nhận được và gửi kết quả lại cho B.
- Bước 5: máy B giải mã nhận được kết quả là một số, rồi kiểm tra số này với số
đã sinh ra ở bước 3. Nếu 2 số này là bằng nhau thì máy B đã biết rằng chứng
nhận mà nó nhận được đúng là của người dùng trên máy A. Vì chỉ có anh ta
mới có khóa bí mật của mình.
- Bước 6: chứng nhận đã được xác thực tại máy B, và tiêu đề của xác thực được
map tương ứng với một tên người dùng trên máy B. Tiêu đề ở dạng tên phân
biệt (distinguished name) giống như:
“/O=Grid/O=Globus/OU=hostA.grid.com/CN=name”. Tiều đề này được sử
dụng để xác định định danh của người dùng trong môi trường mạng lưới. Người
dùng được xác định từ tiêu đề sẽ được máy B kiểm tra quyền như một người
dùng trên máy B.
7.3. Tổng kết chương
Trong chương này đề cập đến vấn đề cơ sở hạ tầng an ninh trong mạng lưới,
các yêu cầu về an ninh trong mạng lưới. Và một cài đặt của cơ sở hạ tầng an ninh
trong môi trường mạng lưới - GSI được cài đặt trong Globus Toolkit.
45
Chương 8.Các thành phần của Globus Toolkit 4.0
Bộ công cụ Globus Toolkit được phát triển bởi Globus Alliance
(http://www.globus.org) là phần mềm mã nguồn mở, một công cụ để xây dựng các hệ
thống và chương trình grid. Đã có rất nhiều công ty và tổ chức sử dụng công cụ
Globus Toolkit như là nền tảng và tiêu chuẩn cho việc phát triển công nghệ Grid
computing.
Hiện nay, phiên bản mới nhất của Globus Toolkit là 4.0. Bộ công cụ Globus
Toolkit không chỉ chứa các thành phần làm nền tảng cho một môi trường grid mà còn
bao gồm các công cụ hữu ích cho việc phát triển các chương trình grid. Chương này
mô tả các thành phần chính của Globus Toolkit 4.0.
8.1. Tổng quan về Globus Toolkit 4.0
Bộ công cụ Globus Toolkit 4.0 là tập hợp các thành phần mã nguồn mở, cung
cấp nền tảng cho môi trường phát triển và các ứng dụng Grid computing. Phiên bản 4
của bộ công cụ là phiên bản đầu tiêu hỗ trợ dịch vụ Web - WSRF (Phiên bản 3 hỗ trợ
OGSI, còn phiên bản 2 thì không hỗ trợ các chuẩn trên). Và được chia ra hai phần:
Một thành phần là nền tảng cho dịch vụ Web, một thành phần là nền tảng cho các dịch
vụ khác.
Globus Tookit 4.0 cung cấp các thành phần được chia theo các danh mục sau:
Các thành phần thường trực
Các thành phần bảo mật
Các thành phần quản lý dữ liệu
Các dịch vụ kiểm tra và khám phá thông tin
Các thành phần quản lý thi hành
8.2. Các thành phần thường trực
Globus Toolkit 4.0 chứa các thành phần thường trực. Thành phần thường trực
là thành phần bao gồm các thư viện và công cụ làm cốt lõi cho mạng Grid computing
và là nền tảng cho các thành phần khác. Các thành phần thường trực bao gồm: Java
WS Core, C WS Core, Python WS Core.
46
8.2.1. Java WS Core
Java WS Core bao gồm các API và công cụ thi hành các chuẩn WSRF và WS-
Notification trên nền ngôn ngữ Java. Các thành phần đó trở thành nền tảng cho một số
dịch vụ trong Grid computing. Ngoài ra, Java WS Core còn cung cấp các thư viện và
công cụ cho việc phát triển các dịch vụ WSRF. Hình 6.2 thể hiện mối quan hệ giữa
Java WS Core và các dịch vụ khác.
Hình 20: Mối quan hệ giữa Java WS Core và các dịch vụ trong Grid computing
8.2.2. C WS Core
C WS Core bao gồm các API và công cụ thi hành các chuẩn WSRF và WS-
Notification trên nền ngôn ngữ C.
8.2.3. Python WS Core
Python WS Core bao gồm các API và công cụ thi hành các chuẩn WSRF và
WS-Notification trên nền ngôn ngữ Python. Thành phần này còn gọi là pyGridWare.
8.3. Các thành phần bảo mật
Bảo mật là vấn đề rất quan trọng trong môi trường Grid computing. Do đó,
Globus Toolkit 4.0 cung cấp một số cách thức bảo mật trong các thành phần bảo mật.
Phần này giới thiệu khái quát một số thành phần bảo mật trong GT4.
47
8.3.1. Thẩm định và cấp phép WS
Trong truyền thông SOAP ở các dịch vụ Web, Globus Toolkit 4.0 mở rộng
khả năng bảo mật với các thông điệp (message) và truyền tải (transport) nhiều mức độ
bảo mật.
8.3.2. Thẩm định và cấp phép Pre-WS
Thẩm định và cấp phép Pre-WS bao gồm các API và các công cụ quản lý việc
thẩm định, cấp phép và chứng thực.
8.3.3. Dịch vụ cấp phép cộng đồng (Community Authorization Service - CAS)
CAS cung cấp việc điều khiển đến các quá trình truy nhập vào các tổ chức ảo.
Một CAS server cung cấp quyền hạn đối với các tài nguyên của tất cả các thành viên
trong cộng đồng. Hiện nay, CAS không hỗ trợ các dịch vụ Web, tuy nhiên, nó hỗ trợ
GridFTP.
8.3.4. Dịch vụ uỷ quyền
Dịch vụ uỷ quyền có khả năng uỷ quyền cho người có thẩm quyền sử dụng các
dịch vụ trong một host. Dịch vụ uỷ quyền cho phép một người có thẩm quyền có khả
năng sử dụng nhiều dịch vụ khác nhau.
8.3.5. SimpleCA
SimpleCA là một công cụ chứng thực quyền hạn đơn giản. SimpleCA là công
cụ được sử dụng phổ biến trong Grid computing. Chúng tôi sẽ sử dụng SimpleCA khi
xây dựng môi trường Grid computing.
8.3.6. GSI-OpenSSH
GSI-OpenSSH là phiên bản sửa của OpenSSH với việc thêm tính năng thẩm
định GSI. GSI-OpenSSH tạo một shell trên một hệ thống từ xa để chạy shell scripts
hoặc để tương tác với các câu lệnh shell, nó cung cho phép truyền các tệp giữa các hệ
thống mà không cần phải nhập mật khẩu và ID người dùng. Trước khi sử dụng GSI-
OpenSSH, cần xác lập proxy bằng lệnh grid-proxy-init.
48
8.4. Các thành phần quản lý dữ liệu
Globus Toolkit 4.0 cung cấp một số công cụ cho phép quản lý dữ liệu trong
môi trường Grid computing. Phần này sẽ giới thiệu một số dịch vụ quản lý dữ liệu
trong GT4.
8.4.1. GridFTP
GridFTP là thành phần cung cấp khả năng bảo mật và đáng tin cậy trong việc
truyền tệp giữa các host trong mạng grid. GridFTP được mở rộng từ giao thức FTP,
thêm vào một số tính năng mới, bao gồm hỗ trợ việc thẩm định thông qua GSI. Một
trong những tính năng quan trọng của GridFTP là khả năng truyền có sự tham gia của
bên thứ ba.
Hình 21: Mô hình truyền tệp với sự tham gia của bên thứ ba trong GridFTP
Trong mô hình trên, tệp lưu trữ trong một server. Client có thể copy tệp này
sang một server khác. Client đóng vai trò như một bên thứ ba yêu cầu truyền tệp từ nốt
thứ nhất sang nốt thứ hai.
8.4.2. Truyền Tệp tin cậy (Reliable File Transfer - RFT)
RFT cung cấp một giao diện dịch vụ Web cho việc truyền tải các tệp. Hình
6.4.2 mô tả mô hình hoạt động của RFT và GridFTP.
49
Hình 22: Mô hình hoạt động của RFT và GridFTP
Mô hình này được mô tả như sau:
Đầu tiên, Client yêu cầu truyền một tệp từ Server A sang Server B
RFT tiếp nhận yêu cầu từ Client dưới dạng thông điệp SOAP thông qua giao
thức HTTP và bắt đầu khởi tạo GridFTP.
RFT sử dụng một cơ sở dữ liệu để lưu trữ danh sách các tệp truyền và trạng thái
của chúng. Ngoài ra, RFT cũng lưu các yêu cầu truyền tệp đề phòng trường hợp
việc truyền tệp bị ngắt.
Cuối cùng RFT đóng vai trò như nốt thứ ba, yều cầu truyền tệp từ Server A
sang Server B thông qua GridFTP.
8.4.3. Dịch vụ mô hình hoá địa chỉ (Replica Location Service - RLS)
RLS cung cấp việc truy nhập thông tin đến các địa chỉ vật lý trong mạng thông
qua dữ liệu mô hình hoá địa chỉ. Nghĩa là RLS ánh xạ tất cả các địa chỉ vật lý trong
mạng vào một tệp logic. Việc truy nhập đến một địa chỉ vật lý nào đó được thông qua
tệp logic này.
8.4.4. Dịch vụ sao lưu dữ liệu (Data Replication Service - DRS)
DRS cung cấp một hệ thống để sao lưu các tệp trong mạng grid và đăng ký
chúng với RLS. DRS sử dụng RFT và GridFTP cho việc truyền tệp. DRS cũng sử
dụng RLS cho việc địa chỉ hoá và đăng ký sao lưu.
50
8.4.5. Các dịch vụ kiểm tra và khám phá thông tin (Monitoring and Discovery
Services - MDS)
MDS là dịch vụ để tập hợp, phân tán, chỉ mục… các thông tin trạng thái của
các tài nguyên, dịch vụ và cấu hình hệ thống. GT4 cung cấp các thành phần WSRF và
WS-Notification trong MDS, còn gọi là MDS4. Các dịch vụ được khởi tạo khi khởi
động GT4 container được đăng ký thông qua MDS4. Dịch vụ tiêu biểu của MDS4 là
Dịch vụ chỉ mục (Index Service).
8.4.6. Index service
Index Service là thành phần trung tâm trong việc thực thi GT4 MDS. Mọi thể
hiện của Grid container đều chứa một Index Service mặc định (gọi là
DefaultIndexService). Index Service tương tác với các tài nguyên trên mạng. Index
Service có thể chọn lọc tài nguyên, dịch vụ, đánh chỉ mục các tài nguyên và dịch vụ đó
ở các nốt trên mạng Grid và tập hợp thông tin của chúng vào một nơi.
8.5. Các thành phần quản lý thi hành
Globus Tookit 4.0 cung cấp một số công cụ nhằm mục địch quản lý thi hành
trong mạng Grid. Công cụ tiêu biểu của thành phần này là WS GRAM.
8.5.1. WS GRAM
WS GRAM là một dịch vụ Grid cung cấp khả năng thực thi từ xa và quản lý
trạng thái các công việc. Khi một client yêu cầu công việc, yêu cầu đó được gửi đến
host ở dạng thông điệp SOAP và được quản lý bởi dịch vụ WS GRAM.WS GRAM trả
lại thông tin trạng thái của công việc sử dụng WS-Notification.
51
Chương 9. Cài đặt và cấu hình Globus Toolkit 4.0
Chương này mô tả quá trình cài đặt và cấu hình Globus Toolkit 4.0. Chúng tôi
sẽ triển khai cài đặt Globus Toolkit trong mạng gồm 3 máy tính. Các vấn đề chính
trong chương này gồm có:
Download Globus Toolkit 4.0
Các gói tin của Globus Toolkit 4.0
Mô hình môi trường mạng Grid
Cài đặt Globus Toolkit 4.0
Cấu hình và thử nghiệm môi trường Grid
Gỡ bỏ Globus Toolkit 4.0
9.1. Download Globus Toolkit 4.0
Globus Toolkit 4.0 là phần mềm mã nguồn mở hỗ trợ nhiều hệ điều hành. Các
gói tin binary hỗ trợ môi trường Windows, Linux (SuSE Linux 9/8, Red Hat Linux 9,
Fedora Core 2/3 và Debian 3.1) và Solaris 9. Việc biên dịch GT4 từ các gói tin nguồn
có thể hỗ trợ thêm các hệ điều hành AIX và Mac OS X. Các thành phần phát triển trên
nền tảng Java như WSRF hoặc WS Java Core đều tương thích với các hệ điều hành hỗ
trợ Java, trong đó có Windows. Hiện nay, việc sử dụng hệ điều hành Linux để phát
triển môi trường Grid đang trở nên phổ biến. Vì vậy, chúng tôi sử dụng hệ điều hành
Fedora Core 3 để phát triển môi trường Grid. Các gói tin sử dụng là các gói tin binary.
Truy cập địa chỉ: http://www.globus.org/toolkit/downloads/4.0.0/ để download các gói
tin này.
Gói tin GT4 cho Fedora Core 3 là: gt4.0.0-ia32-fedora3-binary-installer.tar.gz
9.2. Mô hình môi trường mạng Grid
Chúng tôi sử dụng 3 máy tính để cài đặt môi trường mạng Grid.
52
Hình 23: Mô hình mạng Grid
Các máy tính bao gồm:
CA: Đây là nơi chứng thực quyền hạn. Do đó, chúng tôi sử dụng SimpleCA có
sẵn trong gói tin GT4.
Host A, Host B: là các nốt mạng Grid. Chúng tôi cài đặt gói tin GT4 cho các
nốt này.
Host A và Host B sử dụng hai tên người dùng khác nhau là auser1 và buser1,
nhưng chúng cùng chia sẻ một ID người dùng chung là:
/O=Grid/O=Globus/OU=gridk47.com/CN=grid user 1
Bảng 7.2a mô tả các máy tính của mạng Grid.
Tên máy Tên host Chức năng Hệ điều hành Gói tin cài
đặt
CA ca.gridk47.com Chứng thực
quyền hạn
Fedora Core 3 Gói GT4
binary
Host A hosta.gridk47.com Nốt mạng
Grid
Fedora Core 3 Gói GT4
binary
Host B hostb.gridk47.com Nốt mạng
Grid
Fedora Core 3 Gói GT4
binary
Bảng 7.2a Các máy tính trong mạng Grid
Bảng 7.2b mô tả phiên bản các phần mềm sử dụng
Tên phần mềm Phiên bản Thư mục chủ
Globus Toolkit 4.0 4.0.0 /usr/local/globus-4.0.0
Java SDK 1.5 /usr/local/java
Apache Ant 1.6.3 /usr/local/ant
53
Bảng 7.2b: Phiên bản các phần mềm sử dụng
9.3. Cài đặt Globus Toolkit 4.0
Chương này mô tả thứ tự các bước để cài đặt Globus Toolkit 4.0
9.3.1. Cài đặt các phần mềm yêu cầu cho Globus Toolkit 4.0
Trước khi cài đặt Globus Toolkit 4.0, cần cài đặt các phần mềm sau:
Tên phần mềm Phiên bản
Java SDK 1.5
Apache Ant 1.6.3
Bảng 7.3a: Các phần mềm cho Globus Toolkit 4.0
a - Cài đặt Java SDK
Để cài đặt Java SDK
Lấy gói tin Java SDK, vào địa chỉ: http://java.sun.com
Cài đặt Java SDK:
[root@hosta]# rpm -ivh jdk-1_5_0_06-linux-i586-rpm.rpm
Để thiết lập biến môi trường cho Java SDK, mở tệp /etc/profile và thêm đoạn sau:
export JAVA_HOME=/usr/local/java
export PATH=$JAVA_HOME/bin:$PATH
Để biến môi trường hoạt động, đóng tệp /etc/profile và chạy lệnh:
[root@hosta]# . etc/profile
Để kiểm tra Java SDK đã được cài đặt thành công, dùng lệnh:
[root@hosta]# java --version
b - Cài đặt Apache Ant
Để cài đặt Apache Ant:
Lấy gói tin Apache Ant tài địa chỉ: http://ant.apache.org/
Bung tệp nén Apache Ant:
54
[root@hosta]# tar xvzf apache-ant-1.6.3-bin.tar.gz -C /usr/local
Thiết lập biến môi trường cho Apache Ant, mở tệp /etc/profile và thêm đoạn sau:
export ANT_HOME=/usr/local/apache-ant-1.6.3
export PATH=$ANT_HOME/bin:$PATH
Để biến môi trường hoạt động, đóng tệp /etc/profile và chạy lệnh:
[root@hosta]# . etc/profile
Để kiểm tra Apache Ant đã cài đặt thành công, dùng lệnh:
[root@hosta]# ant --version
9.3.2. Cấu hình môi trường Linux cho Globus Toolkit 4.0
Trước khi cài đặt Globus Toolkit, cần cấu hình một số thứ trong môi trường
Fedora Core 3 đang sử dụng trên các máy tính trong mạng.
a-Thêm tài khoản người dùng
Trong Fedora, sử dụng lệnh: adduser để thêm một người dùng mới. Ví dụ:
adduser auser1 để thêm người dùng auser1. Bảng sau đây là những người dùng cần
thêm vào trong các máy tính trên mạng.
Tên host Tên người dùng
ca globus
hosta globus, auser1
hostb globus, buser1
Bảng 7.3b: Danh sách người dùng trên các máy tính
b- Thiết lập thời gian
Trong mạng Grid computing, việc đồng bộ hoá thời gian giữa các máy tính với
nhau là rất quan trọng. Nếu thời gian không được đồng bộ, khi dùng chứng thực GSI
sẽ xảy ra lỗi. Do đó, chúng tôi thiết lập time server là NTP cho môi trường Grid của
mình và thiết lập thời gian cho tất cả các máy tính trong hệ thống.
Để cấu hình NTP:
Trên máy tính CA làm NTP server, chỉnh sửa tệp: /etc/ntp.conf, bỏ comment 2 dòng
dưới đây bằng cách bỏ ký từ # đầu dòng:
55
server 127.127.1.0 # local clock
driftfile /etc/ntp/drift
Thực hiện tương tự với 2 máy Host A và Host B:
server (địa chỉ IP của CA) # time server
driftfile /etc/ntp/drift
Trên tất cả các máy, cầu hình ntp deamon bằng cách dùng lệnh:
[root@hosta]# chkconfig ntpd -on
Bắt đầu chạy dịch vụ ntp
[root@hosta]# service ntpd start
Để kiểm tra thời gian đã được đồng bộ hay chưa, dùng lệnh ntpq. Nếu có dấu sao
(*) đằng trước tên host thì cấu hình NTP đã thành công:
[root@hosta]# ntpq -p
remote refid st t when poll reach delay offset jitter
==========================================
*ca.gridk47.com LOCAL(0) 6 u 516 1024 377 0.931 -2.258 0.262
c- Thiết lập tường lửa
Ở đây cúng tôi không thiết lập tường lửa. Nếu thiết lập tường lửa, cần phải
mở các cổng TCP sau đây để lắng nghe các dịch vụ và thành phần của Globus Toolkit.
Cổng TCP Các thành phần của GT4
2811 GridFTP
8080 Globus container (chế độ không bảo mật)
8443 Globus container (chế độ bảo mật)
Bảng 7.3c: Các cổng TCP cần mở khi thiết lập tường lửa
9.3.3. Cài đặt Globus Toolkit 4.0
Để cài đặt Globus Toolkit 4.0, chúng tôi sử dụng gói tin Binary cho Fedora
Core 3.
Lấy gói tin binary, vào địa chỉ:
56
http://www.globus.org/toolkit/downloads/4.0.0/
Vào người dùng globus, bung tệp nén binary:
[globus@hosta]$ tar xvzf gt4.0.0-ia32-fedora3-binary-installer.tar.gz \
-C /tmp
Thiết lập biến môi trường cho thư mục chứa Globus:
[globus@hosta]$ export GLOBUS_LOCATION=/usr/local/globus-4.0.0
Thay đổi quyền hạn của thư mục này cho người dùng globus:
[globus@hosta]$ su
Password:
[root@hosta]# mkdir $GLOBUS_LOCATION
[root@hosta]# chown globus:globus $GLOBUS_LOCATION
[root@hosta]# exit
exit
[globus@hosta]$
Cấu hình và cài đặt Globus Toolkit 4.0, mô tả qua các bước sau:
[globus@hosta]$ cd /tmp/gt4.0.0-ia32-fedora3-binary-installer
[globus@hosta]$ ./configure --prefix=$GLOBUS_LOCATION
checking for javac... /usr/local/java/j2sdk1.5.0/bin/javac
checking for ant... /usr/local/apache-ant-1.6.3/bin/ant
configure: creating ./config.status
config.status: creating Makefile
[globus@hosta]$ make 2>&1 | tee build.log
cd gpt-3.2autotools2004 && OBJECT_MODE=32 ./build_gpt
build_gpt ====> installing GPT into /usr/local/globus-4.0.0
... (Bỏ qua thông tin)
[globus@hosta]$ make install
ln -s /usr/local/globus-4.0.0/etc/gpt/packages
57
/usr/local/globus-4.0.0/etc/globus_packages
/usr/local/globus-4.0.0/sbin/gpt-postinstall
...(Bỏ qua thông tin)
config.status: creating fork.pm
..Done
9.4. Cấu hình và thử nghiệm môi trường Grid
Sau khi cài đặt xong Globus Toolkit, cần phải cấu hình môi trường grid. Để
cấu hình môi trường grid, cần cấu hình các thành phần sau:
Cấu hình các biến môi trường
Cấu hình bảo mật
Cấu hình Java WS Core
Cấu hình và kiểm tra GridFTP
9.4.1. Cấu hình các biến môi trường
Để tất cả các người dùng đều có thể sử dụng các biến môi trường của Grid.
Chẳng hạn: GLOBUS_LOCATION, mở tệp /etc/profile và thêm đoạn:
export GLOBUS_LOCATION=/usr/local/globus-4.0.0
source $GLOBUS_LOCATION/etc/globus-user-env.sh
source $GLOBUS_LOCATION/etc/globus-devel-env.sh
9.4.2. Cấu hình bảo mật
Chúng tôi sử dụng SimpleCA để cài đặt bảo mật. SimpleCA là thành phần
được tích hợp trong Globus Toolkit 4.0.
a- Cài đặt các gói tin CA
Vào tài khoản người dùng globus tại máy CA
Để cài đặt simpleCA, dùng lệnh setup-simple-ca và thực hiện các bước:
[globus@ca]$ $GLOBUS_LOCATION/setup/globus/setup-simple-ca
WARNING: GPT_LOCATION not set, assuming:
GPT_LOCATION=/usr/local/globus-4.0.0
58
C e r t i f i c a t e A u t h o r i t y S e t u p
This script will setup a Certificate Authority for signing Globus users
certificates. It will also generate a simple CA package that can be
distributed to the users of the CA.
The CA information about the certificates it distributes will be kept in:
/home/globus/.globus/simpleCA/
/usr/local/globus-4.0.0/setup/globus/setup-simple-ca: line 250: test: res:
integer expression expected
The unique subject name for this CA is:
cn=Globus Simple CA, ou=simpleCA-ca.gridk47.com, ou=GlobusTest, o=Grid
Do you want to keep this as the CA subject (y/n) [y]: y
Enter the email of the CA (this is the email where certificate requests will be
sent to be signed by the CA): [email protected]
The CA certificate has an expiration date. Keep in mind that once the CA
certificate has expired, all the certificates signed by that CA become invalid.
A CA should regenerate the CA certificate and start re-issuing ca-setup
packages before the actual CA certificate expires. This can be done by
re-running this setup script. Enter the number of DAYS the CA certificate
should last before it expires.
[default: 5 years (1825 days)]: (type the number of days)1825
Enter PEM pass phrase: (nhập mật khẩu chứng thực)
Verifying - Enter PEM pass phrase: (nhập mật khẩu chứng thực)
... (Bỏ qua thông tin)
setup-ssl-utils: Complete
b- Thiết lập bảo mật cho các nốt mạng
Sau khi cài đặt simpleCA, một gói tin được tạo ra để cấu hình bảo mật cho các
nốt mạng khác. Sao các gói tin này vào mỗi nốt mạng.
59
Vào tài khoản globus trên các máy Host A và Host B, sao chép gói tin tại máy CA.
[globus@hosta]$ scp globus@ca:/home/globus/.globus/simpleCA \
/globus_simple_ca_(ca_hash)_setup-0.18.tar.gz .
[globus@hosta]$ $GLOBUS_LOCATION/sbin/gpt-build \
globus_simple_ca_(ca_hash)_setup-0.18.tar.gz gcc32dbg
[globus@hosta]$ $GLOBUS_LOCATION/sbin/gpt-postinstall
Vào tài khoản root, cấu hình CA cho mỗi nốt mạng. Sau khi cấu hình, thư mục
/etc/grid-security được tạo ra
[root@hosta]# $GLOBUS_LOCATION/setup\
/globus_simple_ca_[ca_hash]_setup/setup-gsi -default
c- Đăng ký và xác nhận chứng thực host
Mỗi host khi tham gia mạng grid đều phải đăng ký chứng thực và được CA
xác nhận chứng thực. Ví dụ để đăng ký chứng thực cho Host A
Vào tài khoản root, yêu cầu đăng ký chức thực với tên host là hosta
[root@hosta]# grid-cert-request -host hosta
Để xác nhận chứng thực
Chép tệp /etc/grid-security/hostcert_request.pem được tạo ra khi đang ký chứng
thực tại Host A vào máy CA.
Trong máy Host A, vào tài khoản globus, xác nhận chứng thực bằng lệnh: grid-ca-
sign
[globus@ca]$ grid-ca-sign -in hostcert_request.pem -out hostcert.pem
To sign the request
please enter the password for the CA key: (nhập mật khẩu chứng thực)
The new signed certificate is at:
/home/globus/.globus/simpleCA//newcerts/01.pem
Chép đè tệp hostcert.pem đè lên tệp có sẵn trong thư mục /etc/grid-security tại Host
A
d- Đăng ký và xác nhận chứng thực người dùng
60
Tương tự như host, mỗi người dùng khi tham gia vào mạng Grid đều phải
đăng ký chứng thực và được xác nhận chứng thực người dùng. Ví dụ để đăng ký và
xác nhận chứng thực với người dùng auser1 tại Host A
Để đăng ký chứng thực:
[auser1@hosta]$ grid-cert-request
Enter your name, e.g., John Smith: grid user 1
A certificate request and private key is being created.
You will be asked to enter a PEM pass phrase.
This pass phrase is akin to your account password,and is used to protect your
key file.
If you forget your pass phrase, you will need to obtain a new certificate.
Generating a 1024 bit RSA private key
.....................................++++++
...++++++
writing new private key to '/home/auser1/.globus/userkey.pem'
Enter PEM pass phrase: (nhập mật khẩu chứng thực)
Verifying - Enter PEM pass phrase: (nhập lại mật khẩu chứng thực)
...
Để xác nhận chứng thực người dùng
Chép tệp /home/auser1/.globus/usercert_request.pem từ máy Host A sang máy CA.
Tại máy CA, vào tài khoản globus, xác nhận chứng thực bằng cách dùng lệnh grid-
ca-sign
[globus@ca]$ grid-ca-sign -in usercert_request.pem -out usercert.pem
To sign the request
please enter the password for the CA key:
The new signed certificate is at:
/home/globus/.globus/simpleCA//newcerts/02.pem
61
Chép tệp usercert.pem đè lên tệp đã có sẵn tại thư mục /home/auser1/.globus/
ở Host A.
Để kiểm tra người dùng đã được chứng thực, vào tài khoản auser1 và dùng lệnh:
grid-proxy-init -debug -verify
[auser1@hosta]$ grid-proxy-init -debug -verify
User Cert File: /home/auser1/.globus/usercert.pem
User Key File: /home/auser1/.globus/userkey.pem
Trusted CA Cert Dir: /etc/grid-security/certificates
Output File: /tmp/x509up_u511
Your identity:
/O=Grid/OU=GlobusTest/OU=simpleCA-ca.gridk47.com/OU=gridk47.com/
CN=grid
user 1
Enter GRID pass phrase for this identity:
Creating proxy .........++++++++++++
.................++++++++++++
Done
Proxy Verify OK.
e- Ánh xạ người dùng local với người dùng grid
Globus Toolkit 4.0 yêu cầu ánh xạ giữa người dùng được xác thực grid với
người dùng local.
Để lấy tên người dùng được xác thực grid, dùng lệnh grid-cert-request.
[auser1@hosta]$ grid-cert-info -subject -f /home/auser1/.globus/usercert.pem
/O=Grid/OU=GlobusTest/OU=simpleCA-ca.gridk47.com/OU=gridk47.com/
CN=grid user 1
Vào tài khoản root, ánh xạ tên người dùng này với tên người dùng local, dùng lệnh:
grid-mapfile-add-entry
[root@hosta]# grid-mapfile-add-entry -dn \
62
"/O=Grid/OU=GlobusTest/OU=simpleCA-ca.gridk47.com/
OU=gridk47.com/CN=grid user 1" -ln auser1
Modifying /etc/grid-security/grid-mapfile ...
/etc/grid-security/grid-mapfile does not exist... Attempting to create
/etc/grid-security/grid-mapfile
New entry:
"/O=Grid/OU=GlobusTest/OU=simpleCA-ca.gridk47.com/
OU=gridk47.com/CN=grid user 1" auser1
(1) entry added
Để xem thông tin người dùng được ánh xạ, mở tệp /etc/grid-security/grid-mapfile
"/O=Grid/OU=GlobusTest/OU=simpleCA-ca.gridk47.com/OU=gridk47.com/
CN=grid user 1" auser1
Để kiểm tra tệp ánh xạ, dùng lệnh: grid-mapfile-check-consistency
[root@hosta]# grid-mapfile-check-consistency
9.4.3. Cấu hình Java WS Core
Để kiểm tra Java WS Core đã được cài đặt thành công, thực hiện như sau:
Vào tài khoản globus, thực hiện lệnh:
globus-start-container
hoặc
globus-start-container –nosec
nếu chạy ở chế độ không bảo mật.
Sau khi tiến trình hoàn thành, xuất hiện thông điệp như sau:
...
Starting SOAP server at: http://192.168.1.103:8080/wsrf/services/With the
following services:
[1]: http://192.168.1.103:8080/wsrf/services/TriggerFactoryService
[2]: http://192.168.1.103:8080/wsrf/services/DelegationTestService
63
... (Bỏ qua thông tin)
[51]: http://192.168.1.103:8080/wsrf/services/ManagedJobFactoryService
...
9.4.4. Cấu hình và kiểm tra GridFTP
Phần này mô tả việc cài đặt và thử nghiệm với GridFTP
a- Cài đặt GridFTP
Để cài đặt GridFTP, gán dịch vụ GridFTP với tên gsiftp và cổng TCP là 2811 bằng
cách mở tệp /etc/services và thêm dòng:
gsiftp 2811/tcp # GridFTP
Tạo tệp /etc/xinetd.d/gsiftp với nội dung sau:
service gsiftp
{
instances = 100
socket_type = stream
wait = no
user = root
env += GLOBUS_LOCATION=/usr/local/globus-4.0.0
env += LD_LIBRARY_PATH=/usr/local/globus-4.0.0/lib
server = /usr/local/globus-4.0.0/sbin/globus-gridftp-server
server_args = -i
log_on_success += DURATION
nice = 10
disable = no
}
Khởi động lại xinetd daemon:
[root@hosta]# service xinetd restart
Stopping xinetd: [ OK ]
64
Starting xinetd: [ OK ]
b- Thử nghiệm GridFTP
Tiến hành các bước thử nghiệp GridFTP
Vào tài khoản người dùng đã được chứng thực quyền hạn bởi máy CA. Ví dụ:
auser1
Dùng lệnh: grid-proxy-init để khởi tạo proxy
Dùng lệnh globus-url-copy <URL nguồn> <URL đích> để kiểm tra hoạt động của
GridFTP
9.5. Gỡ bỏ Globus Toolkit 4.0
Phần này hướng dẫn gỡ bỏ bộ công cụ Globus Toolkit 4.0. Để thực hiện gỡ
bỏ, thực hiện các bước sau:
Đóng WS Core nếu đang chạy
Vào tài khoản root, xoá các thư mục chứa globus tookit, grid security và apache ant.
[root@hosta]# rm -rf /usr/local/globus-4.0.0/
[root@hosta]# rm -rf /etc/grid-security/
[root@hosta]# rm -rf /usr/apache-ant-1.6.3/
Xóa các biến môi trường đã khởi tạo trong tệp /etc/profile
Xóa dịch vụ GridFTP bằng cách xóa dòng: gsiftp 2811/tcp trong tệp: /etc/services
Xóa GridFTP daemon bằng việc thực hiện lệnh:
[root@hosta]# rm /etc/xinetd.d/gsiftp
[root@hosta]# service xinetd restart
Stopping xinetd: [ OK ]
Starting xinetd: [ OK ]
Xóa tài khoản người dùng globus
Xóa Java SDK
65
Chương 10. Các bước lập trình một chương trình Grid
Chương này, chúng tôi sẽ lấy một chương trình có sẵn, rất đơn giản, đó là
chương trình Math Service, để mô tả các bước lập trình một dịch vụ Grid trên Grid
Computing. Chương trình được viết trên nền ngôn ngữ Java.
10.1. Giới thiệu sơ lược về chương trình Math Service
Math Service là một dịch vụ Web đơn giản có trạng thái, sử dụng WSRF để
lưu trữ các trạng thái thông tin. Nó cho phép người dùng thực hiện các phép toán:
Cộng
Trừ
Do đó, Math Service sẽ có các thuộc tính tài nguyên (resource properties, viết
tắt là RPs):
Giá trị (integer)
Phép toán cuối (string)
Ta cũng thêm một phép toán "Get Value" để truy cập vào giá trị RP. Logic của
Math Service rất đơn giản. Khi một tài nguyên mới được tạo ra, mọi "giá trị" RP đều
được khởi tạo bằng 0, và "phép toán cuối" RP được khởi tạo là "NONE". Các phép
toán cộng và trừ chỉ cần một tham số nguyên. Tham số này được cộng/trừ với "giá trị"
RP, và theo đó "phép toán cuối" RP được thay đổi bằng "ADDITION" hoặc
"SUBTRACTION". Ngoài ra, các phép toán cộng/ trừ không trả lại giá trị.
10.2. Các bước lập trình chương trình Math Service
Đối với chương trình Math Service nói riêng và một chương trình dịch vụ Grid
nói chung, nhìn chung có 5 bước lập trình. Các bước gồm có:
Định nghĩa giao diện dịch vụ. Sử dụng WSDL
Thực thi dịch vụ. Sử dụng Java
Định nghĩa các tham số của việc triển khai. Sử dụng WSDD và JNDI
Biên dịch và tạo tệp GAR. Sử dụng Ant
Triển khai dịch vụ. Sử dụng GT4
66
Trong phần này, chung tôi sẽ lần lượt mô tả các bước nêu trên
10.2.1. Bước 1: Định nghĩa giao diện dịch vụ
Bước đầu tiên để viết một dịch vụ Grid là định nghĩa giao diện dịch vụ. Một
dịch vụ Grid có nhiều người dùng tương tác. Mỗi người dùng tương tác với dịch vụ
bằng cách gửi yêu cầu. Dịch vụ tiếp nhận yêu cầu người dùng, xử lý yêu cầu và trả lại
đáp ứng yêu cầu của người dùng đó. Giao diện dịch vụ để xác định những chức năng
mà dịch vụ có thể cung cấp cho người dùng. Trong chương trình Math Service, giao
diện dịch vụ là những phép toán mà người dùng có thể yêu cầu đến dịch vụ. Theo mô
tả bài toán ở trên, giao diện dịch vụ của chương trình Math Service gồm 3 phép toán:
cộng, trừ và lấy giá trị. Giao diện dịch vụ còn gọi là port type (được viết là portType).
Một giao diện dịch vụ Web cũng như dịch vụ Grid được viết trong tệp dưới
dạng .wsdl. Đây là tệp mô tả giao diện dịch vụ Web/Grid. Có 2 cách để viết tệp mô tả
này:
Cách 1: Định nghĩa giao diện bằng tệp Java, sau đó chuyển đổi tệp Java sang tệp wsdl.
Giao diện dịch vụ Math Service viết bằng Java như sau:
public interface Math
{
public void add(int a);
public void subtract(int a);
public int getValueRP();
}
Cách 2: Viết trực tiếp một tệp wsdl. Tệp mô tả giao diện wsdl có các thành phần sau:
Phần HEADER: Đầy là phần định nghĩa tên, đường dẫn và namespace của dịch vụ
Phần TYPES: Phần này định nghĩa các biến, kiểu biến và các thuộc tính tài nguyên.
Phần MESSAGES: Là phần định nghĩa các thông điệp mà người dùng và dịch vụ
tương tác với nhau
Phần PORTTYPE: Là phần định nghĩa các phép toán mà người dùng và dịch vụ
tương tác với nhau.
Tệp định nghĩa giao diện của chương trình Math Service đầy đủ như sau:
67
<?xml version="1.0" encoding="UTF-8"?>
<definitions name="MathService"
targetNamespace="http://www.globus.org/namespaces/examples/core/MathService_instance"xmlns="http://schemas.xmlsoap.org/wsdl/"
xmlns:tns="http://www.globus.org/namespaces/examples/core/MathService_instance"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:wsrp="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties-1.2-draft-01.xsd"
xmlns:wsrpw="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties-1.2-draft-01.wsdl"
xmlns:wsdlpp="http://www.globus.org/namespaces/2004/10/WSDLPreprocessor"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<wsdl:import namespace="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties-1.2-draft-01.wsdl"
location="../../wsrf/properties/WS-ResourceProperties.wsdl" />
<!—
T Y P E S
-->
<types>
<xsd:schema
targetNamespace="http://www.globus.org/namespaces/examples/core/MathService_instance"
xmlns:tns=http://www.globus.org/namespaces/examples/core/MathService_instance
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<!-- REQUESTS AND RESPONSES -->
<xsd:element name="add" type="xsd:int"/>
<xsd:element name="addResponse">
<xsd:complexType/>
</xsd:element>
<xsd:element name="subtract" type="xsd:int"/>
<xsd:element name="subtractResponse">
<xsd:complexType/>
</xsd:element>
<xsd:element name="getValueRP">
<xsd:complexType/>
</xsd:element>
<xsd:element name="getValueRPResponse" type="xsd:int"/>
<!-- RESOURCE PROPERTIES -->
68
<xsd:element name="Value" type="xsd:int"/>
<xsd:element name="LastOp" type="xsd:string"/>
<xsd:element name="MathResourceProperties">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="tns:Value" minOccurs="1" maxOccurs="1"/>
<xsd:element ref="tns:LastOp" minOccurs="1" maxOccurs="1"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
</types>
<!—
M E S S A G E S
-->
<message name="AddInputMessage">
<part name="parameters" element="tns:add"/>
</message>
<message name="AddOutputMessage">
<part name="parameters" element="tns:addResponse"/>
</message>
<message name="SubtractInputMessage">
<part name="parameters" element="tns:subtract"/>
</message>
<message name="SubtractOutputMessage">
<part name="parameters" element="tns:subtractResponse"/>
</message>
<message name="GetValueRPInputMessage">
<part name="parameters" element="tns:getValueRP"/>
</message>
<message name="GetValueRPOutputMessage">
<part name="parameters" element="tns:getValueRPResponse"/>
</message>
69
<!—
P O R T T Y P E
-->
<portType name="MathPortType"
wsdlpp:extends="wsrpw:GetResourceProperty"
wsrp:ResourceProperties="tns:MathResourceProperties">
<operation name="add">
<input message="tns:AddInputMessage"/>
<output message="tns:AddOutputMessage"/>
</operation>
<operation name="subtract">
<input message="tns:SubtractInputMessage"/>
<output message="tns:SubtractOutputMessage"/>
</operation>
<operation name="getValueRP">
<input message="tns:GetValueRPInputMessage"/>
<output message="tns:GetValueRPOutputMessage"/>
</operation>
</portType>
</definitions>
10.2.2. Bước 2: Thực thi dịch vụ.
Trong khi bước định nghĩa giao diện cho biết dịch vụ làm những cài gì? thì ở
bước này – thực thi dịch vụ cho biết dịch vụ làm như thế nào? Sau đây là các thành
phần của bước thực thi dịch vụ
a- Thành phần Qnames
Trong dịch vụ Grid, QName là một tên bao gồm tên của namespace và tên
local. Ví dụ QName của Value RP là:
{http://www.globus.org/namespaces/examples/core/
MathService_instance}Value
Sử dụng lớp MathQNames để định nghĩa rút gọn QName.
70
package org.globus.examples.services.core.first.impl;
import javax.xml.namespace.QName;
public interface MathQNames {
public static final String NS = "http://www.globus.org/namespaces/\
examples/core/MathService_instance";
public static final QName RP_VALUE = new QName(NS, "Value");
public static final QName RP_LASTOP = new QName(NS, "LastOp");
public static final QName RESOURCE_PROPERTIES = new
QName(NS,"MathResourceProperties");
}
b- Thực thi dịch vụ
Lớp MathService để thực thi dịch vụ:
public class MathService implements Resource, ResourceProperties{
}
MathService thực thi 2 giao diện là Resource (mô tả tài nguyên dịch vụ Grid)
và ResourceProperties (mô tả các thuộc tính tài nguyên dịch vụ Grid).
Tài nguyên dịch vụ gồm 2 thành phần: Value: kiểu xsd:int và LastOp: kiểu
xsd:string.
/* Resource properties */
private int value;
private String lastOp;
Các phép toán: lấy giá trị và đặt giá trị được thực thi như sau:
/* Get/Setters for the RPs */
public int getValue() {
return value;
}
public void setValue(int value) {
this.value = value;
}
public String getLastOp() {
return lastOp;
71
}
public void setLastOp(String lastOp) {
this.lastOp = lastOp;
}
Các giá trị thuộc tính của tài nguyên dược khởi tạo trong
constructor của lớp MathService:
/* Constructor. Initializes RPs */
public MathService() throws RemoteException {
this.propSet = new SimpleResourcePropertySet(
MathQNames.RESOURCE_PROPERTIES);
try { /* Initialize the RP's */
ResourceProperty valueRP = new ReflectionResourceProperty(
MathQNames.RP_VALUE, "Value", this);
this.propSet.add(valueRP);
setValue(0);
ResourceProperty lastOpRP = new ReflectionResourceProperty(
MathQNames.RP_LASTOP, "LastOp", this);
this.propSet.add(lastOpRP);
setLastOp("NONE");
} catch (Exception e) {
throw new RuntimeException(e.getMessage());
}
}
Hàm add() và getValueRP() thực thi các phép toán cộng và lấy giá trị:
public AddResponse add(int a) throws RemoteException {
value += a;
lastOp = "ADDITION";
return new AddResponse();
}
public int getValueRP(GetValueRP params) throws RemoteException {
return value;
}
72
10.2.3.Bước 3: Định nghĩa việc triển khai dịch vụ.
Hai bước quan trọng để lập trình một dịch vụ Grid đã được tiến hành bao gồm
định nghĩa và thực thi dịch vụ. Vậy làm thế nào để các Client có thể kết nối với dịch
vụ này? Bước 3 sẽ thực hiện công việc đó. Định nghĩa việc triển khai dịch vụ nói cho
Grid container (là thành phần chứa các dịch vụ Grid, có trong bộ công cụ Globus
Toolkit 4.0) biết được làm thế nào để quảng bá dịch vụ Math Service này. Chẳng hạn
như nói cho Grid container biết được địa chỉ URI của dịch vụ. Tệp định nghĩa việc
triển khai như sau:
<?xml version="1.0" encoding="UTF-8"?>
<deployment name="defaultServerConfig"
xmlns="http://xml.apache.org/axis/wsdd/"
xmlns:java="http://xml.apache.org/axis/wsdd/providers/java"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<service name="examples/core/first/MathService" provider="Handler" use="literal"
style="document">
<parameter name="className"
value="org.globus.examples.services.core.first.impl.MathService"/>
<wsdlFile>share/schema/examples/MathService_instance/Math_service.wsdl</wsdlFile>
<parameter name="allowedMethods" value="*"/>
<parameter name="handlerClass" value="org.globus.axis.providers.RPCProvider"/>
<parameter name="scope" value="Application"/>
<parameter name="providers" value="GetRPProvider"/>
<parameter name="loadOnStartup" value="true"/>
</service>
</deployment>
Các thành phần được định nghĩa bao gồm:
service name: xác định địa chỉ URI của dịch vụ trong Grid container. Ở đây là:
http://localhost:8080/wsrf/services/examples/core/first/MathService
className: xác định lớp thực thi giao diện dịch vụ
tệp WSDL: xác định tệp định nghĩa giao diện dịch vụ wsdl
Load on startup: cho phép dịch vụ được nạp khi khởi động Grid container
73
10.2.4.Bước 4: Biên dịch và tạo tệp GAR
Ở các bước trên, mỗi khi hoàn thành mỗi bước lại tạo ra mỗi loại thành phần
riêng rẽ. Vậy làm thế nào để triển khai được các thành phần đó vào trong Grid
container cũng như biên dịch các tệp thực thi Java. Bước này sẽ thực hiện việc tạo tệp
nén GAR chứa các thành phần trên. Chức năng của tệp GAR:
Liên kết các tệp wsdl
Khởi tạo và biên dịch các lớp từ các thành phần trong tệp wsdl
Biên dịch các tệp thực thi Java
Tổ chức các tệp lại với nhau trong một cấu trúc đường dẫn xác định.
Công cụ Ant (có trong phần mềm Apache Ant đã cài đặt) có chức năng biên dịch và
tạo tệp GAR từ các thành phần ở trên. Mô hình sau đây mô tả chức năng đó của Ant.
Hình 24: Chức năng tạo tệp GAR của công cụ Ant
74
Để tạo tệp GAR, ta dùng script globus-build-service có trong bộ Globus
Service Build Tools (GSBT) tại http://gsbt.sourceforge.net/ . Cấu trúc dòng lệnh để tạo
tệp GAR như sau:
./globus-build-service.sh -d <đường dẫn tới dịch vụ> -s <tệp WSDL của dịch vụ>
Đối với Math Service, dòng lệnh như sau:
./globus-build-service.sh \
-d org/globus/examples/services/core/first/ \
-s schema/examples/MathService_instance/Math.wsdl
10.2.5.Bước 5: Triển khai dịch vụ
Đây là bước để triển khai dịch vụ trong Grid container. Việc triển khai dịch vụ
vào trong Grid container tương đương với việc bung tệp nén GAR được tạo ra ở bước
4 và đưa các thành phần thích hợp vào Grid container. Thực hiện dòng lệnh sau:
globus-deploy-gar $EXAMPLES_DIR/org_globus_examples_services_core_first.gar
Để xóa bỏ dịch vụ trong Grid container, dùng lệnh globus-undeploy-gar:
globus-undeploy-gar org_globus_examples_services_core_first
10.3. Chạy thử chương trình Math Service
Sau khi đã triển khai dịch vụ Math Service vào Grid container, khởi động Grid
container bằng lệnh: globus-start-container, dịch vụ sẽ bắt đầu hoạt động. Nhận biết
dịch vụ đã hoạt động bằng địa chỉ URI của dịch vụ:
http://127.0.0.1:8080/wsrf/services/examples/core/first/MathService
Để kiểm tra hoạt động của dịch vụ, ta viết một Client đơn giản, gửi yêu cầu
đến dịch vụ Math Service thực hiện các phép toán: cộng, trừ và lấy giá trị. Lớp Client
được viết như sau:
75
public class Client {
public static void main(String[] args) {
MathServiceAddressingLocator locator = new MathServiceAddressingLocator();
try {
String serviceURI=args[0];
EndpointReferenceType endpoint = new EndpointReferenceType();
endpoint.setAddress(new Address(serviceURI));
MathPortType math = locator.getMathPortTypePort(endpoint);
math.add(10); // Perform an addition
math.add(5); // Perform another addition
// Access value
System.out.println("Current value:" + math.getValue(new GetValueRP()));
// Perform a subtraction
math.subtract(5);
// Access value
System.out.println("Current value:" + math.getValue(new GetValueRP()));
} catch (Exception e) {
e.printStackTrace();
}
}
}
Các đối tượng chính:
EndpointReferenceType: là đối tượng tham chiếu đến địa chỉ của tài nguyên dịch
vụ.
MathPortType: là đối tượng tham chiếu đến giao diện (gọi là portType) của dịch vụ.
Chương trình trên sẽ thực hiện phép cộng 10, cộng 5, in ra kết quả, sau đó trừ
5 và in ra kết quả. Biên dịch và chạy tệp Client, ta được kết quả:
Current value: 15
Current value: 10
Chạy chương trình lần thứ 2, ta được kết quả:
Current value: 25
Current value: 20
76
Chứng tỏ kết quả tính toán ở lần thực hiện cuối cùng đều được lưu vào tài nguyên của
dịch vụ Grid.
77
Chương 11. Tự xây dựng một dịch vụ Grid: Bài toán số
nguyên tố
Ở chương 10, chúng tôi đã mô tả các bước lập trình cũng như chạy thử nghiệm
một chương trình có sẵn là: Math Service. Tuy nhiên, Math Serivce là một chương
trình mang tính thử nghiệm, không có ứng dụng gì trong thực tiễn. Trong chương này,
chúng tôi sẽ phát triển chương trình riêng của mình, phức tạp hơn và có ý nghĩa ứng
dụng trong thực tiễn, đó là chương trình Số nguyên tố.
Số nguyên tố là số nguyên lớn hơn 1, chỉ chia hết cho 1 và chính nó. Số nguyên tố
không chỉ là số có ý nghĩa lớn trong lĩnh vực toán học mà còn có ý nghĩa quan trọng
trong lĩnh vực công nghệ thông tin, đặc biệt là vấn đề bảo mật và mã hoá. Mỗi tổ chức
đều muốn sử dụng một số nguyên tố riêng, đủ lớn để đảm bảo bí mật trong việc mã
hoá thông tin nội bộ. Vậy, làm thế nào để tìm được số nguyên tố đủ lớn đảm bảo yêu
cầu đó?
Việc tìm một số nguyên tố nhỏ là không khó. Phương pháp đơn giản nhất là
dùng sàng Eratosthenes. Với phương pháp này, để kiểm tra số nguyên n có phải là số
nguyên tố hay không, ta kiểm tra n có chia hết cho số nguyên k từ 2 đến [ ]+1 hay
không? Nếu n không chia hết cho mọi ki (i = ) thì n là số nguyên tố. Ngược
lại, n là hợp số.
Tuy nhiên, việc tìm số nguyên tố lớn (khoảng từ 30 chữ số trở lên) không phải
là đơn giản. Bởi vì công việc đó nảy sinh một số vần đề sau đây:
Vấn đề 1: Làm thế nào để tìm được số nguyên tố lớn cũng như chứng minh tính
nguyên tố của số đó khi mà các phương pháp duyệt thông thường không còn khả thi.
Vấn đề 2: Thời gian cần thiết để hoàn thành việc tìm kiếm và kiểm tra một số
nguyên tố là rất lớn. Mặc dù ngày nay đã có sự hỗ trợ của máy tính điện tử, nhưng việc
tìm các số nguyên tố có hàng triệu chữ số phải mất đến hàng nghìn năm. Chẳng hạn,
số nguyên tố lớn nhất hiện nay là số có khoảng 9,1 triệu chữ số. Với một máy tính
Pentium 4 thông thường, phải mất khoảng 4500 năm để tìm được số này (Theo:
George Woltman - một lập trình máy tính của Great Internet Mersenne Prime Search
(GIMPS); thông tin từ:
http://www.gridcomputingplanet.com/news/article.php/3573946).
78
Vì vậy, chúng tôi phát triển bài toán Tìm số nguyên tố Mersenne trên môi
trường Grid Computing với hi vọng có thể giải quyết được các vấn đề trên trong thời
gian chấp nhận được.
Với vấn đề 1, chúng tôi không thực hiện việc tìm kiếm các số nguyên tố thông
thường. Thay vào đó, chúng tôi tìm các số nguyên tố dạng Mersenne.
Định nghĩa 1: Nếu n là số nguyên có dạng: 2p - 1 ( ) thì n gọi là số
Mersenne.
Định nghĩa 2: Số nguyên n gọi là số nguyên tố Mersenne nếu: n là số Mersenne
đồng thời là số nguyên tố.
Để tìm một số nguyên tố Mersenne, chúng tôi tìm hiểu và lựa chọn thuật toán
thích hợp.
Với vấn đề 2, chúng tôi không thực thi bài toán trên một máy tính mà sử dụng
giải pháp Grid Computing để thực thi bài toán trong mạng Grid Computing gồm nhiều
máy tính khác nhau. Grid Computing là một lĩnh vực khá mới mẻ ở nước ta hiện nay.
Được xem như là một “siêu máy tính giá rẻ”, Grid Computing đang được phát triển
rộng rãi cho các tổ chức trên thế giới.
Hiện nay, trên thế giới đã có một số tổ chức ứng dụng Grid Computing trong bài toán
Tìm số nguyên tố. Tiêu biểu là Great Internet Mersenne Prime Search (GIMPS). Tuy
nhiên, trong mô hình bài toán của họ đưa ra còn có một số vấn đề như là: thời gian tìm
kiếm lâu, mô hình phân chia công việc chưa hợp lý trong vấn đề xử lý song song…Với
những thách thức đó, chúng tôi cố gắng đưa một giải phát Tìm số nguyên tố ở dạng số
nguyên tố Mersenne trên Grid hy vọng có được một giải pháp tốt.
11.1. Giới thiệu công cụ phát triển
Ở chương 10, chúng tôi đã trình bày quá trình xây dựng một dịch vụ Grid gồm
các bước: định nghĩa giao diện, thực thi dịch vụ, cấu hình việc triển khai dịch vụ, tạo
tệp nén GAR và triển khai dịch vụ Grid trong Grid container. Trong mỗi bước, người
lập trình phải tạo ra các tệp ứng với các chức năng nhất định. Ví dụ, bước định nghĩa
giao diện, tạo các tệp .wsdl để định nghĩa giao diện dịch vụ web; Bước thực thi dịch
vụ, tạo các tệp .java để thực thi dịch vụ…Cuối cùng, người lập trình liên kết với các
thư viện Globus Toolkit để biên dịch các tệp, nén thành tệp GAR và triển khai dịch vụ.
Quá trình này có vẻ đơn giản khi xây dựng một chương trình dịch vụ Grid đơn giản.
Tuy nhiên, đối với các chương trình dịch vụ Grid phức tạp sẽ gây khó khăn cho người
79
lập trình trong việc viết chương trình và sửa lỗi. Nó đòi hỏi người lập trình mất nhiều
thời gian để viết các tệp, tìm kiếm và phát hiện lỗi.
Khó khăn trên đòi hỏi phải có công cụ hỗ trợ những người phát triển dịch vụ Grid.
Chúng tôi giới thiệu một trong các công cụ đó. GT4IDE là một công cụ hỗ trợ đắc lực
cho người phát triển dịch vụ Grid trên nền ngôn ngữ Java.
11.1.1.Giới thiệu công cụ GT4IDE
GT4IDE là một khung làm việc, hỗ trợ việc phát triển các dịch vụ Grid
Serivice 4.0 trên nền ngôn ngữ Java. GT4IDE là một plug-in của Eclipse - một IDE
của Java, phát triển độc lập trên các môi trường.
Chức năng của GT4IDE gồm có:
1 - Tương tác với các thư viện của Globus Toolkit 4.0, tạo project Globus Toolkit 4.0
để phát triển các dịch vụ Grid trên nền ngôn ngữ Java
2 - Tự động tạo các tệp cần thiết trong một project Globus Toolkit như: tệp wsdl - mô
tả giao diện; tệp .java - thực thi dịch vụ…
3 - Cùng với Eclipse, khả năng phát hiện và sửa lỗi của GT4IDE là khá tốt.
4 - Tự động biên dịch, tạo tệp GAR cho một project Globus Toolkit 4.0.
Với các chức năng đó, GT4IDE là một công cụ rất hữu ích cho các nhà phát triển các
dịch vụ Grid Serivce 4.0
11.1.2.Cài đặt GT4IDE
GT4IDE là một plug-in của Eclipse. Trước khi cài đặt GT4IDE phải cài đặt
Globus Toolkit 4.0 và Eclipse
Globus Toolkit 4.0 đã được trình bày ở chương trước.
Cài đặt Eclipse
o Download tại: http://download.eclipse.org/eclipse/downloads/index.php
o Giải nén tệp zip vào thư mục bất kỳ.
o Cấu hình Eclipse với JDK
Cài đặt GT4IDE
o Download GT4IDE tại: http://gsbt.sourceforge.net/content/view/27/47/
80
o GT4IDE gồm 2 gói binary: một cho JDK1.4 và một cho JDK1.5.
Download gói tương ứng với phiên bản JDK trên hệ thống của bạn.
o Cài đặt GT4IDE: giải nén tệp nén vào thư mục chủ của Eclipse.
o Cấu hình GT4IDE:
Khi chạy Eclipse, xuất hiện cửa sổ hỏi về đường dẫn thư mục chủ của Globus
Toolkit 4.0
Hình 25: Cửa sổ cấu hình đường dẫn GT4
Cấu hình lại các thông số của Globus Toolkit trong cửa sổ Preferences của Eclipse
Hình 26: Cửa sổ cấu hình GT4 Preferences
11.2. Tạo project GT4 với GT4IDE
Việc tạo một project mới có thể thực hiện với chức năng File -> New -> Project... -
> GT4 Project
81
Hình 27: Cửa sổ tạo một project GT4
o Project Name: Nhập tên project
o Create first Service: Đánh dấu để tạo project mới
Tiếp tục với cửa sổ lựa chọn các thông số về dịch vụ:
Hình 28: Cửa sổ lựa chọn thông số cho một project
Trong đó:
Base Package: là gói chứa các lớp, các thành phần của dịch vụ…
Base Target Namespace: là namespace của tệp mô tả giao diện wsdl
Name of Interface/PortType: tên Interface của dịch vụ Grid
82
Service Path: là địa chỉ URL của dịch vụ Grid
Design Pattern: Có 2 lựa chọn:
Singleton with ServiceResourceHome: để chọn dịch vụ đơn tài nguyên
Factory/Instance: để chọn dịch vụ đa tài nguyên
Provide implementation skeleton:
o Chọn Yes, using ReflectionResourceProperties
Giao diện đầy đủ của một chương trình dịch vụ Grid với GT4IDE như sau
Hình 29: Giao diện chính của chương trình GT4IDE với Eclipse
11.3. Thuật toán tìm số nguyên tố Mersenne
Phần này trình bày các khái niệm và thuật toán liên quan đến số nguyên tố
Mersenne. Hiện nay có khá nhiều thuật toán tìm số nguyên tố dạng Mersenne, chúng
tôi so sánh các thuật toán và lựa chọn thuật toán thích hợp nhất. Nội dung chính của
chương này gồm hai phần:
Các khái niệm và mệnh đề: Trình bày một số khái niệm về số nguyên tố Mersenne,
các mệnh đề và chứng minh các mệnh đề
Các thuật toán: Giới thiệu một số thuật toán tìm số nguyên tố dạng Mersenne.
83
Lựa chọn thuật toán: Chúng tôi lựa chọn một thuật toán thích hợp để sử dụng trong
chương trình.
11.3.1.Các khái niệm và mệnh đề
a- Một số khái niệm
Số Mersenne: Là số nguyên có dạng 2p-1, p N.
Những số Mersenne đầu tiên : 1, 3 , 7, 15, 31, 63, 127, 255, 511...
Số nguyên tố Mersenne : là số nguyên tố có dạng Mersenne.
Ví dụ: 3, 7, 31 và 127 là những số nguyên tố Mersenne tương ứng với p= 2, 3, 5, 7.
b- Các mệnh đề
Mệnh đề 1: Nếu 2p-1 là số nguyên tố thì p là số nguyên tố.
Chứng minh:
Giả sử p là hợp số, tức là p có dạng p= r * s, với r, s N; r, s > 1.
Khi đó ta có: 2p-1= 2rs-1=(2s-1) * (2s(r-1) + 2s(r-2) + ... + 2s + 1)
2rs-1 chia hết cho (2s-1),
2rs-1 hay 2p-1 cũng là hợp số, mâu thuẫn với giả thiết.
Mệnh đề được chứng minh.
Chú ý: điều ngược lại không đúng, p là số nguyên tố thì 2p-1 chưa chắc đã là số
nguyên tố.
Mệnh đề 2: Giả sử X1... Xn-1Xn với Xi {0, 1} là biểu diễn nhị phân của p
Gọi N0= 1
Ni = (Ni-1)2 mod k nếu Xi = 0
2(Ni-1)2 mod k nếu Xi = 1
Ta có: Nn là số dư trong phép chia 2p cho k
Hệ quả 1: Nếu Nn = 1 thì 2p - 1 chia hết cho k
11.3.2.Một số thuật toán tiêu biểu
Thử thừa số (Trial Factoring): Là thuật toán sử dụng Mệnh đề 2 để tìm số dư khi
chia 2p cho k.
84
Thuật toán:
Với đầu vào là số mũ p, và số bị chia k. Thuật toán Trial factoring tìm số dư
của 2p-1 cho k như sau
o Bước 1: N:= 1, X:= 0
o Bước 2: Tìm biểu diễn nhị phân của p: X0, X1, … Xm-1
o Bước 3: Lặp
For i := m - 1-> 0
X:= getBit(p,i); // tính bit thứ i
Nếu X = 0 thì N = (N* N) mod k
X = 1 thì N = 2(N* N) mod k
o Bước 4 : trả về giá trị của N
Ví dụ cụ thể :
Với p= 23 và k= 47 ta thực hiện như sau:
p = 23 dạng nhị phân là 10111
o N0=1
o Đầu tiên với 10111, ta tách bit trái nhất, vì bit này = 1 nên lấy N02*2 mod
47 được N1= 2.
o Với 0111 bit trái cùng là 0 nên lấy N12 mod 47 được N2=4.
o Cứ làm tiếp tục ta được N5=1.
o Theo hệ quả 1 => 223-1 không phải số nguyên tố.
85
Bình phương Lấy bit trái p còn lại nhân với 2(optional) mod 47
1*1 = 1 1 0111 1*2 = 2 2
2*2 = 4 0 111 No 4
4*4 = 16 1 11 16*2 = 32 32
32*32 = 1024 1 1 1024*2 = 2048 27
27*27 = 729 1 (hết bit) 729*2 = 1458 1
Sơ đồ thuật toán:
Sơ đồ thuật toán Trial Factoring
P-1 Factoring
Có một phương pháp phân tích thừa số khác mà GIMPS sử dụng để tránh thời
gian kiểm thử . Phương pháp này được gọi là phương pháp Pollard’s P-1. Nếu q là một
thừa số của một số, phương pháp P-1 sẽ tìm thừa số q nếu q-1 là một hợp số.
Phương pháp này khi thực hiện với số Mersenne tỏ ra đặc biệt hiệu quả. Lưu ý rằng,
thừa số q có dạng 2kp+1. Có thể dễ dàng sửa đổi phương pháp P-1 để nó tìm q nếu k là
hợp số.
Phương pháp P-1 rất đơn giản. Đầu tiên, chọn giới hạn B1. P-1 sẽ tìm thừa số
q với tất cả các thừa số của k < B1. Thứ hai, tính E , tích của tất cả các thừa số nhỏ hơn
B1. Thứ ba, tính x = 3E*2*P. Cuối cùng, kiểm tra GCD(x-1,2p-1) để xem thừa số đã
tìm thấy.
86
N=1, X = 0
m =countBit(p);
I = m - 1;
X = getBit(p,I);
I = I - 1;
N = (N* N) mod k N = 2(N* N) mod k
I >=0
X ==0
TrueFalse
True
False
Return N;
Lucas-Lehmer
Định lý Lucas-Lehmer: Với P>2, 2p-1 là số nguyên tố khi và chỉ khi Sp-2=0, với dãy S
được định nghĩa như sau:
S0=4,…, SN=(SN-12 - 2) mod (2P-1).
Ví dụ: để chứng minh 27-1 là số nguyên tố:
S0 = 4
S1 = (4 * 4 - 2) mod 127 = 14
S2 = (14 * 14 - 2) mod 127 = 67
S3 = (67 * 67 - 2) mod 127 = 42
S4 = (42 * 42 - 2) mod 127 = 111
S5 = (111 * 111 - 2) mod 127 = 0.
Để thực hiện được kiểm tra Lucas-Lehmer một cách hiệu quả, việc đầu tiên là
phải tìm cách nhanh nhất tính bình phương của một số rất lớn modulo 2p-1. Phương
pháp nhanh nhất để tính bình phương của một số rất lớn là phân những số lớn thành
những mảng, sau đó thực hiện Fast Fourier Transform (TFT) và Inverse Fast Fourier
Transform (IFFT).
Kiểm tra kép (Double Checking)
Để bảo đảm lần thực hiện đầu tiên của Lucas-Lehmer không xảy ra lỗi,
GIMPS chạy kiểm thử thêm một lần nữa. Trong mỗi lần test, 64bits thấp của S p-2,
phần còn lại, được in ra. Nếu chúng trùng nhau, GIMPS xác nhận kiểm tra kép. Nếu
chúng không trùng nhau, quá trình thử được lặp lại cho đến khi trùng nhau.
11.3.3.Lựa chọn thuật toán
Trong các thuật toán nói trên thì thuật toán thử thừa số (Trial Factoring) cài
đặt nhanh, đơn giản, và có tốc độ tính toán cao vì vậy chúng tôi sử dụng thuật toán này
để thực hiện chương trình tìm số nguyên tố trong mạng Grid Computing.
11.4. Phân tích và thiết kế bài toán
11.4.1.Mô tả hệ thống
Phần này trình bày các vấn đề về:
Mục đích của bài toán
87
Mô hình hoạt động của bài toán trong mạng Grid
Mô hình phân chia công việc
Dữ liệu tài nguyên
a- Mục đích của bài toán
Mục đích của bài toán là tìm các số nguyên tố n có dạng n = 2p - 1 (p N, p >
1). Tận dụng các ưu thế của Grid Computing về tính toán song song và phân tán dữ
liệu, yêu cầu đặt ra cho bài toán là tìm được các số nguyên tố lớn cũng như chứng
minh tính nguyên tố của các số đó trong một khoảng thời gian chấp nhận được.
b- Mô hình hoạt động của bài toán trong mạng Grid
Hệ thống hoạt động trong một mạng Grid Computing bao gồm một máy cung
cấp dịch vụ Server và các máy còn lại Client tham gia tính toán.
Hình 30: Sơ đồ mô tả mô hình bài toán trong mạng Grid
Chức năng của Server là quản lý các tài nguyên tính toán, điều phối hoạt động của
các Client trong mạng, tìm kiếm công việc và yêu cầu Client giải quyết công việc.
Chức năng của Client là giải quyết công việc và trả lại kết quả công việc cho
Server.
c- Mô hình Phân chia công việc
Với mô hình trên, việc “Tìm số nguyên tố” sẽ không thực thi trên một máy
tính mà được thực thi đồng thời bởi nhiều máy tính trong mạng Grid. Do đó, giải pháp
phân chia công việc cho các máy tính cùng tính toán là rất quan trọng. Chúng tôi đưa
ra các khái niệm “công việc” và “công việc con” trong bài toán “Tìm số nguyên tố”
nhằm mục đích mô tả giải pháp đó.
88
Server
Client 1 Client m
Yêu cầu thực hiện
công việc
Trả lại kết quả
Công việc
Ta gọi một công việc p là công việc xác định 2p - 1 có phải là số nguyên tố hay
không.
Công việc con
Để thực hiện công việc p, ta tiến hành kiểm tra 2p - 1 k hay không?
k = 2 = q
Công việc này có thể chia thành m công việc con
p1 k = 2 k1
p2 k = k1+1 k2
……………………….
pm k = km-1+1 q
Ví dụ: Công việc p với p = 5, n = 25 - 1 = 31, q = [√n] + 1 = 6 có thể được chia thành 2
công việc con:
p1 k = 2 4
p2 k = 5 6
Mỗi khoảng k gồm 2 cận đầu và cuối gọi là kd (k đầu) và kc (k cuối).
Mô hình phân chia công việc
Hình 31: Sơ đồ mô tả mô hình phân chia công việc
d- Dữ liệu tài nguyên
Tài nguyên là tập hợp các dữ liệu mô tả các thành phần dữ liệu của Client
tham gia vào mạng Grid. Các tài nguyên được đặt trên máy Service và được Service
quản lý (khởi tạo, cập nhật hay thu hồi). Mỗi Client khi tham gia vào mạng được
89
Công việc
Công việc con thứ 1 Công việc con thứ m
Tập số bị chia con 1 Tập số bị chia con m
Serivce cấp phát một tài nguyên cùng với khoá riêng (unique key) xác định tài nguyên
đó với các tài nguyên khác trong mạng.
Trong bài toán Tìm số nguyên tố, mỗi tài nguyên chứa tập dữ liệu gồm hai
thành phần:
- time: kiểu long, là dữ liệu lưu trữ thời gian mà Client mới cập nhật
- data: kiểu string, là dữ liệu lưu trữ tập các thành phần p, k, kd, kc-trong đó p là số
mũ, k là số bị chia đang được client tính toán, kd là số nguyên đầu tiên của khoảng
được cấp phát, kc là số nguyên cuối của khoảng được cấp phát -theo định dạng
“p:k:kd:kc”.
11.4.2.Phân tích hệ thống
Hệ thống gồm 2 phần: Service và Client. Service là một Grid service đóng vai
trò quản lý tài nguyên tính toán và điều phối hoạt động của các Client. Client đóng vai
trò là một Client thực thi công việc và trả lại kết quả cho Service.
a- Service
Các chức năng chính của service
Để đảm bảo cho hệ thống hoạt động một cách đúng đắn, Service phải quản lý
các trạng thái và hoạt động của tất cả các Client trong mạng. Chức năng của Service
gồm có:
1 - Quản lý các tài nguyên: khởi tạo tài nguyên quản lý trạng thái của client, cập nhật
các trạng thái của client, thu hồi tài nguyên khi client không còn tham gia vào mạng.
2 - Tìm kiếm và phân phối các công việc con khi có yêu cầu từ Client
3 - Phát hiện các Client không còn tham gia vào mạng
Các thành phần của Service
PrimeFactoryService: là dịch vụ để tạo tài nguyên cho mỗi client.
PrimeResource: Chứa tài nguyên của client, bao gồm tập các dữ liệu của tài nguyên
PrimeResourceHome: quản lí tất cả các tài nguyên cùng với các khoá riêng tương
ứng với tài nguyên đó.
PrimeService: Là dịch vụ thể hiện (instance) của Service. Đây là thành phần có vai
trò quan trọng trong hệ thống. Chức năng của PrimeService bao gồm:
90
o Quản lý và điều khiển mọi hoạt động của chương trình
o Đáp ứng các yêu cầu từ Client
Mô hình các thành phần của Service
Hình 32: Sơ đồ mô tả hoạt động của Service
Hình 33: Biểu đồ mô tả hoạt động của việc tạo tài nguyên
91
PrimeFactoryService PrimeResource
PrimeService PrimeResouceHome
Yêu cầu tạo
tài nguyên
Quản lýYêu cầu tìm
kiếm tài nguyên
Tạo
Client
Hình 34 : Biểu đồ mô tả hoạt động của việc lấy dữ liệu
b- Client
Chức năng của Client
Đơn giản hơn so với Service, chức năng của Client gồm có:
Yêu cầu công việc con
Thực hiện công việc con
Trả lại kết quả cho Service khi hoàn thành công việc con
Cập nhật thời gian hoạt động của Client sau một chu kỳ nhất định
Các thành phần của Client
PrimeClient: là chương trình chính của Client thực hiện các chức năng trên
PrimeData: lưu trữ các dữ liệu tính toán
11.4.3.Thiết kế hệ thống
Trong phần này sẽ mô tả thiết kế các dữ liệu, đối tượng đảm nhận các chức
năng nêu trong phần Phân tích hệ thống.
a- Mô hình các đối tượng trong Service
92
Hình 35: Sơ đồ biểu thị mối quan hệ giữa các đối tượng trong Service
b- Các lớp trong Service
Lớp PrimeResource:
Lớp lưu trữ các trạng thái của client
Các thành phần dữ liệu và phương thức
Dữ liệu / Phương thức Kiểu Chú thích
id Object id của tài nguyên, xác định tài nguyên duy
nhất
data String Chứa tập trạng thái của tài nguyên, gồm p,
k, kd, kc. Là xâu có định dạng “p:k: kd: kc”.
93
PrimeFactoryService
createResource()
PrimeResource
+ id
+ data
+ time
isTimeout()
create()
updateTime()
PrimeResouceHome
+ resouces
create()
getResouces()
PrimeConstants
+ TIMEOUT
+ K_LENGHT
PrimePKC
+ p
+ kcm
PrimePKC()
PrimeService
+ newp+ pkcm+ homegetResouce()getDataRP()findData()getResourceTimeoutKey()getNewJob()findDataOnceResouce()findDataResouceTimeout()findDataMutilResouces()notPrime()
Trong đó n = 2p-1 là số cần kiểm tra tính
nguyên tố. k là số lớn nhất trong khoảng [kd
, kc] đã được kiểm tra. Khoảng [kd , kc] là
khoảng số cần được kiểm tra tính chia hết
của n.
isTimeout() Boolean Xác định Client tương ứng với tài nguyên
này đã timout hay chưa
create() Object Tạo một tài nguyên mới
updateTime() Void Cập nhật thời gian time khi có yêu cầu từ
Client
Lớp PrimeResourceHome
Chức năng của lớp này là tạo một tài nguyên mới
Các thành phần dữ liệu và phương thức
Dữ liệu / Phương thức Kiểu Chú thích
resources HashTable Mảng băm chứa thông tin
các resources, gồm key và
PrimeResource tương ứng
create() ResourceKey Tạo một tài nguyên mới và
trả về key tương ứng
getResources() HashTable Lấy giá trị của resources
Lớp PrimeFactoryService
Chức năng của lớp này là yêu cầu PrimeResouceHome tạo một tài nguyên mới
Các thành phần dữ liệu và phương thức
Dữ liệu /Phương thức Kiểu Chú thích
createResouce() CreateResourceResponse Tạo một tài nguyên mới
khi có yêu cầu từ client
94
Lớp PrimePKC
Là lớp lưu trữ danh sách các số mũ p đang được tính toán và số kc tương ứng với p,
kc là khoảng cuối của số bị chia k được cấp phát. Việc lưu trữ 2 giá trị này có tác dụng
xác định công việc con tiếp theo tương ứng với số p.
Các thành phần dữ liệu và phương thức
Dữ liệu /Phương thức Kiểu Chú thích
p Int Số mũ p
kcm Int Số kc lớn nhất được cấp
phát tương ứng với p
PrimePKC() Constructor khởi tạo các
giá trị của lớp
Lớp PrimeService
Chức năng của lớp này là thực thi các hoạt động của dịch vụ
Các thành phần dữ liệu và phương thức
Dữ liệu /Phương thức Kiểu Chú thích
Newp Int Là số mũ p mới được cấp
phát
Pkcm Vector Là mảng lưu trữ danh sách
các đối tượng PrimePK
Home PrimeResourceHome Đối tượng
PrimeResourceHome để quản
lý các tài nguyên
getResouce() PrimeResource Lấy tài nguyên tương ứng với
Client yêu cầu tài nguyên
getDataRP() String Lấy dữ liệu thuộc tính của tài
nguyên
findData() String Hàm này tìm kiếm công việc
con và trả về xâu dạng
“p:k:kd:kc”
findDataOnceResouce() String Hàm tìm kiếm công việc con
95
trong trường hợp đang chỉ có
1 tài nguyên trên Service.
findDataResouceTimeout() String Hàm tìm kiếm công việc con
trong trường hợp có Client
không còn tham gia mạng.
findDataMutilResouces() String Hàm tìm kiếm công việc con
trong trường hợp có nhiều tài
nguyên và không có client
nào timeout
getResourceTimeoutKey() ResourceKey Hàm kiểm tra Client timeout
và trả về key của tài nguyên
tương ứng với Client đó (nếu
không có thì trả về null)
getNewJob() String Hàm lấy công việc mới
notPrime() NotPrimeResponse Hàm được gọi khi Client
thông báo hợp số.
Lớp PrimeConstants
Là lớp chứa các hằng sử dụng trong chương trình
Các thành phần dữ liệu và phương thức
Dữ liệu /Phương thức Kiểu Chú thích
TIMEOUT Long Thời gian xác định Client đã timeout -
tính theo giây
K_LENGHT Int Độ dài của khoảng số bị chia trong một
công việc con
c- Mô hình các đối tượng trong Client
96
Hình 36: Sơ đồ biểu thị mối quan hệ giữa các đối tượng trong Client
d- Các lớp trong Client
Lớp StartListener
Là một Thread, xử lý sự kiện khi click Start Button
Lớp StopListener
Là một Thread, xử lý sự kiện khi click Stop Button
Lớp JobThread
Là một Thread, thực thi việc giải quyết công việc.
Lớp PrimeClient
Là lớp chính của Client, thực thi công việc
Các thành phần dữ liệu và phương thức
97
PrimeData
+ p
+ k
+ kd
+ kc
PrimeClient
+ timer+ timeFreq+ prime
doStart()Eratosthenes()trialFactoring()doJob()main()initWindowComponents()
StartListener
actionPerformed()
StopListener
actionPerformed()
Thread
JobThread
actionPerformed()
Dữ liệu /Phương thức Kiểu Chú thích
Timer Timer Xác định thời gian thực
timeFreq Long Là chu ký thời gian(tính theo giây) mà
Client yêu cầu Service cập nhật thời
gian
Prime PrimePortType Đối tượng chính tương tác với Service
doStart() Void Hàm được gọi khi bắt đầu chạy client
Eratosthenes() boolean Hàm kiểm tra một số p có phải là số
nguyên tố hay không bằng phương
pháp sàng Eratosthenes. Hàm trả về
true nếu p là số nguyên tố, false nếu
ngược lại.
trialFactoring() boolean Hàm kiểm tra n = 2p - 1 có chia hết cho
k hay không bằng phương pháp Trial
Factoring. Hàm trả về true nếu n chia
hết cho k, false nếu ngược lại
doJob() void Hàm được gọi khi thực thi công việc
Main() void Hàm chính của chương trình
initWindowComponents() Void Hàm khởi tạo các giá trị giao diện đồ
họa của chương trình.
11.5. Kết quả thử nghiệm
11.5.1.Viết mã chương trình
Qua một thời gian tìm hiểu, chúng tôi đã bắt tay vào viết chương trình “Tìm số
nguyên tố”. Chương trình này được chúng tôi hoàn toàn tự viết. Dưới đây là một số
đoạn mã inteface của chương trình.
public interface PrimeService
{
public String getDataRP(GetDataRP params) throws RemoteException;
98
public SetTimeRPResponse setTimeRP(long time) throws
RemoteException;
public SetTimeRPResponse setTimeRP(long time) throws
RemoteException;
…….
}
public interface PrimeResource
{
public void setK(int k);
public int getP();
public long getTime();
public void setTime();
public void updateTime();
public boolean isTimeout();
….
}
11.5.2.Giao diện của chương trình client:
99
Hình 37: Giao diện chương trình Client
11.5.3.Biên dịch và chạy chương trình
Phần này mô tả việc biên dịch và thử nghiệm chương trình Số nguyên tố.
a- Biên dịch và chạy dịch vụ
Để biên dịch dịch vụ, trong môi trường GT4IDE, click vào biểu tượng STUB để tạo
các stub classes. Sau đó click vào biểu tượng GAR để biên dịch và toạ tệp GAR.
Tệp prime.gar được tạo ra là tệp nén của dịch vụ.
Triển khai dịch vụ:
[globus]# globus-deploy-gar prime.gar
Chạy dịch vụ:
[globus]# globus-start-container -nosec
b- Biên dịch và chạy Client
Trong khi dịch vụ đang chạy, mở một cửa sổ mới
Để biên dịch, dùng lệnh:
[auser1]# cd PrimeService/src
[auser1]# . compile
Để chạy, thực thi tệp bat
[auser1]# . run
c- Kết quả
Chúng tôi thử nghiệm chương trình trên 1 máy tính và thu được kết quả sau:
Số nguyên tố Thời gian (giây)
22-1 0.01
23-1 0.01
25-1 0.02
27-1 0.3
213-1 3
217-1 7
100
219-1 28
Hình ảnh minh hoạ:
Hình 38: Kết quả đạt được sau khi chạy thử nghiệm
11.6. Kết luận về bài toán Số nguyên tố
Chương trình “Tìm số nguyên tố” nhìn chung đã giải quyết được các vần đề
đặt ra ở trên. Bài toán có thể được ứng dụng trong thực tế để tìm được các số nguyên
tố lớn, góp phần đóng góp trong lĩnh vực bảo mật, mã hoá cho các tổ chức, công ty ở
nước ta hiện nay. Tuy nhiên, bài toán “Tìm số nguyên tố” không chỉ dừng lại ở đó. Mô
hình bài toán và thuật toán hoàn toàn có thể được cải tiến để tăng hiệu năng tính toán.
Trong thời gian sắp tới, chúng tôi sẽ nghiên cứu và đưa ra mô hình, thuật toán tối ưu
hơn, để có thể tìm được số nguyên tố lớn hơn trong một thời gian ngắn hơn.
101
Kết luận
Khóa luận đã hệ thống hóa một số công nghệ, chuẩn về Grid Computing, về
các yêu cầu cơ bản của một mạng lưới tính toán, đồng thời trình bày, phân tích và thử
nghiệm quy trình phát triển ứng dụng trên môi trường mạng lưới dựa trên nền tảng là
bộ công cụ Globus Toolkit. Qua đó chúng tôi đã nhận được kết quả bước đầu rất khả
quan, làm chủ được quy trình phát triển, triển khai ứng dụng trên môi trường mạng
lưới.
Trên cơ sở về quy trình phát triển, và ứng dụng tìm số nguyên tố Merssene
chúng tôi dự định sẽ tiếp tục nghiên cứu để hoàn thiện chương trình tìm số nguyên tố
Merssene cũng như bổ xung các vấn đề mang tính lí thuyết và thực tiễn về phân chia,
lập lịch công việc, về an ninh, bảo mật trên môi trường mạng lưới. Chúng tôi hi vọng
sẽ góp phần vào quá trình xây dựng một cộng đồng nghiên cứu, phát triển và sử dụng
Grid ở Việt Nam.
102
Tài liệu tham khảo
[1] Ahmar Abbas. Grid Computing: A Practical Guide to Technology and
Applications. Charles River Media, 2003.
[2] B.Jacob, M.Brown, K.Fukui, N.Trivedi. Introduction to Grid Computing. IBM
Redbook, 2005.
[3] Borja Sotomayor. The Globus Toolkit 4 Programmer's Tutorial. University of
Chicago, 2005.
[4] Jarek Gawor, Sam Meder. GT4 WS Java Core Design. Globus Alliance, 2004.
[5] Jennifer M. Schopf, Jan We Glarz, Jarek Nabrzyski. Grid resource management -
State of the Art and Future Trends. Springer, 2003.
[6] Joshy Joseph, Craig Fellenstein. Grid Computing. IBM Press, 2003.
[7] Maozhen Li, Mark Baker. The Grid Core Technologies. John Wiley & Son, 2005
[8] Web site: http://www.toantin.org. Grid fundamental
[9] Web site: http://gsbt.sourceforge.net/content/view/12/29/. GT4IDE
[10] Web site: http://primes.utm.edu. Primes
[11] Web site: http://www.mersenne.org/. Mersenne and GIMPS project
[12] Web site: http://www.onjava.com/pub/a/onjava/2002/08/28/wsdc.html. Search for
really big prime number
103