© 2017 by GRAVIO Team

Architecture

GRAVIO Ecosystem will be an open source platform, which is distributed under MIT License.

GRAVIO is based on a network of transport servers-hubs. Servers are divided into 6 roles:

  • front-end - communication with user applications and maintenance of transport sessions

  • back-end - content storage servers

  • uds - users discovery server

  • ums - users management server

  • cds - content discovery server

  • seeder - service broker provider

 

The number of servers for each role will vary depending on the needs, scaling and redistribution of the load.

The basis for developing servers, micro servers, services, communication layer and integration layer with various devices - is the Jet.Framework, cross-platform process-oriented software platform.

Note: For now this is proprietary platform developed by the team members for the numerous commercial products and projects. And we plan to open significant part of platform code. See "Team background" for details.

Key features of the Jet.Framework platform essential for the implementation of the GRAVIO Ecosystem

  • Process-oriented core. The basis of server operation - the "processes" described as directed graphs whose units contains processing elements (JavaScript), and the arcs between the processing elements are conditional (or absolute) transitions between them.

  • Cross-platform nature. Jet.Framework is implemented in ANSI C++ and contains an abstraction layer that separates the platform from the operating system. The "processes" will work the same on different servers running different operating systems.

  • Response time. Platform contains mechanisms to measure the execution time of a unit and schedule execution of the next process or a process step (unit).

  • Configurability. The server is a set of developed modules that include: a set of "processes", a set of libraries (.js), a description of document maps, descriptions of data sources and their formats, a description of the queues of interaction a description of built-in storages (XmlDb, Db, TimeseriesDb), a description of the distributed repositories and shared repositories. Configuration modification can be done without stopping the server itself, unless the binary code of the Jet.Framework platform changes.

  • Performance. Jet.Framework platform focuses on the development of solutions that operate, among other things, in a mode close to real time. When the server runs, the required number of JavaScript machines with jit’ing is used. At the same time, to maximize the performance, some of the functions can be implemented in C++ and connected to server API to be used in writing the "processes".

  • Integrability. The platform contains a specialized API and the corresponding SDK needed to create adapters to various systems and data sources.

  • Role structure. When describing the server configuration, one can assign one or more performed roles. The role defines which modules should function on a particular server.

  • Scalability. The platform contains mechanisms to create a self-balancing network of servers with an assigned role structure. The servers in the self-balancing network exchange information about the resources they utilize.

  • Event-driven processing. The platform allows building a processing schema focusing on: 1. Generation of events according to a combination of factors (the result of the "process") and 2. Reception and processing of the resulting/incoming events (run a suitable "process").

  • Basic system of statistical and probabilistic statistical modelling in real time. Analysis of aggregate trends in the behavior of digital parameters (approximation, defining conformance with pre-set parameters), forecast of the behavior of the aggregate parameters in the nearest discrete time (5 seconds, 10, 20 ...), based on actual data and revealed analytic curves.

  • Security. The opportunity to use session encryption and content encryption when transferring information between the servers and services of the system. The ability to encrypt the stored data.

  • Network exchange. Network Exchange Subsystem allows fine-tuning (at configuration levee) both message and query routing and the type and characteristics of the transport used. This technology can be used for both intra-server exchange and for sharing between network servers (including the end user application). It can be operated in narrow and unstable communication channels.