[zeromq-dev] zmq-socket name aliases
Martin Sustrik
sustrik at 250bpm.com
Sun Aug 1 22:44:49 CEST 2010
Serge,
> However, maybe the problem is not just with names but with the fact that
> the 0MQ project tries to be too ambitious in squeezing many concepts
> into a single layer of the stack? There is a reason OSI is made up of 7
> layers where each has its own role and API.
>
> The 0MQ sockets have session, presentation and possibly some of the
> application layers intrinsically mixed together. As a result they are
> not really "sockets" but endpoints (?), mailboxes (?), nodes (?), and
> communication channels combined. While the API is modeled after BSD
> sockets, the implementation beefs them up with rich features of upper
> layers, and as a result the notion of a socket as communication channel
> is somewhat lost together with the ability to identify communicating
> entities.
Yep. I've spent years thinking about this.
The problem of layering is not specific to 0MQ rather it is common to
all messaging middleware.
I'll try to explain my current view, however, I am not 100% sure about
every aspect of it so take it with a grain of salt:
First of all, TCP doesn't work well as an underlying layer for messaging
middleware. While TCP is perfect for the work it is designed for, being
an underlying layer for highly available systems is obviously out of its
scope.
These problems have been solved in SCTP (as an alternative to TCP),
however, people still think of SCTP as an oddball protocol and prefer to
layer (i.e. mislayer) SCTP-like functionality that clearly belongs to
L4/L5 on top of TCP (L6 and higher).
The above reasoning applies to what you call session-related behaviour.
I would say there's no L6 functionality in 0MQ (correct me if I am
wrong) and thus everything that remains has no other place to go but L7
(application layer).
But it somehow doesn't seem right. What 0MQ does (aside of basic
session-related functionality) is obviously not an application logic.
That's why I use to refer to it as a "new layer in the networking
stack", namely a "scalability layer" (L8?).
The goal of this layer is to spread the load of the distributed system
in such a manner that arbitrarily large applications can be sustained on
top of it. The specific feature of this layer is that it defines overall
topology of the distributed system rather then simple point-to-point
communication.
Commercial: Look out for my "Scalability Layer Hits the Internet Stack"
talk on Linux Congress 2010!
Martin
More information about the zeromq-dev
mailing list