The Erlang way - dynamic upgrade of a server and UBF extensions

Hal Snyder hal@REDACTED
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
client. :)

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
layer.

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
service.

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
addresses.



More information about the erlang-questions mailing list