Christopher Meiklejohn
Basho Technologies
Network
Latest external collaboration on country level. Dive into details by clicking on the dots.
Publication
Featured researches published by Christopher Meiklejohn.
principles and practice of declarative programming | 2015
Christopher Meiklejohn; Peter Van Roy
We propose Lasp, a new programming model designed to simplify large-scale distributed programming. Lasp combines ideas from deterministic dataflow programming together with conflict-free replicated data types (CRDTs). This provides support for computations where not all participants are online together at a given moment. The initial design presented here provides powerful primitives for composing CRDTs, which lets us write long-lived fault-tolerant distributed applications with nonmonotonic behavior in a monotonic framework. Given reasonable models of node-to-node communications and node failures, we prove formally that a Lasp program can be considered as a functional program that supports functional reasoning and programming techniques. We have implemented Lasp as an Erlang library built on top of the Riak Core distributed systems framework. We have developed one nontrivial large-scale application, the advertisement counter scenario from the SyncFree research project. We plan to extend our current prototype into a general-purpose language in which synchronization is used as little as possible.
european conference on computer systems | 2014
Russell Brown; Sean Cribbs; Christopher Meiklejohn; Sam Elliott
Conflict-Free Replicated Data-Types (CRDTs) [6] provide greater safety properties to eventually-consistent distributed systems without requiring synchronization. CRDTs ensure that concurrent, uncoordinated updates have deterministic outcomes via the properties of bounded join-semilattices. We discuss the design of a new convergent (state-based) replicated data-type, the Map, as implemented by the Riak DT library [4] and the Riak data store [3]. Like traditional dictionary data structures, the Map associates keys with values, and provides operations to add, remove, and mutate entries. Unlike traditional dictionaries, all values in the Map data structure are also state-based CRDTs and updates to embedded values preserve their convergence semantics via lattice inflations [1] that propagate upward to the top-level. Updates to the Map and its embedded values can also be applied atomically in batches. Metadata required for ensuring convergence is minimized in a manner similar to the optimized OR-set [5]. This design allows greater flexibility to application developers working with semi-structured data, while removing the need for the developer to design custom conflict-resolution routines for each class of application data. We also discuss the experimental validation of the data-type using stateful property-based tests with QuickCheck [2].
annual erlang workshop | 2013
Christopher Meiklejohn
We present Riak PG, a new Erlang process group registry for highly available applications. The Riak PG system is a Dynamo-based, distributed, fault-tolerant, named process group registry for use as an alternative to the built-in Erlang process group facility, pg2, and the globally distributed extended process registry, gproc. Riak PG aims to provide a highly-available, fault-tolerant, distributed registry by sacrificing strong consistency for eventual consistency in applications where availability of the registry is paramount to application function and performance.
european conference on computer systems | 2014
Christopher Meiklejohn
The Riak DT library [2] provides a composable, convergent replicated dictionary called the Riak DT map, designed for use in the Riak [1] replicated data store. This data type provides the ability for the composition of conflict-free replicated data types (CRDT) [7] through embedding. Composition by embedding works well when the total object size of the composed CRDTs is small, however suffers a performance penalty as object size increases. The root of this problem is based in how replication is achieved in the Riak data store using Erlang distribution. [4] We propose a solution for providing an alternative composition mechanism, composition by reference, which provides support for arbitrarily large objects while ensuring predictable performance and high availability. We explore the use of this new composition mechanism by examining a common use case for the Riak data store.
pervasive computing and communications | 2017
Christopher Meiklejohn; Peter Van Roy
We provide a lightweight decentralized publish-subscribe framework for supporting large-scale actor communication on edge networks. Our framework, called Loquat, does not depend on any reliable central nodes (e.g., data centers), provides reliability in the face of massive node failures and network partitioning, and provides scalability as the number of nodes increases. We consider that high reliability, i.e., that send operations reach close to 100% of live destination nodes, is a critical property for communication frameworks on edge networks. But reliability is difficult to achieve in a scalable way on edge networks because of the networks dynamicity, i.e., frequent node failures and partitioning. For example, both Internet of Things networks and mobile phone networks consist of devices that are often offline. To achieve reliability, our framework is based on two hybrid gossip algorithms, namely HyParView and Plumtree. Hybrid gossip algorithms combine gossip with other distributed algorithms to achieve both efficiency and high resilience. Our current implementation is written in Erlang and has demonstrated scalability up to 1024 nodes in Amazons cloud computing environment.
consumer communications and networking conference | 2016
Christopher Meiklejohn; Seyed Hossein Haeri; Peter Van Roy
We present a work in progress report on a new programming model that supports declarative, functional style aggregation operations over devices at the edge. This programming model bridges the gap between the two competing approaches for large-scale aggregations, streaming all data back to a central coordinator versus designing an optimized, distributed algorithm, by leveraging convergent data structures, dynamic scoping, and a declarative functional semantics implemented by a distributed runtime. We motivate our design with an industrial application susceptible to message reordering and arbitrary message delays on an unreliable network.
european conference on computer systems | 2016
Paolo Viotti; Christopher Meiklejohn; Marko Vukolić
We propose a novel approach to the verification of consistency models implemented in distributed storage systems. We base our work on a declarative semantic model defining consistency conditions as predicates expressing ordering and visibility of operations. This model allows for a testing methodology focused on correctness properties rather than operational semantics. Finally, we present and discuss the design and preliminary implementation of a practical property-based consistency verification framework.
Electronic Proceedings in Theoretical Computer Science | 2016
Seyed Hossein Haeri; Peter Van Roy; Carlos Baquero; Christopher Meiklejohn
-This work was partially funded by the SyncFree project in the European Seventh Framework Programme under Grant Agreement 609551 and by the Erasmus Mundus Joint Doctorate Programme under Grant Agreement 2012-0030. Our special thanks to the SyncFree peers for their prolific comments on the early versions of this work. We would like to also thank the anonymous referees for their constructive discussion over the ICE forum.
Proceedings of the Posters & Demos Session on | 2014
Christopher Meiklejohn
We propose a novel algorithm for providing highly-available and fault-tolerant distributed search queries in a Dynamo-inspired distributed data store. It leverages the use of advanced causality tracking mechanisms to allow quorum reads of an inverted index, while maintaining the ability to reason about the correct response. This algorithm improves on existing distributed search mechanisms by providing higher availability in the event of failures, given the use of multiple replicas.
symposium on reliable distributed systems | 2015
Christopher Meiklejohn; Peter Van Roy