There are 3 type of nodes in a JCGrid:

The client and all the workers are connected to the server by using TCP/IP sockets. The default port 10101 is used by the server to receive client connections and default port 10102 is used to receive worker connections. You can use command line options in order to change default ports. The clients and workers can be beyond a NAT. If the server is beyond a NAT, you have to map used ports to the server.

The JCGrid communication protocol between client/server/worker uses Java Object Serialization in order to exchange messages. Exchanged data can be compressed (GZIP) by using a command line option in order to save bandwidth. SSL encryption can be enabled by using a command line option too. The access to the server can be restricted by using a password.

You can setup public grid over Internet with anonymous access. People can donate their CPU time and use other user's CPU like in P2P network.

NOTE: JCGrid is still in a very early stage of the development and setting up a public anonymous Grid is too dangerous. Enabling encryption is untested too and require some more complex setup (creating the Java keystore, etc.).

The JCGRID Server

In a JCGrid there is only one Server (but support for multiple servers is in the TODO list). The Server receives work requests from the clients and forward the requests to the workers. It collect work results from the workers and send back the results to the clients. The Server receives any file required for completing the work request from the client and store the file in a local cache. The files are sent to the workers if/when required. In both cases duplicate transfers are avoided by using a local cache and MD5 file signature comparison. The server handles all communication between nodes and any administrative/management task of the grid.

The JCGRID Worker

In a JCGrid there can be as many workers as you want. You can run multiple workers on the same Workstation/PC/Mac if you want take advantage of SMP. The worker fulfils work request received by the server and send back the work results.

The JCGRID Client

In a JCGrid there can be as many clients as you want. The clients split the work in several work requests and collects work results.

The JCGRID Virtual File System

A working directory and a session name is defined each time you run a JCGrid client. The client sends the list of files/subdirectories in the working directory with MD5 checksum and size to the server. The server checks the cache and if the file/subdirectory doesn't exists or if the MD5 checksum doesn't match, it requires to the client to send the entire file. There is exactly the same kind of interaction between the server and all the workers. Only required files will be transfered and only modified files will be transferred between different runs with the same session name.

It works very well with POVRay: you can put all the files of a scene in a directory, use that directory like the JCGrid client working directory and run the rendering. You can modify some file and rerun the rendering (and only modified files will be transferred).