Node Applet

Một phần của tài liệu LUẬN VĂ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 ppt (Trang 45 - 52)

Chạy trên những máy tính tham gia vào lưới tính toán, thực thi Task và trả kết quả về cho Server Task

Những lớp chính trong Node Applet 4.3.1 NodeRunner

Là một applet, thực thi việc chạy Node, tạo kết nối tới Server Task, sử

dụng cơ chế classloader tải lớp JPPFNode để thực thi task và gửi kết quả trả về

Server Task.

Những thuộc tính chính.

classLoader: có kiểu JPPFClassLoader, là một classloader dùng để load những lớp cần java khi chạy node.

nodeSocket: có kiểu SocketWrapper, là socket kết nối tới Server Task.

node: có kiểu MonitoredNode đối tượng này được tạo nhờ cơ chế

classloader. NodeRunner dùng cơ chế classloader tải lớp JPPFNode trên Server Task để tạo một đối tượng kiểu MonitoredNode

Những phương thức chính. NodeRunner - JPPFClassLoader classLoader - SocketWrapper nodeSocket - MonitoredNode node - void init() - void runMain() - MonitoredNode createNode() - JPPFClassLoader getJPPFClassLoader() - void shutdown()

39

init(): phương thức tạo applet

runMain(): phương thức thực thi việc chạy node, phương thức này gọi tới hàm createNode để tạo node và chạy nó.

createNode(): sử dụng cơ chế classloader tải lớp JPPFNode trên Server Task để tạo một node có kiểu là MonitoredNode.

getJPPFClassLoader(): phương thức này trả về classloader dùng trong việc thực thi NodeRunner.

shutdown(): phương thức dừng chạy Node.

4.3.2 JPPFClassLoader

Một ClassLoader cho phép tải những lớp từ xa trong quá trình thực thi.

Những thuộc tính chính.

socket: socket kết nối tới remote host, để tải lớp

uuidPath: danh sách id của những ứng dụng được gửi lên Server Task

requestUuid: id của bundle task mà node thực hiện

Những phương thức chính.

Init(): tạo socket kết nối tới remote host

JPPFClassLoader - SocketWrapper socketClient - List<String> uuidPath - String requestUuid - void init() - void initSocketClient() - Class<?> findClass() - JPPFResourceWrapper loadResourceData() - JPPFResourceWrapper loadRemoteData()

40

initSocket(): thiết lập thông tin cho socket theo những thông tin trong file cấu hình.

findClass(): phương thức này thực hiện tải class theo tên class được chỉ định, nếu gặp lỗi nó sẽ gọi phương thức System ClassLoader, phương thức này gọi tới phương thức loadResoureData()để lấy những thống tin về class cần tải, và dùng phương thức defineClass()để môt tả class được tải theo những thông tin lấy được nhờ phương thức loadResoureData().

loadResourceData(): phương thức này gọi tới phương thức

loadRemoteData()để đọc những thông tin về class được chỉ định thông qua socket. Phương thức trả về một đối tượng JPPFResourceWrapper, (adsbygoogle = window.adsbygoogle || []).push({});

đối tượng này tóm lược những thông tin của class được chỉđịnh.

4.3.3 Node Applet Configuration

Cấu hình mạng

# IP address or host name of the server

jppf.server.host = my_host

# class loader port

class.server.port = 11111

# communication between node and server

node.server.port = 11113

Thông tin cấu hình này định nghĩa địa chỉ và cổng của Server Task mà node sẽ kết nối tới.

Server discovery

# Enable or disable automatic discovery of JPPF drivers

jppf.discovery.enabled = true

# UDP multicast group to which drivers broadcast their connection parameters

jppf.discovery.group = 230.0.0.1

# UDP multicast port to which drivers broadcast their connection parameters

41

# How long in milliseconds the node will attempt to automatically discover a driver # before falling back to the manual configuration parameters

jppf.discovery.timeout = 5000

Nếu giá trị jppf.discovery.enabled được gán bằng true, node sẽ tựđộng tìm kiếm những Server Task có trong mạng để kết nối.

Recovery and failover

