I'm new to JGroups and to distributed programming, but I'm trying to use it for a very low bandwidth connection. How can I configure a channel to minimize it's use of bandwidth? I don't need many features. Can I turn-off things like failure detection? I'm even OK with removing reliability.
Thanks,
Chris
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
I'm new to JGroups and to distributed programming, but I'm trying to use
it for a very low bandwidth connection. How can I configure a channel to
minimize it's use of bandwidth?
A channel by default doesn't use bandwidth, it is the application which
determines how much bandwidth is used.
JGroups by default uses message batching to conserve bandwidth, but of
course you can also increase heartbeating timeouts etc to reduce the
traffic generated by JGroups.
I don't need many features. Can I turn-off things like failure detection?
You don't need to know when a member has crashed ? Then remove FD / FD_ALL.
I'm even OK with removing reliability.
People usually use JGroups for reliability ! :-) But you could have a
config consisting only of UDP and UNICAST3, which basically provides
unreliable multicasting and reliable unicasts.
Thanks for the quick reply. I tried only leaving UDP and UNICAST3 and that really cut down on the bandwidth.
My application does statistical sampling. Each node takes independent samples and sends a message with the average of the samples. It doesn't matter if some of these averages get lost since any average is as good as another.
It would be nice to have reliable communication for some aspects of the application, but I still have the bandwidth constraint. What is the minimal set of features I need to support reliable messages. I guess another option is to send unicasts for the messages that need to be reliable.
Thanks,
Chris
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Thanks for the quick reply. I tried only leaving UDP and UNICAST3 and
that really cut down on the bandwidth.
My application does statistical sampling. Each node takes independent
samples and sends a message with the average of the samples. It doesn't
matter if some of these averages get lost since any average is as good
as another.
OK
It would be nice to have reliable communication for some aspects of the
application, but I still have the bandwidth constraint. What is the
minimal set of features I need to support reliable messages. I guess
another option is to send unicasts for the messages that need to be
reliable.
There's a better solution: use the full stack (e.g. udp.xml), which by
default is reliable, but bypass the reliability protocols (NAKACK2 and
UNICAST3) by marking messages as NO_RELIABILITY. This could e.g. be done
for statistical msgs; all other messages would be sent reliably by default.
The 'full stack' could still be adjusted, e.g. if you don't need state
transfer, remove BARRIER and STATE_TRANSFER.
Hello,
I'm new to JGroups and to distributed programming, but I'm trying to use it for a very low bandwidth connection. How can I configure a channel to minimize it's use of bandwidth? I don't need many features. Can I turn-off things like failure detection? I'm even OK with removing reliability.
Thanks,
Chris
On 01/10/15 18:44, Chris Mesterharm wrote:
A channel by default doesn't use bandwidth, it is the application which
determines how much bandwidth is used.
JGroups by default uses message batching to conserve bandwidth, but of
course you can also increase heartbeating timeouts etc to reduce the
traffic generated by JGroups.
You don't need to know when a member has crashed ? Then remove FD / FD_ALL.
People usually use JGroups for reliability ! :-) But you could have a
config consisting only of UDP and UNICAST3, which basically provides
unreliable multicasting and reliable unicasts.
--
Bela Ban, JGroups lead (http://www.jgroups.org)
Thanks for the quick reply. I tried only leaving UDP and UNICAST3 and that really cut down on the bandwidth.
My application does statistical sampling. Each node takes independent samples and sends a message with the average of the samples. It doesn't matter if some of these averages get lost since any average is as good as another.
It would be nice to have reliable communication for some aspects of the application, but I still have the bandwidth constraint. What is the minimal set of features I need to support reliable messages. I guess another option is to send unicasts for the messages that need to be reliable.
Thanks,
Chris
On 02/10/15 22:28, Chris Mesterharm wrote:
OK
There's a better solution: use the full stack (e.g. udp.xml), which by
default is reliable, but bypass the reliability protocols (NAKACK2 and
UNICAST3) by marking messages as NO_RELIABILITY. This could e.g. be done
for statistical msgs; all other messages would be sent reliably by default.
The 'full stack' could still be adjusted, e.g. if you don't need state
transfer, remove BARRIER and STATE_TRANSFER.
--
Bela Ban, JGroups lead (http://www.jgroups.org)
Thanks all your help. I tried what you suggested and while it increases the traffic a bit, it's still reasonable.
Thanks,
Chris