The concurrent stack has done a great job in parallelizing delivery of
messages from different senders, but is there a way to parallelize
this from the same sender as well? Now I know this doesn't make sense
in terms of JGroups messages (order needs to be maintained) but when
you consider moving up one level of abstraction in JBC, this causes a
bottleneck. Consider, for example:
1. Using sync replication and BR.
2. 3 threads on cache1, working on disjoint data sets (no contention
at all, writes can be in parallel).
3. When it comes to replication to the same buddy, the concurrent
stack on the receiver will queue the 3 commits.
4. All parallelization achieved in 2. above is wasted since the
transactions need to queue anyway.
Is there something we can do with custom message headers, etc. to
allow for parallel delivery of these messages? E.g., perhaps using a
"communication id", which could be a representation of a global
transaction? Bela, Vladimir, any thoughts?
Cheers,
--
Manik Surtani
Lead, JBoss Cache
manik(a)jboss.org