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,
đố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.
Để 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 – Tổng 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
Tài liệu tham khảo 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