bytebeamio/uplink

Uplink Redesign

Closed this issue · 0 comments

de-sh commented

Currently the uplink system design looks as follows, with pre-configured collectors, i.e. Process, Controller, tcpjson/Bridge:




                    ┌──────┐
                    │Broker│
                    └──┬─▲─┘
                       │ │
                       │ │
              ┌────────┼─┼────┐        ┌─────────────────┐
              │        │ │    │        │                 │
              │   Mqtt │ │    │        │   Serializer    │
              │  ┌─────▼─┴─┐  │        │  ┌───────────┐  │
              │  │EventLoop◄──┼────────┼──┤AsyncClient│  │
              │  └─────────┘  │        │  └───────────┘  │
              │               │        │                 │
              └───────┬───────┘        └────────▲────────┘
                      │                         │
              ┌───────▼───────┐                 │
              │               │                 │
              │            ┌──┴───┐             │
              │   Actions  │Stream├─────────────┤
              │            └──┬───┘             │
              │               │                 │
              └───────┬───────┘                 │
                      │                         │
                      │        ┌──────────────┐ │
                      │        │              │ │
                      │        │            ┌─┴─┴──┐
                      └────────►  Collector │Stream│
                               │            └─┬────┘
                               │              │
                               └──────────────┘

The redesign could allow for multiple, dynamically created collectors, e.g. instead of allowing only one app to connect to the bridge port, this will allow for multiple apps to connect, subscribe to the topics of interest to them and receive the actions that are targeted at them, i.e. with a special collector field in a received action from platform.

Actions would change as follows:

  • require a field to target collectors, i.e. an action can target a specific application that is connected to uplink.
  • can be composable, i.e. a single action can consist of multiple subactions.