SlideShare une entreprise Scribd logo
1  sur  52
Télécharger pour lire hors ligne
X

                                                                                 Image: http://ken.pepple.info/openstack/2011/04/22/openstack-nova-architecture/




                        Distributed RPC in Nova
                                                   with ZeroMQ
  04-16-2012
  Distributed RPC with ZeroMQ: code CCA - NoDerivs 3.0 Unported License - Usage OK, no modifications, full attribution
                                    & analysis                             1
                                                               CCA - NoDerivs 3.0 Unported License - Usage OK, no modifications, full attribution
Tuesday, April 17, 12
Etherpad




               http://etherpad.openstack.org/
               FolsomDistributedRPC




  04-16-2012
  Distributed RPC with ZeroMQ: code CCA - NoDerivs 3.0 Unported License -2Usage OK, no modifications, full attribution
                                    & analysis
                                                               CCA - NoDerivs 3.0 Unported License - Usage OK, no modifications, full attribution
Tuesday, April 17, 12
@ewindisch

  04-16-2012
  Distributed RPC with ZeroMQ: code CCA - NoDerivs 3.0 Unported License -3Usage OK, no modifications, full attribution
                                    & analysis
                                                               CCA - NoDerivs 3.0 Unported License - Usage OK, no modifications, full attribution
Tuesday, April 17, 12
Etherpad




               http://etherpad.openstack.org/
               FolsomDistributedRPC




                        CCA - NoDerivs 3.0 Unported License - Usage OK, no modifications, full attribution

Tuesday, April 17, 12
Application


                                                                   Message
                                                                   Queue
                                                                   Broker




                  Brokered Messaging
  04-16-2012
  Distributed RPC with ZeroMQ: code CCA - NoDerivs 3.0 Unported License - Usage OK, no modifications, full attribution
                                    & analysis                             5
                                                               CCA - NoDerivs 3.0 Unported License - Usage OK, no modifications, full attribution
Tuesday, April 17, 12
Application




                                                                                                  X
                                                                   Message
                                                                   Queue
                                                                   Broker




                  Brokered Messaging
  04-16-2012
  Distributed RPC with ZeroMQ: code CCA - NoDerivs 3.0 Unported License - Usage OK, no modifications, full attribution
                                    & analysis                             5
                                                               CCA - NoDerivs 3.0 Unported License - Usage OK, no modifications, full attribution
Tuesday, April 17, 12
Application




                                                        Message
                                                        Queue




                  Brokered Messaging
                        CCA - NoDerivs 3.0 Unported License - Usage OK, no modifications, full attribution

Tuesday, April 17, 12
Application




                  Brokered Messaging
                        CCA - NoDerivs 3.0 Unported License - Usage OK, no modifications, full attribution

Tuesday, April 17, 12
Application




                                                    HA Failover




                        High-Availability
                            CCA - NoDerivs 3.0 Unported License - Usage OK, no modifications, full attribution

Tuesday, April 17, 12
Application




                             failover fails
                            CCA - NoDerivs 3.0 Unported License - Usage OK, no modifications, full attribution

Tuesday, April 17, 12
Nova             Nova                Nova
                                                                                  API
                        Network          Compute            Scheduler




                                       Message              Message
                                        Queue                Queue




                         Nova             Nova                Nova
                                                                                  API
                        Network          Compute            Scheduler

                                                                                                      Application

                                          Decentralized

                         CCA - NoDerivs 3.0 Unported License - Usage OK, no modifications, full attribution

Tuesday, April 17, 12
CCA - NoDerivs 3.0 Unported License - Usage OK, no modifications, full attribution

Tuesday, April 17, 12
CCA - NoDerivs 3.0 Unported License - Usage OK, no modifications, full attribution

Tuesday, April 17, 12
Nova            Nova                Nova
                                                                                API
                        Network         Compute            Scheduler




                                      Message             Message
                                       Queue               Queue




                         Nova            Nova                Nova
                                                                                API
                        Network         Compute            Scheduler

                                                                                                  Application



                                           Decentralized

                          CCA - NoDerivs 3.0 Unported License - Usage OK, no modifications, full attribution

Tuesday, April 17, 12
Nova            Nova                Nova
                                                                                 API
                        Network         Compute            Scheduler




                                      Message
                                                                    Abandoned
                                       Queue                         Messages




                         Nova            Nova                Nova
                                                                                 API
                        Network         Compute            Scheduler

                                                                                                      Application

                                              Decentralized

                             CCA - NoDerivs 3.0 Unported License - Usage OK, no modifications, full attribution

Tuesday, April 17, 12
Nova            Nova                Nova
                                                                                 API
                        Network         Compute            Scheduler




                                      Message
                                       Queue




                         Nova            Nova                Nova
                                                                                 API
                        Network         Compute            Scheduler

                                                                                                      Application

                                              Decentralized

                             CCA - NoDerivs 3.0 Unported License - Usage OK, no modifications, full attribution

Tuesday, April 17, 12
Solution:



                                   Distributed RPC
                                 for OpenStack Nova




                        CCA - NoDerivs 3.0 Unported License - Usage OK, no modifications, full attribution

Tuesday, April 17, 12
API
                                                          Nova API



                        Application



                               Nova
                            Nova Network                                          Nova Scheduler
                              Network




                                                          Nova
                                                       Nova Compute
                                                         Compute




                                 Peer2Peer
                        CCA - NoDerivs 3.0 Unported License - Usage OK, no modifications, full attribution

Tuesday, April 17, 12
API
                                                          Nova API



                        Application



                               Nova
                            Nova Network
                              Network




                                                          Nova
                                                       Nova Compute
                                                         Compute




                                 Peer2Peer
                        CCA - NoDerivs 3.0 Unported License - Usage OK, no modifications, full attribution

Tuesday, April 17, 12
API
                                                          Nova API



                        Application
                                                                                   Nova Scheduler




                               Nova
                            Nova Network
                              Network


                                                                                   Nova Scheduler




                                                          Nova
                                                       Nova Compute
                                                         Compute




                                 Peer2Peer
                        CCA - NoDerivs 3.0 Unported License - Usage OK, no modifications, full attribution

