Skip to content

A lightweight and easy to use Service Discovery and Load Balancer written in Python

License

Notifications You must be signed in to change notification settings

ahnaf-zamil/invenio

Repository files navigation

Invenio

License: Apache 2.0 Code Style: Black pyvers

Invenio is a lightweight and easy to use service discovery and load balancer written in Python. It was inspired by Netflix Eureka.

Why I created Invenio

There are other FAR BETTER options for service discovery systems e.g Netflix Eureka, Hashicorp Consul, etc. But for me, those services were a bit overkill and resource demanding. I liked Eureka a lot and used it with Spring Boot extensively. But to me, it felt that Eureka was very closely coupled with AWS (since Netflix uses AWS). And because it was written in Java, it required a lot of resources.

That's the reason I created Invenio, to be a lightweight and simple to use solution for service discovery that comes with minimal features. Invenio uses a very simple round robin/cycle load balancing for accessing a service instance. Usually, it's all you need. But if that is not what you want, then I guess Invenio is not for you.

Running the server

Make sure you have Python 3.6+ installed. Prior versions might not work since it uses type annotations and some other fancy things that only the newer versions have.

By default, you may not have a config file. But don't worry, Invenio will create the config file (config.yml) with default values in the folder from where you run it.

Firstly, install the server's dependencies by running

$ pip install -r requirements.txt

# or

$ pip3 install -r requirements.txt

Now run the server using

$ python -m invenio

# or

$ python3 -m invenio

Contributing

If you are considering to contribute, thanks a lot! We welcome all contributors here and, you can help out as well.

Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.

About

A lightweight and easy to use Service Discovery and Load Balancer written in Python

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages