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.