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 design that distributed applications, tools, and frameworks can be 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. (see Tutorial)
Built-in three-layer support from a growing set of tools and frameworks
- Layer 1: quick development with single node tools and policies support: simulation, fault injection, tracing, profiling, replay, throttling, ...
- Layer 2: to a partitioned? and replicated? service with simple configuration and minor further development cost
- Layer 3: compose workflow across multiple services in a declarative way to handle end-to-end incoming workloads (coming later)
- multiple-platform support (Linux, Windows, Mac)
- quick prototyping via 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.
- 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
- Installation
- Tutorial
- Built-in Tools, Runtime Policies and Distributed Frameworks
- [Extend rDSN] (https://github.com/Microsoft/rDSN/wiki/Tool-API:-Component-Providers,-Join-Points,-and-State-Extensions)
- Programming Rules and FAQ
- Contribute to rDSN