Decentralize All The Things! They gave us a fully decentralized Internet and we used it to build web services–Facebook, Twitter, Gmail, iCloud–so massively centralized they verge on being quasi-medieval fiefdoms.
Now we’re building the Internet of Someone Else’s Things, wherein every room of every home will contain devices controlled by servers the homeowners don’t know, control, or understand. What is wrong with us? Don’t try to blame ignorant, tech-illiterate users. The world’s software developers do exactly the same thing, every time we push to or pull from Github: Bruce Sterling calls them “the Stacks”: the gargantuan American companies that control so much of what the world does on the Internet. Distributed systems for fun and profit. Introduction I wanted a text that would bring together the ideas behind many of the more recent distributed systems - systems such as Amazon's Dynamo, Google's BigTable and MapReduce, Apache's Hadoop and so on.
In this text I've tried to provide a more accessible introduction to distributed systems. To me, that means two things: introducing the key concepts that you will need in order to have a good time reading more serious texts, and providing a narrative that covers things in enough detail that you get a gist of what's going on without getting stuck on details. It's 2013, you've got the Internet, and you can selectively read more about the topics you find most interesting. Readings in distributed systems. This post is a work in progress.
Inspired by a recent purchase of the Red Book, which provides a curated list of important papers around database systems, I’ve decided to begin assembling a list of important papers in distributed systems. Similar to the Red Book, I’ve broken each group of papers out into a series of categories, each highlighting a progression of related ideas over time focused in a specific area of research within the field. Keeping the tradition of the Red Book, I’ve included both papers which resulted in very successful systems and/or techniques, as well as papers which introduced a concept which was either immediately dismissed or proven incorrect. This emphasizes the progression of ideas which lead to the development of these systems.
Readings in distributed systems. (194) What is the best literature on the design of database platforms? Why? Here's a list of useful database papers and books, accompanied with brief descriptions of what to expect from each and links to online versions if available.
Many of the texts are drawn from Samuel Madden's MIT Database Systems class  and from the Readings in Database Systems book that Adam D'Angelo mentions in his answer and that is also included below, filtered by the ones that I've found to be either more practical, interesting, and informative. Database ResearchSometimes referred to as the "Red Book," this anthology contains a collection of seminal research papers in the field of databases, covering research in query processing, data and transaction management, data warehousing, and more: Joseph M.
Hellerstein and Michael Stonebraker, editors. Readings in Database Systems. 4th edition. Overview of Database Management Systems Joseph Hellerstein and Michael Stonebraker. Edgar F. Queues. Distributed Systems Reading List. Introduction I often argue that the toughest thing about distributed systems is changing the way you think.
The below is a collection of material I've found useful for motivating these changes. Thought Provokers Ramblings that make you think about the way you design. Not everything can be solved with big servers, databases and transactions. Amazon Somewhat about the technology but more interesting is the culture and organization they've created to work with it. Distributed Systems Reading List. Introduction I often argue that the toughest thing about distributed systems is changing the way you think.
The below is a collection of material I've found useful for motivating these changes. Thought Provokers Ramblings that make you think about the way you design. Not everything can be solved with big servers, databases and transactions. Amazon. The Dempsy Real-Time BigData Framework. Welcome to the Dempsy project - a framework for the easy implementation of stream-based real-time fully-distributed elastic analytics processing applications.
Features If you're already familiar with real-time stream based BigData engines, the following list of features will distinguish Dempsy from the others: Fine grained "actor model": Dempsy provides for the fine grained distribution and lifecycle management of (potentially) millions of "actors" (message processors in Dempsy parlance) across a large cluster of machines allowing developers to write code that concentrates on handling individual data points in a stream without any concern for concurrency. Inversion of control programming paradigm: Dempsy allows developers to construct these large-scale processing applications decoupled from all infrastructure concerns providing a means for simple and testable POJO implementations. Documentation. Model-based monitoring with CFEngine - CFEngine - Distributed Configuration Management. "A model is a lie that helps you to see the truth.
" (Howard Skipper) "There is nothing more practical than a good theory. " (Kurt Lewin) The past year has seen a plethora, one might even say an entire movement, of talks and blog posts under the heading "Monitoring Sucks". Mesos: Dynamic Resource Sharing for Clusters. Process Perfection. Well over a year ago, in a conversation with Alexis Richardson, I came up with a catchy acronym to articulate an idea that I had been kicking around as a simple way to respond to all of the Sturm und Drang in the press and the blogosphere about "lock-in", "data portability" and reliability of cloud computing providers.
I said -- "You know what, mate, done properly, it would be like a RAID setup -- it would be an array of cloud providers. Umm, yeah, it would be RAIC! 'Redundant Array of Independent Cloud providers'". Alexis, as I recall, burst out laughing, and said something like "You better trademark that, Mark. That's great. " A few weeks later, I sat down, and wrote a blog post to try to describe the idea in some detail. Despite all that, the term has gotten some traction. (51) Distributed Systems: What are the best resources for learning about distributed file systems. I highly recommend reading NFS Illustrated.
Broadly speaking, distributed filesystems have frontends ( which deal with naming, namespace, file semantics, file access protocols, locking protocols, serialization formats, resource discovery, authentication, caching, how protocol implementation interacts with the client OS etc.) and backends ( specifically, on disk formats, write allocation, filesystem consistency, disk interaction, read and write performance and the like). This book is a somewhat gentle introduction the frontend aspects and later on also talks about other more truly distributed filesystems. Distributed is a rather overloaded term in the context of distributed filesystems. so with it can mean multiple things: 1. 2. Finally, another point of note is that even if you want to have a fully distributed filesystem, understanding the standard file access protocols built into clients ( i.e.
(51) What are some good resources for learning about distributed computing? Why. In all the very good answers, I believe that Lamport's paper on "Time, Clocks and Ordering of Events in a Distributed System" got missed out. Distributed-systems-readings. Systems Graduate level operating systems courses don't typically have notes - they all come with long reading lists taken from SOSP and other places. CAP Twelve Years Later: How the "Rules" Have Changed. This article first appeared in Computer magazine and is brought to you by InfoQ & IEEE Computer Society. The CAP theorem asserts that any networked shared-data system can have only two of three desirable properties.
However, by explicitly handling partitions, designers can optimize consistency and availability, thereby achieving some trade-off of all three. In the decade since its introduction, designers and researchers have used (and sometimes abused) the CAP theorem as a reason to explore a wide variety of novel distributed systems. The NoSQL movement also has applied it as an argument against traditional databases.
Design and Implementation of a Real-Time Cloud Analytics Platform. In Memory Data Grid Technologies. IndexTank is now open source! We are proud to announce that the technology behind IndexTank has just been released as open-source software under the Apache 2.0 License! We promised to do this when LinkedIn acquired IndexTank, so here we go: indextank-engine: Indexing engine indextank-service: API, BackOffice, Storefront, and Nebulizer We know that many of our users and other interested parties have been patiently waiting for this release.
We want to thank you for your patience, for your kind emails, and for your continued support. We are looking forward to seeing IndexTank thrive as an open-source project. Paper: Don’t Settle for Eventual: Scalable Causal Consistency for Wide-Area Storage with COPS. Teams from Princeton and CMU are working together to solve one of the most difficult problems in the repertoire: scalable geo-distributed data stores. Lock-free extensible hash tables back by split-ordered lists; a summary. Save this one for a crazy Friday night! : programming. Cassandra vs MongoDB vs CouchDB vs Redis vs Riak vs HBase comparison. DIDO_White_Paper_110727. Engineering: Tools for Debugging Distributed Systems. Golden Orb. Realtime Hadoop usage at Facebook: The Complete Story. Neil’s Research Blog. Advanced Computer Science Courses : Paper Trail. Below I’ve collected some links to advanced computer science courses on-line.
Zuse-Institut Berlin: Publikationen. 35+ Use Cases for Choosing Your Next NoSQL Database. We've asked What The Heck Are You Actually Using NoSQL For?. We've asked 101 Questions To Ask When Considering A NoSQL Database.