Velokri Domains

In Velokri Platform a domain is a set of nodes that are configured to handle or relay requests to each other. The domains are useful when they form a hierarchy where each domain is capable of handling a set of tasks. When a user sends a request to Velokri Platform (i.e., Velokri CE or DBS), the dispatcher uses domains to figure out where a given request needs to be forwarded.

Diagram of Velokri Domains

Figure 1: Velokri Domains

Figure 1 shows a topology of two domains, namely A and B. Depending on the nature of client's task and the current operating mode, the dispatcher will forward it to one or all of the domains. Each of the domains will attempt to either operate on the task themselves or forward it along to one of the sub-domains such as B.1 or B.2 etc.

Every node in Velokri Platform sends its current resource utilization score (based on I/O, CPU and memory usage) to its neighboring nodes every few seconds. This score is used to calculate where a given task may best be handled. Therefore if B.1 and B.2 are both equally capable but B.1 has a better resource utilization score, then B will forward the request to B.1 instead of B.2.

Velokri domains help to extend a Velokri Platform grid's dimensionality, thus providing an effectively indefinite scalability. Note that for two nodes to be in a domain and sub-domain relationship they do not need to be physically connected (or via a switch). Velokri's routing mechanism relies on IP routing, therefore a direct sub-domain (say, B.2) for a given domain (i.e., B) could be many hops away.