Research

The list of public research documents:

Adaptive backpressure algorithm for reactive data flows Link to heading

Type: technical report

In a data–intensive network application, the reactive streams specification could be applied for handling data flows, increasing resource consumption of the server machine. It’s achieved by integrating backpressure into the data flow model. The benefit of this approach is an increased ability of resources control and easy auto-scaling server configuration. Reactive data processing requires two parts of the data flow: producer and consumer. One end of the flow could be a socket in a common data-driven network application, and another could be a storage layer. There are many different implementations for reactive processing of network connections, such as Netty, VertX, WebFlux but not so many implementations for working with a file system. All current reactive implementations of file-system consumers and producers are not very good in terms of memory consumption and processing speed in an asynchronous application. In order to fix this gap, the new algorithm for managing backpressure on file-system consumers was introduced and implemented in an open-source library github.com/cqfn/rio providing reactive API for the file-system objects.

By: KIRILL CHERNYAVSKIY

Download PDF.

Atomic commit protocol for DeGitX project Link to heading

Type: technical report

To achieve strong consistency in DeGitX we need to solve a problem of atomic commit of Git referencesover N git repository replicas. It isn’t always possible to undo changes in git, so we need to manage git transactions and provide abortion mechanism. Fortunately, some atomic commit algorithms exists,so we just need to adapt them to git references update. It is two-phase commit protocol (2PC), three-phase commit protocol (3PC) and Paxos-commit. Theoretically, each of them could solve ourproblem. We have investigated how they could be implemented with git. On the git side, we can use gitreference-transaction hook to handle prepare and commit states.

By: STEPAN VALIAVSKII and KIRILL CHERNYAVSKIY

Download PDF.

DeGit - distributed git repositorymanager Link to heading

Type: white paper

DeGitX is a distributed git repository manager It provides a front-end interface for git operations byexposing one of the supported endpoints for git clients, and hides the distributed nature of git storage located on back-end nodes. The back-end keeps git repository replicas simultaneously on multiple different nodes to scale up the read capacity, increase durability and provides better availability, especially for different geographically distributed regions.

By: KIRILL CHERNYAVSKIY

Download PDF.