-
Notifications
You must be signed in to change notification settings - Fork 212
Overview
Zhenyu Guo edited this page May 20, 2015
·
5 revisions
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.
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)
- Layer 2: to a partitioned? and replicated? service with simple configuration and minor further development cost (see Tutorial)
- 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. (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
Content