Achieving Scale with
                    Messaging & the Cloud
                        Tony Garnock-Jones <tonyg@lshift.ne...
Outline

                        • Messaging – what, why

                        • Cloud Messaging – some examples

     ...
Messaging



Thursday, 9 July 2009               3
Messaging Elements
       ...relaying, filtering, multicasting, forwarding, buffering,
     distribution/scheduling, subscr...
What is it good for?
         Decoupling communication from behaviour, enabling:


                        •   debuggabili...
Messaging Elements
       ...relaying, filtering, multicasting, forwarding, buffering,
     distribution/scheduling, subscr...
Messaging Elements
        • Delivery:
              • deliver(target,   message);



        • Subscription:
            ...
AMQP for Messaging
                                                                        C
                            P...
It’s Easy
                byte[] body = ...;
                ch.basicPublish(exchange, routingKey, null, body);



       ...
RabbitMQ Universe

                                          ...plus new
                                   developments l...
Cloud Messaging



Thursday, 9 July 2009                     11
Examples

                        • Soocial are using RabbitMQ + EC2 to
                          coordinate their contact...
Soocial.com




Thursday, 9 July 2009                 13
OOI – Ocean
                  Observatories Initiative




Thursday, 9 July 2009                        14
OOI – Ocean
                  Observatories Initiative
                                     Service.DomainName



        ...
Nanite
                        • Developed by Ezra Zygmuntowicz at
                          Engineyard
                  ...
VPN3             (VPN-cubed)
                        • A secure Virtual Private Network in the
                          c...
Achieving Scale



Thursday, 9 July 2009                     18
Paul Baran, Introduction to Distributed Communications Networks, 1964



                        Paul Baran’s Networks



...
Achieving Scale
                        • Capacity – throughput, latency,
                          responsiveness
       ...
Capacity

                        • Service capacity: bandwidth, throughput

                        • Service responsiven...
Simple load-balancing
                                                Request Queue



                                   ...
Clustering




Thursday, 9 July 2009                23
Clustering




Thursday, 9 July 2009                24
Clustering
                                                Physical
                                                Machin...
Divide and Conquer

                        • By record – parallelisable data lets separate
                          brok...
WAN Cluster
            The WAN cluster has local
            queues but global exchanges
            Apps decide
        ...
