mistral/doc/source/architecture.rst
Winson Chan 38bfd91a22 Add documentation on event notifier
Add documentation on the notifier architecture and configuration
of the event publishers.

Co-Authored-By: Dougal Matthews <dougal@redhat.com>
Change-Id: I5e7d8ac81225cfe4082a827a52447f95dd4789a0
2018-07-23 13:59:26 +01:00

80 lines
2.3 KiB
ReStructuredText

Mistral Architecture
====================
Mistral is OpenStack workflow service. The main aim of the project is to provide
capability to define, execute and manage tasks and workflows without writing
code.
Basic concepts
~~~~~~~~~~~~~~
A few basic concepts that one has to understand before going through the Mistral
architecture are given below:
* Workflow - consists of tasks (at least one) describing what exact steps should
be made during workflow execution.
* Task - an activity executed within the workflow definition.
* Action - work done when an exact task is triggered.
Mistral components
~~~~~~~~~~~~~~~~~~
Mistral is composed of the following major components:
* API Server
* Engine
* Task Executors
* Scheduler
* Notifier
* Persistence
The following diagram illustrates the architecture of mistral:
.. image:: img/mistral_architecture.png
API server
----------
The API server exposes REST API to operate and monitor the workflow executions.
Engine
------
The Engine picks up the workflows from the workflow queue. It handles the
control and dataflow of workflow executions. It also computes which tasks
are ready and places them in a task queue. It passes the data from task to
task, deals with condition transitions, etc.
Task Executors
--------------
The Task Executor executes task Actions. It picks up the tasks from the queue,
run actions, and sends results back to the engine.
Scheduler
---------
The scheduler stores and executes delayed calls. It is the important Mistral
component since it interacts with engine and executors. It also triggers
workflows on events (e.g., periodic cron event)
Notifier
--------
On workflow and task execution, events are emitted at certain checkpoints such
as when a workflow execution is launched or when it is completed. The notifier
routes the events to configured publishers. The notifier can either be
configured to execute locally on the workflow engine or can be run as a server
much like the remote executor server and listens for events. Running the
notifier as a remote server ensures the workflow engine quickly unblocks and
resumes work. The event publishers are custom plugins which can write the
event to a webhook over HTTP, an entry in a log file, a message to Zaqar, and
etc.
Persistence
-----------
The persistence stores workflow definitions, current execution states, and
past execution results.