# number of seconds before the first reconnection attempt

reconnect.initial.delay = 1

# time after which the system stops trying to reconnect, in seconds # a value of zero or less means it never stops

reconnect.max.time = 60

# time between two connection attempts, in seconds

reconnect.interval = 1

Cũng giống như Server Application, những thông tin cấu hình này mô tả cơ chế thực hiện khôi phục kết nối khi bị ngắt.

Security policy

Chính này bảo mật sẽ giới hạn những việc node có thể làm trên máy tính mà nó chạy. (adsbygoogle = window.adsbygoogle || []).push({});

Để kích hoạt chính sách này ta cần chỉ rõ đường dẫn tới file định nghĩa những chính sách bảo mất.

# Path to the security file, relative to the current directory or classpath

jppf.policy.file = jppf.policy

Nếu giá trị này không được định nghĩa, chính sách bảo mật sẽ bị vô hiệu hóa.

42

4.4 Một sốứng dụng tính toán

Chúng tôi đã xây dựng thử nghiệm bài toán giải mã DES trên hệ thống tính toán. Bài toán đặt ra là chúng ta có một bản rõ và một bản mã hóa của bản rõ đó, chúng ta cần tìn ra khóa đã dùng để mã hóa bả rõ đó. Để giải quyết bài toán này chúng ta sử dụng phương thức duyệt toàn bộ, chúng ta sẽ duyệt lần lượt các giá trị có thể của khóa, dùng khóa đó để giải mã bản mã hóa, sau đó so sánh với bản rõ để tìm ra khóa

đúng.

Bài toán cần được tính toán trên hệ thống tín toán phân tán để tăng năng suất tính toán, vì thế bài toán cần được chia ra làm nhiều phần nhỏ, mỗi phần nhỏ này là một task, một task ởđây chúng tôi định nghĩa là việc thử 100 khóa, kết quả trả về cho server sẽ là false nếu 100 khóa đó đều sai, nếu có khóa đúng kết quả trả về sẽ là true

và giá trị của khóa đó.

Do điều kiện vật chất không cho phép, chúng tôi đã cho chạy thửứng dụng trên 3 máy, và chạy thử 5000 task, kết quả cho thấy hệ thống đã có thể chia task cho từng máy thực thi.

Hình 4.1 Mô tả phân chia task tới những máy tính Node

Thống kê thời gian thức thi cho thấy, khi chạy với 3 máy tính thời gian thực thi

đã nhanh hơn 1 máy tính.

Hình 4.2 là biểu đồ thời gian thực thi khi có một máy tính, đường màu đỏ cho thấy thời gian thực thi trung bình khoảng 51ms.

43

Hình 4.2 Biểu đồ thời gian thực thi khi có một máy tính

Hình 4.3 là biểu đồ thời gian thực thi khi có 3 máy tính, ta thấy thời gian thực thi trung bình khoảng 30ms

44

Chương V – Tng kết

Dựa trên những kiến thức đã tìm hiểu được về tính toán phân tán và việc phát triển ứng dụng trên facebook. Chúng tôi đã phân tích và nắm bắt được kiến trúc cơ bản của một hệ thống tính toán phân tán, cách thức hoạt động và triển khai một hệ thống tính toán phân tán. Bên cạnh đó chúng tôi cũng nắm bắt được quy trình triển khai một

ứng dụng trên facebook. Từ những kết quả nghiên cứu đó, chúng tôi đã bước đầu xây dựng một hệ thống tính toán phân tán kết hợp với ứng dụng facebook. Hệ thống có sử

dụng một ứng dụng mã nguồn mở về tính toán lưới làm nền tảng để phát triển đó là

ứng dụng JPPF [12]. Chúng tôi đã cải tiến ứng dụng tính toán lưới này để nó có thể

triển khai trên môi trường web, giúp cho việc tham gia của người dùng được dễ dàng hơn. Chúng tôi cũng xây dựng một vài bài toán tính toán dựa trên hệ thống tính toán phân tán này, để kiếm thử quá trình hoạt đống của nó. Và hệ thống đã có thể thực hiện những bài toán trên môi trường lưới tính toán.

