GithubHelp home page GithubHelp logo

adalkiran / py-inventa Goto Github PK

View Code? Open in Web Editor NEW
7.0 4.0 2.0 39 KB

A Python library for microservice registry and executing RPC (Remote Procedure Call) over Redis.

License: Apache License 2.0

Python 99.00% Shell 1.00%
asyncio cross-language cross-platform distributed-computing distributed-systems microservices orchestration python python3 redis remote-procedure-calls rpc rpc-framework service-discovery rpc-library

py-inventa's Introduction

Inventa for Python

LinkedIn Twitter HitCount License

A Python library for microservice registry and executing RPC (Remote Procedure Call) over Redis.

WHY THIS PROJECT?

Service discovery, registry, and execution of remote procedures are some of the necessary tools in distributed applications. You must track which services (also how many replica instances of them) are alive. Also, your services should communicate between each other (choreography) or via an orchestrator service on top of them.

You can do API/function calls remotely by serving REST APIs, gRPC endpoints, etc... But these choices came with some drawbacks or advantages, you have lots of different architectural options on this topic.

Inventa offers you a lightweight solution for these requirements; if you already have Redis in your project's toolbox, and if all of your services have access to this Redis instance.

Also, Inventa doesn't abstract/hide its Redis client object, you can use its Redis Client object freely which is already connected to the server.

USAGE SCENARIO

  • You have an application that consists of multiple services, developed with different languages (currently Go and Python are supported),
  • These services exist for different jobs, also they may be replicated into more than one instances, may be run in either different containers or machines,
  • There is one registrar/orchestrator service which other services will register themselves and send their heartbeats to it,
  • The orchestrator knows which service types and instances are alive now, the orchestrator should select one of the instances of a specific service, then call a function/procedure of the service, and get a response remotely.
  • All of your services will use Inventa, the one orchestrator service will instantiate it in Orchestrator Inventa role, other services will instantiate it in Service Inventa role.
  • Both Service roles and the Orchestrator role can call functions that are provided by other services if they know target service's identifier.

INSTALLATION

pip install inventa

EXAMPLE PROJECT

You can find example projects made using Inventa at https://github.com/adalkiran/inventa-examples.

OTHER IMPLEMENTATIONS

You can find Go implementation of Inventa on Inventa for Go (go-inventa).

LICENSE

Inventa for Python is licensed under the Apache License, Version 2.0. See LICENSE for the full license text.

py-inventa's People

Contributors

adalkiran avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.