Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Presently the components of OpenVisualizer operate within a single process. We wish to extend experiment with extending this operation across processes and machines, as shown in the diagram below.

Gliffy
nameembedded-distributed-architecture

Messaging

Presently we implement EventBus messaging with PyDispatch, which provides communication between threads in a single process.

Between Processes

On an embedded LBR, we plan to use the native POSIX message queue due to its built-in availability. The posix_ipc module for Python provides access to this functionality.

Remote GUI host to LBR

WebSockets provide a standards-based protocol for bi-directional communication, textual or binary. We require bi-directional messaging. In general the LBR sends information to the Remote GUI. However, the GUI may signal to the LBR, for example to toggle DAGroot status.

Tools

RoleToolNotes
WebSocket clientwebsocket-clientInstalled with pip.

 

Other Implementations

Nanomsg and ZeroMQ provides a common messaging API for a variety of endpoints – threads, processes, and machines. It They are open source, but not standards. However, it would be efficient to use a single tool for messaging across all domains.

Nanomsg

...

Nanomsg is developed by Martin Sústrik, the original author of ZeroMQ. Sústrik left ZeroMQ due to a dispute over trademarks, as described in a Linux Weekly News article.

...

Celery provides a distributed message queue, but is more heavy-duty and requires a message broker.