I think it would be interesting for XMPP servers to support a mesh
configuration much like what you have in overlay P2P networks.
Effectively it comes down to supporting "dynamic federation" where the
servers, instead of being connected in a fixed topology, they would
join and leave to the mesh. Presumably, this can be done using
overlay mechanisms like Chord, pastry, etc. Where I see great value
is really in the massive scalability of this pubsub mesh. Basically,
a client can just connect to one of the servers in the mesh, and
pubsub notifications destined to the client will hop in between nodes
(servers) to get to it. The trick is that the nodes would be
configured following one of the overlay structures (say chord) and in
this way, the notifications would find their way. Using chord for
example, the nodes (servers) would just have log(n) connections to
deal with. From the server point of view, if it receives a
notification that it cannot handle, then it will pass it along one of
its nodes, which eventually either handle it or store it for later.
Anyway, the idea would be to support "dynamic federation" on the XMPP
protocol, that way, any server that supports it could be part of a
potentially very large mesh.
On 15 Apr 2008, at 19:12, Roberto Ostinelli wrote:
Agreed, I think.
My argument is that this doesn't matter, at least at this point.
I'm a big
fan
of use-case-driven development, and at the moment I'm not aware of a
single example
of, for example, two RSS / Atom feeds linking to each-other [as
metadata].
Linkages between PubSub Items is trivial and well understood, but
I'm not
even sure
what linkages between PubSub nodes would *mean*.
Web APIs work fine at the moment, and discovery is driven by
documentation, not high
engineering solutions.
b.
we do have an use case of the kind. it's a a distributed
architecture where
xmpp servers are the backbone.
instead of having an unique pubsub node on one unique centralized xmpp
server to which all interested entities subscribe (in a 1->n
relationship),
every xmpp that complies to the architecture has a pubsub node which
has a
standardized name, 'news', and every client which is interested
subscribes
to the 'news' pubsub node of its own xmpp server.
xmpp servers then provide relaying between 'news' node pubsubs, so
that an
item published on the 'news' pubsub node of xmpp server A is also
published
on the 'news' pubsub node of xmpp server B. this builds an n->n
relationship
and is interesting for many reasons.
i am not sure what is the best way to provide such relays, i'm
currently
using a xmpp server component which acts like a subscriber to the
'news'
pubsub node of other xmpp servers and:
- checks if a pubsub item has not been already treated [to avoid
redundancy];
- if not, publishes it on the 'news' pubsub node of its own xmpp
server.
just some thoughts.
r.