Tuesday, April 17, 12
API
                                                          Nova API



                        Application



                               Nova
                            Nova Network
                              Network


                                                                                   Nova Scheduler




                                                          Nova
                                                       Nova Compute
                                                         Compute




                                 Peer2Peer
                        CCA - NoDerivs 3.0 Unported License - Usage OK, no modifications, full attribution

Tuesday, April 17, 12
rpc.cast(topic.host)




                                                                     PUSH -> PULL                                  Direct
                                    Publisher                                                                      Topic
                                                                                                                 Consumer

                                     Invoker
                                                                                                                  Worker
                                    (e.g. api)
                                                                                                              (e.g. compute)




                                     Cast to host.
                                   CCA - NoDerivs 3.0 Unported License - Usage OK, no modifications, full attribution

Tuesday, April 17, 12
rpc.cast(topic.host)




                                                                     PUSH -> PULL                                  Direct
                                    Publisher                                                                      Topic
                                                                                                                 Consumer

                                     Invoker
                                                                                                                  Worker
                                    (e.g. api)
                                                                                                              (e.g. compute)




                                     Cast to host.
                                   CCA - NoDerivs 3.0 Unported License - Usage OK, no modifications, full attribution

Tuesday, April 17, 12
rpc.cast(topic.host)




                                                                     PUSH -> PULL                                  Direct
                                    Publisher                                                                      Topic
                                                                                                                 Consumer

                                     Invoker
                                                                                                                  Worker
                                    (e.g. api)
                                                                                                              (e.g. compute)




                                                         Reply.
                                   CCA - NoDerivs 3.0 Unported License - Usage OK, no modifications, full attribution

Tuesday, April 17, 12
rpc.cast(topic.host)




                                                                     PUSH -> PULL                                  Direct
                                    Publisher                                                                      Topic
                                                                                                                 Consumer

                                     Invoker
                                                                                                                  Worker
                                    (e.g. api)
                                                                                                              (e.g. compute)




                                                         Reply.
                                   CCA - NoDerivs 3.0 Unported License - Usage OK, no modifications, full attribution

Tuesday, April 17, 12
def _send(...):

                    “”” code omitted “””

                    # Curry the original request into a reply method.

                    orig_payload = [RpcContext.marshal(context), msg]

                    payload = [RpcContext.marshal(context), {

                         'method': '-reply', # Send original call to wrapper

                         'args': {

                             'msg_id': msg_id,

                             'context': RpcContext.marshal(context),

                             'topic': reply_topic, # our return path

                             'msg': orig_payload

                         }

                    }]

Tuesday, April 17, 12
# Messages arriving async.
      msg_waiter = QueueSocket(
                   "ipc:///var/run/nova/zmq_reply_queue",
                   zmq.SUB, subscribe=msg_id, bind=False)


      try:
                   with Timeout(timeout):
                        with Timeout(30) as t1:
                            conn.cast(msg_id, topic, payload)


                        # Blocks until receives reply
                        responses = pickle.loads(msg_waiter.recv()[-1])




Tuesday, April 17, 12
def reply(...): # this is -reply
                        """Reply to a casted call"""
                        child_ctx = RpcContext.unmarshal(orig_payload[0])
                        response = ConsumerBase.normalize_reply(
                             self.get_response( # execute original call
                                 child_ctx, proxy, topic, orig_payload[1]),
                                 ctx.replies
                             )
                        _multi_send("cast", ctx, reply_topic, {
                             'method': '-process_reply',
                             'args': {
                                 'msg_id': msg_id,
                                 'response': response
                             }
                        })

Tuesday, April 17, 12
def process_reply(...):

                        """Process a reply"""

                        # zmq_replies is the receiver service

          self.msg_waiter.cast(str(msg_id),
      str('zmq_replies'), response)




Tuesday, April 17, 12
rpc.call(topic.worker)




                                                               PUSH->PULL
                                                            curries reply method
                                                                                                                 Direct
                             Publisher                                                                           Topic
                                                                                                               Consumer
                                                              PULL<-PUSH
                              Invoker
                                                         rpc.cast -process_reply()                              Worker
                             (e.g. api)
                                                                                                         (e.g. compute.host)




                                  Call method.
                                CCA - NoDerivs 3.0 Unported License - Usage OK, no modifications, full attribution

Tuesday, April 17, 12
rpc.call(topic.worker)




                                                               PUSH->PULL
                                                            curries reply method
                                                                                                                 Direct
                             Publisher                                                                           Topic
                                                                                                               Consumer
                                                              PULL<-PUSH
                              Invoker
                                                         rpc.cast -process_reply()                              Worker
                             (e.g. api)
                                                                                                         (e.g. compute.host)




                                  Call method.
                                CCA - NoDerivs 3.0 Unported License - Usage OK, no modifications, full attribution

Tuesday, April 17, 12
rpc.call(topic.worker)




                                                               PUSH->PULL
                                                            curries reply method
                                                                                                                 Direct
                             Publisher                                                                           Topic
                                                                                                               Consumer
                                                              PULL<-PUSH
                              Invoker
                                                         rpc.cast -process_reply()                              Worker
                             (e.g. api)
                                                                                                         (e.g. compute.host)




                                  Call method.
                                CCA - NoDerivs 3.0 Unported License - Usage OK, no modifications, full attribution

Tuesday, April 17, 12
rpc.call(topic.worker)




                                                               PUSH->PULL
                                                            curries reply method
                                                                                                                 Direct
                             Publisher                                                                           Topic
                                                                                                               Consumer
                                                              PULL<-PUSH
                              Invoker
                                                         rpc.cast -process_reply()                              Worker
                             (e.g. api)
                                                                                                         (e.g. compute.host)




                                  Call method.
                                CCA - NoDerivs 3.0 Unported License - Usage OK, no modifications, full attribution

