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.
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:
· 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.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.
Mục lục Lời cảm ơn. i
Tóm tắtii
Bảng các ký hiệu viết tắtix
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ệm12
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
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ềm21
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 đặt23
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
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 OGSA37
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ưới41
7.2.Cơ sở hạ tầng an ninh của mạng lưới43
7.2.1.Truy cập vào mạng lưới44
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
8.3.Các thành phần bảo mật47
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.SimpleCA48
8.3.6.GSI-OpenSSH48
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
9.4.2.Cấu hình bảo mật58
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 GAR74
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ụ GT4IDE80
11.1.2.Cài đặt GT4IDE80
11.2.Tạo project GT4 với GT4IDE81
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ệm98
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
117 trang |
Chia sẻ: lvcdongnoi | Lượt xem: 2755 | Lượt tải: 3
Bạn đang xem trước 20 trang tài liệu Nghiên cứu phát triển ứng dụng trên Grid, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
ịa chỉ:
Bung tệp nén Apache Ant:
[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
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:
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
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ỉ:
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
/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
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
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
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.
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
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): ca@gridk47.com
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
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.
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
Đă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
Đăng ký và xác nhận chứng thực người dùng
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
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.
Á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 \
"/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
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: the
following services:
[1]:
[2]:
... (Bỏ qua thông tin)
[51]:
...
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
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 ]
Starting xinetd: [ OK ]
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 để kiểm tra hoạt động của GridFTP
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
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.
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ị.
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
Trong phần này, chung tôi sẽ lần lượt mô tả các bước nêu trên
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:
<definitions name="MathService"
targetNamespace=""xmlns="" xmlns:tns=""
xmlns:wsdl=""
xmlns:wsrp=""
xmlns:wsrpw=""
xmlns:wsdlpp=""
xmlns:xsd="">
<!—
T Y P E S
-->
<xsd:schema
targetNamespace=""
xmlns:tns=
xmlns:xsd="">
<!—
M E S S A G E S
-->
<!—
P O R T T Y P E
-->
<portType name="MathPortType"
wsdlpp:extends="wsrpw:GetResourceProperty"
wsrp:ResourceProperties="tns:MathResourceProperties">
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ụ
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à:
{}Value
Sử dụng lớp MathQNames để định nghĩa rút gọn QName.
package org.globus.examples.services.core.first.impl;
import javax.xml.namespace.QName;
public interface MathQNames {
public static final String NS = "
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");
}
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;
}
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;
}
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:
<deployment name="defaultServerConfig"
xmlns=""
xmlns:java=""
xmlns:xsd="">
share/schema/examples/MathService_instance/Math_service.wsdl
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à:
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
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
Để tạo tệp GAR, ta dùng script globus-build-service có trong bộ Globus Service Build Tools (GSBT) tại . Cấu trúc dòng lệnh để tạo tệp GAR như sau:
./globus-build-service.sh -d -s
Đố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
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
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ụ:
Để 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:
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
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.
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ừ:
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.
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 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.
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
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
Download tại:
Giải nén tệp zip vào thư mục bất kỳ.
Cấu hình Eclipse với JDK
Cài đặt GT4IDE
Download GT4IDE tại:
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.
Cài đặt GT4IDE: giải nén tệp nén vào thư mục chủ của Eclipse.
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
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
Hình 27: Cửa sổ tạo một project GT4
Project Name: Nhập tên project
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
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:
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
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.
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.
Các khái niệm và mệnh đề
Một số khái niệm
Số Mersenne: Là số nguyên có dạng 2p-1, pN.
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.
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, sN; 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
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.
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
Bước 1: N:= 1, X:= 0
Bước 2: Tìm biểu diễn nhị phân của p: X0, X1, … Xm-1
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
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
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
N0=1
Đầ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.
Với 0111 bit trái cùng là 0 nên lấy N12 mod 47 được N2=4.
Cứ làm tiếp tục ta được N5=1.
Theo hệ quả 1 => 223-1 không phải số nguyên tố.
Sơ đồ thuật toán:
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
True
False
True
False
Return 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.
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 = 14S2 = (14 * 14 - 2) mod 127 = 67S3 = (67 * 67 - 2) mod 127 = 42S4 = (42 * 42 - 2) mod 127 = 111S5 = (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 Sp-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.
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.
Phân tích và thiết kế bài toán
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
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
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.
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.
Server
Client 1
Client m
Yêu cầu thực hiện công việc
Trả lại kết quả
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.
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 đó.
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 = 2k1
p2 k = k1+1 k2
……………………….
pm k = km-1+1q
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 = 24
p2 k = 56
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
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
Hình 31: Sơ đồ mô tả mô hình phân chia công việc
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 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”.
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.
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:
Quản lý và điều khiển mọi hoạt động của chương trình
Đáp ứng các yêu cầu từ Client
Mô hình các thành phần của Service
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 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
Hình 34 : Biểu đồ mô tả hoạt động của việc lấy dữ liệu
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
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.
Mô hình các đối tượng trong Service
PrimeFactoryService
createResource()
PrimeResource
+ id
+ data
+ time
isTimeout()
create()
updateTime()
PrimeResouceHome
+ resouces
create()
getResouces()
PrimeConstants
+ TIMEOUT
+ K_LENGHT
PrimePKC
+ p
+ kcm
PrimePKC()
PrimeService
+ newp
+ pkcm
+ home
getResouce()
getDataRP()
findData()
getResourceTimeoutKey()
getNewJob()
findDataOnceResouce()
findDataResouceTimeout()
findDataMutilResouces()
notPrime()
Hình 35: Sơ đồ biểu thị mối quan hệ giữa các đối tượng trong Service
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”. 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
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 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
Mô hình các đối tượng trong Client
PrimeData
+ p
+ k
+ kd
+ kc
PrimeClient
+ timer
+ timeFreq
+ prime
doStart()
Eratosthenes()
trialFactoring()
doJob()
main()
initWindowComponents()
StartListener
actionPerformed()
StopListener
actionPerformed()
Thread
JobThread
actionPerformed()
Hình 36: Sơ đồ biểu thị mối quan hệ giữa các đối tượng trong Client
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
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.
Kết quả thử nghiệm
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;
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();
….
}
Giao diện của chương trình client:
Hình 37: Giao diện chương trình Client
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ố.
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
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
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
219-1
28
Hình ảnh minh hoạ:
Hình 38: Kết quả đạt được sau khi chạy thử nghiệm
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.
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.
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: Grid fundamental
[9] Web site: GT4IDE
[10] Web site: Primes
[11] Web site: Mersenne and GIMPS project
[12] Web site: Search for really big prime number
Các file đính kèm theo tài liệu này:
- Nghiên cứu phát triển ứng dụng trên Grid.doc