-
Notifications
You must be signed in to change notification settings - Fork 1
Architecture Overview
zero edited this page Feb 19, 2019
·
13 revisions
IoT engine follows microservice architecture, that structures an application as a collection of services that are:
- Highly maintainable and testable
- Loosely coupled
- Independently deployable
- Organized around business capabilities
Micro service
can be as application:
-
dashboard-connector
: communicates to external systems inIoT dashboard
-
edge-connector
: communicates to external systems inedge device
-
edge-hardware-module
: interact with internal hardware inedge device
-
edge-computation-unit
: small batch computation by read/writepoints
viaGPIO
of IoT sensors inedge device
edge-rule
Micro service
must be designed with these rules:
- Single responsibility principle: do only one purpose
- Itself configurable, and itself testable
- Communicates with each other via
eventbus
Show as gradle
project style
-
iot-engine:core
:Unit
core, these components are designed to integrate(one or many) into executable application service. -
iot-engine:dashboard
: IoT dashboard-
iot-engine:dashboard:connector
: Container projects include a set of dashboard connectors that communicate to external systems. -
iot-engine:dashboard:server
: Dashboard server gateway API. Note: Currently, it is mixing and has not yet followmicroservice
architecture.
-
-
iot-engine:edge
: IoT edge device-
iot-engine:edge:bios
: MainBIOS
edge. Must be included onedge device
-
iot-engine:edge:module
: Includes some mandatory modules onBIOS
. For example:-
installer
: Install IoT edge connectors/rule -
gpio
:GPIO
operation -
monitor
: ManageBIOS
resource status, health check
-
-
iot-engine:edge:connector
: Includes a set of edge connectors -
iot-engine:edge:rule
: Includes a set of edge rules
-
-
iot-engine:eventbus
: Sharingeventbus
address betweenedge
anddashboard
-
iot-engine:ext
: Customization for external open-source project
Describes Java
project naming convention
-
ProjectName
: Prefixnube
-
GroupId
:- Root:
com.nubeiot
- Sub projects:
${rootGroup}.${parentProjectGroup}
- Root:
-
ArtifactId
:- Project name
-
PackageName
:${rootGroup}.${parentProjectGroup}.${projectName}
For example: Folder structure as:
iot-engine
| ├── dashboard
│ ├── connector
│ │ ├── ditto
-
Project Name
:nube-dashboard-connector-ditto
-
GroupId
:com.nubeiot.dashboard.connector
-
ArtifactId
:ditto
-
PackageName
:com.nubeiot.dashboard.connector.ditto