round_logo

English / Japanese

What is Round ?

Round is a new open source framework developed for distributed system developers and researchers to build distributed applications and frameworks more easily.

The name “Round” derives from “Knights of the Round Table“, meaning that every node in a cluster has an equal role and the cluster has no mater node.

Round is a new basic framework for distributed systems, supports to develop various distributed frameworks or applications such as the following:

  • Consensus Services (Chubby, ZooKeeper, etcd, …)
  • Distributed Frameworks (Hadoop, Storm, Spark …)
  • Distributed File Systems (GFS, HDFS, …)
  • Distributed Database Systems (Dynamo, Cassandra, …)
  • Distributed Resource Managements (Mesos, YARN, …)

Overview

Design Principles

Round is designed on the basis of the following principles.

Simplicity

Simplicity is the most valued principle. The core module of Round is very simple, and has only minimum functions are implemented.

Orthogonality is another important one as well as simplicity. Considering those principles, no redundancy functions are implemented to keep the core module simple.

Clarity

The technical specifications of the core functions are clearly defined and released free for users. Basically, the specifications are defined to extend some de facto standard specifications.

The initial version of core functions are implemented with C++, whereas the core module can be done with other programming languages such as Java and Go based on the public specifications.

Scopes

Round’s core functions are very small like Microkernel, and the all other basic functions to build distributed frameworks or applications are supplied as core modules. Developers can build distributed frameworks or applications using the core functions and modules as the following.

round_design_scope

Round supplies some useful core modules such as consensus protocols and failure detections for distributed systems as default. In addition, developers can add new original modules for distributed system such as consensus protocol using any programming languages such as JavaScript and Lua.

Architecture

Programming Model

Round supports both message passing model and shared memory model as the parallel distributed programming model. In Round, the message passing model originates in actor model and CSP (Communicating Sequential Processes), and the shared memory model is based on Paxos protocol.

Round Programming Model

Open Standard Protocols

Round is consist of the following open standard network protocols such as JSON-RPC and UPnP.

round_protocol

In addition, Round supports several major programming languages such as Java, JavaScript and Lua. Developers can build distributed frameworks and applications using their favorite programming languages.

Features

In Round, there are the following features to develop distributed frameworks and applications easily.

Zeroconf

In typical cloud systems, users have to set some configuration to start distributed services. Round is designed based on Zeroconf not to set any configurations by users.

For example, a node is added into a cluster of Round automatically after the new node is started without configuration. Other nodes in the same network are received event messages when a node is added or removed.

Zeroconf

Zeroconf is a tecnology to find services without user configuration. In Round, all new nodes are added into a cluster without special configuration and the nodes are available automatically.

Decentralized

Basically, Round is a decentralized distributed system framework,
every nodes in a cluster has equal roll, the cluster has no master node.

round_overview_zeroconf

In addition, Round has a function which elects a leader node to build centric distributed frameworks and applications automatically.

Autonomous

Each node run as an autonomous actor based on the specified behaviors by developers. The nodes communicates messages to other nodes in the same or other clusters based on the specified behaviors autonomously.

round_overview_autonomous

Round is a autonomous programming model like Game of Life. The node has the behavior codes itself. The node runs based on the behavior codes and handles any events autonomously.

Dynamics

Each node is an autonomous and a programmable RPC node.
In Round, you can build distributed frameworks and applications to add behavior scripts and connect events into the scripts dynamically.

auto-configuration

Round supports some dynamic programming languages such ad JavaScript and Java, then you can develop distributed system applications using your favorite programming language.

Resources

Please check the following site to know about Round in more detail and get the source codes 🙂