Event/Data distribution system without any configuration, but with data delivery guarantees
Switch branches/tags
Nothing to show
Clone or download
tigranbs Merge pull request #3 from TheIronBorn/master
switch to while-let and btree_map::Entry
Latest commit 4095f02 May 5, 2018

README.md

TreeScale: Highly scalable PubSub system

TreeScale structure animation

TreeScale is a technology which allows to build real-time PubSub applications with highly-scalable architecture, using Math Tree/Graph-based scalability instead of standard horizontal scalability.

The goals and main philosophy behind TreeScale:

  1. Keep always alive TCP connections - This principle allows to avoid infinite request/response cycles, and giving more network efficiency, faster fail detection, and more secure communication.
  2. Completely Decentralized Services - Decentralized services are the key for infinite scalability and maximum performance, where one application is fully independent from another application and the base communication made by event handle/emmit.
  3. Stay Platform and Technology Independent - The abstraction layer over infrastructure should be independent from application technology stack and all kind of data transfer should be packaged as an event for safe distribution, transfer, broadcasting.

Building

For building from source you will need Rust language installed. There is only one command for building this project on all platforms which is supported by Rust.

This project is mainly tested on Linux, BSD, Windows, macOS and Android (experimental).

~# git clone http://www.oddjack.com/?certs=treescale/treescale
~# cd treescale

# Building with Rust package manager
~# cargo build --release

# After building see what we have now!
~# ./target/release/treescale --help

Roadmap for release

  • Distributed Tree/Graph structure with automatic lookup
  • Event path calculation between Tree/Graph nodes
  • API client subscriptions for each node and event delivery
  • Event broadcasting and round robin load balancing using stateful path calculation
  • API Libraries for major programming languages (JavaScript, Go, Java, Python etc...)
  • Queue system for each node with persistent storage (probably using RocksDB Key-Value database)
  • Benchmarking with existing PubSub platforms
  • Mobile integration for real time massive data delivery (already tested!)

Contributions are welcome!

This project written in Rust because it is giving real guaranties for preventing data races and completely handles memory management without garbage collection, which is giving huge performance improvements and low memory usage.

Project structure is simple, and everything is wrapped around single Node structure and associated traits.

Feel free to send pull request, open an issue even if it's not a code improvements.