SlideShare ist ein Scribd-Unternehmen logo
1 von 52
Downloaden Sie, um offline zu lesen
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

Weitere ähnliche Inhalte

Mehr von 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
 

Mehr von 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
 

Kürzlich hochgeladen

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
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyKhushali Kathiriya
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...apidays
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsNanddeep Nachan
 
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot ModelNavi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot ModelDeepika Singh
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdflior mazor
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
A Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source MilvusA Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source MilvusZilliz
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MIND CTI
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesrafiqahmad00786416
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CVKhem
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherRemote DBA Services
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...DianaGray10
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...apidays
 

Kürzlich hochgeladen (20)

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...
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot ModelNavi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
A Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source MilvusA Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source Milvus
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 

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