On 03/27/2013 07:28 AM, Michael Goulish wrote:

I am trying to understand the fundamental differences
between AMQP 1.0 / Proton messaging, and what we've
done before -- and to express it in language that
non-engineers can clearly understand and get excited
about.  Messaging for poets.

You who already Get It -- please read this and tell
me where I hit, where I miss, and what you would add.


====================================================


First-generation, broker-centric messaging solutions
centralize all messaging functionality in the broker.

As customers demand new functionality, the broker
becomes a monolithic Swiss Army knife.  Its various
functions interact and interfere with each other.
Maintenance effort tends to increase as the square of
the feature set.  Tradeoffs that users want to manage,
such as that between throughput and latency, or between
performance and reliability, become difficult to manage.

Proton and the AMQP 1.0 protocol make possible a
second-generation, peer-to-peer messaging paradigm.
The messaging system becomes a network of nodes,
each adding a single well-defined function to the
whole.  There are nodes, or patterns of node usage,
to add low latency, high throughput, high availability,
persistence, management, routing, and security to the
system.

The exponential increase in complexity of a single
monolithic node is avoided, development and maintenance
are eased, and various classes of users can easily tailor
messaging solutions to their particular needs without
fratricidal interference.

Scalability of the messaging system becomes straightforward,
allowing a single messaging technology to address markets
from small-scale local networks to continent-spanning
systems of thousands of communicating nodes.  Broker-like
functionality can still be implemented, and more easily,
but is not forced upon all potential users.

The entry-barrier is lowered.  New users can perform small-
scale experiments, then easily scale up to enterprise-class
solutions.

====================================================


QUESTIONS

1. Is that stuff all true?

I believe so, yes.

2. Is there more?

Of course.

One thing I would point out is that High Availability, which is almost always a requirement, is handled very differently.

In the MOM/Monolithic-Broker case, HA is typically achieved using some form of clustering. AMQP provides the possibility of using a more network-centric approach to HA (i.e. HA by redundant topology).

3. *Why* does AMQP 1.0 support the peer-to-peer paradigm
    better than other protocols?

It might be helpful to make a feature-by-feature comparison between AMQP and some other protocols (SMTP, HTTP, STOMP, MQTT, TCP, Websockets, etc.). AMQP has a number of features that make it a very powerful point-to-point protocol for large distributed systems:

 * Session multiplexing over a transport connection,
 * Full-duplex, asynchronous transfer,
 * Fine-grained flow control (you can have open and congested links on
   the same transport),
 * Formal semantics of message transfer (copy/move, a range of
   reliability: pre-settled to distributed transactions, etc.),
 * Available efficient serialization of structured data,
 * Support for hop-by-hop and end-to-end security and annotation,
 * and an extremely flexible addressing mechanism.


4. Do other protocols support it, but not as well?
    Or is this paradigm impossible with other protocols?


This paradigm already exists with TCP/IP. It's just not that easy to use, has very rigid addressing, and doesn't translate well into the hybrid-cloud world (thus all the activity around Software Defined Networks, etc.).

-Ted

Reply via email to