Do điều kiện vật chất cũng như thời gian hạn hẹp nên hệ thống mới chỉ được triển khai trên quy mô nhỏ, nhưng chúng tôi tin rằng với việc phát triển của mạng máy tính cũng như mạng xã hội như hiện nay, hệ thống sẽ dễ dàng được mở rộng và phát triển.

Việc phát triển các ứng dụng tính toán phân tán sẽ còn được quan tâm nhiều trong tương lai, vì đây là một giải pháp hữu hiệu để giải quyết nhứng bài toán khoa học lớn. Trong tương lai chúng tôi sẽ xây dựng hệ thống với quy mô rộng lớn hơn. Cải tiến những thuật toán của chương trình để chương trình có thể vận hành tốt hơn, chính xác hơn, sử dụng tài nguyên của những máy tính trong lưới tính toán phù hợp hơn nhằm tăng hiệu năng của hệ thống.

Vềứng dụng, chúng tôi sẽ cải tiến hệ thống API giúp cho những người phát triển bài toán tính toán có thể dễ dàng triển khai ứng dụng của mình

Về ứng dụng facebook, chúng tôi sẽ cải tiến giao diện người dùng, giúp người dùng dễ dàng tham gia vào những dự án tính toán, biến nó trở thành một cầu nối giữa người dùng và dự án tính toán. Từđó tạo điều kiện mở rộng dự án tính toán, tăng hiệu năng thực thi. Sẽ là rất tốt khi mọi người cùng chung nhau chung sức hoàn thành những dự án có ích cho toàn xã hội.

45 (adsbygoogle = window.adsbygoogle || []).push({});

Tài liu tham kho Tiếng Anh

[1] Clovis Chapman, Paul Wilson, Todd Tannenbaum, Matthew Farrellee, Miron Livny, John Brodholt, Wolfgang Emmerich, Condor services for the Global Grid, http://www.cs.wisc.edu/condor/doc/condor-ogsa-2004.pdf

[2] David P. Anderson, Gilles Fedak, The Computational and Storage Potential of Volunteer Computing, http://boinc.berkeley.edu/boinc_papers/internet/pa- per.pdf

[3] Derek Wright, BOINC and Condor – Scavenging the Scavenger, http://bolt.berkeley.edu/ws_06/boinc_and_condor.pdf

[4] Jon Wakelin, Condor Globus and SRB: Tools for Constructing a Campus Grid, http://www.nesc.ac.uk/talks/556/02_Wakelin_condorGlobus.ppt

[5] Luis F. G. Sarmenta. Bayanihan: Web-Based Volunteer Computing Using Java. Proc. of the 2nd International Conference on World-Wide Computing and its Applications (WWCA'98), Tsukuba, Japan, March 3-4, 1998. Lecture Notes in Computer Science 1368, Springer-Verlag, 1998. pp. 444-461.

[6] Parvin Asadzadeh, Rajkumar Buyya, Chun Ling Kei, Deepa Nayar, Srikumar Venugopal, Global Grids and Software Toolkits:A Study of Four Grid Middleware Technologies, http://www.buyya.com/papers/gmchapter.pdf

[7] http://abcathome.com/ [8] http://boinc.berkeley.edu/wiki/User_manual [9] http://setiathome.berkeley.edu/ [10] http://pleiad.umdnj.edu/IBM/ [11] http://www.tnsglobal.com/_assets/files/TNS_Market_Research_5.pdf [12]http://jppf.org/ Tiếng việt

[13] PGS.TS. Vũ Đức Thi, PGS.TS. Trần Văn Lăng, PGS.TS. Nguyễn Thanh Thuỷ, GS.TSKH. Phạm Kỳ Anh, PGS.TS. Lê Anh Dũng, Tính toán lưới và một số vấn đề nghiên cứu, phát triển tính toán lưới ở Việt Nam, Hội thảo quốc gia lần thứ XI: Một số vấn đề chọn lọc của CNTT - TT Huế, 12 – 13/6/2008

Một phần của tài liệu LUẬN VĂ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 ppt (Trang 45 - 52)