| Home Page |
Overview
The Grid Computing System
Software Requirements
Example Command Lines
Write a Java program for a simulated grid computing system. The program will include distributed objects for the various entities in the grid computing system, as well as a user client. The distributed objects will reside in multiple processes running on different host computers, and communicating with each other using Java remote method invocation (RMI).
Like Version 5, Version 6 assumes that processes can fail. Unlike Versions 1, 2, and 5, Version 6 assumes there can be more than one client running at a time.
Version 6 adds the following features to Version 5:
The system is not designed to tolerate failure of the Registry Server.
The Grid Computing System (GCS) is the same as Version 1.
To perform the example calculation session depicted in the above timeline under "The Grid Computing System," run the following commands, each in a separate process on the same machine.
$ runregistry
#!/bin/bash java \ -classpath /home/fac/ark/public_html/cscl/lib \ Start edu.rit.ds.registry.RegistryServer |
$ runmonitor
#!/bin/bash java \ -classpath /home/fac/wrc/www/courses/common/ds/gcs/gcs06:/home/fac/ark/public_html/cscl/lib \ Monitor localhost 9901 |
grant codebase "file:/home/fac/wrc/www/courses/common/ds/gcs/gcs06/"
{
permission java.security.AllPermission;
};
grant codebase "file:/home/fac/ark/public_html/cscl/lib/"
{
permission java.security.AllPermission;
};
|
$ runcomputeserver A $ runcomputeserver B $ runcomputeserver C
#!/bin/bash java \ -classpath /home/fac/wrc/www/courses/common/ds/gcs/gcs06:/home/fac/ark/public_html/cscl/lib \ -Djava.security.policy=policy \ Start ComputeServer localhost 9901 $1 |
grant codebase "file:/home/fac/wrc/www/courses/common/ds/gcs/gcs06/client/"
{
permission java.security.AllPermission;
};
grant codebase "file:/home/fac/ark/public_html/cscl/lib/"
{
permission java.security.AllPermission;
};
|
$ runclient ARK SqrFunction A LogFunction B SineFunction C 0.5 1.0 CTRL-D
#!/bin/bash java \ -classpath /home/fac/wrc/www/courses/common/ds/gcs/gcs06/client:/home/fac/wrc/www/courses/common/ds/gcs/gcs06:/home/fac/ark/public_html/cscl/lib \ -Djava.security.policy=policy \ -Djava.rmi.server.codebase=http://www.cs.rit.edu/~wrc/courses/common/ds/gcs/gcs06/client/ \ ComputeClient localhost 9901 $* |
$ runclient2 ARK SqrFunction A LogFunction B SineFunction C 0.5 1.0 CTRL-D
#!/bin/bash java \ -classpath /home/fac/wrc/www/courses/common/ds/gcs/gcs06/client:/home/fac/wrc/www/courses/common/ds/gcs/gcs06:/home/fac/ark/public_html/cscl/lib \ -Djava.security.policy=policy \ -Djava.rmi.server.codebase=http://www.cs.rit.edu/~wrc/courses/common/ds/gcs/gcs06/client/ \ ComputeClient2 localhost 9901 $* |
Compute Server A prints the following on the console (the floating point numbers may print with additional digits of precision):
Compute Server A -- available Compute Server A -- reserved -- session: ARK Compute Server A -- function: sqr Compute Server A -- successor: B Compute Server A -- f(0.5) Compute Server A -- sqr(-0.735) = 0.540 Compute Server A -- f(1.0) Compute Server A -- sqr(-0.173) = 0.030 Compute Server A -- available
Compute Server B prints the following on the console (the floating point numbers may print with additional digits of precision):
Compute Server B -- available Compute Server B -- reserved -- session: ARK Compute Server B -- function: log Compute Server B -- successor: C Compute Server B -- f(0.5) Compute Server B -- log(0.479) = -0.735 Compute Server B -- f(1.0) Compute Server B -- log(0.841) = -0.173 Compute Server B -- available
Compute Server C prints the following on the console (the floating point numbers may print with additional digits of precision):
Compute Server C -- available Compute Server C -- reserved -- session: ARK Compute Server C -- function: sin Compute Server C -- f(0.5) Compute Server C -- sin (0.5) = 0.479 Compute Server C -- f(1.0) Compute Server C -- sin (1.0) = 0.841 Compute Server C -- available
The compute client program prints the following on the console (the floating point numbers may print with additional digits of precision):
f(0.5) = 0.540 f(1.0) = 0.030
[an error occurred while processing this directive]
| Home Page |