caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
From: Gerd Stolpmann <info@gerd-stolpmann.de>
To: Malcolm Matalka <mmatalka@gmail.com>
Cc: Francois Berenger <francois.berenger@inria.fr>,
	OCaml List <caml-list@inria.fr>
Subject: Re: [Caml-list] What are people using when writing distributed applications in OCaml?
Date: Thu, 04 Dec 2014 20:54:45 +0100	[thread overview]
Message-ID: <1417722885.4661.16.camel@zotac> (raw)
In-Reply-To: <87h9xbxw79.fsf@gmail.com>

[-- Attachment #1: Type: text/plain, Size: 2782 bytes --]

Am Donnerstag, den 04.12.2014, 15:37 +0000 schrieb Malcolm Matalka:
> It depends on what level you're talking.  My distributed systems apps
> tend to be functorized over their transport, so I can switch out what
> works and what doesn't pretty easily.
> 
> I tend to avoid RPC frameworks, I find they focus more on the
> computation than on the data, but depending on what you're doing they
> could be appropriate.
> 
> Unless you're under heavy load, simple HTTP calls with some JSON is
> probably sufficient.

I guess Francois is asking because for some reason HTTP is
inappropriate. I can understand that because it is a really bloated
protocol, and you usually only use it when you need to (e.g. you have to
call it from Javascript or the like, or have to go through firewalls).
Also, there are several aspects you cannot control well, e.g. when TCP
connections are created and kept alive (or not). Multicast messaging is
completely impossible.

I recommend to not to see RPC systems under their framework aspect, but
simply as transport libraries. In particular, if you don't like the
serialization scheme, there is usually the alternative that you take
your own serializer and just send the data as (binary) strings on the
RPC level (which is always possible and simple to do). From my
experience it is essential that you have good control over the low-level
things (e.g. connection control, timeouts, retrials, error handling
etc), because this is what the distributed system keeps running. Sure it
is good when an RPC library implements some automatisms (e.g. for error
handling), but it is even better when there is also a manual mode, as
distributed systems sometimes require unusual ways of dealing with that
stuff.

Gerd

> 
> Francois Berenger <francois.berenger@inria.fr> writes:
> 
> > Hello,
> >
> > If you know about some distributed application that went into production
> > and that can happily withstand the fire of production and real world loads, I would be happy to here about which library the system was
> > using.
> >
> > I have heard about MPI and zmq for example, which both have
> > ocaml bindings. However, I also know that there are several RPC
> > implementations out there (one in ocamlnet, one in mirage, one in core), but I am not sure about which one is the most mature and
> > production-tested.
> >
> > Thanks a lot,
> > Francois.
> 

-- 
------------------------------------------------------------
Gerd Stolpmann, Darmstadt, Germany    gerd@gerd-stolpmann.de
My OCaml site:          http://www.camlcity.org
Contact details:        http://www.camlcity.org/contact.html
Company homepage:       http://www.gerd-stolpmann.de
------------------------------------------------------------

[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 473 bytes --]

      reply	other threads:[~2014-12-04 19:55 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-12-04  9:33 Francois Berenger
2014-12-04  9:47 ` Kenneth Adam Miller
2014-12-04  9:55   ` Anders Fugmann
2014-12-04 12:00 ` Gerd Stolpmann
2014-12-04 15:37 ` Malcolm Matalka
2014-12-04 19:54   ` Gerd Stolpmann [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1417722885.4661.16.camel@zotac \
    --to=info@gerd-stolpmann.de \
    --cc=caml-list@inria.fr \
    --cc=francois.berenger@inria.fr \
    --cc=mmatalka@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).