[Haskell-cafe] Re: Haskell vs GC'd imperative languages, threading,
parallelizeability (is that a word? :-D )
Hugh Perkins
hughperkins at gmail.com
Tue Aug 21 23:27:34 EDT 2007
On 8/11/07, Benjamin Franksen <benjamin.franksen at bessy.de> wrote:
> A certain amount
> of dynamism wrt the message content (high level protocol) is necessary for
> systems for which Erlang was designed, namely large distributed control
> systems with minimum down-times. For large distributed installations it is
> a matter of practicality to be able to upgrade one component w/o needing to
> recompile (and then re-start) all the other components that it communicates
> with -- for systems with expected down-times of 3 Minutes per year it is a
> matter of being able to meet the specifications. You'll have a hard time
> finding high-availability or large control systems which use an IDL
> approach for communication.
Hmmm, that's interesting. I'd never considered lack of typing to be a
good thing for system robustness before!
Question: to what extent does interface versioning get around this
problem? I assume the issue we're trying to address is to be able to
upgrade clients/servers/peers independently, without losing
connectivity with unupgraded systems?
So, using versioned interfaces:
Initially we have:
client1 marketinterface1
server marketinterface1
client2 marketinterface1
Then, we upgrade the server with a new interface, marketinterface2.
Significantly, we keep the old interface. So now we have:
client1 marketinterface1
server marketinterface1, marketinterface2
client2 marketinterface1
The whole system continues to work: client1 and client2 continue to
chat with server on marketinterface1.
Now we upgrade client1:
client1 marketinterface2
server marketinterface1, marketinterface2
client2 marketinterface1
... and client2:
client1 marketinterface2
server marketinterface1, marketinterface2
client2 marketinterface2
Finally, we deprecate/remove marketinterface1 from the server:
client1 marketinterface2
server marketinterface2
client2 marketinterface2
More information about the Haskell-Cafe
mailing list