Tuesday, April 17, 12
Bare Topics
                        “scheduler.host1” goes to “host1”

            Where do messages for “scheduler” go?




                           CCA - NoDerivs 3.0 Unported License - Usage OK, no modifications, full attribution

Tuesday, April 17, 12
MatchMaking
                        CCA - NoDerivs 3.0 Unported License - Usage OK, no modifications, full attribution

Tuesday, April 17, 12
Rewrite
                 Engine
                 • Every incoming topic is
                   mapped to an array of topics
                   and hosts.

                 • Usually returns a single topic/
                   host.




                            CCA - NoDerivs 3.0 Unported License - Usage OK, no modifications, full attribution

Tuesday, April 17, 12
Search for hosts
                 • Can be provided by:

                 • hash table (implemented)

                 • name service (i.e. DNS)

                 • directory service (i.e. LDAP)

                 • zookeeper

                 • etc...



                            CCA - NoDerivs 3.0 Unported License - Usage OK, no modifications, full attribution

Tuesday, April 17, 12
rpc.fanout_cast(topic)              MatchMaker
                e.g. "compute"
                                                                               Fanout may have many workers.
                                     get_workers
                                      as workers

                                         Array *topic.worker
                                                                                                                           Direct
                                                                for each
                        Publisher                                                                                          Topic
                                                                 worker:
                                                                                                                         Consumer
                                                                                        PUSH -> PULL
                         Invoker                                                  i.e. rpc.cast(topic.worker)
                                                                                                                           Worker
                        (e.g. api)
                                                                                                                   (e.g. nova-compute on
                                                                                                                       compute.host)




                                       Fanout Cast.
                                         CCA - NoDerivs 3.0 Unported License - Usage OK, no modifications, full attribution

Tuesday, April 17, 12
rpc.fanout_cast(topic)              MatchMaker
                e.g. "compute"
                                                                               Fanout may have many workers.
                                     get_workers
                                      as workers

                                         Array *topic.worker
                                                                                                                           Direct
                                                                for each
                        Publisher                                                                                          Topic
                                                                 worker:
                                                                                                                         Consumer
                                                                                        PUSH -> PULL
                         Invoker                                                  i.e. rpc.cast(topic.worker)
                                                                                                                           Worker
                        (e.g. api)
                                                                                                                   (e.g. nova-compute on
                                                                                                                       compute.host)




                                       Fanout Cast.
                                         CCA - NoDerivs 3.0 Unported License - Usage OK, no modifications, full attribution

Tuesday, April 17, 12
rpc.fanout_cast(topic)              MatchMaker
                e.g. "compute"
                                                                               Fanout may have many workers.
                                     get_workers
                                      as workers

                                         Array *topic.worker
                                                                                                                           Direct
                                                                for each
                        Publisher                                                                                          Topic
                                                                 worker:
                                                                                                                         Consumer
                                                                                        PUSH -> PULL
                         Invoker                                                  i.e. rpc.cast(topic.worker)
                                                                                                                           Worker
                        (e.g. api)
                                                                                                                   (e.g. nova-compute on
                                                                                                                       compute.host)




                                       Fanout Cast.
                                         CCA - NoDerivs 3.0 Unported License - Usage OK, no modifications, full attribution

Tuesday, April 17, 12
rpc.fanout_cast(topic)              MatchMaker
                e.g. "compute"
                                                                               Fanout may have many workers.
                                     get_workers
                                      as workers

                                         Array *topic.worker
                                                                                                                           Direct
                                                                for each
                        Publisher                                                                                          Topic
                                                                 worker:
                                                                                                                         Consumer
                                                                                        PUSH -> PULL
                         Invoker                                                  i.e. rpc.cast(topic.worker)
                                                                                                                           Worker
                        (e.g. api)
                                                                                                                   (e.g. nova-compute on
                                                                                                                       compute.host)




                                       Fanout Cast.
                                         CCA - NoDerivs 3.0 Unported License - Usage OK, no modifications, full attribution

Tuesday, April 17, 12
rpc.fanout_cast(topic)              MatchMaker
                e.g. "compute"
                                                                               Fanout may have many workers.
                                     get_workers
                                      as workers

                                         Array *topic.worker
                                                                                                                           Direct
                                                                for each
                        Publisher                                                                                          Topic
                                                                 worker:
                                                                                                                         Consumer
                                                                                        PUSH -> PULL
                         Invoker                                                  i.e. rpc.cast(topic.worker)
                                                                                                                           Worker
                        (e.g. api)
                                                                                                                   (e.g. nova-compute on
                                                                                                                       compute.host)




                                       Fanout Cast.
                                         CCA - NoDerivs 3.0 Unported License - Usage OK, no modifications, full attribution

Tuesday, April 17, 12
rpc.fanout_cast(topic)              MatchMaker
                e.g. "compute"
                                                                               Fanout may have many workers.
                                     get_workers
                                      as workers

                                         Array *topic.worker
                                                                                                                           Direct
                                                                for each
                        Publisher                                                                                          Topic
                                                                 worker:
                                                                                                                         Consumer
                                                                                        PUSH -> PULL
                         Invoker                                                  i.e. rpc.cast(topic.worker)
                                                                                                                           Worker
                        (e.g. api)
                                                                                                                   (e.g. nova-compute on
                                                                                                                       compute.host)




                                       Fanout Cast.
                                         CCA - NoDerivs 3.0 Unported License - Usage OK, no modifications, full attribution

Tuesday, April 17, 12
rpc.fanout_cast(topic)              MatchMaker
                e.g. "compute"
                                                                               Fanout may have many workers.
                                     get_workers
                                      as workers

                                         Array *topic.worker
                                                                                                                           Direct
                                                                for each
                        Publisher                                                                                          Topic
                                                                 worker:
                                                                                                                         Consumer
                                                                                        PUSH -> PULL
                         Invoker                                                  i.e. rpc.cast(topic.worker)
                                                                                                                           Worker
                        (e.g. api)
                                                                                                                   (e.g. nova-compute on
                                                                                                                       compute.host)




                                       Fanout Cast.
                                         CCA - NoDerivs 3.0 Unported License - Usage OK, no modifications, full attribution

