illinois-cs241 / broadway Goto Github PK
View Code? Open in Web Editor NEWA distributed systems framework used running distributable workloads.
License: Other
A distributed systems framework used running distributable workloads.
License: Other
This is when we need to maintain some graders or test some graders. So we don't want the job to be assigned randomly.
Following up from illinois-cs241/broadway-api#58, some warnings like shadowing variable names, type mismatch warning slip by flake8
. We should be able to catch such things and not let them slip into production code.
Maybe change the linter? But have been unsuccessful in finding linters which can do this.
Example:
Currently, no runs from Course B will run until all of Course A's runs have finished.
Assuming and giving a once over of a distributed system is good -- actually verifying it is a little better.
We don't need to do this immediately, but to be a robust piece of software, we should put in some Jepsen Tests for fault tolerance. We'll need to assume just a few likely cases (we aren't trying to make this a true fault tolerant distributed system),
Right now there is essentially a single file that has all of the functions needed to start up the grader and run it.
I would suggest we make a Grader
class that contains any grading logic and that we put it inside of the grader
module. Then at the top level (outside of the module) we have a run.py
that instantiates the grader and gets things running.
I think this would make things a bit easier to maintain.
Since we have containerized broadway API and grader, it would be a natural step to migrate the entire cluster to docker swarm (or other container orchestration system).
This is mostly an issue of configuration. There are a few things to solve in my limited experience with docker swam:
A few potential benefits in doing this:
Since broadway-api and broadway-grader share some common parts and most changes usually require changing both repos, putting them in one repo might be more friendly to both maintainers and users.
Also as @ayushr2 mentioned, bundling them together and start tagging releases may help avoid compatibility issues in the future.
The problem is in the websocket handler
It's creating a completely new model.WorkerNode
every time which resets a bunch of fields to their initial values. The correct behavior should be first checking if there exists one node with the given id then only update altered fields (hostname, etc.)
Need to change some stuff here https://github.com/illinois-cs241/broadway/blob/master/broadway/api/callbacks/worker.py#L50
to load-balance jobs between graders
Following discussion from illinois-cs241/broadway-api#61, we need to change how registration works. See this for implementation details.
We should be taking in the worker ID as a positional command line argument.
Currently, the tests do not test the following:
Right now you can deploy the api after knowing a good amount about the internals, setting up mongo etc.
We have codified setup in .travis.yml, but it'd be nice to refactor this to a deploy script for Ubuntu, so we can
I'd recommend fab, but as always there are other ways to skin a cat.
We should test that when a node reconnects, their info is sustained and they can continue from where they left.
As usual, running a piece of code as root unless absolutely necessary is just good security practice. Can we have a script that creates a new user and sets up that user to be a part of the docker group instead of root?
The CI can be mostly copied over from broadway-api, but it'd be nice to have some assurance checks on each commit.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.