
NSF Org: |
CCF Division of Computing and Communication Foundations |
Recipient: |
|
Initial Amendment Date: | August 16, 2016 |
Latest Amendment Date: | July 7, 2018 |
Award Number: | 1637385 |
Award Instrument: | Standard Grant |
Program Manager: |
Tracy Kimbrel
CCF Division of Computing and Communication Foundations CSE Directorate for Computer and Information Science and Engineering |
Start Date: | October 1, 2016 |
End Date: | September 30, 2019 (Estimated) |
Total Intended Award Amount: | $600,000.00 |
Total Awarded Amount to Date: | $600,000.00 |
Funds Obligated to Date: |
|
History of Investigator: |
|
Recipient Sponsored Research Office: |
150 MUNSON ST NEW HAVEN CT US 06511-3572 (203)785-4689 |
Sponsor Congressional District: |
|
Primary Place of Performance: |
AKWatson Hall New Haven CT US 06520-8285 |
Primary Place of
Performance Congressional District: |
|
Unique Entity Identifier (UEI): |
|
Parent UEI: |
|
NSF Program(s): | Algorithms in the Field |
Primary Program Source: |
|
Program Reference Code(s): | |
Program Element Code(s): |
|
Award Agency Code: | 4900 |
Fund Agency Code: | 4900 |
Assistance Listing Number(s): | 47.070 |
ABSTRACT
The Fuzzy Log project seeks to democratize the design and development of complex distributed systems, accelerating innovation by allowing developers to focus on high-level application functionality instead of low-level protocol details. Examples of such complex systems include Software Defined Network controllers for the network, filesystem namespaces for storage, schedulers and allocators for big data run-times, and general-purpose coordination services. These distributed systems require large numbers of highly trained engineers and scientists to construct and operate them. Simplifying the design, development, deployment and debugging of such systems can drastically reduce the cost to create and operate massively scalable cloud services that are reliable and responsive. More broadly, the Fuzzy Log project will also act as an educational gestalt that combines distributed systems and theory to improve the state of the art in cloud computing.
A Fuzzy Log is a partially ordered shared log that multiple clients can append to and read from concurrently. As in other shared log designs, applications can extract properties such as consistency, durability, and concurrency control from the Fuzzy Log. However, unlike a conventional shared log, a Fuzzy Log does not impose a total order over all entries. When clients append to the log, they specify dependencies to define a partial order; when they read from the log, the system returns entries in some sequence satisfying the partial order. Fuzzy Log applications are simple to design, implement, and debug, with full-fledged distributed systems realized in hundreds of lines of code. Fuzzy Log applications are also fast and scalable, extracting parallelism from workloads while imposing order only when strictly necessary.
PUBLICATIONS PRODUCED AS A RESULT OF THIS RESEARCH
Note:
When clicking on a Digital Object Identifier (DOI) number, you will be taken to an external
site maintained by the publisher. Some full text articles may not yet be available without a
charge during the embargo (administrative interval).
Some links on this page may take you to non-federal websites. Their policies may differ from
this site.
PROJECT OUTCOMES REPORT
Disclaimer
This Project Outcomes Report for the General Public is displayed verbatim as submitted by the Principal Investigator (PI) for this award. Any opinions, findings, and conclusions or recommendations expressed in this Report are those of the PI and do not necessarily reflect the views of the National Science Foundation; NSF has not approved or endorsed its content.
The FuzzyLog project investigated new abstractions for designing, implementing, and verifying distributed systems.
The FuzzyLog is a partially ordered shared log abstraction. In the past few years, shared logs have enormously simplified the construction of distributed systems by hiding the complexity of asynchrony and failures behind a simple, data-centric abstraction. However, this simplicity comes at the cost of scaling and availability, since shared logs require all commands in a distributed system to be totally ordered. The FuzzyLog advances this state of the art by providing the simplicity of a shared log while allowing for the partial ordering of commands. FuzzyLog applications can scale linearly and tolerate network partitions while retaining simple code and design. The FuzzyLog system was presented at the OSDI 2018 conference.
While systems such as the FuzzyLog make it easier to build distributed applications, their own implementations are complex and difficult to evolve. To make it simpler to build and reason about such implementations, we proposed the Write-Once Register (WOR), which is a programming and theoretical abstraction for hiding the logic of a single consensus slot. WORs can be combined in different ways to implement systems such as shared logs and fault-tolerant atomic commit. We proposed a system called WormSpace that provides the WOR as a first-class programming abstraction; this work was presented at the SoCC 2019 conference.
The abstractions proposed in the FuzzyLog project were successful in providing a common collaborative platform for systems practitioners and theoreticians. The FuzzyLog system introduces new distributed algorithms for transaction ordering that advance the state of the art. The WormSpace system is the first fully verified distributed systems stack from the application to the operating system.
In terms of broader impact, the abstractions in the FuzzyLog project are already beginning to see adoption in real production systems. Systems are increasingly distributed by default, as we move towards a mix of edge devices and powerful cloud platforms to serve applications ranging from the mundane to the mission-critical. In such an environment, the inherent complexity of distributed coordination results in systems that are slow to develop and evolve, and prone to failures and inconsistency. By simplifying the construction and formal verification of distributed systems, we accelerate innovation while still providing extremely high levels of consistency and fault-tolerance.
Last Modified: 01/13/2020
Modified by: James Aspnes
Please report errors in award information by writing to: awardsearch@nsf.gov.