Tuesday, April 17, 12
rpc.fanout_cast(topic)              MatchMaker
                e.g. "compute"
                                                                               Fanout may have many workers.
                                     get_workers
                                      as workers

                                         Array *topic.worker
                                                                                                                           Direct
                                                                for each
                        Publisher                                                                                          Topic
                                                                 worker:
                                                                                                                         Consumer
                                                                                        PUSH -> PULL
                         Invoker                                                  i.e. rpc.cast(topic.worker)
                                                                                                                           Worker
                        (e.g. api)
                                                                                                                   (e.g. nova-compute on
                                                                                                                       compute.host)




                                       Fanout Cast.
                                         CCA - NoDerivs 3.0 Unported License - Usage OK, no modifications, full attribution

Tuesday, April 17, 12
rpc.fanout_cast(topic)              MatchMaker
                e.g. "compute"
                                                                               Fanout may have many workers.
                                     get_workers
                                      as workers

                                         Array *topic.worker
                                                                                                                           Direct
                                                                for each
                        Publisher                                                                                          Topic
                                                                 worker:
                                                                                                                         Consumer
                                                                                        PUSH -> PULL
                         Invoker                                                  i.e. rpc.cast(topic.worker)
                                                                                                                           Worker
                        (e.g. api)
                                                                                                                   (e.g. nova-compute on
                                                                                                                       compute.host)




                                       Fanout Cast.
                                         CCA - NoDerivs 3.0 Unported License - Usage OK, no modifications, full attribution

Tuesday, April 17, 12
rpc.fanout_cast(topic)              MatchMaker
                e.g. "compute"
                                                                               Fanout may have many workers.
                                     get_workers
                                      as workers

                                         Array *topic.worker
                                                                                                                           Direct
                                                                for each
                        Publisher                                                                                          Topic
                                                                 worker:
                                                                                                                         Consumer
                                                                                        PUSH -> PULL
                         Invoker                                                  i.e. rpc.cast(topic.worker)
                                                                                                                           Worker
                        (e.g. api)
                                                                                                                   (e.g. nova-compute on
                                                                                                                       compute.host)




                                       Fanout Cast.
                                         CCA - NoDerivs 3.0 Unported License - Usage OK, no modifications, full attribution

Tuesday, April 17, 12
rpc.fanout_cast(topic)              MatchMaker
                e.g. "compute"
                                                                               Fanout may have many workers.
                                     get_workers
                                      as workers

                                         Array *topic.worker
                                                                                                                           Direct
                                                                for each
                        Publisher                                                                                          Topic
                                                                 worker:
                                                                                                                         Consumer
                                                                                        PUSH -> PULL
                         Invoker                                                  i.e. rpc.cast(topic.worker)
                                                                                                                           Worker
                        (e.g. api)
                                                                                                                   (e.g. nova-compute on
                                                                                                                       compute.host)




                                       Fanout Cast.
                                         CCA - NoDerivs 3.0 Unported License - Usage OK, no modifications, full attribution

Tuesday, April 17, 12
http://amitpiplani.blogspot.com/2010/05/u-pick-2-selection-for-nosql-providers.html
                               http://amitpiplani.blogspot.com/2010/05/u-pick-2-selection-for-nosql-providers.html




                        CCA - NoDerivs 3.0 Unported License - Usage OK, no modifications, full attribution

Tuesday, April 17, 12
http://amitpiplani.blogspot.com/2010/05/u-pick-2-selection-for-nosql-providers.html
                               http://amitpiplani.blogspot.com/2010/05/u-pick-2-selection-for-nosql-providers.html




                        CCA - NoDerivs 3.0 Unported License - Usage OK, no modifications, full attribution

Tuesday, April 17, 12
NOVA
                                                  RPC

                         http://amitpiplani.blogspot.com/2010/05/u-pick-2-selection-for-nosql-providers.html
                               http://amitpiplani.blogspot.com/2010/05/u-pick-2-selection-for-nosql-providers.html




                        CCA - NoDerivs 3.0 Unported License - Usage OK, no modifications, full attribution

Tuesday, April 17, 12
Thank You
                               Essex Plug-in Download
                   https://github.com/cloudscaling/nova-mq



                                                Slide deck:
                                                http://bit.ly/HJogQ8

                         CCA - NoDerivs 3.0 Unported License - Usage OK, no modifications, full attribution

Tuesday, April 17, 12

Contenu connexe

Plus de Randy Bias

State of the Stack v4 - OpenStack in All It's Glory
State of the Stack v4 - OpenStack in All It's GloryState of the Stack v4 - OpenStack in All It's Glory
State of the Stack v4 - OpenStack in All It's GloryRandy Bias
 
Connect Expo 2015 - Australia - Bringing OpenStack into the Enterprise
Connect Expo 2015 - Australia - Bringing OpenStack into the EnterpriseConnect Expo 2015 - Australia - Bringing OpenStack into the Enterprise
Connect Expo 2015 - Australia - Bringing OpenStack into the EnterpriseRandy Bias
 
The Cloud Revolution - Philippines Cloud Summit
The Cloud Revolution - Philippines Cloud SummitThe Cloud Revolution - Philippines Cloud Summit
The Cloud Revolution - Philippines Cloud SummitRandy Bias
 
The Lie of a Benevolent Dictator; the Truth of a Working Democratic Meritocracy
The Lie of a Benevolent Dictator; the Truth of a Working Democratic MeritocracyThe Lie of a Benevolent Dictator; the Truth of a Working Democratic Meritocracy
The Lie of a Benevolent Dictator; the Truth of a Working Democratic MeritocracyRandy Bias
 
OpenStack Architected Like AWS (and GCP)
OpenStack Architected Like AWS (and GCP)OpenStack Architected Like AWS (and GCP)
OpenStack Architected Like AWS (and GCP)Randy Bias
 
OpenStack Scale-out Networking Architecture
OpenStack Scale-out Networking ArchitectureOpenStack Scale-out Networking Architecture
OpenStack Scale-out Networking ArchitectureRandy Bias
 
