Intro
You will be able to see here all meaningful parts of JAlgoArena architecture which are not JAlgoArena microservices.
In case anything important is missing in here, please create a new issue.
Technology
Term | Description |
---|---|
Traefik |
API Edge service which exposes REST and WebSocket API doing necessary path rewrites and load balancing. See more details on Traefik page. |
Apache Kafka |
Stream processing component which controls flow for serving submissions. Initially when users submits new solution, it goes to Apache Kafka from where it's consumed by Submissions microservice for futher processing. All microservices which takes part in submission process communicate through Apache Kafka topics in asynchronous way. See more details on Apache Kafka page. |
Consul |
Consul cluster provides capability of service discovery and distributed configuration. Traefik is using consul to build all API rules based on which destination microservices can be reached. In production JAlgoArena should be using cluster build from 3 server agents for high availability See more details on Consul page. |
Nomad |
Nomad provides scheduling capability. Thanks to it JAlgoArena deployment is automated and using recent version of microservices and external components. Actual nomad jobs allows to use two drivers:
All nomad job specs can be found in here. See more details on Nomad page. |
Cockroach DB |
Persistante highly available storage that JAlgoArena is using. Cockroach DB is exposing SQL interface in similar way as Postgres SQL, which makes it very easy to use and operate with. In production JAlgoArena should be using cluster build from 3 server nodes for high availability See more details on Cockroach Labs page. |
Elastic Stack |
JAlgoArena is using Elastic Stack for tracing distributed logging. In particular, we use Logstash, Elasticsearch and Kibana See more details on Elastic Stack page. |