summaryrefslogtreecommitdiff
path: root/cpp/src/qpid
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src/qpid')
-rw-r--r--cpp/src/qpid/cluster/new-cluster-active-passive.txt39
1 files changed, 39 insertions, 0 deletions
diff --git a/cpp/src/qpid/cluster/new-cluster-active-passive.txt b/cpp/src/qpid/cluster/new-cluster-active-passive.txt
new file mode 100644
index 0000000000..56618da83c
--- /dev/null
+++ b/cpp/src/qpid/cluster/new-cluster-active-passive.txt
@@ -0,0 +1,39 @@
+-*-org-*-
+* Active/passive cluster implementation
+
+An active/passive implementation requires a subset of the active/active approach:
+- drop Queue ownership and locking
+- replicate subset of Cluster interface, don't need to know all message disposition.
+
+Can re-use:
+- cluster membership
+- new member updates
+- store integration
+
+Simpler implementation of broker::Cluster:
+- act like distributed MessageStore. Don't need acquisition details.
+- can do immediate local enqueue and still guarantee order.
+- can use smaller message IDs: just sequence number. Can be implicit.
+
+Extra requirements:
+- Passive members refuse client connections and redirect to active member.
+- Choose new active member when the active dies.
+
+Question: How best to direct clients to the correct node after failover?
+
+** Active/active vs. active passive
+
+Active/active benefits:
+- Total # connections: practical 60k limit per node.
+- Handle client losing connectivity to one cluster node - can fail over to any.
+- Some load sharing: reading from client + multicast only done on direct node.
+
+Active/active drawbacks:
+- Co-ordinating message allocation impacts performance.
+
+Active/passive benefits:
+- Don't need message allocation strategy, can feed consumers at top speed.
+
+Active/passive drawbacks:
+- Can't help clients with no connectivity to the active member.
+- Clients must find the single active node in failover.