Pets vs. Cattle: The Elastic Cloud Story
Pets vs. Cattle: The Elastic Cloud StoryPets vs. Cattle: The Elastic Cloud Story
Pets vs. Cattle: The Elastic Cloud StoryRandy Bias
 
SFBay OpenStack Meetup // Neutron and SDN in Production – Dec 3 2013
SFBay OpenStack Meetup // Neutron and SDN in Production – Dec 3 2013SFBay OpenStack Meetup // Neutron and SDN in Production – Dec 3 2013
SFBay OpenStack Meetup // Neutron and SDN in Production – Dec 3 2013Randy Bias
 
AWS Repatriation: Bring Your Apps Back
AWS Repatriation: Bring Your Apps BackAWS Repatriation: Bring Your Apps Back
AWS Repatriation: Bring Your Apps BackRandy Bias
 
State of the Stack v2
State of the Stack v2State of the Stack v2
State of the Stack v2Randy Bias
 
Networking is NOT Free: Lessons in Network Design
Networking is NOT Free: Lessons in Network DesignNetworking is NOT Free: Lessons in Network Design
Networking is NOT Free: Lessons in Network DesignRandy Bias
 
Scale-Out Block Storage
Scale-Out Block StorageScale-Out Block Storage
Scale-Out Block StorageRandy Bias
 
State of the Stack April 2013
State of the Stack April 2013State of the Stack April 2013
State of the Stack April 2013Randy Bias
 
Open Cloud System Networking Vision
Open Cloud System Networking VisionOpen Cloud System Networking Vision
Open Cloud System Networking VisionRandy Bias
 
OpenStack Summit :: Redundancy Doesn't Always Mean "HA" or "Cluster"
OpenStack Summit :: Redundancy Doesn't Always Mean "HA" or "Cluster"OpenStack Summit :: Redundancy Doesn't Always Mean "HA" or "Cluster"
OpenStack Summit :: Redundancy Doesn't Always Mean "HA" or "Cluster"Randy Bias
 
OpenStack Summit :: Profiling the Nova Scheduler
OpenStack Summit :: Profiling the Nova SchedulerOpenStack Summit :: Profiling the Nova Scheduler
OpenStack Summit :: Profiling the Nova SchedulerRandy Bias
 
OpenStack Summit :: Pimp My Cloud
OpenStack Summit :: Pimp My CloudOpenStack Summit :: Pimp My Cloud
OpenStack Summit :: Pimp My CloudRandy Bias
 
2012 open storage summit keynote
2012 open storage summit   keynote2012 open storage summit   keynote
2012 open storage summit keynoteRandy Bias
 
Architectures for open and scalable clouds
Architectures for open and scalable cloudsArchitectures for open and scalable clouds
Architectures for open and scalable cloudsRandy Bias
 
Cloud Frontiers 2011
Cloud Frontiers 2011Cloud Frontiers 2011
Cloud Frontiers 2011Randy Bias
 

Plus de Randy Bias (20)

State of the Stack v4 - OpenStack in All It's Glory
State of the Stack v4 - OpenStack in All It's GloryState of the Stack v4 - OpenStack in All It's Glory
State of the Stack v4 - OpenStack in All It's Glory
 
Connect Expo 2015 - Australia - Bringing OpenStack into the Enterprise
Connect Expo 2015 - Australia - Bringing OpenStack into the EnterpriseConnect Expo 2015 - Australia - Bringing OpenStack into the Enterprise
Connect Expo 2015 - Australia - Bringing OpenStack into the Enterprise
 
The Cloud Revolution - Philippines Cloud Summit
The Cloud Revolution - Philippines Cloud SummitThe Cloud Revolution - Philippines Cloud Summit
The Cloud Revolution - Philippines Cloud Summit
 
The Lie of a Benevolent Dictator; the Truth of a Working Democratic Meritocracy
The Lie of a Benevolent Dictator; the Truth of a Working Democratic MeritocracyThe Lie of a Benevolent Dictator; the Truth of a Working Democratic Meritocracy
The Lie of a Benevolent Dictator; the Truth of a Working Democratic Meritocracy
 
OpenStack Architected Like AWS (and GCP)
OpenStack Architected Like AWS (and GCP)OpenStack Architected Like AWS (and GCP)
OpenStack Architected Like AWS (and GCP)
 
OpenStack Scale-out Networking Architecture
OpenStack Scale-out Networking ArchitectureOpenStack Scale-out Networking Architecture
OpenStack Scale-out Networking Architecture
 
Pets vs. Cattle: The Elastic Cloud Story
Pets vs. Cattle: The Elastic Cloud StoryPets vs. Cattle: The Elastic Cloud Story
Pets vs. Cattle: The Elastic Cloud Story
 
SFBay OpenStack Meetup // Neutron and SDN in Production – Dec 3 2013
SFBay OpenStack Meetup // Neutron and SDN in Production – Dec 3 2013SFBay OpenStack Meetup // Neutron and SDN in Production – Dec 3 2013
SFBay OpenStack Meetup // Neutron and SDN in Production – Dec 3 2013
 
AWS Repatriation: Bring Your Apps Back
AWS Repatriation: Bring Your Apps BackAWS Repatriation: Bring Your Apps Back
AWS Repatriation: Bring Your Apps Back
 
State of the Stack v2
State of the Stack v2State of the Stack v2
State of the Stack v2
 
Networking is NOT Free: Lessons in Network Design
Networking is NOT Free: Lessons in Network DesignNetworking is NOT Free: Lessons in Network Design
Networking is NOT Free: Lessons in Network Design
 
Scale-Out Block Storage
Scale-Out Block StorageScale-Out Block Storage
Scale-Out Block Storage
 
State of the Stack April 2013
State of the Stack April 2013State of the Stack April 2013
State of the Stack April 2013
 
Open Cloud System Networking Vision
Open Cloud System Networking VisionOpen Cloud System Networking Vision
Open Cloud System Networking Vision
 
