5 Operations move through the network

CEDA streams operations asynchronously between databases, normally as one-way messages over TCP connections. A sender transmits operations that the receiver has not yet applied. Each consumer applies each producer's operations exactly once and in producer order, while the overall delivery order respects causality.

This avoids making distributed transactions the unit of communication. Durable application events can themselves be data: a producer adds them to its local database and consumers respond when those items reach their own databases. Persistence and recovery belong to the database protocol rather than being delegated to a separate durable message broker.

Arbitrary network topologies

Sites can be connected through arbitrary topologies, including topologies with redundant paths. Operations propagate through the network while other sites generate operations concurrently. Connections and topology may change over time; synchronisation is not tied to a single permanent central master.

An operation propagating through a network of CEDA sites

Messaging

Messaging in CEDA separates durable application data from the transient byte sequences used to move that data between processes. Persistence, recovery, causal ordering, and exactly-once processing are properties of the participating databases and their protocols; they are not obtained by inserting a durable message broker between them.

A persistent queue feeding a transient message queue between a producer and consumer

At the transport level, TCP connections carry framed, ordered messages without assigning application meaning to their contents. The cxMessage and cxMessage2 libraries provide two generations of this transport. At the invocation level, cxRmi and cxRpc record calls on an interface so they can be encoded into messages and replayed on another object.

The RPC system can operate at a rate of hundreds of millions of messages per second, subject to the available network bandwidth.

The Messaging specification describes the messaging architecture, transient and persistent queues, TCP transports, recovery, and remote invocation.