Mục lục
Tóm tắt nội dung I
Mục lục II
Danh mục các hình vẽ V
Chương I : Giới thiệu 1
1.1 Đặt vấn đề 1
1.2 Nội dung khóa luận 3
Chương II: Các hệ thống tính toán phân tán 4
2.1 BOINC 4
2.1.1: Giới thiệu 4
2.1.2: Kiến trúc BOINC 4
2.1.3 Một số dự án đang thực hiện bởi BOINC 8
2.2: Condor 9
2.2.1 Giới thiệu 9
2.2.2 Kiến trúc 9
2.3: Globus Toolkit 13
2.3.1 Giới thiệu 13
2.3.2 Kiến trúc 13
2.4: So sánh 16
2.4.1 Độ phức tạp hệ thống 16
2.4.2 Độ phức tạp cho người phát triển ứng dụng 16
2.4.3 Độ phức tạp cho người dùng 17
Chương III: Kiến trúc hệ thống 18
3.1: Kiến trúc tổng thể 18
3.2: Các thành phần chính 19
3.2.1: Server Task 20
3.2.1.1: Nhiệm vụ 20
3.2.1.2: Chức năng 21
3.2.1.3: Cấu hình 21
3.2.2: Server Application 23
3.2.2.1: Nhiệm vụ 23
3.2.2.2: Chức năng 23
3.2.2.3: Cấu hình 23
3.2.3: Node Applet 24
3.2.3.1: Nhiệm vụ 24
3.2.3.2: Chức năng 24
3.2.3.3: Cấu hình 24
3.3: Ứng dụng tính toán 25
3.3.1: Định nghĩa 25
3.3.2: JPPF API 25
3.4: Task 26
3.4.1: Định nghĩa Task 26
3.4.2: Input Data File 26
3.4.3: Result 27
Chương IV: Cài đặt hệ thống 28
4.1 Server Task 28
4.1.1 JPPFDriver 28
4.1.2 JPPFNode 30
4.1.3 Server Task Configuration 31
4.2 Server Application 33
4.2.1 JPPFClient 33
4.2.2 JPPFTask 35
4.2.3 Server Application Configuration 36
4.3 Node Applet 38
4.3.1 NodeRunner 38
4.3.2 JPPFClassLoader 39
4.3.3 Node Applet Configuration 40
4.4 Một số ứng dụng tính toán 42
Chương V : Tổng kết 44
53 trang |
Chia sẻ: netpro | Lượt xem: 1738 | Lượt tải: 3
Bạn đang xem trước 20 trang tài liệu Khóa luận Xây dựng ứng dụng tính toán phân tán trên nền tảng sức mạnh các máy tính cá nhân, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
_Lib
Checkpoint file and saved to disk
System call performed
Central Manager
Execution Machine
Hình 2.2 Kiến trúc hệ thống Condor
Những deamon chính chạy trên Submit Machine
Condor_schedd: Deamon này có nhiệm vụ miêu tả job trong Condor Pool, người dùng có thể gửi những job tới một condor_schedd đang chạy, những job này được lưu trong job queue, những demons khác có nhiệm vụ xem và thao tác tới job queue như: condor_submit, condor_q, condor_rm sẽ kết nối tới condor_schedd để thực thi công việc của nó.
Condor_shadow: Deamon này sẽ chạy khi một job được thực thi, khi một job hoàn thành, deamon này thực hiện việc truyền file, ghi những log file và đưa ra những bản thống kê về quá trình thực thi job. Jobs được liên kết tới Condor's Standard Universe, cái mà thực thi những lệnh gọi hệ thống thông qua condor_shadow. Tất cả những lệnh gọi hệ thống được thực hiện trên máy tính từ xa đều được gửi qua mạng tới condor_shadow, condor_shadow sẽ thực thi những lệnh gọi thế thống (như vào ra file) rồi gửi kết quả trả lại cho máy tính đó.
Execution Machine
Exeution Machine chạy trên các máy tính tham gia vào lưới tính toán, deamon Startd thực thi những job mà Submit Machine gửi tới, khi chạy nó gửi tới Central Manager những thông tin về khả năng thực thi của nó, những thông tin như dung lượng bộ nhớ hay tốc độ của CPU. Một deamon khác là Starter chịu trách nhiệm quản lý việc thực thi job trên máy đó, nó có thể đưa ra những chính sách riêng để quản lý việc thực thi job
Những deamon chính chạy trên Execution Machine
Condor_startd: Deamon này chạy trên các máy tính tham gia vào Condor Pool, nó như một thể hiện của máy tính tham gia vào mạng lưới tính toán. Condor_startd gửi ClassAd của máy tính mà nó chạy tới Central Manager, những thông tin trong ClassAd gồm có những thông tin về khả năng thực thi của máy đó, cũng như chính sách hoạt động của máy đó. Một máy tính chạy condor_startd sẽ có thể thực thi job, condor_startd chịu tránh nhiệm thi hành những chính sách thực thi một job trên máy tính đó, như việc chạy, tạm dừng, khôi phục, bỏ không, hoặc hủy bỏ job. Khi condor_startd chạy và sẵn sàng thực thi job, nó sẽ gọi tới condor_starter.
Condor_starter: Deamon này chịu trách nhiệm thiết lập môi trường thực thi và điều khiểm việc thực thi job. Khi một job đang được thực thi, condor_starter lấy thông tin về trạng thái hoàn thành của job và gửi những thông tin này lên Submit Machine, khi job hoàn thành deamon này sẽ ngừng.
2.3: Globus Toolkit
2.3.1 Giới thiệu
Globus Toolkit [6] là một sản phẩm của Gobus Alliance, một tổ chức quốc tế chuyên về phát triển những công nghệ dựa trên nền tảng tính toán lưới. Globus Toolkit là một phần mêm mã nguồn mở, cho phép xây dựng lưới tính toán. Nó cho phép người dùng chia sẻ khả năng tính toán, cơ sở dữ liệu hay những công cụ trong một tổ chức, cơ quan hay một vùng địa lý rộng lớn.
2.3.2 Kiến trúc
Globus Toolkit gồm 3 nhóm dịch vụ chính, có thể truy cập tới thông qua một lớp dịch vu bảo mật (Hình 2.3)
Resource Management
Data Management
Information Services
Applications
Third Party User – Level Middleware
Grid Resources and Local Services
Security Layer (GSI)
Grid Resource Management
(GRAM,GRASS)
Grid Information Services (MDS)
Grid Data Management(GridFTP, Replica Catalog)
Globus
Hình 2.3 Kiến trúc hệ thống Globus
Tầng Local Services bao gồm những dịch vụ của hệ điều hành, dịch vụ mạng như TCP/IP, Submit Jobs, truy vấn Queues…. Tầng lõi của Globus cung cấp dịch vụ bảo mật, Submit Jobs, quản lý dữ liệu, quản lý tài nguyên. Tầng cao hơn (Level Middleware và Application) chứa những công cụ để liên lạc với tầng dưới, và bổ sung những chức năng còn thiếu ở tầng dưới.
Security Layer
Grid Security Infrastructure (GSI) cung cấp phương thức cho việc xác thực người dùng và đảm bảo những kết nối, nó sử dụng những công cụ như SSL (Security Sockets Layer), PKI (Public Key Infrastructure) và X.509. GSI cung cấp những dịch vụ, giao thức và những thư viện để thực hiện những việc sau.
Xác thực một người dùng tham gia sử dụng dịch vụ lưới tính toán.
Xác thực các nguồn tài nguyên tham gia vào lưới tính toán dựa.
Mã hóa dữ liệu.
Khi một người dùng muốn truy cập vào hệ thống, họ cần có một tài khoản được chứng thực bởi một cơ quan chứng thực. Hầu hết các dịch vụ của hệ thống đều yêu cầu xác thực người dùng trước khi cung cấp cho họ, điều này đảm bảo cho việc bảo mất dự liệu cho cả hai bên,
Resource Management
Resource Management cho phép phân phối tài nguyên phù hợp cho từng yêu cầu của Job, điều khiển việc thực thi Job và thu thập kết quả tính toán. Nhóm này có 2 thành phần chính.
Globus Resource Allocation Manager (GRAM): GRAM cung cấp việc điều khiển và báo cáo trạng thái quá trình thực thi của các máy . Khi một gửi một Job tới hệ thống, một deamon Gatekeeper sẽ kiểm tra tính xác thực của , nếu xác thực, gatekeeper sẽ khởi chạy một Job manager để quản lý việc thực thi Job đó. Job manager được tạo ra độc lập trên những bộ lập lịch bộ phận. GRAM có những bộ lập lịch như Portable Bacth System (PBS), Load Sharing Facility (LSF), và LoadLeveler.
Những yêu cầu chi tiết của Job được chỉ định rõ trong Globus Resource Specification Language (RSL), đây là một thành phần của GRAM, RSL miêu tả rõ những tài nguyên một Job cần để thực thi như kích thước tối thiếu của bộ nhớ, hay tốc độ của CPU.
Globus Access to Secondary Storage (GASS): GASS là một cơ chế truy cập file, nó cho phép các ứng dụng có thể thực hiện những thao tác với file từ xa như đọc, viết vào file. GASS sử dụng để cung cấp file cho việc thực thi Job và nhận các kết quả khi Job hoàn thành. Nó cũng được sử dụng để truy cập các dòng xuất nhập chuẩn và các dòng báo lỗi.
Information Services
Information Services quản lý thông tin của những node tham gia vào hệ thống lưới. Thành phần chính của nó là Monitoring and Discovery Service (MDS).
MDS cung cấp cơ chế cho phép công bố và truy vấn những thông tin, các node có thể gửi những thông tin của nó lên server, và có thể truy vấn tới server để lấy những thông tin cần thiết. MDS có 3 lớp.
Information Providers (IPs): Lớp dưới cùng có nhiệm vụ thu thập thông tin và trạng thái của các tài nguyên, chuyển những thông tin đó theo định dạng mà nó quy định.
Grid Resource Information Service (GRIS): Lớp này là một deamon, chạy trên các máy tính tham gia vào lưới. GRIS lấy những thông tin trên các máy đó và gửi những thông tin mà nó lấy được về server quản lý thông tin. GRIS thường xuyên update những thông tin này sau một khoảng thời gian time-to-live (là khoảng thời gian thông tin về máy còn hiệu lực) được quy định bởi IPs.
Grid Information Index Service (GIIS): Thực hiện việc đánh chỉ mục những thông tin về các tài nguyên.
Data Management
Data Management cung cấp những tiện ích và những thư viện cho việc vận chuyển, lưu trữ và quản lý dữ liệu được tao ra bởi các ứng dụng tính toán. Những thành phần của nhóm này có:
GridFTP: Là một mở rộng của giao thức FTP, cung cấp khả năng bảo mật, tin cậy, hiệu suất cao trong việc vận chuyển dữ liệu trong môi trường lưới. Ngoài những chức năng như chuẩn FTP, GridFTP cung cấp khả năng xác thự dữ liệu truyền, được hỗ trợ bởi GSI, truyền song song và bán song song.
Replica Location and Management: Thành phần này cho phép một file có thể được lưu trữ tại nhiều nơi trên hệ thống lưới. Sử dụng dịch vụ của Replica Management, một file có thể đăng ký với Replica Location Service (RLS) để tạo những bản sao của nó và lưu trữ tại nhiều nơi trên hệ thống. Trong RLS một file được gán với một Logical File Name (LFN), và được lưu trong một logical collection, những bản ghi của một file sẽ trỏ tới vị trí vật lý của file đó.
2.4: So sánh
2.4.1 Độ phức tạp hệ thống
BOINC
BOINC Server được thiết kết để chạy trên nền tảng Linux, có thể chạy trên Windows nhưng khó khăn trong việc triển khai.
Sử dụng APACHE, PHP, MySQL làm hệ thống web và database.
Condor
Có thể chạy cả trên nền tảng Unix và Windows.
Globus Toolkit
Chạy trên nhiều nền tảng khác nhau, có thể chạy trên Web server hoặc non-Web server.
Có nhiều thành phần khác nhau trong hệ thống, người phát triển chỉ cần chọn những thành phần mình muốn để chạy ứng dụng, không cần sử dụng hết các thành phần.
2.4.2 Độ phức tạp cho người phát triển ứng dụng
BOINC
Cung cấp hệ thống API cho người phát triển ứng dụng tính toán, nhưng người phát triển viết ứng dụng tính toán dựa trên API được BOINC cung cấp.
Ứng dụng tính toán chủ yếu được viết bằng ngôn ngữ C, cung có thể viết bằng ngôn ngữ Java.
Condor
Không cung cấp API cho người phát triển, các ứng dụng tính toán được chia thành nhiều loại. Mỗi loại được viết bằng một ngôn ngữ riêng và liên kết với thư viện của Condor để có thể triển khai tính toán trên hệ thống Condor. Mỗi loại Job được mô tả trong những file mô tả job, những file này được lưu cùng thư mục với những file thực thi.
Globus Toolkit
Cung cấp hệ thống API cho người phát triển ứng dụng tính toán.
Độ phức tạp cho người dùng
BOINC
Người dùng có thể dễ dàng tải phần mềm BOINC về để tham gia vào lưới tính toán. Dễ dàng mở rộng phạm vi của dự án.
Condor
Khó cài đặt cho người sử dụng thông thường, thường sử dụng xây dựng một mạng lưới tính toán cho một tổ chức hay một công ty.
Globus Toolkit
Khó khăn cho người sử dụng bình thường tham gia vào lưới tính toán. Cần phải xác thực người dùng và các tài nguyên khi tham gia vào lưới tính toán.
Chương III: Kiến trúc hệ thống
3.1: Kiến trúc tổng thể
Server Project
Server Facebook App
Node N
Input data,
Task
Output data
User GUI,
Node Applet
Facebook App
Node1
Facebook App
Hình 3.1 Kiến trúc tổng thể hệ thống
Server Project
Server Project là nơi chạy ứng dụng cần tính toán, tại đây một bài toán lớn sẽ được chia nhỏ thành nhiều phần. Những phần nhỏ của bài toán được gọi là một Task, Server Project sẽ quản lý những Task này, cùng với những dữ liệu đầu vào cần thiết cho việc tính toán, dữ liệu này được lưu trong cơ sở dữ liệu của server. Khi một máy tính Node kết nối tới server, Task và những dữ liệu cần thiết sẽ được gửi tới máy Node. Sau đó Server sẽ lắng nghe việc thực thi trên Node, Node thực thi một Task xong, kết quả được trả về cho Server Project, Server Project tiến hành xử lý chúng và lưu vào cơ sở dữ liệu.
Server Facebook App
Server Facebook App chứa chương trình ứng dụng facebook, ứng dụng này có chứa một Node Applet, Node Applet là một chương trình java chạy dưới dang applet. Node Applet là thành phần tạo kết nối tới Server Project, nhận các yêu cầu tính toán và thực thi chúng.
Node
Node là những máy tính tham gia vào những dự án tính toán, máy tính Node sử dụng bộ nhớ và tài nguyên CPU trong những lúc máy tính rảnh rỗi, để phục vụ cho việc tính toán. Khi một máy Node chạy ứng dụng trên Facebook, một applet sẽ được chạy, applet này thực hiện việc kết nối tới Server Project mà người dùng chọn. nhận những task và file input từ Server Project, thực thi chúng trên máy tính Node, và gủi trả kết quả lại cho Server Project.
3.2: Các thành phần chính
Hệ thống gồm có 3 thành phần chính (được minh họa trên hình 3.2)
Server Task
Server Task nằm trên Server Project, có nhiệm vụ nhận những task được gủi tới từ Server Application và phân phối task đến máy tính Node, đồng thời nhận các kết quả trả về từ Node và gửi kết quả tới Server Application
Server Application
Server Application nằm trên Server Project có nhiệm vụ phân chia một bài toán thành nhiều Task và gủi những task này đến cho Server Task, đồng thời nhận kết quả trả về từ Server Task và xử lý.
Node Applet
Node Applet nằm trên Server Facebook App và được chạy trên các máy tính tham gia vào hệ thống tính toán. Node Applet có nhiệm vụ thực thi những Task mà Server Task gửi tới, và gửi trả kết quả về cho Server Task
Input
Data
Pool
Output
Data
Pool
Web Server Application
Server Task
Node
Server Application Project
Participant
Task
Manager
Data
Manager
GUI
App Facebook GUI
Task GUI
Task Engine
Task Data
Node Applet (applet)
Web pages
Admin
GUI
Server Application
Hình 3.2 Kiến trúc chi tiết hệ thống
3.2.1: Server Task
3.2.1.1: Nhiệm vụ
Server Task là một chương trình có thể chạy trên một máy hoặc nhiều máy tính khác nhau.
Server Task có 2 nhiệm vụ chính:
- Nhận task từ Server Application và phân phối chúng tới Node
- Nhận kết quả trả về từ Node và gửi kết quả này tới Server Application xử lý
3.2.1.2: Chức năng
Server Task cung cấp 3 chức năng chính:
Load balancing (cân bằng tải)
Node Applet chạy trên nhiều máy tính khác nhau với cấu hình khác nhau, chính vì thế khả năng tính toán ở mỗi máy tính Node là khác nhau. Server Task cung cấp một chức năng cân bằng tải. Khi một máy tính Node kết nối tới Server Task, nó sẽ tự động gửi những thông tin cấu hình của nó tới Server Task, Server Task dựa vào những thông tin cấu hình của từng máy và tốc độ kết nối mạng tới các máy tính đóng vai trò là Node, để gủi số lượng Task phù hợp với khả năng tính toán của từng máy.
Một tập hợp nhiều Task được gửi tới Node gọi là một “bundle”, dựa vào các thuật toán cân bằng tải server tính số lượng Task phù hợp cho từng Node, và gửi một “bundle” với số lượng Task đó tới Node
Quản lý tiến tình tính toán (Jobs)
Chức năng quản lý quá trình tính toán giúp người quản lý có thể dừng hoặc khôi phục lại việc thực thi công việc tính toán, đồng thời đưa ra các thông kê về tiến trình thực thi của công việc tính toán, những số liệu được thống kê như hiệu suất công việc, thời gian tính toán trung bình, thời gian dự tính hoàn thành công việc.
Quản lý Node
Chức năng quản lý Node, quản lý các Node kết nối tới Server Task, quản lý thông tin cũng như số lượng Node kết nối tới Server Task. Việc quản lý Node giúp cho việc đưa ra những thống kê về thời gian tính toán, và ướng lượng thời gian hoàn thành công việc.
3.2.1.3: Cấu hình
Server Task sử dụng 3 kết nối TCP để tạo kết nối tới Server Application, Node và Server Task khác. Server Task
Server Application
Node Applet
Server Task
TCP/IP Port: 11112
TCP/IP Port: 11113
TCP/IP Port: 11111
TCP/IP Port: 11112
TCP/IP Port: 11113
Hình 3.3 Mô hình kết nối TCP/IP
Một kết nối TCP tới Server Application để nhận task gửi từ Server Application tới và gủi kết quả về cho Server Application xử lý. Khi Server Task chạy, nó luôn lắng nghe kết nối từ Server Application một cổng, mặc định là 11112
Một kết nối TCP tới Node để gửi task và file input tới Node, nhận kết quả trả về từ Node, Server Task lắng nghe kết nối từ Node trên một cổng, mặc định là 11113
Một kết nối TCP tới Server Task khác để chia sẻ task và file input, Server Task lắng nghe kêt nối từ những Server Task khác trên cổng mặc định là 11111
Server Task có 2 tiến trình chính là: “Controller” và “Server”, tiến trình “controller” sẽ khởi chạy server như một tiến trình độc lập va theo dõi trạng thái hoạt động của nó, trạng thái của server được ghi nhận trong một mã trạng thái, dựa vào mã này tiến trình controller sẽ quyết định viết bắt đầu hay dừng tiến trình server. Tiến trình controller cung cấp những thông số cần thiết để tiến trình server có thể thực thi.
+ Các cấu hình ( nằm trong một file file cấu hình)
+ Biến môi trường
+ Java Class path
3.2.2: Server Application
3.2.2.1: Nhiệm vụ
Server Application là một chương trình java chạy trên một máy tính nào đó, có thể cùng hoặc khác Server Task, Server Application có thể kết nối tới một hay nhiều Server Task. Server Application có nhiệm vụ tạo ra Task và những file input, gửi các task và các file input tới Server Task, nhận kết quả trả về từ Server Task và xử lý những kết quả đó.
3.2.2.2: Chức năng
Server Application cung cấp 2 chức năng:
Recovery and Failover
Khi kết nối giữa Server Application và Server Task bị ngắt do một lý do nào đó, Server Application sẽ tự động cố gắng kết nối tới Server Task trong một khoảng thời gian được ấn định.
Validator
Những kết quả từ máy tính Node gửi lên có thể không chính xác, do việc tính toán sai ở máy tính Node.Validator là một chức năng kiểm tra kết quả gửi về từ Node có chính xác hay không, để thực hiện chức năng này Server Application yêu cầu Server Task gửi một task tới hai Node để thực thi và nhận kết quả gủi trả về từ các Node đó. Server Application sẽ tiến hành so sách các kết quả này, nếu hai kết quả bằng nhau thì kết quả đó được coi là đúng, nếu sai Server Application sẽ yêu cầu Server Task gửi lại task đó tới Node để tính toán lại.
3.2.2.3: Cấu hình
Server Application có 2 modun chính, một modun dùng tạo kết nối với Server Task, nhận và gủi dữ liệu tới Server Task thông qua một kết nối TCP, modun này được JPPF Frame Work cung cấp sẵn. Modun thứ 2 là những lớp java thực hiện việc tính toán bài toán, modun này do người phát triển ứng dụng tính toán viết và cấu hình dựa trên hệ thống JPPF API, những dữ liệu đầu vào phục vụ cho việc tính toán cũng được những người phát triển tạo ra.
Khi Server Application chạy, nó thực hiện việc biên dịch những lớp java mô tả việc tính toán thành những file .class, những file .class và những file dữ liệu đầu vào được gửi tới Server Task, tại đây chúng được phân phối tới các Node.
Trong quá trình chạy, Server Application đồng thời gửi Task tới Server Task, và nhận kết quả trả về của những Task đã hoàn thành, xử lý các kết này.
3.2.3: Node Applet
3.2.3.1: Nhiệm vụ
Node Applet là một java applet, chạy trên những máy tính tham gia vào hệ thống tính toán, có nhiệm vụ nhận task và file input gủi về từ Server Task, thực thi chúng và gủi trả kết quả về cho Server Task.
3.2.3.2: Chức năng
Recovery and Failover
Tương tự như Server Application, khi kết nối giữa Node và Server Task bị ngắt do một lý do nào đó, Node sẽ tự động thử kết nối tới Server Task sau một khoảng thời gian được ấn định.
Task Checkpoint
Trong quá trình thực thi một Task, Node Applet có thể gặp một số vấn đề nào đó cần phải dừng việc thực thi một Task. Để có thể khôi phục lại quá trình tính toán của một Task. Node Applet cung cấp chức nằng Task Chekpoint, chức năng này lưu lại trang thái hoàn thành của một Task, một Task có thể bị dừng thực thi do người dùng dừng việc chạy ứng dụng, hoặc cũng có thể do một sự cố đột ngột nào đó, để tăng hiệu năng thực thi của một Task và tránh trường hợp phải thực hiện lại Task nhiều lần do sự cố. Chức năng Task Chekpoint sẽ tự động lưu trạng thái hoàn thành của một task sau một khoảng thời gian nhất định.
3.2.3.3: Cấu hình
Khi một người dùng Facebook chạy ứng dụng tính toán phân tán trên Facebook, và chọn một Project để tham gia và lưới tính toán, Node Applet sẽ được chạy, Node Applet lấy địa chỉ của Server Project từ một file cấu hình. Sau đó nó thực hiện tạo kết nối TCP tới Server Task. Khi kết nối TCP tạo xong, Server Task gửi Task và những file input cần thiết về máy tính Node. Node Applet chạy những task mà Server Task gửi về để bắt đầu thực hiện việc tính toán.
Khi quá trình tính toán hoàn thành, Node Applet gửi kết quả về cho Server Task thông qua kết nối TCP tạo ra lúc trước, và sau đó kết nối này sẽ bị ngắt, Node Applet sau đó sẽ tạo một kết nối TCP khác tới Server Task để tiếp tục nhận Task khác về thực thi.
Quá trình như vậy sẽ liên tục được thực hiện cho đến khi người dùng ngừng chạy ứng dụng hoặc ứng dụng tính toán đã thực hiện xong.
Máy Node thực hiện việc tính toán bằng một chương trình applet, nên người dùng không cần phải tải về và cài đặt các chương trình tính toán trên máy tính của mình. Người dùng có thể truy cập vào trang web của ứng dụng để thực hiện việc tính toán.
3.3: Ứng dụng tính toán
3.3.1: Định nghĩa
Là những ứng dụng java được chạy trên hệ thống tính toán phân tán, thực hiện việc tính toán một bài toán nào đó. Những bài toán này thường là những bài toán có khối lượng tính toán lớn, nếu thực thi trên một máy tính thì thời gian tính toán sẽ rất lâu, hoặc cần có những máy tính có khả năng tính toán cao, các máy tính loại này thường rất đắt.Vì vậy muốn tăng tốc độ tính toán cần có một lượng lớn máy tham gia vào việc tính toán, để làm được điều này, một ứng dụng tính toán cần được chia thành nhiều phần, mỗi phần được gọi là một Task, Task được gửi tới nhiều máy tính khác nhau để tính toán.
Nhứng ứng dụng tính toán được viết dựa vào một API được cung cấp bởi hệ thống JPPF.
3.3.2: JPPF API
JPPF API cung cấp những thư viện cho người lập trình phát triển những ứng dụng tính toán của mình. JPPF Frame Work cung cấp hệ thống các lớp để tạo kết nối, thực hiện việc phân phối Task, và các chức năng quản lý. Người phát triển ứng dụng khi muốn triển khai ứng dụng tính toán của mình trên hệ thống JPPF, họ sẽ định nghĩa những Task được kế thừa từ lớp JPPFTask, những Task được thừa kế từ lớp này sẽ có thể được triển khai trên hệ thống JPPF.
JPPF API cung cấp những lớp giúp việc tạo kết nối giữa ứng dụng và Server Task, bao gồm một số tính năng sau.
+ Quản lý một hoặc nhiều kết nối tới Server Task
+ Gửi Task tới Server Task và nhận kết quả từ Server Task
+ Xử lý những thông báo về việc thực thi Task
3.4: Task
3.4.1: Định nghĩa Task
Task là một đơn vị tính toán nhỏ của một ứng dụng tính toán, được thực thi trên máy tính Node. Một ứng dụng tính toán lớn muốn tăng hiệu suất tính toán cần được chia nhỏ làm nhiều task, để có thể phân phối tới nhiều máy tính Node thực thi, làm tăng hiệu năng tính toán của ứng dụng.
Một Task được những người triển khai ứng dụng tính toán định nghĩa, chúng được quản lý bởi server application. Để thực thi một task, máy tính Node cần tải về những java class, java class này chính là những chương trình thực thi một phần nhỏ của một ứng dụng tính toán.
Chu trình thực thi một Task trên là quá trình tạo kết nối, nhận những file .class và những file dữ liệu đầu vào, thực hiện tính toán trên những dữ liệu đó, tao ra kết quả và gửi trả về cho Server Task, đóng kết nối TCP. Sau đó lại tạo một kết nối TCP khác để nhận một Task khác.
Một Task do người phát triển viết muốn thực thi được trên hệ thống JPPF, nó cần được viết dựa vào API mà JPPF cũng cấp. JPPFTask là một lớp cơ sở cho tất cả task, những Task do người phát triển viết phải kế thừa lớp này.
3.4.2: Input Data File
Input data file là những dữ liệu cần thiết để thực thi một task, những file này được Server Application gửi lên Server Task, Server Task lưu chúng trong cở sở dữ liệu của mình. Khi một kết nối tới Server Task, nếu Task mà nó thực hiện cần có các file đầu vào, Server Task sẽ gửi file input cùng với các file .class của Task về máy , các file này sẽ được lưu trong thư mục %temp% của máy , khi một ngừng việc thực thi task cho một project, những file này sẽ tự động được xóa bỏ.
3.4.3: Result
Result là những kết quả tính toán của một task, khi một task được thực thi xong, result được gửi trả về cho Server Application thông qua Server Task, các kết quả này được Server Application xử lý, những kết quả được chấp nhận sẽ được lưu vào cơ sở dữ liệu trên ở
Result cũng được định nghĩa bởi người phát triển ứng dụng tính toán. Sử dụng một số phương thức tạo Result và lấy Result do JPPF API cung cấp, người phát triển có thể định nghĩa Result cho bài toán của mình.
Có 2 phương thức đơn giản để ứng dụng lưu giữ và nhận về một result là:
public void setResult(Object result)
public void getResult()
ví dụ việc tạo result.
public class MyTask extends JPPFTask
{
public void run()
{
// ... some code here ...
setResult("This is the result");
}
}
Result sẽ được nhận về bằng phương thức getResult().
String result = (String) myTask.getResult();
Ngoài ra còn có các cách khác để lưu trữ và nhận về một result:
+ Lưu trữ hoặc nhận về từ một cơ sở dữ liệu
+ Sử dụng files
+ Sử dụng một ứng dụng khác
…..
Chương IV: Cài đặt hệ thống
4.1 Server Task
Server Task có nhiệm vụ nhận task từ server application và phân phối task tới những node tham gia vào lưới tính toán. Khi khởi chạy server task tạo ra 3 server socket lắng nghe kết nối từ server application, node và serve task khác.
Những lớp chính trong Server Task
4.1.1 JPPFDriver
JPPFDriver là lớp chính trong Server Task, nó chuẩn bị và khởi chạy những môdun của Server Task. Nó chạy một server cho Server Task kết nối đến, một server cho Node kết nối đến và một class server để xử lý những yêu cầu từ những class loader từ xa.
Những thuộc tính chính:
taskQueue: Thuộc tính này có kiểu là đối tượng JPPFQueue, là một hàng đợt lưu trức task để thực thi.
applicationServers: là môt đối tượng có kiểu JPPFAppli cationServer. Lớp đối tượng này lắng nghe những kết nối tới từ Server Application, mỗi khi có một kết nối tới server một thread được tạo để lắng nghe những yêu cầu của Server Application, và đặt những yêu cầu này vào hàng đợi thực thi
nodeNioServer: là một đối tượng có kiểu NodeNioServer. Lớp đối tường NodeNioServer thực hiện tạo kết nối với Node, gửi yêu cầu thực thi task tới Node.
classServer: là một đối tường có kiểu ClassNioServer. lớp đối tượng này xử lý những yêu cầu từ những class loader .
NodeNioServer
ClassNioServer
JPPFApplicationServer
JPPFDriver
- void run()
- void shutdown()
- void createConnectionInformation()
- void main()
- JPPFApplicationServer[] applicationServers
- NodeNioServer nodeNioServer
- ClassNioServer classS
Các file đính kèm theo tài liệu này:
- Xây dựng ứng dụng tính toán phân tán trên nền tảng sức mạnh các máy tính cá nhân.doc