JPPF 3.2 Released
What's new in JPPF 3.2
Load balancing in the client
As for the server with the nodes, the client can now distribute jobs over multiple server channels and the local execution channel. This opens up a broad variety of distribution capabilities, including:
- distribution through connections to multiple servers
- distribution through multiple connections to the same server
- distribution to the client-local execution channel
- any combination of the above
All jobs now have a distinct service level agreement for the client-side dispatching of their tasks. This provides the ability for each job to specifiy:
- a start and expiration schedule on the client side
- an execution policy to determine through which channels a job can be dispatched (channel filtering)
- the maximum number of channels to dispatch to
- as a result, the ability to specifiy local vs. remote execution on a per job basis
Executor services enhancements
- a data provider can now be sent along with the jobs
- ability to register a listener to receive notfications of each job's execution status
- a JPPF-specific CompletionListener is now available
Class loading improvements
- Parallel class loading requests from the same node are now batched and sent together to the server, providing a sigificant speed-up of the nodes performance
- Nodes maintain a cache of classes and resources not found in the remote classpath, avoiding costly network requests and improving class loading performance overall
- Local cache of resources found in remote classpaths can now be switched from file system to memory storage with automatic fallback strategy. This addresses environments where disk space available to the node is minimal or inexistant.
New JPPF task APIs
Two very useful methods were added to JPPFTask:
- isInNode() determines whether the task is executing within a node or in the client's local executor
- compute(JPPFCallable) enables the execution of a callback in the client. This replaces the ClientDataProvider API which is now deprecated.
All areas of JPPF networking have been updated to handle IPv6 addresses properly and transparently:
- discovery information broadcast by the server
- connectivity from the nodes and clients
- JMX-based connections for management and monitoring of the Grid
A major effort has taken place to provide automated testing of the JPPF features, to ensure that the quality of each release meets the expectations. This results in a large and growing set of tests based on JUnit and integrated into our development process.
An additional module was created to perform stress testing of JPPF grids and improve its stability and resilience under high-throughput and highly unstable networking conditions.