GithubHelp home page GithubHelp logo

ledjon-behluli / orleanspaces Goto Github PK

View Code? Open in Web Editor NEW
58.0 4.0 3.0 2.39 MB

A virtual, fully-asynchronous, Tuple Space implementation backed by Orleans.

License: Apache License 2.0

C# 99.60% PowerShell 0.40%
orleans dotnet concurrent-programming distributed-computing tuple-space sba

orleanspaces's Introduction

OrleanSpaces

OrleanSpaces

Tuple space is an implementation of the associative memory paradigm for distributed computing. It provides a repository of tuples that can be accessed concurrently.

Orleans is a framework that provides a straight-forward approach to building distributed high-scale computing applications, without the need to learn and apply complex concurrency or other scaling patterns.

OrleanSpaces is a package that brings the power of the tuple space programming model into the .NET world, by using Orleans as the backbone.

Why virtual?

Much the same way as actors in Orleans, the tuple space in OrleanSpaces can't be explicitly created or destroyed, it always exists, virtually! Its existence transcends the lifetime of any of its in-memory instantiations, and thus the lifetime of any particular server. This alleviates the developer from a lot of ceremonial/infrastructural work that would have been neccessary.

Why fully-asynchronous?

The IN and RD operations in the tuple space paradigm, are inherently blocking operations. If there is no matching tuple found in the space, then the process which has called these operations, has to wait until it gets a matching tuple. This, intrinsically has an impact on the general availability of the whole system. In OrleanSpaces these operations are done in a fully-asynchronous way, via callback channels.

When I say that IN and RD are implemented in a fully-asynchronous way, I am not referring to the non-blocking versions INP and RDP! These are sepparate concepts, which by the way are also implemented in OrleanSpaces.

Motivation

While the tuple space paradigm offers unparalled computing capabilities, it is quite the feat to get it right! A proper implementation ideally should support capabilities like:

  • Scalability
  • Availability
  • Resiliency
  • Persistence
  • Transactions
  • Concurrency
  • Location transparancy

Hobby implementations of the tuple space fail to deliver on a lot of those, and while enterprise solutions (JavaSpaces, GigaSpaces, IBM TSpaces, etc.) do a better job at it, they usually come with a price, and put the burden of managing the spaces' state to the developer.

All of the above-mentioned capabilities come out-of-the-box with Orleans. The idea was not to reinvent the wheel, but instead leverage Orleans, while providing an abstraction to the client, and build features upon it.

Packages

CI

Package Description NuGet Version Test Coverage
OrleanSpaces Main library. nuget coverage
OrleanSpaces.Analyzers Code analysis and fixes for OrleanSpaces. nuget coverage

Documentation


If you find it helpful, please consider giving it a ⭐ and share it!

Copyright © Ledjon Behluli

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.