OpenStack Summit :: Redundancy Doesn't Always Mean "HA" or "Cluster"
OpenStack Summit :: Redundancy Doesn't Always Mean "HA" or "Cluster"OpenStack Summit :: Redundancy Doesn't Always Mean "HA" or "Cluster"
OpenStack Summit :: Redundancy Doesn't Always Mean "HA" or "Cluster"
 
OpenStack Summit :: Profiling the Nova Scheduler
OpenStack Summit :: Profiling the Nova SchedulerOpenStack Summit :: Profiling the Nova Scheduler
OpenStack Summit :: Profiling the Nova Scheduler
 
OpenStack Summit :: Pimp My Cloud
OpenStack Summit :: Pimp My CloudOpenStack Summit :: Pimp My Cloud
OpenStack Summit :: Pimp My Cloud
 
2012 open storage summit keynote
2012 open storage summit   keynote2012 open storage summit   keynote
2012 open storage summit keynote
 
Architectures for open and scalable clouds
Architectures for open and scalable cloudsArchitectures for open and scalable clouds
Architectures for open and scalable clouds
 
Cloud Frontiers 2011
Cloud Frontiers 2011Cloud Frontiers 2011
Cloud Frontiers 2011
 

Dernier

FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhisoniya singh
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxOnBoard
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...gurkirankumar98700
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...HostedbyConfluent
 

Dernier (20)

FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptx
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
 

