Chương I: Giới thiệu về khóa luận, đặt ra vấn đề cần giải quyết trong khóa luận. Chương II: Giới thiệu một số hệ thống tính toán phân tán, kiến trúc của hệ thống và đưa ra những so sánh. Ba hệ thống được giới thiệu là BOINC, Condor, Globus đây là 3 hệ thống phổ biến hiện nay. Chương III: Trình bày kiến trúc hệ thống tính toán phân tán sử dụng ứng dụng Facebook thay thế cho phần mềm.
Chương IV: Trình bày cách cài đặt chương trình, triển khai một số ứng dụng tính toán phân tán trên hệ thống và kết quả. Chương V: Tổng kết, nhận xét về hệ thống, những thành quả đã đạt được và những kế hoạch phát triển của dự án. 3 Chương II: Các hệ thống tính toán phân tán 2.1: Giới thiệu BOINC [8] viết tắt của Berkeley Open Infrastructure for Network Computing (Cơ sở hạ tầng mã nguồn mở cho tính toán mạng) là một phần mềm trung gian cho việc tính toán tình nguyện và tính toán lưới. Ban đầu BOINC được xây dựng để phục vụ dự án SETI@home, một dự án tìm kiếm tín hiệu ngoài trái đất.
Sau đó nó trở lên phổ biến và được sử dụng cho nhiều dự án tính toán khác nhau trong nhiều lĩnh vực như toán học, y học, sinh hoc… BOINC là một phần mềm mã nguồn mở, vì vậy những nhà phát triển có thể tải mã ngồn về để cấu hình và cài đặt theo ý muốn.2: Kiến trúc BOINC Hệ thống BOINC gồm có 2 thành phần chính là hệ thống Server và phần mềm (Hình 2.1) Server Thành phần chính của BOINC là Backend Server, server có thể chạy trên một hoặc nhiều máy tính khác nhau, điều này giúp cho hệ thống BOINC dễ dàng mở rộng quy mô của dự án. BOINC Server chạy trên nền tàng hệ điều hành Linux và sử dụng APACHE, PHP và MySQL làm nền tảng cho hệ thống web và cơ sở dữ liệu. Các ứng dụng tính toán chạy trên máy tính thành viên, kết quả được gưi lên cơ sở dữ liệu của ứng dụng tính toán, tại đây nó sẽ được xử lý. Trước khi kết quả được gửi lên cơ sở dữ liệu của ứng dụng tính toán, nó được kiểm tra tính đúng đắn bởi Server Backend.
Server Backend kiểm tra tính đúng đắn của kết quả bằng cách gửi các workunit tới nhiều máy khác nhau, và so sánh kết quả nhận được của một workunit khác nhau. Workunit là một khối lượng tính toán nhỏ của bài toán, được thực hiện trên máy tính. Một workunit gồm nhiều Task, Result là kết quả của một task, Server sẽ tự động tạo ra những tập kết quả tương ứng với các workunit khi workunit được tạo (không phải là result thật, mà chỉ là một thể hiện của kết quả), các result này được lưu vào cơ sở dữ liệu, khi một task hoàn thành và gửi kết quả lên server, result tương ứng trong cơ sở dữ liệu của server sẽ được đánh 4 đấu là đã hoàn thành. Khi tập tất cả result của một workunit được đánh dấu, workunit đó được báo là đã hoàn thành BOINC server cung cấp một vài tính năng như: + Validator: Chức năng này kiểm tra kết quả gửi về từ có chính xác hay không.
Một workunit được gửi tới nhiều máy cùng thực thi, kết quả gửi về từ những máy đó được server so sánh, kết quả có tỉ lệ cao nhất được coi là kết quả đúng. + Homogeneous redundancy: Chức năng này sẽ chỉ gửi một workunit tới những máy tính có cùng cùng một platform (cùng hệ điều hành…), điều này sẽ giúp quá trình validator được dễ dàng và chính xác hơn. + Workunit trickling: Gửi các thông tin tới server trước khi các workunit hoàn thành, điều này giúp cho việc đánh giá để có thể gủi một workunit mới kịp thời, giúp cho việc tính toán nhanh hơn, giảm tối thiểu thời gian nhàn rỗi của máy. + Locality Scheduling: Chỉ gủi các workunit(không gửi các file cần thiết) tới các máy đã có các file cần thiết để nhanh chóng thực thi workunit.
+ Phân phối các workunit dựa vào các tham số của máy : Chức năng này đảm bảo việc gửi workunit tới những máy tính có khả năng thực thi workunit đó. BOINC server bao gồm 2 chương trình CGI và thường có 5 deamons. - Một chương trình CGI lập lịch xử lý các yêu cầu từ phía , nhận các workunit đã hoàn thành và gửi đi những workunit mới. - Một chương trình CGI xử lý việc upload file.
- 5 deamons: + Feeder + Validator + Assimilator + File_deleter + Transitioner 5 Project back end BOINC BOINC Server Complex DB Sheduling DATA Web Server Server interfaces Server Client Application Client Client API Core Client Project Specific component BOINC components Hình 2.1 Kiến trúc hệ thống BOINC Một workunit được chia thành nhiều task, mỗi task tương ứng với một result trong cơ sở dữ liệu, khi task hoàn thành gửi về server, result tương ứng được đánh dấu đã hoàn thành. Một deamons Feeder có trách nhiệm đọc các task trong cơ sở dữ liệu và lưu chúng trong các khối nhớ, bộ lập lịch sẽ đọc các task trong khối nhớ và gửi chúng tới , Feeder sẽ định kỳ là rỗng các khe trong khối nhớ sau khi task được gửi đi. 6 Khi các result của một workunit được thực hiện xong và gửi về server, deamon Validator sẽ tiến hành so sánh chúng, Validator có thể được viết bởi người phát triển ứng dụng để đặt ra những thuật toán so sánh, hay những hàm đánh giá các kết quả, hoặc đơn giản là so sánh các bit. Nếu các kết quả trùng nhau nó sẽ được coi là hợp lệ và được sử dụng làm kết quả của workunit.
Tiếp đó deamon Assimilator thực hiện việc xử lý các kết quả hợp lệ dựa trên code của dự án, việc xử lý này là phụ thuộc vào từng dự án, có dự án cần phân tích các file kết quả và lưu chúng vào cơ sở dữ liệu, hoắc đơn giản chỉ là copy từ nới này sang nơi khác. Deamon File_deleter có nhiệm vụ xóa những output đã được xử lý bởi Assimilator và các file input không cần thiết. Deamon Transitioner xử lý việc chuyển trạng thái của workunit và result, nó cũng tạo ra các result từ workunit khi chúng được tạo ra, hay tạo thêm những result nếu cần thiết(cho những trường hợp result không thoa mãn trong quá trình validator hoặc không gửi được lên server). BOINC Client BOINC Client là một kết cấu gồm một số ứng dụng độc lập, chúng sử dụng cơ chế BOINC remote procedure call (thủ tục gọi điều khiển từ xa của BOINC) để liên lạc với nhau.
Những thành phần ứng dụng gồm có: + Chương trình BOINC , đây là một chương trình đóng vai trò là lõi của , nó có những tính năng và thực hiện những nhiệm vụ sau: Tạo và duy trì kết nối giữa và server Tải về những ứng dụng khoa học, cung cấp một cơ chế đăng nhập thống nhất để đảm nảo rằng các ứng dụng khoa học được cập nhật, lập lịch sử dụng tài nguyên CPU của các ứng dụng khoa học. 7 BOINC chạy trên Unix như một chương trình deamon. Trên Windows, ban đầu BOINC không phải là một dịch vụ danh cho Windows mà chỉ là một ứng dụng bình thường. sau này có một vài phiên bản dành cho windows và nó là một tùy chọn trong quá trình cài đặt.
Phụ thuộc vào cách cài đăt BOINC nó có thể là một chương trình chạy nền hoặc được chạy khi người dùng khởi động máy. + Một hoặc một vài ứng dụng khoa học: Những ứng dụng khoa học này thực hiện việc tính toán các bài toán khoa học, những ứng dụng này là đặc trưng cho từng dự án tính toán phân tán. Những ứng dụng khoa học sử dụng BOINC deamon để tải về và gửi đi những workunit, hay để trao đổi những thông tin thống kê với server. + Một boincmgr (boincmgr.exe): là một giao diện tương tác với lõi của ứng dụng(core ) sử dụng remote procedure call.
Mặc định core chỉ cho phép kết nối từ cùng một máy tính, nhưng nó có thể cấu hình để có thể kết nối từ những máy tính khác. + BOINC screensaver: cung cấp một framework nhờ đó các ứng dụng khoa học có thể hiển thị hình ảnh trên cửa sổ screensaver của người dùng. Thông thường BOINC screensaver hiển thị những hoạt ảnh thể hiện chi tiết của ứng dụng khoa học, hoặc những biểu đồ hay những đồ thị thể hiện việc tính toán.3 Một số dự án đang thực hiện bởi BOINC SETI@Home: SETI@Home [8] là một thí nghiệm khoa học, sử dụng những máy tính kết nối trên Internet để tìm kiếm nền văn minh ngoài trái đất. Đây là một phần của dự án SERENDIP (Search for Extraterrestrial Radio Emissions from Nearby Developed Intelligent Populations) của đại học California, Berkeley.
Đài thiên văn Arecibo thu thập những tin hiệu trên không trung, sau đó những tín hiệu này được gửi tới những máy tính tham gia vào dự án để tính toán và phân tích. Các kết quả được trả lại server của dự án. Để tham gia vào dự án, người dùng phải tải về và cài đặt phần mềm tính toán trên máy của mình, mỗi khi máy tính rỗi, phần mềm sẽ tự động tải về một lượng dữ liệu (khoảng 300KB) và tiến hành tính toán. Thông tin chi tiết về dự án có tại trang chủ của dự án http://setiathome.edu/ 8 ABC@Home: ABC@Home [7] là một dự án toán học nhằm tìm ra bộ 3 số a,b và c để chứng minh cho giả thuyết về bộ 3 số ABC (ABC conjecture), giả thuyết 3 số ABC nêu lên rằng, chỉ tồn tại duy nhất 3 số a,b và c sao cho log(c) / log(rad(a * b * c)) > h với h là một số thực lớn hơn 1.
Ba số a,b,c thỏa mãn điều kiện trên khi nó thỏa mãn những điều kiện sau +a+b=c + a<b<c + a,b,c không có ước số chung + c > rad(a * b * c) Việc chứng minh được giả thuyết ABC sẽ giúp giải đáp nhiều câu hỏi trong toán học. dự án đang được thực hiện bởi trường đại học Leiden, thông tin về dự án có trên trang chủ http://abcathome.1 Giới thiệu Condor là kết quả của một dự án nghiên cứu trong trường đại học Wisconsin- Mandison, Condor là một hệ thống quản lý, lập lịch cho những công việc cần tính toán lớn, người dùng gửi công việc của họ lên Condor, Condor lưu chúng trong hàng đợi của nó, lựa chon nơi nào, khi nào sẽ thực thi công việc đó, và báo cho người dùng kết quả khi hoàn thành. Khác với những hệ thống cổ điển, Condor không đòi hỏi cần có những máy móc chuyên dụng, Condor sẽ gửi những công việc (jobs) tới những máy phù hợp với yêu cầu của công việc đó.2 Kiến trúc Hệ thống Condor [1] gồm 3 thành phần chính: Central Manager, Submit Machine, Execution Machine (Hinh 2.