Giter VIP home page Giter VIP logo

magnanimity's Introduction

Magnanimity

An unopinionated orchestration library that supports RPC-like functionality with minimal overhead and no code-generation.

Limitations:

  • no hand-holding
  • restricted to interoperability with localhost only

At the mile-high-level, this is a cross-language multi-platform semaphore library.

  1. Requests are serialized to disk using message-pack, protobuf, json, or any mechanism you choose.
  2. Replies are serialized to disk using message-pack, protobuf, json, or any mechanism you choose.
  3. The watchdog only performs initialization and routine cleanup (timestamp based; more rules forthcoming)
  4. It is up to each client to serialize the request to disk in a uniform location
  5. It is up to the the server to read that request from disk
  6. It is up to the the server to also write the response
  7. Both client and server are responsible for writing heartbeats and timestamps into Magnanimous shared memory for syncronization

Request lifetimes, response lifetimes, and watch-dog services, are all handled by the Magnanimity server. Each client reads and writes into shared memory in accordance with precise rules:

  • no external library to link with (so any language that can read/write shared-memory is compatible)

  • completely agnostic on how to serialize data

  • if all clients and servers obey the data access rules, then there is no possibility of memory race conditions.

  • See the color-coded PDF/spreadsheet for access rules:
    https://github.com/kwonus/Magnanimity/blob/master/Magnanimity.pdf

    • Blue is writable by servers
    • Green is writable by clients/listeners
    • All other slots are read-only
  • low overhead

  • super low-latency

Admittedly, the memory accessibility rules are tedious, but documented (and pretty straight-forward). However, once that is well-understood, there is almost zero complexity and minimal bias (after all, it is just a sophisticated semaphore-server with a watch-dog) Easy to lean (while this server is C++; your favorite language is all you'll need to know! YAML-driven configuration coming soon)


One Dependency:

magnanimity's People

Contributors

kwonus avatar

Watchers

 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.