SlideShare a Scribd company logo
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

More Related Content

More from 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 Glory
Randy 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 Enterprise
Randy Bias
 
The Cloud Revolution - Philippines Cloud Summit
The Cloud Revolution - Philippines Cloud SummitThe Cloud Revolution - Philippines Cloud Summit
The Cloud Revolution - Philippines Cloud Summit
Randy 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 Meritocracy
Randy 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 Architecture
Randy 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 Story
Randy 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 2013
Randy Bias
 
AWS Repatriation: Bring Your Apps Back
AWS Repatriation: Bring Your Apps BackAWS Repatriation: Bring Your Apps Back
AWS Repatriation: Bring Your Apps Back
Randy Bias
 
State of the Stack v2
State of the Stack v2State of the Stack v2
State of the Stack v2
Randy 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 Design
Randy Bias
 
Scale-Out Block Storage
Scale-Out Block StorageScale-Out Block Storage
Scale-Out Block Storage
Randy Bias
 
State of the Stack April 2013
State of the Stack April 2013State of the Stack April 2013
State of the Stack April 2013
Randy Bias
 
Open Cloud System Networking Vision
Open Cloud System Networking VisionOpen Cloud System Networking Vision
Open Cloud System Networking Vision
Randy 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 Scheduler
Randy Bias
 
OpenStack Summit :: Pimp My Cloud
OpenStack Summit :: Pimp My CloudOpenStack Summit :: Pimp My Cloud
OpenStack Summit :: Pimp My Cloud
Randy Bias
 
2012 open storage summit keynote
2012 open storage summit   keynote2012 open storage summit   keynote
2012 open storage summit keynote
Randy Bias
 
Architectures for open and scalable clouds
Architectures for open and scalable cloudsArchitectures for open and scalable clouds
Architectures for open and scalable clouds
Randy Bias
 
Cloud Frontiers 2011
Cloud Frontiers 2011Cloud Frontiers 2011
Cloud Frontiers 2011
Randy Bias
 

More from 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
 

Recently uploaded

State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
Prayukth K V
 
Accelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish CachingAccelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish Caching
Thijs Feryn
 
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance
 
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
Product School
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
Kari Kakkonen
 
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
BookNet Canada
 
Elevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object CalisthenicsElevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object Calisthenics
Dorra BARTAGUIZ
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
KatiaHIMEUR1
 
Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*
Frank van Harmelen
 
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
Sri Ambati
 
Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...
Product School
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance
 
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Product School
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
Laura Byrne
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance
 
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdfFIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance
 
Leading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdfLeading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdf
OnBoard
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
ControlCase
 
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMsTo Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
Paul Groth
 

Recently uploaded (20)

State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
 
Accelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish CachingAccelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish Caching
 
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
 
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
 
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
 
Elevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object CalisthenicsElevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object Calisthenics
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
 
Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*
 
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
 
Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
 
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
 
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdfFIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
 
Leading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdfLeading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdf
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
 
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMsTo Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
 

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