The Erlang way - dynamic upgrade of a server and UBF extensions
Thu May 22 06:55:02 CEST 2003
Joe Armstrong <joe@REDACTED> writes:
>> The IP failover seems to handle a reasonable case of
>> essentially connectionless single packet transmission,
>> or the equivalent of frequency hopping. More complex
>> failover can be part of a data packet listing multiple IPs
>> or a hierarchy or mapping to particular versions of the
>> protocol, as agreed in UBF(B) or UBF(C) contracts.
> Interesting - perhaps the whole of client-server RPC is wrong.
> Should it be cluster-cluster RPC.
> The client could enclose a list of IPs and the server could reply to any
> client in the list.
> On *every* reply the server would reply with a list of servers to be
> used on the next call - one the next call the client could choose
> *any* server.
> (This will not be wildly efficient - because of globally replicate the
> state in the clusters at either end - *but* it will be easy to
> program fault-tolerent applications)
As others have commented, putting IP addresses in this message layer
feels very wrong, a la FTP and such. That it is NAT-unfriendly is
simply a warning.
A few more random thoughts about IP failover:
Re sending a bunch of addresses to which a peer could reply, there may
be a precedent of sorts - isn't that what happens in SCTP multihoming?
Except for the detail that with SCTP all the addresses are on the same
Probably fault tolerant connection logic should not encumber UBF
machinery. Instead, use a very reliable (e.g. localhost socket) link
to another system that does the connection redundancy - think of it as
passing the message to another layer of the protocol stack.
There is an analogy with interior vs. exterior gateway protocols in
dynamic routing. And cluster-cluster communication is what happens
between autonomous systems with exterior routing. Of course somewhere
there is host-host communication but that is isolated at a lower
A network is made up of globs of consumers and producers of various
resources. The characterization of a host includes a list of
services for which it is producer or consumer (to which clusters does
this host belong), with group and instance identifiers for each
A message should be sent from a UBF client or server to a logical
address, shouldn't it? I suspect UBF clients and servers should no
more care about IP addresses than they should care about MAC
More information about the erlang-questions