I am in the full agreement with the proposed approach (risked to copy below, 
let's see if email handles your diagrams): 

* Single Engine handles multiple executions asynchronously, in non-blocking way.
* Persistence access only from API and/or Engine, Engine writes, API reads. 
* Action runes don't talk to DB - it's very simple protocol and queue is 
perfectly fine. 
* This is scalable and as fault tolerant as underlying DB and Queue. Engine 
restart is no loss of info with right persistense; ActionRunner restart  is a 
lost of Action, which can fail for 100 other reasons thus expected, and with 
the right retry policy potentially recoverable. 

I'll inline minor points in the etherpad. 



             API     Engine    Queue    Database        Workers
              |       |   |     | |         |            |   |
    -------> +-+      |   |     | |         |            |   |
             |S|      |   |     | |         |            |   |
             |t| --> +-+  |     | |         |            |   |
             |a|     | | < - - - - - - - -> |            |   |
             |r|     | | - - - -> t - - - - - - - - - > +-+  |
             |t| <-- +-+  |     | |         |           | |  |
    <------- +-+      |   |     | |         |           | |  |
              |       |  +-+ <- r <- - - - - - - - - -  +-+  |
    -------> +-+      |  | | <- - - - - - > R            |   |
             |I|      |  | | - -> t - - - - - - - - - > +-+  |
             |n|      |  | | - -> t - - - - - - - - - - - > +-+
             |f|      |  +-+    | |         |           | | | |
             |o| <- - - - - - - - - - - - > |           | | | |
    <------- +-+      |  +-+ <- r <- - - - - - - - - - -+-+ | |
              |       |  | | <- - - - - - > R            |  | |
    -------> +-+      |  +-+    | |         |            |  | |
             |S| --> +-+  |     | |         |            |  | |
             |t|     | | <- - - - - - - - > |            |  | |
             |o| <-- +-+  |     | |         |            |  | |
             |p|      |  +-+ <- r < - - - - - - - - - - - - +-+
    <------- +-+      |  | | <- - - - - - > R            |   |
              |       |  |%|    | |         |            |   |
              |       |  +-+    | |         |            |   |
              |       |   |     | |         |            |   |


On Mar 31, 2014, at 4:09 AM, Kirill Izotov <[email protected]> wrote:

> I have an idea regarding engine design i want to share with you. But first, 
> it seems like we need a small overview of the current implementations.
> 
> I'm not sure how ML will react on a bunch of ASCII graphs, so here is an 
> etherpad: 
> https://etherpad.openstack.org/p/mistral-engine-overview-and-proposal
> 
> What do you think, guys, is this the way to go?
> 
> -- 
> Kirill Izotov
> 
> _______________________________________________
> OpenStack-dev mailing list
> [email protected]
> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev

_______________________________________________
OpenStack-dev mailing list
[email protected]
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev

Reply via email to