[infinispan-dev] HotRod client - optimize serialization

Mircea Markus mircea.markus at jboss.com
Mon Jul 5 06:10:46 EDT 2010


Hi,

On HR we serialize the (key, value) pairs before sending them to the client.
Current approach is we transfer them into an byte[] using an ByteArrayInputStream/ByteArrayOutputStream and then write them over the network with socket.getOutputStream().write(byte[])  

What I'm looking for a better way of serializing, by reusing byte arrays.
One approach would be to use an pool of ExposedByteArrayOutputStream, pool's size being == number of tcp connections between client and server. My concern with this approach is that if one is using a large value (e.g. 100MB ) once in a blue moon, than I'll always keep an 100MB array in memory, cached, even though I don't want it. 

Another approach would be to use use existing code for keys(i.e. serialize them into an byte[]), which are expected to be smaller, and for values to write directly in the  socket, through socket.getOutputStream(). This way I won't have the 100MB issue and also I won't create an byte[] for each value (I need to do that for keys though, as I need access to key's byet[] for computing its hash code).

Any suggestions much appreciated!

Cheers,
Mircea


More information about the infinispan-dev mailing list