This article provides information on the various components of VisionHub
1. Launcher
Installation and Depoyment
VisionHub installations are distributed as self-contained folder. A central configuration (based on environment variables) is used to define which components will be started. The launcher uses the pm2 process manager to start and manage configured components.
Logging and Monitoring
pm2 collects all relevant component logs in a central folder and provides multiple methods to access these logs locally. The log files do not contain sensitive information (e. g. passwords).
A central monitoring can be setup to collect logs from all VisionHub servers and provide escalation and alerting methods.
Configuring pm2 as a service
The launcher can be started via command line. In this case all sub-processes will be started with this user.
arivis proposes to run the launcher as a service.
Remark on FileSystem-Access and Rights
Different VisionHub services require full read/write access to a high performace file system. If VisionHub infrastructure is scaled using multiple machines, this file system is required to be mounted on each machine using the SMB or NFS protocol. The launcher provides configuration options to automatically mount a specific UNC path as central data folder. Local UNC mounts as Drive letters will not work when run as a service.
If only read access can be provided for the central file system, a custom configuration allows that the VisionHub components use a secondary file system to store component specific data (full access required).
2. Proxy-Server
Configurable HTTP/S port mapping for VisionHub components, in default installations only api-server is proxied (nodejs, node-http-proxy)
3. Webapp-Client
HTML interface to VisionHub servers/api-server; includes Interactive Viewer, configurable components/theming (Typescript, NuxtJS, VueJS)
4. API-Server
Manages VisionHub entities (datasets, pipelines, workflows, users) and data flow; facilitates authorization, authentication (nodejs, IBM Loopback, database support: In-Memory, PostGres, MSSql))
5. Interactive Viewer
provides HTML UI to explore image data, comes with 2D (Tile-Server) and 3D (Render-Server) viewers, color/channel control (Typescript, VueJS)
Consumable Backend Services
-
Image-Tiles
-
for 2D-Viewer
-
server-side channel mixing
-
e. g. Tile-Server image-request
-
using arivis ImageCore
-
-
Image/Collection-Metadata
-
e. g. Tile-Server stackmetadata-request
-
-
Objects
-
e. g. Object-Server
-
using arivic ObjectsCore
-
-
Bookmarks
-
e. g. Api-Server
-
using arivis ImageCore
-
-
Render-Server
-
for 3D viewer
-
server-side rendering use H.264 over websockets
-
Deployment Options:
Integrated with VisionHub
-
using VisionHub api-server as Backend
As Full Page application
-
using query parameters http://viewer/show?imageRegistryUrl=”…”
As WebComponent
-
using <viewer imageRegistryUrl=”…”/>
6. Tile Server
Provides access to image tiles for supported file formats, provides histogram calculation, applies color/channel transformations (Nodejs, C++, arivis imageCore, Windows, (Linux only for sis))
available tileserver modules / native reader
-
SIS
-
NDPI/NDPIS (hammamatsu)
-
Aperio
-
CZI (zeiss)
-
VSI (olympus)
-
TIFF/OME-TIFF
-
png, jpg, gif, …. (FreeImage)
7. Object Server
Manages access to arivis ObjectsCore .objects files, used by Interactive-Viewer (create manual annotations) and Analysis-Worker (automatic result objects) (C#, arivis ObjectsCore, Windows.
8. Render Server
CUDA based renderer provides high quality 4D rendering, uses websockets to provide h264 videostream and receive control commands from Interactive-Viewer 3D controls (NodeJS, CUDA, OptiX, arivis RenderCore, C++, websockets, Windows).
9. Analysis Worker
Executes arivis AnalysisPipelines (arivis AnalysisCore, C++, Windows, HttpListener).