Ninja: A framework for network services

J. Robert von Behren, Eric A. Brewer, Nikita Borisov, Michael Chen, Matt Welsh, Josh MacDonald, Jeremy Lau, Steve Gribble, David Culler

Research output: Chapter in Book/Report/Conference proceedingConference contribution

Abstract

Ninja is a new framework that makes it easy to create robust scalable Internet services. We introduce a new programming model based on the natural parallelism of large-scale services, and show how to implement the model. The first key aspect of the model is intelligent connection management, which enables high availability, load balancing, graceful degradation and online evolution. The second key aspect is support for shared persistent state that is automatically partitioned for scalability and replicated for fault tolerance. We discuss two versions of shared state, a cluster-based hash table with transparent replication and novel features that reduce lock contention, and a cluster-based file system that provides local transactions and cluster-wide namespaces and replication. Using several applications we show that the framework enables the creation of scalable, highly available services with persistent data, with very little application code — as little as one-tenth the code size of comparable stand-alone applications.

Original languageEnglish (US)
Title of host publicationProceedings of the 2002 USENIX Annual Technical Conference
PublisherUSENIX Association
ISBN (Electronic)1880446006, 9781880446003
StatePublished - 2002
Externally publishedYes
Event2002 USENIX Annual Technical Conference - Monterey, United States
Duration: Jun 10 2002Jun 15 2002

Publication series

NameProceedings of the 2002 USENIX Annual Technical Conference

Conference

Conference2002 USENIX Annual Technical Conference
Country/TerritoryUnited States
CityMonterey
Period6/10/026/15/02

ASJC Scopus subject areas

  • Computer Science(all)

Fingerprint

Dive into the research topics of 'Ninja: A framework for network services'. Together they form a unique fingerprint.

Cite this