Hello,
In fact there is no precedence relationship between load-balancing in the server and in the client. Both load-balance against different entities:
1) In the server, load-balancing is performed against the nodes, as can be expected, so the workload is distributed efficiently among the nodes.
2) In the client, load balancing is performed against
execution channels, where an execution channel can be:
- a connection to a remote server. Remember that a client can connect to any number of servers, and that it can also have any number of connections to each server
- or a
local executor (only one per JPPFClient instance).
Some typical use cases:
- when you submit a single job at a time over a single server connection, the effect of the load-balancing is that it determines in how many chunks the job will be sent to the server. For instance if you have a job with 50 tasks and you use the "manual" algorithm with a size of 10, then the job will be sent to the server in 5 chunks. This can be useful when a job has a large memory footprint and you'd rather not send it all at once.
- when you submit
multiple jobs concurrently over multiple connections
- another less common use is to enable parallel I/O for a single job sent over multiple connections to the server, by specifying its
number of execution channels in the client-side job SLA.
- any combination of the above is possible, which allows a range of behaviors from very simple to very complex.
I hope this clarifies,
-Laurent