some basic questions

Klacke klacke@REDACTED
Fri Oct 8 09:46:23 CEST 1999




Michael Skowronski writes:
 > is there support in any of the libraries/contributions for multi-node
 > message delivery,


About two/three years ago I was really interested in the
ISIS protocols developed by a group of researchers at Cornell
with Ken Birman. These protocols support a concept of
process groups and something they call "virtual syncronicity".

The basic idea is that a group of processes is formed and named, 
messages sent to the group by means of the ISIS protocols 
can have different delivery semantics. The most interesting (and
also efficiently implementable) is that "all members in the
group get all messages in the same order". They also get all 
join_group, leave_group, member_crashed, message sin the same
order. 

This basic mechanism, (which as I said is possible to implement
efficiently) Can be used as the basic abstraction to build 
other stuff, such as transaction managers etc.

I had two students from Uppsala that implemented the ISIS
protocols in Erlang and did some experiments with it.

However, and here comes the bad news. It turned out that
the API they delivered (which was pretty similar to the
classic ISIS API) wasn't that much easier to use than
plain distributed Erlang. 

The focus of the work was
ease of use and correctness. It is very very very hard
to write 100 % correct fault tolerant distributed applications
and the ISIS abstraction is the only one I've ever seen that
raises above simple message passing/rpc

To use I.e sun RPC, Corba or even distributed Erlang to build
distributed apps is a bit low level.

We did a couple of sample applications using the Erlang ISIS
API as well as normal distributed Erlang, and it turned out that 
the ISIS apps weren't any easier to write or understand, so the
idea was dropped. I'm not the only one who dropped the idea(s)
from the Cornell group. The traffic now in comp.XX.isis is almost 
zero.

However, I still think that we need better abstractions than
the ones we have today in order to build distributed apps.
(Note, here iI'm not talking about loosely loosely coupled
apps like, nntp or www, but rather fault tolerant applications
with hot standby's and such. The API provided by distributed erlang,
mnesia, global, gen_server and friends is much much better than
i.e a CORBA based api, but it's still too low level.

Just my 5 öre.


Cheers


/klacke

Claes Wikström                          Tel: +46 (0)8 692 22 09
Bluetail AB                             Email: klacke@REDACTED
Hantverkargatan 78                      WWW: http://www.bluetail.com
SE-112 38 Stockholm, SWEDEN




More information about the erlang-questions mailing list