Skip to content

Latest commit

 

History

History
132 lines (111 loc) · 4.17 KB

README.md

File metadata and controls

132 lines (111 loc) · 4.17 KB

JWizard Core

JWizard is an open-source Discord music bot that manages audio content from various multimedia sources and features an innovative web player. This repository contains the core of the application, which supports Discord API event handlers and a message broker for handling events from the web interface. It is also designed for clustering, utilizing a shard-offset system.

Webpage | GitHub repository | Support

Clustering system example with multiple concurrent instance

instance 0              instance 1       ...     instance N
├─ process 0            ├─ process 0
│  ├─ shards 0-9        │  ├─ shards 0-9
├─ process 1            ├─ process 1
│  ├─ shards 10-19      │  ├─ shards 10-19
│  ...                  │  ...
├─ process N            ├─ process N

NOTE: Min and max shard defining shard offset are inclusive.

More about sharding, clustering multiple concurrent instances and shards fragmentation (different shard ranges for distributed JVM architecture) you will find here:

Build image

docker build \
  --build-arg JWIZARD_VERSION=latest \
  --build-arg JWIZARD_MAVEN_NAME=<maven m2 repository username> \
  --build-arg JWIZARD_MAVEN_SECRET=<maven m2 repository secret> \
  -t milosz08/jwizard-core .

Create container

  • Using command:
# for 2 concurrent instances, one process per instance with 10 shards per process
docker run -d \
  --name jwizard-core \
  -p 6071:6071 \
  -e JWIZARD_VAULT_SERVER=<vault server url> \
  -e JWIZARD_VAULT_USERNAME=<vault username> \
  -e JWIZARD_VAULT_PASSWORD=<vault password> \
  -e JWIZARD_XMS=1024m \
  -e JWIZARD_XMX=1024m \
  -e JWIZARD_SERVER_PORT=6071 \
  -e JWIZARD_JDA_INSTANCE_NAME=core-instance-0 \
  -e JWIZARD_JDA_SHARDING_OFFSET_START=0 \
  -e JWIZARD_JDA_SHARDING_OFFSET_END=9 \
  -e JWIZARD_JDA_SHARDING_TOTAL_SHARDS=10 \
  milosz08/jwizard-core:latest

docker run -d \
  --name jwizard-core \
  -p 6072:6072 \
  -e JWIZARD_VAULT_SERVER=<vault server url> \
  -e JWIZARD_VAULT_USERNAME=<vault username> \
  -e JWIZARD_VAULT_PASSWORD=<vault password> \
  -e JWIZARD_XMS=1024m \
  -e JWIZARD_XMX=1024m \
  -e JWIZARD_SERVER_PORT=6072 \
  -e JWIZARD_JDA_INSTANCE_NAME=core-instance-1 \
  -e JWIZARD_JDA_SHARDING_OFFSET_START=0 \
  -e JWIZARD_JDA_SHARDING_OFFSET_END=9 \
  -e JWIZARD_JDA_SHARDING_TOTAL_SHARDS=10 \
  milosz08/jwizard-core:latest
  • Using docker-compose.yml file:
# for 2 concurrent instances, one process per instance with 10 shards per process

services:
  jwizard-core-instance-0:
    container_name: jwizard-core-instance-0
    image: milosz08/jwizard-core:latest
    ports:
      - '6071:6071'
    environment:
      JWIZARD_VAULT_SERVER: <vault server url>
      JWIZARD_VAULT_USERNAME: <vault username>
      JWIZARD_VAULT_PASSWORD: <vault password>
      JWIZARD_XMS: 1024m
      JWIZARD_XMX: 1024m
      JWIZARD_SERVER_PORT: 6071
      JWIZARD_JDA_INSTANCE_NAME: core-instance-0
      JWIZARD_JDA_SHARDING_OFFSET_START: 0
      JWIZARD_JDA_SHARDING_OFFSET_END: 9
      JWIZARD_JDA_SHARDING_TOTAL_SHARDS: 10
    networks:
      - jwizard-network

  jwizard-core-instance-1:
    container_name: jwizard-core-instance-1
    image: milosz08/jwizard-core:latest
    ports:
      - '6072:6072'
    environment:
      JWIZARD_VAULT_SERVER: <vault server url>
      JWIZARD_VAULT_USERNAME: <vault username>
      JWIZARD_VAULT_PASSWORD: <vault password>
      JWIZARD_XMS: 1024m
      JWIZARD_XMX: 1024m
      JWIZARD_SERVER_PORT: 6072
      JWIZARD_JDA_INSTANCE_NAME: core-instance-1
      JWIZARD_JDA_SHARDING_OFFSET_START: 0
      JWIZARD_JDA_SHARDING_OFFSET_END: 9
      JWIZARD_JDA_SHARDING_TOTAL_SHARDS: 10
    networks:
      - jwizard-network

  # other containers...

networks:
  jwizard-network:
    driver: bridge

License

This project is licensed under the AGPL-3.0 License.