Git Product home page Git Product logo

xornand / rdsn Goto Github PK

View Code? Open in Web Editor NEW

This project forked from microsoft/rdsn

0.0 2.0 0.0 76.51 MB

Robust Distributed System Nucleus (rDSN) is an open framework for quickly building and managing high performance and robust distributed systems.

License: MIT License

CMake 1.25% Batchfile 0.87% Shell 1.03% PHP 2.12% Python 0.60% C++ 57.47% C 2.04% Objective-C 0.06% C# 13.42% Thrift 0.35% JavaScript 18.98% Protocol Buffer 0.02% CSS 0.33% HTML 1.48%

rdsn's Introduction

Build Status Build status

All pull requests please now go to https://github.com/imzhenyu/rdsn for automatic integration with latest version. We will preriodically update this repo. Thank you.

Top Links

  • [Case] RocksDB made replicated using rDSN!
  • [Tutorial] Build a counter service with built-in tools (e.g., codegen, auto-test, fault injection, bug replay, tracing)
  • [Tutorial] Build a scalable and reliable counter service with built-in replication support
  • [Tutorial] Build a perfect failure detector with progressively added system complexity
  • [Tutorial] Plugin my own network implementation for higher performance
  • Installation

I am a developer | researcher | student =>

See Wiki for details ...


rDSN

Robust Distributed System Nucleus (rDSN) is an open framework for quickly building and managing high performance and robust distributed systems. An early version of rDSN has been used in Bing for building a distributed data service, and the system has been online and running well. Based on the feedbacks, rDSN is improved and now made public with the MIT open source license. The idea is to advocate a coherent and principled meta stack that distributed applications, tools, and frameworks are developed independently and integrated (almost) transparently to benefit each other. Following are some highlights for different audience of this framework.

I am a developer | researcher | student =>


Developers: a framework for quickly building and managing high performance and robust distributed systems.
  • Highlights (more)
  • compatible code generation via Apache Thrift and Google Protocol Buffer
  • automatic test against various failures and scheduling decisions with reproducable bug
  • flexiable to plugin your own module to adapt to existing culture or for higher performance
  • automatically turn single-node service to a scalable and reliable service with built-in replication
  • Have concerns? =>
Built-in three-layer meta stack for quickly building distributed systems with support from a growing set of tools and frameworks
  • Layer 1: quick service development, plus with support from many tools and policies: simulation, fault injection, tracing, profiling, replay, throttling, ... (see Tutorial)

rDSN-layer1

  • Layer 2: to a partitioned? and replicated? service with simple configuration and minor further development cost (see Tutorial)

rDSN-layer2

  • Layer 3: compose workflow across multiple services in a declarative way to handle end-to-end incoming workloads (coming later)

rDSN-layer3

Quick development and flexible deployment (with concerns addressed)
  • multiple-platform support (Linux, Windows, Mac)
  • Compatible code generation with Thrift and Protocol Buffer, extensible for others
  • enhanced RPC library with multi-port, multi-channel, multi-language-client support
  • adapt to your own environment, or rDSN does not perform good enough? rDSN is highly extensible that you can always plugin your own low level constructs (network, logging, task queue, lock, performanc counter etc.)
  • flexible deployment - single executable, multiple roles, multiple instances
  • more concerns, please do not hesitate to let us know

Researchers and tool-oriented developers: a tool platform which eases tool development and enables transparent integration with upper applications. (see Tutorial 1 and Tutorial 2)
  • reliably expose dependencies and non-determinisms in upper systems to the underlying tools at a semantic-rich level (i.e., task)
  • completeness made easy for tools
  • reduced state space for tools to handle
  • easier to map tool results to application logic
  • dedicated Tool API for tool and runtime policy development
  • transparent integration of the tools with the upper applications to make real impact

Students: a distributed system learning platform where you can easily simplify, understand and manipulate a system. (see Tutorial)
  • configurable system complexity to learn step by step
  • single thread to multiple threads
  • synchronous and reliable messages to asynchronous and unreliable ones
  • easy test, debug, and monitoring for system understanding, as with the developers
  • easy further tool development, as with the researchers

License and Support

rDSN is provided in C++ on Windows, Linux, and Mac, with the MIT open source license. You can use the "issues" tab in github to report bugs. For non-bug issues, please send email to [email protected].

This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact [email protected] with any additional questions or comments.

rDSN

rdsn's People

Contributors

imzhenyu avatar 0xfdi avatar qinzuoyan avatar shengofsun avatar mcfatealan avatar ykwd avatar glglwty avatar goksyli avatar xiaotz avatar zjc95 avatar lishenglong avatar capfei avatar 0xdeadbeef-dot-com avatar

Watchers

James Cloos avatar Andrew Nambudripad 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.