Pulse Real-Time Dashboards Architecture
Data Flow
Starting from the front-end, when a user connects:
- The user downloads a modern single page react based application that uses a modern fast charting library to provide animated charts
- When a dashboard is opened, it opens a websocket to allow real-time fast updates from the server.
- The server controls security, authentication and data access controls.
- The server can connect to either real-time or database data sources depending on the dashboard configuration:
- Databases
- You have existing data in a MySQL/PostgreSQL/kdb+ or any JDBC compatible database.
- The server will poll the data on a schedule the author has set, only taking action on changes.
Real-Time
- You have real-time data producers in Java/Python/C#
- You publish the data to either a QDB or KDB database.
QDB is faster/easier and preferred but currently only supports smaller data sets. - The server will create a new thread per client that subscribes to that external source.
- The real-time QDB/KDB will push updates to the server and onwards to the client.
Security Plugins
The server can be configured to check HTTP endpoints for authentication and authorization.
- Authentication Endpoint e.g.
is queried each time a new user logs in. .z.pw can either return true/false to say yes/no OR it can return the name of a role, that role will be assigned to the user. Assuming the are positively authenticated the server will issue them a token that allows continued access for a time-period without needing to call the REST API every time.http://qdb-master.com/?.z.pw[((username));((password))]
- Authorization Endpoint e.g.
is queried each time the user requests to open a dashboard. If it returns true access is granted, anything else is assumed to be false.http://qdb-master.com/?isAuthorized[((username));((dashboardName))]