Skip to content

Distributed graph-based simulation system, designed to model and analyze interactions in a networked environment. Built with Microservices and Lambda Functions

Notifications You must be signed in to change notification settings

seyfal/CopWinGame

Repository files navigation

Policeman Thief Graph Game

Build Status Version Scala Version Akka HTTP Version Akka Version ScalaTest Version Typesafe Config Version Logback Version SLF4J Version License

Table of Contents

  1. Introduction
  2. Microservices Architecture
  3. Interactions Between Microservices
  4. Quick Start
  5. Video Walkthru
  6. System Architecture
  7. Code Logic and Flow
  8. Generated Statistics
  9. Areas of Improvement
  10. Known Bugs and Issues
  11. References and Citations

Video Walkthru

A video walkthru explaining the entire system, including microservices interactions and deployment https://youtu.be/wrUE1sUKhKw

Introduction

This project focuses on a distributed graph-based simulation system, designed to model and analyze interactions in a networked environment. The system is based on three interconnected microservices, each serving a distinct role within the broader architecture. The simulation's primary objective is to understand dynamic interactions within a graph structure, particularly focusing on strategic movements and decision-making processes.

Microservices Architecture

The simulation uses three interconnected microservices:

  • Game Logic Service (GLS): Manages game logic, including starting games and processing moves.
  • Graph Query Service (GQS): Handles queries related to game state and move possibilities.
  • Player Management Service (PMS): Manages player sessions and interactions.

Each service is designed to function independently while seamlessly communicating with others.


Interactions Between Microservices

  • GLS is the core service where the game logic resides. It communicates with GQS to fetch game states and calculate move possibilities.
  • PMS handles player interactions, starting new games via GLS, and fetching game states and possible moves from GQS.
  • GQS interacts with GLS to fetch the current game state and then computes the potential moves and their confidence scores based on this state.

Setup and Execution

Prerequisites

  • Java 8
  • Scala 2.13.x
  • sbt 1.9.x

Running the Services

  1. Clone the repository for each service.
  2. Modify the Conf file based on your paths and other needs
  3. Run using sbt clean compile run

Technologies Used

  • Scala: Programming language for service development.
  • Akka HTTP: Toolkit for building HTTP-based services.
  • Docker: Containerization platform.
  • AWS: For cloud deployment and scalability.

Potential Improvements

  • Load Balancing: Implementing a load balancer to distribute requests evenly across service instances.
  • Fault Tolerance: Enhancing system robustness through advanced error handling and recovery mechanisms.
  • UI/UX: Developing a user interface for easier interaction and monitoring of the simulation.

License

This project is licensed under the Apache 2.0 License. See LICENSE for more details.

The badges and other specific details can be adjusted as per the actual project specifications.

About

Distributed graph-based simulation system, designed to model and analyze interactions in a networked environment. Built with Microservices and Lambda Functions

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •  

Languages