The Router : More on Communication 2


We’ve recently completed version 0.1 of what we call, simply, “The Router”. Someday a different loving name will likely fall from the sky, but until then…

The Router is more accurately described as a Jabber Request Load Balancer and Message Router/Broadcaster. Our main use is to employ The Router balancing client requests across a redundant array of application servers. Now take that idea and multiply it across a set of routers (probably one per Jabber server or Jabber domain) and you have a Jabber communication web that’s intelligent enough to recover from the loss of any single node (jabber server, Router, application server).

The more we’ve used The Router, the more we are starting to realize its potential for additional functionality as well. For example, the latest addition was that of a ‘broadcast’ message type. Any such messages are broadcast to every node in an application server class. With tools such as these, we can quickly share state information across a disparate array of servers.

A quick description of the implementation for those of you familiar with Jabber:
A Router listens on a well known Jabber ID. All application servers then send a registration message to this Jabber ID. In the case of multiple routers, each application server will register with all of them. The application servers will periodically re-register to ensure an intelligent and up-to-date network. A client will then send a request to an application class, whose Jabber ID will be controlled by The Router. The Router will then go to the next server node in the class and send it the message.


2 thoughts on “The Router : More on Communication

  • bill Post author

    Interesting… My take on pubsub was that a client subscribes to a ‘service’ on the server. When anything is published to that service, all subscribed clients receive notification (and possibly payload) of the publication. If that’s the case, then it’s slightly different (more or less inverted) from what we’re trying to accomplish with The Router. With The Router, (in pubsub parlance) we want “notifications” to be load balanced across the set of subscribed clients (i.e. sent to only one) and potentially accross jabber domains. I looked around on the JEP 0060 page and found a lot of interesting possibilities with the pubsub architecture, but unless I’m mistaken, I didn’t see any interpretation of the JEP that would accomplish what we need. Please, correct me if I’m wrong and thanks for the suggestion.

    -bill

Comments are closed.