Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/Netflix/mantis

A platform that makes it easy for developers to build realtime, cost-effective, operations-focused applications
https://github.com/Netflix/mantis

Last synced: 7 days ago
JSON representation

A platform that makes it easy for developers to build realtime, cost-effective, operations-focused applications

Awesome Lists containing this project

README

        

Mantis logo

# Mantis Documentation

[![Build Status](https://img.shields.io/travis/com/Netflix/mantis.svg)](https://travis-ci.com/Netflix/mantis)
[![OSS Lifecycle](https://img.shields.io/osslifecycle/Netflix/mantis.svg)](https://github.com/Netflix/mantis)
[![License](https://img.shields.io/github/license/Netflix/mantis.svg)](https://www.apache.org/licenses/LICENSE-2.0)

[Official Website](https://netflix.github.io/mantis/)

---

## Development

### Setting up Intellij
Run `./gradlew idea` to (re-) generate IntelliJ project and module files from the templates in `.baseline`. The generated project is pre-configured with Baseline code style settings and support for the CheckStyle-IDEA plugin.

### Install Docker
Install and run Docker to support local containers.

### Building

```sh
$ ./gradlew clean build
```

### Testing

```sh
$ ./gradlew clean test
```

### Formatting the code
Run `./gradlew format` task which autoformats all Java files using [Spotless](https://github.com/diffplug/spotless).

### Building deployment into local Maven cache

```sh
$ ./gradlew clean publishNebulaPublicationToMavenLocal
```

### Releasing

We release by tagging which kicks off a CI build. The CI build will run tests, integration tests,
static analysis, checkstyle, build, and then publish to the public Bintray repo to be synced into Maven Central.

Tag format:

```
vMajor.Minor.Patch
```

You can tag via git or through Github's Release UI.

## Contributing

Mantis is interested in building the community. We welcome any forms of contributions through discussions on any
of our [mailing lists](https://netflix.github.io/mantis/community/#mailing-lists) or through patches.

For more information on contribution, check out the contributions file [here](https://github.com/Netflix/mantis/blob/master/CONTRIBUTING.md).

### Module Structure
This excludes all connectors and examples as they are mostly leaf nodes in the dependency graph.

Module | Purpose | Example Classes | Package Prefixes
----------------------------|-------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------
mantis-common-serde | Support for serializing and deserializing POJOs using Json |

  • JsonSerializer
  • |
  • io.mantisrx.common.*

  • mantis-discovery-proto | todo: need to fill this in |
  • JobDiscoveryProto
  • AppJobClustersMap
  • StageWorkers
  • |
  • com.netflix.mantis.discovery.proto.*

  • mantis-common | Mantis common code shared across modules |
  • MantisJobDefinition
  • MachineDefinition
  • MantisJobState |
  • io.mantisrx.common.\*
  • io.mantisrx.runtime.\*
  • io.mantisrx.server.code.\*
  • io.reactivx.mantis.operators.\*
  • com.mantisrx.common.utils.\*
    mantis-remote-observable | connection to other job,stage related code |
  • ConnectToObservable
  • ConnectToGroupedObservable
  • RemoteObservable |
  • io.reactivex.mantis.remote.observable.\*
  • io.reactivex.netty.codec.\*

  • mantis-control-plane-core | common code between mantis-control-plane-server, mantis-control-plane-client, mantis-server-worker, mantis-server-agent |
  • TaskExecutorID
  • ClusterID
  • ExecuteStageRequest
  • JobAssignmentResult
  • Status |
  • io.mantisrx.server.core.\*
  • io.mantisrx.server.master.resourcecluster.\*
  • io.mantisrx.server.worker.\*
    mantis-control-plane-client | API to talk to the mantis control plane server |
  • MasterClientWrapper
  • MantisMasterGateway
  • MantisMasterClientApi |
  • io.mantisrx.server.master.client.\*
  • io.mantisrx.server.master.resourcecluster.\*
    mantis-network | todo: need to fill this in | |
    mantis-publish-core | todo: need to fill this in | |
    mantis-server-worker-client | API to interact with workers |
  • MetricsClient
  • MetricsClientImpl
  • WorkerConnection
  • WorkerMetricsClient |
  • io.mantisrx.server.worker.client.\*
    mantis-runtime | Runtime that the jobs need to depend upon. Job DSL should go in here along with how to talk to other jobs |
  • KeyToKey
  • GroupToGroup
  • Source
  • Sink |
  • io.mantisrx.runtime.\*
    mantis-publish-netty | todo: need to fill this in | |
    mantis-client | client to interact with mantis control plane |
  • MantisClient::submitJob
  • MantisClient::killJob |
  • io.mantisrx.client.*

  • mantis-publish-netty-guice | todo: need to fill this in | |
    mantis-control-plane-server | Actual server that runs the mantis master code |
  • MasterMain
  • SchedulingService
  • ServiceLifecycle |
  • io.mantisrx.master.\*
  • io.mantisrx.server.master.\*
    mantis-server-agent | Contains mantis-runtime agnostic code to start the task executor that runs on the agent |
  • TaskExecutor
  • TaskExecutorStarter
  • BlobStore
  • BlobStoreAwareClassLoaderHandle |
  • io.mantisrx.server.agent.\*
    mantis-server-worker | One implementation of Mantis Worker that depends on the master runtime |
  • MantisWorker
  • Task
  • ExecuteStageRequestService
  • JobAutoScaler |
  • io.mantisrx.server.worker.config.\*
  • io.mantisrx.server.worker.jobmaster.\*

    ### Dependency Graph

    ```mermaid
    graph TD;
    A[mantis-common-serde]-->B[mantis-common];
    B-->C[mantis-control-plane-core];
    B-->D[mantis-runtime];
    C-->E[mantis-control-plane-client];
    E-->F[mantis-server-worker-client];
    F-->G[mantis-client];
    E-->G;
    C-->H[mantis-control-plane-server];
    C-->I[mantis-server-worker];
    F-->I;
    D-->I;
    F-->J[mantis-server-agent];
    E-->J;
    ```