Overfeeding the server
                        • Message backlogs can cause catastrophe
                        • Goal: O(...
Synchronisation
          When clustering might
          not be right:
              • huge networks
              • inte...
Synchronisation




Thursday, 9 July 2009                     30
Ring
         Pass it on to your
         neighbour if your
         neighbour’s name
         isn’t in the list yet




T...
Complete
   Graph
         Pass it on to your
         neighbour if it
         hasn’t been
         labelled at all yet

...
Multicast
         Pass it on to your
         neighbour if it
         hasn’t been
         labelled at all yet




Thurs...
Availability

                        • Broker Availability

                        • Application/Service Availability

 ...
Responsibility transfer
                         Consumer                   Broker

                                    ba...
Responsibility transfer
                         Producer                   Broker

                                    ba...
Responsibility transfer
                         Producer         Broker         Consumer




                            ...
Responsibility transfer
                         Producer   Broker   Consumer




Thursday, 9 July 2009                   ...
Redundancy for HA

                        Pfailure = (Ploss) n




                                   (assuming independe...
Redundancy for HA

                        Pfailure = (Ploss) n
         Uptime           Ploss   n      Pfailure   Overal...
Redundancy for HA
                          P           P


      One                 X       X   X       X      Two
     ...
Deduplication
                                (“Idempotency Barrier”)


                              id=123            id...
Network Management
                        • Small systems can be managed by hand
                        • Large systems ...
The Future




Thursday, 9 July 2009                43
Questions?
                        http://www.rabbitmq.com/how




Thursday, 9 July 2009                                 44
Upcoming SlideShare
Loading in …5
×

Achieving Scale With Messaging And The Cloud 20090709

4,854 views

Published on

0 Comments
8 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
4,854
On SlideShare
0
From Embeds
0
Number of Embeds
3,323
Actions
Shares
0
Downloads
137
Comments
0
Likes
8
Embeds 0
No embeds

No notes for slide

Achieving Scale With Messaging And The Cloud 20090709

  1. 1. Achieving Scale with Messaging & the Cloud Tony Garnock-Jones <tonyg@lshift.net> Thursday, 9 July 2009 1
  2. 2. Outline • Messaging – what, why • Cloud Messaging – some examples • Achieving Scale – what, why, how Thursday, 9 July 2009 2
  3. 3. Messaging Thursday, 9 July 2009 3
  4. 4. Messaging Elements ...relaying, filtering, multicasting, forwarding, buffering, distribution/scheduling, subscription, topics, streaming, ... Element Element ... Element Element Element Element ... Thursday, 9 July 2009 4
  5. 5. What is it good for? Decoupling communication from behaviour, enabling: • debuggability • cross-language integration • manageability • fault-tolerance • monitorability • store-and-forward • rolling upgrades • ... • load-balancing Thursday, 9 July 2009 5
  6. 6. Messaging Elements ...relaying, filtering, multicasting, forwarding, buffering, distribution/scheduling, subscription, topics, streaming, ... messages message Element subscribe unsubscribe Thursday, 9 July 2009 6
  7. 7. Messaging Elements • Delivery: • deliver(target, message); • Subscription: • bind(source, topic, target); • unbind(source, topic, target); Thursday, 9 July 2009 7
  8. 8. AMQP for Messaging C P X C P X C • Exchanges perform • Queues perform relaying, copying, and buffering and round- filtering robin delivery Thursday, 9 July 2009 8
  9. 9. It’s Easy byte[] body = ...; ch.basicPublish(exchange, routingKey, null, body); ch.queueBind(queueName, exchange, routingKeyPattern); QueueingConsumer consumer = new QueueingConsumer(ch); ch.basicConsume(queueName, consumer); while (true) { QueueingConsumer.Delivery delivery = consumer.nextDelivery(); // ... use delivery.getBody(), etc ... ch.basicAck(delivery.getEnvelope().getDeliveryTag(), false); } Thursday, 9 July 2009 9
  10. 10. RabbitMQ Universe ...plus new developments like RabbitHub, BBC FeedsHub, Trixx, ... Thursday, 9 July 2009 10
  11. 11. Cloud Messaging Thursday, 9 July 2009 11
  12. 12. Examples • Soocial are using RabbitMQ + EC2 to coordinate their contacts-database synchronisation application • The Ocean Observatories Initiative is using RabbitMQ + relays + gateways for a global sensing & data distribution network Thursday, 9 July 2009 12
  13. 13. Soocial.com Thursday, 9 July 2009 13
  14. 14. OOI – Ocean Observatories Initiative Thursday, 9 July 2009 14
  15. 15. OOI – Ocean Observatories Initiative Service.DomainName Region Virtual IP Cloud IPs Thursday, 9 July 2009 15
  16. 16. Nanite • Developed by Ezra Zygmuntowicz at Engineyard • Presence (by pinging; we’re still working out the best way of putting presence into RabbitMQ itself) • Self-assembling compute fabric • Load-balancing & recovers from failure • An easy way of deploying to the cloud Thursday, 9 July 2009 16
  17. 17. VPN3 (VPN-cubed) • A secure Virtual Private Network in the cloud • Uses RabbitMQ as a backend for IP multicast (!) which otherwise doesn’t work in EC2 • Uses BGP to arrange routing between nodes • Can meld your datacentre(s) with EC2 Thursday, 9 July 2009 17
  18. 18. Achieving Scale Thursday, 9 July 2009 18
  19. 19. Paul Baran, Introduction to Distributed Communications Networks, 1964 Paul Baran’s Networks Thursday, 9 July 2009 19
  20. 20. Achieving Scale • Capacity – throughput, latency, responsiveness • Synchronisation & Sharing • Availability – uptime, data integrity • Network Management – lots of devices, lots of addresses, authentication & authorisation Thursday, 9 July 2009 20
  21. 21. Capacity • Service capacity: bandwidth, throughput • Service responsiveness: latency • Data capacity: storage Thursday, 9 July 2009 21
  22. 22. Simple load-balancing Request Queue (Private) Reply Queue • Shared queue mediates • Load-balancing, live access to service upgrades, fault-tolerance instances Thursday, 9 July 2009 22
  23. 23. Clustering Thursday, 9 July 2009 23
  24. 24. Clustering Thursday, 9 July 2009 24
  25. 25. Clustering Physical Machine Erlang Node Listening Socket Message Erlang’s inter-node Store message routing Virtual Host Thursday, 9 July 2009 25
  26. 26. Divide and Conquer • By record – parallelisable data lets separate broker clusters handle separate shards of your data • By component – each independent part of your application can use separate brokers; “federation of distributed systems” Thursday, 9 July 2009 26
  27. 27. WAN Cluster The WAN cluster has local queues but global exchanges Apps decide which broker- cluster to publish to Thursday, 9 July 2009 27
  28. 28. Overfeeding the server • Message backlogs can cause catastrophe • Goal: O(0) RAM cost per message • Spool out to disk when memory pressure gets high • Testing and tuning: should land for RabbitMQ 1.7 Thursday, 9 July 2009 28
  29. 29. Synchronisation When clustering might not be right: • huge networks • intermittent connectivity • ruling bandwidth with an iron fist • different administrative domains Thursday, 9 July 2009 29
  30. 30. Synchronisation Thursday, 9 July 2009 30
  31. 31. Ring Pass it on to your neighbour if your neighbour’s name isn’t in the list yet Thursday, 9 July 2009 31
  32. 32. Complete Graph Pass it on to your neighbour if it hasn’t been labelled at all yet Thursday, 9 July 2009 32
  33. 33. Multicast Pass it on to your neighbour if it hasn’t been labelled at all yet Thursday, 9 July 2009 33
  34. 34. Availability • Broker Availability • Application/Service Availability • Data Availability Thursday, 9 July 2009 34
  35. 35. Responsibility transfer Consumer Broker basic.deliver basic.deliver basic.deliver ... basic.ack Thursday, 9 July 2009 35
  36. 36. Responsibility transfer Producer Broker basic.publish basic.publish basic.publish ... tx.commit tx.commit-ok Thursday, 9 July 2009 36
  37. 37. Responsibility transfer Producer Broker Consumer ... ... Thursday, 9 July 2009 37
  38. 38. Responsibility transfer Producer Broker Consumer Thursday, 9 July 2009 38
  39. 39. Redundancy for HA Pfailure = (Ploss) n (assuming independence) Thursday, 9 July 2009 39
  40. 40. Redundancy for HA Pfailure = (Ploss) n Uptime Ploss n Pfailure Overall Uptime 99% 0.01 2 0.0001 99.99% 99% 0.01 3 0.000001 99.9999% 99.9% 0.001 2 0.000001 99.9999% 99.9% 0.001 3 0.000000001 99.9999999% (assuming independence) Thursday, 9 July 2009 39
  41. 41. Redundancy for HA P P One X X X X Two broker, brokers, two nodes one node each each C C Thursday, 9 July 2009 40
  42. 42. Deduplication (“Idempotency Barrier”) id=123 id=123 id=123 id=123 many messages one message enter leaves Thursday, 9 July 2009 41
  43. 43. Network Management • Small systems can be managed by hand • Large systems need automation: • Naming & address management • Service directories • Authentication & authorization • Logging, monitoring & alerting Thursday, 9 July 2009 42
  44. 44. The Future Thursday, 9 July 2009 43
  45. 45. Questions? http://www.rabbitmq.com/how Thursday, 9 July 2009 44

×