Distributed RPC in Nova with ZeroMQ

  • 1. X Image: http://ken.pepple.info/openstack/2011/04/22/openstack-nova-architecture/ Distributed RPC in Nova with ZeroMQ 04-16-2012 Distributed RPC with ZeroMQ: code CCA - NoDerivs 3.0 Unported License - Usage OK, no modifications, full attribution & analysis 1 CCA - NoDerivs 3.0 Unported License - Usage OK, no modifications, full attribution Tuesday, April 17, 12
  • 2. Etherpad http://etherpad.openstack.org/ FolsomDistributedRPC 04-16-2012 Distributed RPC with ZeroMQ: code CCA - NoDerivs 3.0 Unported License -2Usage OK, no modifications, full attribution & analysis CCA - NoDerivs 3.0 Unported License - Usage OK, no modifications, full attribution Tuesday, April 17, 12
  • 3. @ewindisch 04-16-2012 Distributed RPC with ZeroMQ: code CCA - NoDerivs 3.0 Unported License -3Usage OK, no modifications, full attribution & analysis CCA - NoDerivs 3.0 Unported License - Usage OK, no modifications, full attribution Tuesday, April 17, 12
  • 4. Etherpad http://etherpad.openstack.org/ FolsomDistributedRPC CCA - NoDerivs 3.0 Unported License - Usage OK, no modifications, full attribution Tuesday, April 17, 12
  • 5. Application Message Queue Broker Brokered Messaging 04-16-2012 Distributed RPC with ZeroMQ: code CCA - NoDerivs 3.0 Unported License - Usage OK, no modifications, full attribution & analysis 5 CCA - NoDerivs 3.0 Unported License - Usage OK, no modifications, full attribution Tuesday, April 17, 12
  • 6. Application X Message Queue Broker Brokered Messaging 04-16-2012 Distributed RPC with ZeroMQ: code CCA - NoDerivs 3.0 Unported License - Usage OK, no modifications, full attribution & analysis 5 CCA - NoDerivs 3.0 Unported License - Usage OK, no modifications, full attribution Tuesday, April 17, 12
  • 7. Application Message Queue Brokered Messaging CCA - NoDerivs 3.0 Unported License - Usage OK, no modifications, full attribution Tuesday, April 17, 12
  • 8. Application Brokered Messaging CCA - NoDerivs 3.0 Unported License - Usage OK, no modifications, full attribution Tuesday, April 17, 12
  • 9. Application HA Failover High-Availability CCA - NoDerivs 3.0 Unported License - Usage OK, no modifications, full attribution Tuesday, April 17, 12
  • 10. Application failover fails CCA - NoDerivs 3.0 Unported License - Usage OK, no modifications, full attribution Tuesday, April 17, 12
  • 11. Nova Nova Nova API Network Compute Scheduler Message Message Queue Queue Nova Nova Nova API Network Compute Scheduler Application Decentralized CCA - NoDerivs 3.0 Unported License - Usage OK, no modifications, full attribution Tuesday, April 17, 12
  • 12. CCA - NoDerivs 3.0 Unported License - Usage OK, no modifications, full attribution Tuesday, April 17, 12
  • 13. CCA - NoDerivs 3.0 Unported License - Usage OK, no modifications, full attribution Tuesday, April 17, 12
  • 14. Nova Nova Nova API Network Compute Scheduler Message Message Queue Queue Nova Nova Nova API Network Compute Scheduler Application Decentralized CCA - NoDerivs 3.0 Unported License - Usage OK, no modifications, full attribution Tuesday, April 17, 12
  • 15. Nova Nova Nova API Network Compute Scheduler Message Abandoned Queue Messages Nova Nova Nova API Network Compute Scheduler Application Decentralized CCA - NoDerivs 3.0 Unported License - Usage OK, no modifications, full attribution Tuesday, April 17, 12
  • 16. Nova Nova Nova API Network Compute Scheduler Message Queue Nova Nova Nova API Network Compute Scheduler Application Decentralized CCA - NoDerivs 3.0 Unported License - Usage OK, no modifications, full attribution Tuesday, April 17, 12
  • 17. Solution: Distributed RPC for OpenStack Nova CCA - NoDerivs 3.0 Unported License - Usage OK, no modifications, full attribution Tuesday, April 17, 12
  • 18. API Nova API Application Nova Nova Network Nova Scheduler Network Nova Nova Compute Compute Peer2Peer CCA - NoDerivs 3.0 Unported License - Usage OK, no modifications, full attribution Tuesday, April 17, 12
  • 19. API Nova API Application Nova Nova Network Network Nova Nova Compute Compute Peer2Peer CCA - NoDerivs 3.0 Unported License - Usage OK, no modifications, full attribution Tuesday, April 17, 12
  • 20. API Nova API Application Nova Scheduler Nova Nova Network Network Nova Scheduler Nova Nova Compute Compute Peer2Peer CCA - NoDerivs 3.0 Unported License - Usage OK, no modifications, full attribution Tuesday, April 17, 12
  • 21. API Nova API Application Nova Nova Network Network Nova Scheduler Nova Nova Compute Compute Peer2Peer CCA - NoDerivs 3.0 Unported License - Usage OK, no modifications, full attribution Tuesday, April 17, 12
  • 22. rpc.cast(topic.host) PUSH -> PULL Direct Publisher Topic Consumer Invoker Worker (e.g. api) (e.g. compute) Cast to host. CCA - NoDerivs 3.0 Unported License - Usage OK, no modifications, full attribution Tuesday, April 17, 12
  • 23. rpc.cast(topic.host) PUSH -> PULL Direct Publisher Topic Consumer Invoker Worker (e.g. api) (e.g. compute) Cast to host. CCA - NoDerivs 3.0 Unported License - Usage OK, no modifications, full attribution Tuesday, April 17, 12
  • 24. rpc.cast(topic.host) PUSH -> PULL Direct Publisher Topic Consumer Invoker Worker (e.g. api) (e.g. compute) Reply. CCA - NoDerivs 3.0 Unported License - Usage OK, no modifications, full attribution Tuesday, April 17, 12
  • 25. rpc.cast(topic.host) PUSH -> PULL Direct Publisher Topic Consumer Invoker Worker (e.g. api) (e.g. compute) Reply. CCA - NoDerivs 3.0 Unported License - Usage OK, no modifications, full attribution Tuesday, April 17, 12
  • 26. def _send(...): “”” code omitted “”” # Curry the original request into a reply method. orig_payload = [RpcContext.marshal(context), msg] payload = [RpcContext.marshal(context), { 'method': '-reply', # Send original call to wrapper 'args': { 'msg_id': msg_id, 'context': RpcContext.marshal(context), 'topic': reply_topic, # our return path 'msg': orig_payload } }] Tuesday, April 17, 12
  • 27. # Messages arriving async. msg_waiter = QueueSocket( "ipc:///var/run/nova/zmq_reply_queue", zmq.SUB, subscribe=msg_id, bind=False) try: with Timeout(timeout): with Timeout(30) as t1: conn.cast(msg_id, topic, payload) # Blocks until receives reply responses = pickle.loads(msg_waiter.recv()[-1]) Tuesday, April 17, 12
  • 28. def reply(...): # this is -reply """Reply to a casted call""" child_ctx = RpcContext.unmarshal(orig_payload[0]) response = ConsumerBase.normalize_reply( self.get_response( # execute original call child_ctx, proxy, topic, orig_payload[1]), ctx.replies ) _multi_send("cast", ctx, reply_topic, { 'method': '-process_reply', 'args': { 'msg_id': msg_id, 'response': response } }) Tuesday, April 17, 12
  • 29. def process_reply(...): """Process a reply""" # zmq_replies is the receiver service self.msg_waiter.cast(str(msg_id), str('zmq_replies'), response) Tuesday, April 17, 12
  • 30. rpc.call(topic.worker) PUSH->PULL curries reply method Direct Publisher Topic Consumer PULL<-PUSH Invoker rpc.cast -process_reply() Worker (e.g. api) (e.g. compute.host) Call method. CCA - NoDerivs 3.0 Unported License - Usage OK, no modifications, full attribution Tuesday, April 17, 12
  • 31. rpc.call(topic.worker) PUSH->PULL curries reply method Direct Publisher Topic Consumer PULL<-PUSH Invoker rpc.cast -process_reply() Worker (e.g. api) (e.g. compute.host) Call method. CCA - NoDerivs 3.0 Unported License - Usage OK, no modifications, full attribution Tuesday, April 17, 12
  • 32. rpc.call(topic.worker) PUSH->PULL curries reply method Direct Publisher Topic Consumer PULL<-PUSH Invoker rpc.cast -process_reply() Worker (e.g. api) (e.g. compute.host) Call method. CCA - NoDerivs 3.0 Unported License - Usage OK, no modifications, full attribution Tuesday, April 17, 12
  • 33. rpc.call(topic.worker) PUSH->PULL curries reply method Direct Publisher Topic Consumer PULL<-PUSH Invoker rpc.cast -process_reply() Worker (e.g. api) (e.g. compute.host) Call method. CCA - NoDerivs 3.0 Unported License - Usage OK, no modifications, full attribution Tuesday, April 17, 12
  • 34. Bare Topics “scheduler.host1” goes to “host1” Where do messages for “scheduler” go? CCA - NoDerivs 3.0 Unported License - Usage OK, no modifications, full attribution Tuesday, April 17, 12
  • 35. MatchMaking CCA - NoDerivs 3.0 Unported License - Usage OK, no modifications, full attribution Tuesday, April 17, 12
  • 36. Rewrite Engine • Every incoming topic is mapped to an array of topics and hosts. • Usually returns a single topic/ host. CCA - NoDerivs 3.0 Unported License - Usage OK, no modifications, full attribution Tuesday, April 17, 12
  • 37. Search for hosts • Can be provided by: • hash table (implemented) • name service (i.e. DNS) • directory service (i.e. LDAP) • zookeeper • etc... CCA - NoDerivs 3.0 Unported License - Usage OK, no modifications, full attribution Tuesday, April 17, 12
  • 38. rpc.fanout_cast(topic) MatchMaker e.g. "compute" Fanout may have many workers. get_workers as workers Array *topic.worker Direct for each Publisher Topic worker: Consumer PUSH -> PULL Invoker i.e. rpc.cast(topic.worker) Worker (e.g. api) (e.g. nova-compute on compute.host) Fanout Cast. CCA - NoDerivs 3.0 Unported License - Usage OK, no modifications, full attribution Tuesday, April 17, 12
  • 39. rpc.fanout_cast(topic) MatchMaker e.g. "compute" Fanout may have many workers. get_workers as workers Array *topic.worker Direct for each Publisher Topic worker: Consumer PUSH -> PULL Invoker i.e. rpc.cast(topic.worker) Worker (e.g. api) (e.g. nova-compute on compute.host) Fanout Cast. CCA - NoDerivs 3.0 Unported License - Usage OK, no modifications, full attribution Tuesday, April 17, 12
  • 40. rpc.fanout_cast(topic) MatchMaker e.g. "compute" Fanout may have many workers. get_workers as workers Array *topic.worker Direct for each Publisher Topic worker: Consumer PUSH -> PULL Invoker i.e. rpc.cast(topic.worker) Worker (e.g. api) (e.g. nova-compute on compute.host) Fanout Cast. CCA - NoDerivs 3.0 Unported License - Usage OK, no modifications, full attribution Tuesday, April 17, 12
  • 41. rpc.fanout_cast(topic) MatchMaker e.g. "compute" Fanout may have many workers. get_workers as workers Array *topic.worker Direct for each Publisher Topic worker: Consumer PUSH -> PULL Invoker i.e. rpc.cast(topic.worker) Worker (e.g. api) (e.g. nova-compute on compute.host) Fanout Cast. CCA - NoDerivs 3.0 Unported License - Usage OK, no modifications, full attribution Tuesday, April 17, 12
  • 42. rpc.fanout_cast(topic) MatchMaker e.g. "compute" Fanout may have many workers. get_workers as workers Array *topic.worker Direct for each Publisher Topic worker: Consumer PUSH -> PULL Invoker i.e. rpc.cast(topic.worker) Worker (e.g. api) (e.g. nova-compute on compute.host) Fanout Cast. CCA - NoDerivs 3.0 Unported License - Usage OK, no modifications, full attribution Tuesday, April 17, 12
  • 43. rpc.fanout_cast(topic) MatchMaker e.g. "compute" Fanout may have many workers. get_workers as workers Array *topic.worker Direct for each Publisher Topic worker: Consumer PUSH -> PULL Invoker i.e. rpc.cast(topic.worker) Worker (e.g. api) (e.g. nova-compute on compute.host) Fanout Cast. CCA - NoDerivs 3.0 Unported License - Usage OK, no modifications, full attribution Tuesday, April 17, 12
  • 44. rpc.fanout_cast(topic) MatchMaker e.g. "compute" Fanout may have many workers. get_workers as workers Array *topic.worker Direct for each Publisher Topic worker: Consumer PUSH -> PULL Invoker i.e. rpc.cast(topic.worker) Worker (e.g. api) (e.g. nova-compute on compute.host) Fanout Cast. CCA - NoDerivs 3.0 Unported License - Usage OK, no modifications, full attribution Tuesday, April 17, 12
  • 45. rpc.fanout_cast(topic) MatchMaker e.g. "compute" Fanout may have many workers. get_workers as workers Array *topic.worker Direct for each Publisher Topic worker: Consumer PUSH -> PULL Invoker i.e. rpc.cast(topic.worker) Worker (e.g. api) (e.g. nova-compute on compute.host) Fanout Cast. CCA - NoDerivs 3.0 Unported License - Usage OK, no modifications, full attribution Tuesday, April 17, 12
  • 46. rpc.fanout_cast(topic) MatchMaker e.g. "compute" Fanout may have many workers. get_workers as workers Array *topic.worker Direct for each Publisher Topic worker: Consumer PUSH -> PULL Invoker i.e. rpc.cast(topic.worker) Worker (e.g. api) (e.g. nova-compute on compute.host) Fanout Cast. CCA - NoDerivs 3.0 Unported License - Usage OK, no modifications, full attribution Tuesday, April 17, 12
  • 47. rpc.fanout_cast(topic) MatchMaker e.g. "compute" Fanout may have many workers. get_workers as workers Array *topic.worker Direct for each Publisher Topic worker: Consumer PUSH -> PULL Invoker i.e. rpc.cast(topic.worker) Worker (e.g. api) (e.g. nova-compute on compute.host) Fanout Cast. CCA - NoDerivs 3.0 Unported License - Usage OK, no modifications, full attribution Tuesday, April 17, 12
  • 48. rpc.fanout_cast(topic) MatchMaker e.g. "compute" Fanout may have many workers. get_workers as workers Array *topic.worker Direct for each Publisher Topic worker: Consumer PUSH -> PULL Invoker i.e. rpc.cast(topic.worker) Worker (e.g. api) (e.g. nova-compute on compute.host) Fanout Cast. CCA - NoDerivs 3.0 Unported License - Usage OK, no modifications, full attribution Tuesday, April 17, 12
  • 49. http://amitpiplani.blogspot.com/2010/05/u-pick-2-selection-for-nosql-providers.html http://amitpiplani.blogspot.com/2010/05/u-pick-2-selection-for-nosql-providers.html CCA - NoDerivs 3.0 Unported License - Usage OK, no modifications, full attribution Tuesday, April 17, 12
  • 50. http://amitpiplani.blogspot.com/2010/05/u-pick-2-selection-for-nosql-providers.html http://amitpiplani.blogspot.com/2010/05/u-pick-2-selection-for-nosql-providers.html CCA - NoDerivs 3.0 Unported License - Usage OK, no modifications, full attribution Tuesday, April 17, 12
  • 51. NOVA RPC http://amitpiplani.blogspot.com/2010/05/u-pick-2-selection-for-nosql-providers.html http://amitpiplani.blogspot.com/2010/05/u-pick-2-selection-for-nosql-providers.html CCA - NoDerivs 3.0 Unported License - Usage OK, no modifications, full attribution Tuesday, April 17, 12
  • 52. Thank You Essex Plug-in Download https://github.com/cloudscaling/nova-mq Slide deck: http://bit.ly/HJogQ8 CCA - NoDerivs 3.0 Unported License - Usage OK, no modifications, full attribution Tuesday, April 17, 12