caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
From: Chet Murthy <murthy.chet@gmail.com>
To: rixed@happyleptic.org
Cc: caml-list <caml-list@inria.fr>
Subject: Re: [Caml-list] RPC for OCaml?
Date: Wed, 18 May 2016 10:42:05 -0700	[thread overview]
Message-ID: <CA++P_gdYoR3nbQgxAK2vhMkyvBtH=zS0=MqZxMqmeBHh5c4KeQ@mail.gmail.com> (raw)
In-Reply-To: <20160518134349.GA10232@pim.happyleptic.org>

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

Hi, I'm in the middle of building a nontrivial WAN-distributed system in
Ocaml, and have built a few distributed systems as part of research, in the
past.  I'd like to urge you to try to use and improve one of the existing
multiplatform RPC systems that exist -- specifically Thrift or Protobuf3.

My last system used Thrift, and consisted in a Chubby clone, storage
servers and clients, and RPC over TCP and RoCEE.  Some parts were in C++
for efficiency, and some in Ocaml (for programmer-efficiency).  It mattered
to me, that I could get really, really efficient (microseconds counted) RPC
implementations for C++, that were wireline compatible with Ocaml (so I
could convert an Ocaml prototype into a C++ program for speed).

The system I'm working on right now will require (in addition to Ocaml)
Java, Javascript, and Golang compatibility for the RPC substrate.

I think it's also important that you have stub-compilers and "standard" RPC
transports for Ocaml -- you don't want to be rolling your own
stubs&skeletons that you have to update as you change your IDL, when all
the other languages' stubs/skeletons get automatically generated.

If I had my druthers, I'd go with protobuf3.  I've used protobuf2 at my
previous employer, and it was quite performant.  But ocaml isn't
supported.  Someday, when I have time, I'll fix that.  But right now, that
isn't high-priority.

Secondly, I don't know what the story is, on thrift-vs-protobuf3
performance.  Maybe it's great, GREAT!  But it might not be, and there are
at least reasons why it could be worse.  Specificaly protobuf3 was designed
for use on the open internet, not in more-controlled settings.  These are
issues that really involve the transports, not the upper-layers of the RPC
stack, but still, it's something to be checked-out and verified carefully.

OK: so my own decision was: "use Thrift for now, but be ready to switch to
protobuf3 once it gets ocaml support (e.g., I write it) and I verify
performance parity".

My 2c,
--chet--


On Wed, May 18, 2016 at 6:43 AM, <rixed@happyleptic.org> wrote:

> Hello.
>
> I'm thinking about implementing a library for doing RPC with OCaml, with
> large
> scale environments in mind (à la Stubby but with better type checking of
> course). I'm wondering what are the related libs I should make myself
> familiar
> with before starting. I've seen a few interesting things for serialization
> (piqi come to mind), some interesting event engines (LWT, Core), some
> protocol
> implementations suitable for transport but no HTTP2, nothing to interface
> with
> monitoring subsystems or TSDBs, nothing related to load balancing, routing,
> DDoS detection, etc, some crypto, an interesting TLS implementation from
> MirageOs, no OAuth or similar.
>
> What other related projects should I look at?
>
> Also, if anyone would be interested in contributing ideas, experience or
> code
> please let me know.
>
>
> --
> Caml-list mailing list.  Subscription management and archives:
> https://sympa.inria.fr/sympa/arc/caml-list
> Beginner's list: http://groups.yahoo.com/group/ocaml_beginners
> Bug reports: http://caml.inria.fr/bin/caml-bugs
>

[-- Attachment #2: Type: text/html, Size: 4125 bytes --]

  parent reply	other threads:[~2016-05-18 17:42 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-05-18 13:43 rixed
2016-05-18 13:52 ` Yaron Minsky
2016-05-18 14:17   ` Jon Ludlam
2016-05-18 14:34     ` rixed
2016-05-18 14:26   ` rixed
2016-05-18 19:01     ` Yaron Minsky
2016-05-18 17:42 ` Chet Murthy [this message]
2016-05-19  9:29   ` rixed
2016-06-26  5:56 ` David MENTRÉ
2016-05-18 19:59 Maxime Ransan (BLOOMBERG/ 731 LEX)

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='CA++P_gdYoR3nbQgxAK2vhMkyvBtH=zS0=MqZxMqmeBHh5c4KeQ@mail.gmail.com' \
    --to=murthy.chet@gmail.com \
    --cc=caml-list@inria.fr \
    --cc=rixed@happyleptic.org \
    /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).