caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
* Re: [Caml-list] RPC for OCaml?
@ 2016-05-18 19:59 Maxime Ransan (BLOOMBERG/ 731 LEX)
  0 siblings, 0 replies; 10+ messages in thread
From: Maxime Ransan (BLOOMBERG/ 731 LEX) @ 2016-05-18 19:59 UTC (permalink / raw)
  To: murthy.chet; +Cc: caml-list

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

Regarding protobuf you can use [1] if you want to generate OCaml from `.proto` file or [2] if you want to use ppx extension to serialize OCaml types to protobuf. 

Regaring [1], protobuf3 format is not fully supported but it could be improve. Feel free to raise issues. 


[1] https://github.com/mransan/ocaml-protoc 
[2] https://github.com/whitequark/ppx_deriving_protobuf/


From: murthy.chet@gmail.com At: May 18 2016 13:42:22
To: rixed@happyleptic.org
Cc: caml-list@inria.fr
Subject: Re: [Caml-list] RPC for OCaml?

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: 6729 bytes --]

^ permalink raw reply	[flat|nested] 10+ messages in thread
* [Caml-list] RPC for OCaml?
@ 2016-05-18 13:43 rixed
  2016-05-18 13:52 ` Yaron Minsky
                   ` (2 more replies)
  0 siblings, 3 replies; 10+ messages in thread
From: rixed @ 2016-05-18 13:43 UTC (permalink / raw)
  To: caml-list

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.


^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2016-06-26  5:56 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-05-18 19:59 [Caml-list] RPC for OCaml? Maxime Ransan (BLOOMBERG/ 731 LEX)
  -- strict thread matches above, loose matches on Subject: below --
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
2016-05-19  9:29   ` rixed
2016-06-26  5:56 ` David MENTRÉ

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