Skip to content

About

Core of the Dulno backend: central functionality and framework for all modules

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

Dulno logo

Dulno - Core

Core of the backend of Dulno. Each module relies on the core. It bundles central functionalities and forms the framework of the entire application.

Status

Pipeline status
main

Architecture

Each server in the cluster runs an ingress and an Nginx instance that balance requests across several core replicas. All core instances share a Cassandra database cluster and register with the operator, which distributes work between the nodes.

flowchart TB
    request(["Request"]) --> loadBalancer["Load Balancer"]

    subgraph cluster["Cluster"]
        direction LR
        subgraph server1["Server 1"]
            ingress1["Ingress"] --> nginx1["Nginx"]
            nginx1 --> core11["Core"]
            nginx1 --> core12["Core"]
            nginx1 --> core13["Core"]
        end
        subgraph server2["Server 2"]
            ingress2["Ingress"] --> nginx2["Nginx"]
            nginx2 --> core21["Core"]
            nginx2 --> core22["Core"]
            nginx2 --> core23["Core"]
        end
        subgraph server3["Server 3"]
            ingress3["Ingress"] --> nginx3["Nginx"]
            nginx3 --> core31["Core"]
            nginx3 --> core32["Core"]
            nginx3 --> core33["Core"]
        end
    end

    loadBalancer --> ingress1 & ingress2 & ingress3

    subgraph shared["Shared services"]
        direction LR
        database[("Cassandra cluster<br>one node per server")]
        operator["Operator"]
    end

    cluster -- "data" --> database
    cluster <-- "distribution" --> operator
Loading

At startup, the core loads all module JARs (for example access) from the /modules directory.

Integration

This module can be integrated into a submodule.

To do this, publish the core to your local Maven repository first:

./gradlew publishToMavenLocal

Then add mavenLocal() to the repositories in build.gradle.kts:

repositories {
  mavenCentral()
  mavenLocal()
}

The repository can then be added and used like a regular dependency. This is done in the following way:

dependencies {
  compileOnly("com.dulno:core:1.0.0-SNAPSHOT")
}

License

© Dulno. Licensed under CC BY-NC-SA 4.0: free for non-commercial use with attribution to Dulno, modifications must be shared under the same license. Third-party code (e.g. under static/dependency/) keeps its own license.

About

Core of the Dulno backend: central functionality and framework for all modules

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages