Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id 215D6200C5E for ; Sat, 8 Apr 2017 02:23:25 +0200 (CEST) Received: by cust-asf.ponee.io (Postfix) id 1FEFE160BA2; Sat, 8 Apr 2017 00:23:25 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id 66928160B97 for ; Sat, 8 Apr 2017 02:23:24 +0200 (CEST) Received: (qmail 59234 invoked by uid 500); 8 Apr 2017 00:23:23 -0000 Mailing-List: contact dev-help@geode.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@geode.apache.org Delivered-To: mailing list dev@geode.apache.org Received: (qmail 59222 invoked by uid 99); 8 Apr 2017 00:23:23 -0000 Received: from pnap-us-west-generic-nat.apache.org (HELO spamd2-us-west.apache.org) (209.188.14.142) by apache.org (qpsmtpd/0.29) with ESMTP; Sat, 08 Apr 2017 00:23:23 +0000 Received: from localhost (localhost [127.0.0.1]) by spamd2-us-west.apache.org (ASF Mail Server at spamd2-us-west.apache.org) with ESMTP id BC92D1A0082 for ; Sat, 8 Apr 2017 00:23:22 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at spamd2-us-west.apache.org X-Spam-Flag: NO X-Spam-Score: 2.481 X-Spam-Level: ** X-Spam-Status: No, score=2.481 tagged_above=-999 required=6.31 tests=[DKIM_SIGNED=0.1, DKIM_VALID=-0.1, HTML_MESSAGE=2, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, RCVD_IN_SORBS_SPAM=0.5, URIBL_BLOCKED=0.001] autolearn=disabled Authentication-Results: spamd2-us-west.apache.org (amavisd-new); dkim=pass (2048-bit key) header.d=pivotal-io.20150623.gappssmtp.com Received: from mx1-lw-us.apache.org ([10.40.0.8]) by localhost (spamd2-us-west.apache.org [10.40.0.9]) (amavisd-new, port 10024) with ESMTP id p-qZCWpGkXzu for ; Sat, 8 Apr 2017 00:23:20 +0000 (UTC) Received: from mail-qt0-f177.google.com (mail-qt0-f177.google.com [209.85.216.177]) by mx1-lw-us.apache.org (ASF Mail Server at mx1-lw-us.apache.org) with ESMTPS id 33D685FBFC for ; Sat, 8 Apr 2017 00:23:20 +0000 (UTC) Received: by mail-qt0-f177.google.com with SMTP id c45so31303831qtb.1 for ; Fri, 07 Apr 2017 17:23:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=pivotal-io.20150623.gappssmtp.com; s=20150623; h=mime-version:references:in-reply-to:from:date:message-id:subject:to; bh=YGjkAEzUyRczOh2h2BYYt4KGEX5PNWcrMrMQ/sAjszI=; b=iAcZkfK/MhQb6fn9vDWlo1W27fGeEgw73/mYx6YkLu8sKqm7Vq+y7YpAzCSr8sq5OA 6Lhrh9E5FdLp2YE9gsOCelP4gmnrpqWLem53i3hEK6wpHbTa9diRwxvjPQmdW4Ca0rmT YwOrx7CW4P3OSN1CQOLa39GQOXw5JESUVYSkW6dX81b+xj4hVTxfRt2jzpHgFMCAgtcw GXbOeJT0YhRjp1z92yQSUUmwqbkAU69Ln63NMVTiVrETBV852TFu4htly6FPFoFjsTFu ZIyLtH8ALfyo8zbx3BibJi0og2oRFliyVuqdwvl6lsjBO/oOvzpwB3gte7qAq7jHm4ue PqOQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to; bh=YGjkAEzUyRczOh2h2BYYt4KGEX5PNWcrMrMQ/sAjszI=; b=bWPYnzZWfbWslbJOG8bxJXMg2Gx4Z/mCpe0tXDBOWvhMaz4mGR8uw2VQJ570h3FTn2 mZtmbHDdGj9d3ddTOokiur9DBM2fxFW638waNDaleRlFWsL0j0ATDJ3P38MJ5ZidN7iH NROvnk7k7CnhPZFPhRlSkW7vzX1G0kL9zFl8+TpSLTb6agYP18/LUfURNPzZu9PeFPKv 1WwCxx3paeS+l433QTU1Wu6oZaKg8mad4HF6sVnji7FaBu7zjgBkTTn7yaQtQtETsvdp Dy4fPJsDuBkFPS3Zxv8aKoUDk/bFWJny0G4rSAgnegQxHLl8Qi0JqLPnyaFcwVlT3X/A DAcQ== X-Gm-Message-State: AFeK/H3GSStoqoZtYOW19sWMX7670zGwGO7mtMUUhXHgSdyOouzskOxGz5AKQf3X71HD0eka7CnwlWeHUDwUjyVE X-Received: by 10.200.56.86 with SMTP id r22mr42929385qtb.190.1491610999555; Fri, 07 Apr 2017 17:23:19 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Jacob Barrett Date: Sat, 08 Apr 2017 00:23:09 +0000 Message-ID: Subject: Re: Why we shouldn't use RPC Frameworks for the New Geode Protocol To: dev@geode.apache.org Content-Type: multipart/alternative; boundary=001a1140c112c5a21c054c9cbf57 archived-at: Sat, 08 Apr 2017 00:23:25 -0000 --001a1140c112c5a21c054c9cbf57 Content-Type: text/plain; charset=UTF-8 You are confusing message protocol with user data serialization. The two are not related. Look at HTTP, the message protocol is pretty simple, PUT, GET, etc., but it does nothing with the data being PUT/GET. On a GET the message protocol has a field that specifies the Content-Type and Content-Encoding and some other metadata. So the GET could get HTML, JPEG, etc. but the protocol doesn't care and doesn't know anything special about that type of the data it puts. The structure for JPEG is not defined in the HTTP protocol at all. So relate that to what we want to do. Our message protocol defines a PUT and a GET operation, some metadata perhaps and a section for the data. It should have no restriction or care on how that data was serialized. The protocol does not define in any way the structure of the data being PUT or GET. Separating that concern then, does your argument still stand that PRC frameworks do not work for the new Geode protocol? On Fri, Apr 7, 2017 at 3:11 PM Galen M O'Sullivan wrote: > I think the main selling point of an RPC framework/IDL is ease-of-use for > defined remote communications that look like function calls. If you have > calls you're making to remote servers asking them to do work, you can > fairly trivially define the interface and then call through. You can then > use native types in function calls and they transparently get transformed > and sent across the wire. > > The RPC protocols I've seen are based on the idea that the types that can > be sent will be predefined -- otherwise it's hard to describe with an IDL. > > However, we want to support storing unstructured data, or at least data > structures that are defined (from the cluster's point of view) at runtime > -- one of the main selling points of Geode is PDX serialization, which lets > us store arbitrary object structures in the cache. If we were to use an RPC > framework we have all the commands accept byte arrays and include some > meta-information. This loses us the ease-of-use. > > What's left in the protocol then is the calls and the number of arguments > they accept, and what order we put those (and the serialized arguments) in > on the wire. I don't think we gain much by using a preexisting RPC > language, and we lose control over the wire format and message structure. > If we want to be able to make the protocol really fast, and customized to > our use case; if we want to implement asynchronous requests, futures, etc. > then we have to write wrappers for a given language anyways, and packing > those things through an RPC framework like Thrift or gRPC will be an extra > layer of confusing complexity. > > Best, > Galen > --001a1140c112c5a21c054c9cbf57--