Hi all,

i am currently evaluating the scalability of Networks of ActiveMQ Brokers
with a large number of brokers. The actual drive behind this evaluation: I
have to design a distributed system that is completely serverless. It shall
be possible to switch of any of the machines in the system without alloying
the distributed functionality. The number of active machines in the system
might vary from only 2 to about 100.

My current idea: Have an (presumably embedded) ActiveMQ Broker running on
any of the machines, and let all this Brokers form a 'Network of Brokers'
(abbreviated NOB in the follwing)

So far, i found that in an NOB a message is forwarded only to those brokers
where at least one client has subscribed to the topic resp. queue the
message is sent to. Really fine. If a client subscribes to a queue, the
broker where the subscription is made sends a single short control-message
to all other brokers of the NOB. That would still allow for thousands of
brokers, fine again.

However, i just realized one fact that may compromise scalabilty: If a
client subscribes to a  topic, the broker where the subscription is done
sends a not-so-short control-message to all other brokers. So far not too
bad, but now comes the problem: Every broker seems to react on this
control-message by sending another not-so-short control-message to all other
brokers. This means, if N brokers are present, every subscription to a topic
results in about (N-1)*N*2 control-messages (The additional factor two comes
from the fact, that the final recipient-broker seems to send another
response control-message). BTW, The length of the control-messages being
sent seems to be closely related to the string length of the topic name.

I have verified this behaviour with only up to 6 brokers, so i'm not totally
shure if it will extrapolate to a larger number, but i suspect it does. This
would mean, that with e.g. 100 Brokers every subscription to a topic would
result in 100*99*2 control messages being sent. If a single control message
has about 400 bytes (what i observed), this means a single subscription to a
topic would result in about 8 Megabyte network traffic. This might even be
sustainable, but the quadratic order kills scalabilty -- with 1000 Brokers
we would have to transfer about 1 Gigabyte, what is no longer feasible.

Finally, my questions: Is there any configuration option by which this
quadratic order can be avoided, is my idea simply foolish, or are my
conclusions wrong ? Note that i gained my conclusions more or less
'empirically' using wireshark.

thanks for any advice, Martin

-- 
View this message in context: 
http://www.nabble.com/Scalability-of-%27Networks-of-Brokers%27-tp19335699p19335699.html
Sent from the ActiveMQ - User mailing list archive at Nabble.com.

Reply via email to