Hey All,

You will need a monospace font for this one :).

Can anyone give me some advice on this problem? From what I can tell, currently 
routers are a congestion point for all components. E.g.

+--------+
| ROUTER +-S2S
+---+----+
    |
   C2S

As you can see the performance of the whole server depends on the router, and 
the router can't be scaled horizontally by clustering it (as far as I can 
tell). Like as follows:

+--------+   +--------+
| ROUTER +---+ ROUTER +-C2S
+--------+   +--------+
|        |   |        |
C2S     C2S  C2S      S2S

Can anyone correct me on this?

I came up with the following solution to the problem:

              C2S      S2S
               |        |
               +--------+
               | ROUTER |
               +----+---+
              /     |    \
C2S-+--------+ +----+---+ +--------+-C2S
    | ROUTER +-+ FAILURE+-+ ROUTER |
C2S-+--------+ +----+---+ +--------+-C2S
              \     |    /
               +----+---+
               | ROUTER |
               +--------+
               |        |
              S2S      S2S

The router network works like a token ring network, only that there is no 
token. Each router can send the packet along to the next as it wishes (in one 
direction only). The following flow would apply:

<!-- Router1 -->
<route from="c2s1.50" to="[EMAIL PROTECTED]">
  ...
</route>

<!-- Router2 -->
<route from="r1" to="[EMAIL PROTECTED]">
  <visit name="r1"/>
  ...
</route>

<!-- Router3 -->
<route from="r2" to="[EMAIL PROTECTED]">
  <visit name="r1"/>
  <visit name="r2"/>
  ...
</route>

If at any point one of the routers handles the packet successfully it simply 
stops passing the route node around. If the route node visits the same router 
twice it:

a. If the node is from 'this' domain send it to the failure node.
b. If the node is not from 'this' domain:
   1. If I have a S2S component attached send it to that.
   2. If I don't have a S2S component attached send it on.

Components would send failures if no connected client is found: thus making the 
router continue routing the packet.

The sexy thing about this is that you should be able to remove and connect 
routers to the network without bringing the whole thing down.

Great so far, this would work well with single-sign-in capable systems (i.e. no 
resources/priorities like MSN). Now, I can't for the life of me figure out a 
way to handle resources and priorities. One way would be to (but it's ugly):

Component gets route packet:

<route from="r4" to="[EMAIL PROTECTED]">
  <visit name="r3"/>
  <visit name="r4"/>
  <priority name="c2s4.1" resource="home" value="0"/>
  <priority name="c2s3.50" resource="mobile" value="50"/>
  ...
</route>

Thus each stanza would make a complete trip round the network (2 at worst) 
before it could be sent. Does anyone have any clever ideas how to get around 
this?

Thanks!

Jonathan
_______________________________________________
JDev mailing list
FAQ: http://www.jabber.org/discussion-lists/jdev-faq
Forum: http://www.jabberforum.org/forumdisplay.php?f=20
Info: http://mail.jabber.org/mailman/listinfo/jdev
Unsubscribe: [EMAIL PROTECTED]
_______________________________________________

Reply via email to