We wish to do performance measurement on the merits of using various Java methods to communicate between 2 machines. This analysis will form the basis of a high-performance data storage subsystem we want to implement in the near future.
More specifically we want to have a Java (1.5/6) Spring based command-line? application that we deploy as two components, a client and a server. The client will issue requests to the server and measure a) latency and b) throughput, in statistical terms (average, min, max, stdDeviation) of this comminication. The number of messages and their size (in bytes) will be configurable by the client.
We want to test a) RMI b) ActiveMQ with persistence c) ActiveMQ with AUTO_ACK, d) ActiveMQ with CLIENT_ACK, d) one-way NIO java socket communication (using Apache MINA ) and e) two-way (with immediate ack from server) NIO java socket commincation using MINA. The first 10% and last 10% of measurements will be ignored to avoid startup / shutdown issues. A simple text based report will be output at the end of each run.
If this project is successful, we would look to the possibility of the individual working with us to build out the high-performance data storage server we have in mind.