Re: [hybi] (no subject)

Martin Sustrik <sustrik@250bpm.com> Thu, 06 October 2011 09:39 UTC

Return-Path: <sustrik@250bpm.com>
X-Original-To: hybi@ietfa.amsl.com
Delivered-To: hybi@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id B001C21F8B61 for <hybi@ietfa.amsl.com>; Thu, 6 Oct 2011 02:39:17 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -0.543
X-Spam-Level:
X-Spam-Status: No, score=-0.543 tagged_above=-999 required=5 tests=[AWL=0.151, BAYES_00=-2.599, HELO_EQ_SK=1.35, HOST_EQ_SK=0.555]
Received: from mail.ietf.org ([12.22.58.30]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id oR6tMopNQPmz for <hybi@ietfa.amsl.com>; Thu, 6 Oct 2011 02:39:16 -0700 (PDT)
Received: from mail.moloch.sk (chrocht.moloch.sk [62.176.169.44]) by ietfa.amsl.com (Postfix) with ESMTP id 4B8E621F8B54 for <hybi@ietf.org>; Thu, 6 Oct 2011 02:39:15 -0700 (PDT)
Received: from [10.9.1.2] (chello089173046084.chello.sk [89.173.46.84]) by mail.moloch.sk (Postfix) with ESMTPSA id BDE36180113D; Thu, 6 Oct 2011 11:42:23 +0200 (CEST)
Message-ID: <4E8D7805.4050405@250bpm.com>
Date: Thu, 06 Oct 2011 11:42:29 +0200
From: Martin Sustrik <sustrik@250bpm.com>
User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.23) Gecko/20110921 Thunderbird/3.1.15
MIME-Version: 1.0
To: Hapner mark <hapner.mark@huawei.com>
References: <92457F4F764A5C4785FCDBDDDD76477A123CA06E@dfweml506-mbx>
In-Reply-To: <92457F4F764A5C4785FCDBDDDD76477A123CA06E@dfweml506-mbx>
Content-Type: text/plain; charset="ISO-8859-1"; format="flowed"
Content-Transfer-Encoding: 7bit
Cc: "hybi@ietf.org" <hybi@ietf.org>, "csuconic@redhat.com" <csuconic@redhat.com>
Subject: Re: [hybi] (no subject)
X-BeenThere: hybi@ietf.org
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: Server-Initiated HTTP <hybi.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/hybi>, <mailto:hybi-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/hybi>
List-Post: <mailto:hybi@ietf.org>
List-Help: <mailto:hybi-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/hybi>, <mailto:hybi-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 06 Oct 2011 09:39:17 -0000

Hi Mark,

>  >I think the argument goes rather like this: If the metadata is to be
>  >used by the protocol, the semantics of the usage should be defined. If
>  >it's not defined, there's no interoperability. If there's no
>  >interoperability, there's no point in having a standard in the first
> place.

The great thing about JMS was that it actually defined the canonical 
semantics of a messaging system. (Kudos, btw!)

If it was just function signatures without an explanation what the 
individual calls are meant to do, it won't be pretty much useless.

I think the same principle applies to wire protocols: Don't add anything 
to the protocol unless you are explicit about how it should be used.

>  >What I meant was that there are messaging solutions out there with no
>  >broker (Tibco RV, LBM, 0MQ). There's nothing expect the "broker" wording
>  >in the protocol to prevent these solutions to use the protocol.
>  >
>
> I was using the term 'MessageBroker' to represent the abstract messaging
> service the client is using for message transport/distribution. You are
> right that nothing prevents an endpoint taking on the roles of both
> client and 'broker'.
>
> Possibly there is a better term for capturing the messaging role of the
> endpoint a client is connecting to. Please send suggestions ...

I would apply Occam's razor and go for "WebSocket server" and "WebSocket 
client".

In traditional broker-based setting "WebSocket server" pretty 
straightforwardly translates to "messaging broker" and "WebSocket 
client" to "messaging client".

Brokerless solutions are free to interpret the roles as they see fit.

Btw, getting rid of broker/client terminology allow for using the 
protocol for broker-to-broker federation as well.

>  >This is interesting. Can you give an example of such network failure?
>
> Any failure that abnormally terminates a WebSocket session will require
> resynchronization of the duplex messaging stream for a connection. The
> session failure could be due to a wide range of issues from hardware
> problems to TCP timeouts caused by congestion, etc.

What's interesting here is that that's exactly what TCP is supposed to do.

Obviously, there are issues with TCP reliability algorithm. It would be 
nice to identify those deficiencies and enumerate them in the 
introduction. (Are they deficiencies of TCP as such? Or maybe just 
problems with TCP implementations? etc.)

> In Enterprise messaging, reliable message transport requires what
> amounts to transport transactions. This adds complexity and overhead.
> For WebSocket, a stream oriented, message window based resynchronization
> technique is a better fit. Unlike Enterprise messaging, this distributes
> the responsibility for reliability equally between client and broker.

Definitely. Dealing with transactions is a mess.

Martin