Thanks for the comments - a few responses below.

On 31 Jan 2009, at 23:20, Robert Greig wrote:

2009/1/30 Andrew Wright <[email protected]>:

Actually this was to integrate with Terracotta. TC needs some sort of load balancer to get locality of reference (for performance) - qpid would fit the bill here, via hierarchical topics. There'd only be a single subscriber on a topic at a time. TC clients are notified as nodes join/leave, so can take over the processing of a given topic if the primary processor goes away.

So you have a number of nodes which access Terracotta shared storage
and you want to push jobs into those nodes, with some kind of affinity
between job types and nodes in order to be able to get the locality of
reference.


Essentially, yes. Each app node is responsible for a subset of the data processing (we're looking to implement an order matching engine/ exchange).

The issue with using a topic is that recovery is made more complicated
- unless the backup also subscribes to the messages and just throws
them away. I would be tempted to use a queue with the headers exchange
and just load balance between the primary and secondary (effective
having active/active pairs with the clients). I'm obviously making a
lot of assumptions about your application's suitability for that
approach!


The big difficulty we have is a hard requirement for in-order message processing. This unfortunately rules out load balancing from a queue across active-active client pairs. We'd rather just route incoming msgs to a store-and-forward topic, and accept a small processing pause during app node failover.

Once a message has been read from the topic, it is written into the TC cache. At that point we can failover processing to a different node without any message or data loss.


As far as the broker goes, I think that is an orthogonal question. I
would run active/active brokers behind a hardware load balancer such
as an F5. That will mean the client doesn't have to deal with failover
plus you don't have to use shared storage so should give higher
throughput (Carl can you confirm?).


We were rather hoping that qpid clients (eg. the Java client) would be able to failover against a HA broker pair without the use of a dedicated load balancer.

As you say, Coherence has this sort of thing built in. Unfortunately it also
comes with a fairly hefty Oracle price tag...

Yes it is expensive but it is a much more sophisticated product (or
certainly a "different" product) than Terracotta - I think it would
depend what your non-functionals are whether it is worth using it (or
Gemfire, IBM ObjectGrid or Gigaspaces which are credible Coherence
competitors).

Absolutely - and we haven't ruled anything out yet. We're going to start with the lowest cost option, and if it doesn't work out, then have a rethink.

Cheers,
Andrew

---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:[email protected]

Reply via email to