stack-scheduler

module
v0.0.0-...-5ae6e0f Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 15, 2021 License: GPL-3.0

README

P2PFaaS

A Framework for FaaS load balancing | stack-scheduler repository

License Codacy Badge Go Report Card

Introduction

The P2PFaaS is a framework that allows you to implement a load balancing/scheduling algorithm for FaaS.

For a detailed information about the framework you can read my MSc thesis at raw.gpm.name/theses/master-thesis.pdf. If you are using P2PFaaS in your work please cite https://ieeexplore.ieee.org/document/8964273/:

@article{8964273,
    author={Beraldi, Roberto and Proietti Mattia, Gabriele},
    journal={IEEE Transactions on Cloud Computing},
    title={Power of random choices made efficient for fog computing},
    year={2020},
    volume={},
    number={},
    pages={1-1},
    doi={10.1109/TCC.2020.2968443}}

Repository

This is the scheduler service of the framework. It's written in Go and it is packaged with Docker.

Build & Run

To build the image:

docker build -t p2p-faas/stack-scheduler:latest .

To run the scheduler please use the docker-compose.yml provided in the stack repo.

Development

For running the development change directory to the root of the project, then change the GOPATH:

export GOPATH=$(pwd)

Build run the image with

go build server

Directories

Path Synopsis
src
scheduler/api
Package api implements all the handlers of all the apis available in this system.
Package api implements all the handlers of all the apis available in this system.
scheduler/api/api_monitoring
Package api_monitoring implements all the handlers of all the apis called for monitoring the nodes, like for example probing.
Package api_monitoring implements all the handlers of all the apis called for monitoring the nodes, like for example probing.
scheduler/api/api_peer
Package api_peer implements all the handlers of all the apis called by other nodes.
Package api_peer implements all the handlers of all the apis called by other nodes.
scheduler/config
Package config implements all the configuration parameters of the system and their handling.
Package config implements all the configuration parameters of the system and their handling.
scheduler/discovery
Package discovery implements all functions that made possible the communication with the discovery service.
Package discovery implements all functions that made possible the communication with the discovery service.
scheduler/errors
Package errors implements all the errors catalog available.
Package errors implements all the errors catalog available.
scheduler/faas
Package faas makes possible the communication with the OpenFaaS service.
Package faas makes possible the communication with the OpenFaaS service.
scheduler/log
Package log implements the logging.
Package log implements the logging.
scheduler/memdb
Package memdb implements a fast way for in-memory variables.
Package memdb implements a fast way for in-memory variables.
scheduler/metrics
Package metrics implements prometheus metrics logging.
Package metrics implements prometheus metrics logging.
scheduler/queue
Package queue implement a producer consumer queue for lossless models.
Package queue implement a producer consumer queue for lossless models.
scheduler/scheduler
Package scheduler implements the core scheduler of the system.
Package scheduler implements the core scheduler of the system.
scheduler/scheduler_service
Package scheduler_service implements the code for query the scheduler service in other nodes.
Package scheduler_service implements the code for query the scheduler service in other nodes.
scheduler/types
Package types implement all structs used in the project.
Package types implement all structs used in the project.
scheduler/utils
Package utils implement utilities functions
Package utils implement utilities functions

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL