[openstack-dev] [nova][oslo] RPC Asynchronous Communication

Victor Stinner vstinner at redhat.com
Mon May 25 09:49:54 UTC 2015


Hi Sahid,

There is a work-in-progress work to change how concurrency is handled in openstack processes:

"Replace eventlet with ???"
https://review.openstack.org/164035

The latest updates can be found in etherpads from the OpenStack Vancouver Summit:

- https://etherpad.openstack.org/p/liberty-cross-project-managing-concurrency
- https://etherpad.openstack.org/p/YVR-oslo-asyncio

No choice was made at Vancouver. In short, we should continue to investigate the different options (asyncio/trollius, threads, etc.) to get more information to be able to take a decision.

Victor

----- Original Message -----
> From: "Sahid Orentino Ferdjaoui" <sahid.ferdjaoui at redhat.com>
> To: openstack-dev at lists.openstack.org
> Sent: Thursday, May 7, 2015 11:34:51 AM
> Subject: [openstack-dev] [nova][oslo] RPC Asynchronous Communication
> 
> Hi,
> 
> The primary point of this expected discussion around asynchronous
> communication is to optimize performance by reducing latency.
> 
> For instance the design used in Nova and probably other projects let
> able to operate ascynchronous operations from two way.
> 
> 1. When communicate between inter-services
> 2. When communicate to the database
> 
> 1 and 2 are close since they use the same API but I prefer to keep a
> difference here since the high level layer is not the same.
> 
> From Oslo Messaging point of view we currently have two methods to
> invoke an RPC:
> 
>   Cast and Call: The first one is not bloking and will invoke a RPC
>     without to wait any response while the second will block the
>     process and wait for the response.
> 
> The aim is to add new method which will return without to block the
> process an object let's call it "Future" which will provide some basic
> methods to wait and get a response at any time.
> 
> The benefice from Nova will comes on a higher level:
> 
> 1. When communicate between services it will be not necessary to block
>    the process and use this free time to execute some other
>    computations.
> 
>       future = rpcapi.invoke_long_process()
>          ... do something else here ...
>       result = future.get_response()
> 
> 2. We can use the benefice of all of the work previously done with the
>    Conductor and so by updating the framework Objects and Indirection
>    Api we should take advantage of async operations to the database.
> 
>        MyObject = MyClassObject.get_async()
>          ... do something else here ...
>        MyObject.wait()
> 
>        MyObject.foo = "bar"
>        MyObject.save_async()
>          ... do something else here ...
>        MyObject.wait()
> 
> All of this is to illustrate and have to be discussed.
> 
> I guess the first job needs to come from Oslo Messaging so the
> question is to know the feeling here and then from Nova since it will
> be the primary consumer of this feature.
> 
> https://blueprints.launchpad.net/nova/+spec/asynchronous-communication
> 
> Thanks,
> s.
> 
> __________________________________________________________________________
> OpenStack Development Mailing List (not for usage questions)
> Unsubscribe: OpenStack-dev-request at lists.openstack.org?subject:unsubscribe
> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
> 



More information about the OpenStack-dev mailing list