Skip to content

Extensibility, deployment and distribution, process connections #324

@ERnsTL

Description

@ERnsTL

Problem:

  • Multiple processes are slow:
    • full process switches (not just green thread or native thread switch)
    • and have to communicate via kernel = ring switch and syscall ... super slow
  • but need better way to allow separate development of components and extensibility and the source-level built-in compilation is not the solution
    • also leads to LGPL license to apply to components
    • and thus to the custom-made and per-project components
    • not desired

Evaluate:

  • microVMs:
  • Running in UEFI
  • loading of rlib's which can be found in the target/ directory in every Rust project using Cargo.
    • does that exist?

Connections:

  • TCP (?)
  • named pipes: flowd-go uses that
  • shared memory: rtrb ringbuffer, currently in use
  • file-based like in NiFi

Plugin system:

Building blocks of an FBP runtime:

  • For a good List, see fractalide
  • GUI for network design, debugging, status, tracing etc.
  • Networked API and message format for accepting commands from GUI:
    • frontend/external one, for example noflo's FBP JSON protocol
    • internal
  • Graph/Network state - nodes, edges etc.
  • Runtime network state with processes - and signaling to processes
  • Watchdog thread
  • Component API definition - how instantiated, handover of connections, signaling connection, uplink into executor
  • Connection and Queueing API
  • Executor, which defines a profile of:
    • Component API implementation = how components are loaded, run and stopped
    • Connection, transfer and queueing mechanism
    • Ideally, distribution of components

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions