High Availability In Cheap Distributed Key Value Storage

2y ago
86 Views
2 Downloads
2.60 MB
14 Pages
Last View : 18d ago
Last Download : 3m ago
Upload by : Halle Mcleod
Transcription

High availability in cheap distributed key value storageThomas KimCarnegie Mellon UnivDaniel Lin-Kit WongCarnegie Mellon UnivMichael KaminskyCarnegie Mellon Univ, BrdgAIAbstractMemory-based storage currently offers the highest-performancedistributed storage, keeping the primary copy of all datain DRAM. Recent advances in non-volatile main memory(NVMM) technologies promise latency similar to DRAMat reduced cost and energy, but will make providing highavailability more challenging. Previous approaches to failurerecovery involve maintaining multiple identical replicas orrelying on fast offline restoration of data from backup replicasstored on SSD. Unfortunately, NVMM’s combination of lowerwrite throughput and increased storage density means thatoffline restoration can no longer provide sufficiently fast recovery, and maintaining multiple identical replicas is generallycost prohibitive.CANDStore is a strongly consistent, distributed, replicatedkey-value store that uses a new fast crash recovery protocol. As a result, CANDStore can use NVMM and NVMeSSD technology to provide low-latency distributed storagethat is cheaper and higher-availability than existing mainmemory-based distributed storage. Our evaluation shows thatCANDStore’s recovery protocol enables the system to restoreperformance and meet SLOs after the failure of a primarynode 4.5–10.5x faster than offline recovery.CCS Concepts Computer systems organization Availability; Redundancy.Keywordspersistent memory, distributed storage, fault toleranceACM Reference Format:Thomas Kim, Daniel Lin-Kit Wong, Gregory R. Ganger, MichaelKaminsky, and David G. Andersen. 2020. High availability inPermission to make digital or hard copies of part or all of this work forpersonal or classroom use is granted without fee provided that copies are notmade or distributed for profit or commercial advantage and that copies bearthis notice and the full citation on the first page. Copyrights for third-partycomponents of this work must be honored. For all other uses, contact theowner/author(s).SoCC ’20, October 19–21, 2020, Virtual Event, USA 2020 Copyright held by the owner/author(s).ACM ISBN 19111.3421290Gregory R. GangerCarnegie Mellon UnivDavid G. AndersenCarnegie Mellon Univ, BrdgAIcheap distributed key value storage. In ACM Symposium on CloudComputing (SoCC ’20), October 19–21, 2020, Virtual Event, USA.ACM, New York, NY, USA, 14 pages. onDistributed storage systems that provide high performance,fault tolerance, and strong consistency are at the core of today’slarge-scale Internet services [11, 13, 15, 32]. Non-volatilemain memories (NVMMs) offer an enticing design option forbuilding these high performance storage systems. One mighthope that they could offer the performance of DRAM-basedsystems such as RAMCloud [29] and FaRM [13], while providing durability and having lower total cost. Such hopes arenot fanciful: compared to DRAM, one can pack about 4x moreof Intel’s Optane [20], for example, into a single machine atapproximately 1/7th the cost and on average an order of magnitude less energy [4] [5] [6]. Unfortunately, today’s NVMMscome with drawbacks that complicate the design of failurerecovery in distributed storage systems. Overcoming thesedrawbacks at the design level is the focus of this paper. Thecombination of substantially lower write bandwidth (7x) [7]and higher density (4x) compared to DRAM means that thetime to recover from a failed node is up to 28x longer than aDRAM-based system with a similar number of total DIMMs.Using traditional mechanisms that temporarily halt servingrequests during recovery, each machine failure would take 28xlonger to recover when using NVMM.Our main contribution is enabling high availability when using NVMM, through our fast online recovery protocol, whichwe demonstrate through CANDStore, a consistent, available,non-volatile, distributed store, that leverages NVMM to provide low cost distributed key-value (KV) storage. We achievethis by leveraging temporal locality in datacenter workloadsto enable online recovery. To implement online recoverywith strong consistency, we design a Raft-based protocol thatincorporates ideas from Cheap Paxos [23].In CANDStore, we forego standard offline recovery approaches and focus on techniques to make online recoveryfeasible and performant. We leverage two observations thatallow us to achieve this goal: first, real-world workloads haveskewed request distributions. This property allows CANDStore to guide the online recovery process in a manner that

SoCC ’20, October 19–21, 2020, Virtual Event, USAThomas Kim, Daniel Lin-Kit Wong, Gregory R. Ganger, Michael Kaminsky, and David G. AndersenStorage typeCost per gigabyte (USD)DRAM35.16 [1]Intel Optane NVMM 4.51 [1]SSD0.32 [7]Figure 1: Cost of different types of storage.enables the majority of requests to be served at near-peakperformance before all of the data is copied from a backupnode’s SSD to the new primary’s main memory.Second, we observe that the availability of a distributedstorage system is defined by its ability to achieve performanceservice level objectives (SLOs). This allows CANDStore totolerate some performance degradation as long as it meetsSLOs. We use this performance leeway to, with degradedperformance, serve requests for keys that are not yet populatedon the new primary via point queries to one of the backups inthe cluster, described in Section 5.3.To provide consistency and fast failure recovery, CANDStore uses a decentralized distributed consistency protocolbased on a modified version of Raft [27]. This protocol ensuresthat key-value updates are replicated consistently and durably,and that stale or inconsistent reads are never returned to theclient. The protocol is designed to enable CANDStore to usea heterogeneous layout of nodes, described in Section 3 andFigure 2, including a backup that stores all keys and valueson NVMe SSD to reduce the cost of replication. We addadditional phases to the failure detection and leader electionparts of the protocol aimed at minimizing the performancedegradation experienced following primary failure, which wedescribe in Section 4. We discuss the design of our protocolfor consistently handling non-primary failure in Section 6.We evaluate the performance of our recovery protocol andfind that it is possible to recover from primary node failure4.5–10.5x faster than offline recovery approaches running onthe same cluster configuration.2Background and challengesCANDStore aims to provide low-cost, strongly-consistentstorage with high availability. In Section 2.1, we preciselydefine availability in terms of meeting SLOs, and describehow that can simplify the problem of achieving high availability. Section 2.2 discusses how our system design and crashrecovery protocol compare to standard approaches, and whatadvantages CANDStore provides. Finally, we describe ourassumptions about the workload (Section 2.3) and data model(Section 2.4), and discuss how these characteristics enableour system to achieve high availability at low cost.2.1Availability and SLOsTwo important metrics, mean time to failure (MTTF) andmean time to repair (MTTR) [16, 31], help quantify a system’s availability. MTTF measures how long, in expectation,a system operates normally before experiencing downtime.MTTR describes how long it takes to restore the system toits previous level of operation after a failure. The availabilityMTTFof the system is then MTTF MTTR. In our work, given thattime to failure (TTF) is determined primarily by events wecannot control, such as unexpected hardware, OS, or softwarecrashes, we design our online recovery protocol to minimizetime to repair (TTR) in order to increase availability.We use Service Level Objectives (SLOs) to provide aconcrete and quantitative description of whether a system isdown or not. SLOs describe guarantees about the performanceof a storage system, which users depend on when buildingapplications on top of distributed storage. SLOs describe thebaseline performance that can be expected of the system, andviolating these SLOs means that the storage system can nolonger serve the function it was intended to – in other words, itbecomes functionally unavailable. A system can be considered“down” if it is unable to meet its SLOs, and can be considered“repaired” once it has restored its ability to serve its SLOs.The TTR of a system is the duration of this downtime.To provide high availability despite the various challengesposed by CANDStore’s cost-saving design, which we describein Section 3, we design a primary crash recovery protocolthat focuses on restoring the system’s ability to meet SLOsas quickly as possible. This is in contrast to typical crashrecovery protocols for high performance distributed storagethat instead aim to minimize the time needed to restore fullperformance to the system [29].2.2Limitations of offline recoveryA common approach to providing high-throughput, lowlatency, and fault-tolerant KV storage is to use primary-backupreplication. Modern primary-backup systems typically involvea single primary that replicates updates to one or more backups. In the event of node failure, typically an external authority(e.g., a configuration management system like Zookeeper [19])alters the cluster’s configuration and instructs backup nodesto undergo whatever steps are necessary to restore availabilityto the system. This typically involves reconstructing a newprimary from the backups, or promoting one of the backups tobe the primary. Current state-of-the-art recovery for primarybackup replication involves fast, parallel log ingest and replay[28]. While this is feasible for recovering relatively smalldatasets stored in DRAM, as we mentioned in Section 1, challenges introduced when using NVMM necessitate a differentapproach to recovery.

SoCC ’20, October 19–21, 2020, Virtual Event, USAHigh availability in cheap distributed key value storagePrimary-backup replication is appealing because it offershigh performance and simplicity, and as a result is used inmany distributed storage systems such as RAMCloud andFaRM. RAMCloud uses primary backup with the primarystoring data on DRAM and backups storing data on SSD.Leveraging DRAM in this way enables RAMCloud to achievehigh throughput and low latency distributed storage. Oursystem uses a similar node layout to RAMCloud, with ourprimary storing data on NVMM, and backups storing data onSSDs.FaRM, on the other hand, uses a homogeneous node layoutwhere primary nodes and backup nodes both store their datain non-volatile DRAM. In FaRM, primary crash recoveryinvolves identifying and consistently executing transactionswhich were interrupted by the primary crash, then shifting loadto one of the backups. This design enables FaRM to seamlesslyresume operations following the failure of a primary, butcarries with it the extra cost of maintaining backups that usethe same expensive high performance storage as the primary.In contrast to primary backup, distributed consensus protocols such as Paxos [22] and Raft [27] can provide consistencywithout a centralized configuration coordinator.The increased density and decreased write throughput ofNVMM means traditional offline approaches to crash recoverythat read logs from backups and write them to a new primarycan no longer provide a low TTR. Meanwhile, maintainingmultiple replicas with expensive high performance storagecan be prohibitively expensive. In CANDStore, we seek toachieve the best of both worlds – low TTR and low cost. Toachieve this high availability without incurring extra cost inan NVMM-based distributed key-value store, it is necessaryto rethink traditional approaches to primary crash recovery.In our system, we design a protocol which allows for onlinerecovery of after primary failure, solving the problem of slowoffline recovery. We achieve this with lower resource use, andconsequently cost, compared to standard primary-backup styleapproaches. One of the principal challenges in designing thisprotocol was in meeting SLOs during the live recovery. Ourprotocol ensures linearizability by leveraging properties ofthe Raft protocol upon which our protocol is based.2.3Workload assumptionsReal world workloads often exhibit a high degree of temporal(and spatial) locality. Recent work shows that even YCSB’szipf distribution, a commonly used distribution when generating workloads to benchmark systems, exhibits less spatiallocality than modern datacenter workloads [9]. We designour system to target these skewed workloads to best mirrorthe characteristics of real datacenter workloads. Section 5.1describes how we take advantage of workload skew to enableonline recovery.2.4Data modelThe data model we consider in this work is a simple KVinterface composed of single-key Gets and Puts. For a detaileddescription of the KV operations supported, see Figure 5.We believe that our techniques to improve crash recoverycan be extended to data models involving more complex KVoperations and transactions, but we leave the design of theseto future work.In this paper, we use “keys” to refer to key-value pairs,except in the context of witnesses (Figure 2) and popularitysampling (Section 3.3).3Steady state operationCANDStore is a distributed KV store designed to provide highavailability at low cost in the face of primary failure, despitethe infeasibility of fast offline recovery. In this section, weintroduce CANDStore and describe the steady state operationof a single shard of a sharded datastore. The system buildsknowledge about workload skew during steady state operation,as uses this to speed up the recovery process, detailed inSection 3.2.We begin in Section 3.1 by describing how Gets and Putsare handled and replicated in the context of a simplified threenode cluster consisting of a primary node, a backup node, anda witness node (Figure 2). The witness node behaves similarlyto an auxiliary node from Cheap Paxos [23], and also serves asimilar purpose to hot swap space in a RAMCloud cluster. Itis responsible for enabling consistency without paying the fullcost of a new primary or backup node, as well as serving as thenew primary in the event the primary fails. By including thewitness node in the consensus protocol, rather than allocatingit on-demand after primary failure, we can take advantage ofits knowledge about which local keys are up-to-date whenhandling requests during live recovery (Section 5.3). However,to realize this cost-effective heterogeneous node layout whilemaintaining consistency, we needed to make several modifications to the Raft protocol, which we explain in Sections 3.1and 4. In Section 3.2 we describe the optimizations we usedto improve the performance of the backup node. Finally, wedescribe how our system identifies distribution skew in clientrequests (Section 3.3) and how we took advantage of this skewto improve the TTR of the system following primary failure(Section 4).3.1Gets and Puts in steady stateWe use a heterogeneous node layout in CANDStore to providecost savings compared to a homogeneous node layout liketraditional Raft/Paxos formulations and FaRM [13]. In thissection, we outline the modifications we made to the Raftprotocol to provide consistency when handling client requestsin the absence of failures.

SoCC ’20, October 19–21, 2020, Virtual Event, USAPrimaryNVMMhash tableThomas Kim, Daniel Lin-Kit Wong, Gregory R. Ganger, Michael Kaminsky, and David G. AndersenBackupWitnessNVMM bufferNVMM bufferSSD logNVMMhash tableFigure 2: Node types in CANDStore.Client Get requests, shown in Figure 3, can be handled in 1round trip by the primary using leases [26]. The client sendsGet(key) to the primary, and the primary responds with thevalue corresponding to key.Client Put requests, also shown in Figure 3, require theprimary to replicate the request to a quorum of nodes inthe cluster before committing and responding to the client.Similarly to Raft, this replication is handled by AppendEntriesRPCs. However, because the witness nodes behave similarlyto Cheap Paxos and do not store values for committed updates,we impose the additional constraint that the quorum for clientupdates contains all voting backup nodes in the current clusterconfiguration. In the event of a backup node failure, the systemmust execute a viewchange to remove the failed node fromthe cluster configuration and, by extension, the quorum.Including all backup nodes in the quorum for configurationchange creates a situation where it is impossible to remove abackup node from the configuration. We solve this problemby using a mechanism similar to Cheap Paxos. If a backupnode crashes and must be removed from the configuration,we allow witnesses to step in and facilitate the configurationchange by replicating and committing the new configurationto stable storage.Upon receiving an AppendEntries request, the backuppersists it to a small NVMM buffer, then responds to theprimary. These updates are batched and periodically writtenout to SSD by a dedicated writeback thread. This designhas two main advantages: backup nodes can replicate keysat NVMM latency (rather than SSD latency), and batchingwrites to an SSD improves its throughput (Section 7.6).A witness node receives only the key and a logical timestampcomposed of the Raft term and index, in a similar mannerto Cheap Paxos. This creates an issue during leader electionwhich we address in Section 4.2.Each node commits updates in a different way. The primarynode commits updates by writing the key, value and logicaltimestamp to its local NVMM-backed hash table. The backupcommits updates by serializing the key, value, and logicaltimestamp to SSD, then updating its DRAM index to reflectthe location and timestamp of the latest update of the key.The witness commits updates by writing the key and logicaltimestamp to its underlying hashtable.3.2Improving backup performanceAs we will discuss in Section 5, the performance of thebackup node is the most important factor in quickly restoringthe system to in-SLO operation. In this section, we discussthe techniques we use to optimize the operation of the backupnode to facilitate faster crash recovery.Figure 4 describes the internal design of a backup node. Toimprove its throughput and latency, each backup node usesmultiple workers, each maintaining exclusive write accessto their own NVMM-resident buffers and SSD-resident logs.Each worker maintains two sets of logically-separate NVMMbuffers and SSD log files, one for popular (i.e., “hot”) keys andone for unpopular (i.e., “cold”) keys. We discuss the purposeof separating hot and cold keys in Section 3.3. Each workerhas three threads, one to handle RPCs (not explicitly picturedin Figure 4), one to write back batches of updates from theNVMM buffer to the SSD log, and one to garbage-collect(GC) outdated log entries.Upon receiving a key update from the primary, the RPChandler thread checks whether the key is in the hot or cold set,then writes it to the appropriate NVMM buffer before sendinga success response to the primary.The writeback thread sequentially iterates through all ofthe updates written to the NVMM buffer, waiting for eachentry to be committed. Once enough entries on the NVMMbuffer have been committed to fill a batch, the batch is thenserialized out to SSD. Batching in this way enables the SSDto achieve maximum write throughput. The writeback threadalso updates the shared DRAM index after writing a batchto the SSD log, discards the NVMM-resident copy of thebatch, and updates the DRAM index to reflect the latest logicaltimestamp for each batch entry. The DRAM index is onlyupdated if the entry has an equal or greater logical timestampto the timestamp stored in the index.The garbage-collection thread periodically reads a batchof entries from the tail of the log, discarding stale entriesand writing non-stale entries back onto the corresponding“hot” or “cold” NVM buffer. The staleness determinationis handled by reading the latest logical timestamp from theDRAM index, and the determination of which buffer the entryshould be written to is handled in the same way as the RPChandler thread. This garbage collection process serves twomain purposes: First, it reduces the log’s footprint on SSD,and second, it enables keys to move between the hot and coldsections of the log even if they are never updated by the client.3.3Proactively identifying popular keysTo speed up the recovery process (detailed in section 4), weseparate the backup logs into two separate contiguous regionson SSD: one region for the popular or hot keys, and one regionfor less popular or cold keys. The placement of a key into one

SoCC ’20, October 19–21, 2020, Virtual Event, USAHigh availability in cheap distributed key value ries(.)SuccessSuccessAppendEntries(.)SuccessFigure 3: Steady state RPC behavior.Put(key,value)BackupWNWNWorker WKNVMM buffer.GC threadwriteback thread.SSD logtailheadshared DRAM indexFigure 4: Layout of a single backup worker.of these regions is decided by the writeback threads, and isbased on a continuous sampling of the client requests by theprimary.The sampling mechanism we use is similar to that applied bycache admission policies [8]. Upon receiving a client request,the primary, with some low probability (i.e., 0.001), keepstrack of the key for that particular request. Periodically, thelist of keys that were tracked by the primary is sent to thereplica, which maintains a fixed-size list of the most popularkeys (using an LRU eviction policy). This list of popular keysis then used by the write-back threads to make a placementdecision when updates are committed to the on-SSD log.CANDStore’s garbage collection mechanism, as describedin the preceeding subsection, ensures that “cold” keys whichwere, by chance, placed into the “hot” log will eventually bewritten to the “cold” log, and vice versa.The simplicity of the garbage collection mechanism doesresult in some degree of write amplification, potentially affecting the lifespan of the SSDs. Smarter policies for determiningwhen garbage collection should be executed would reduce thisproblem: for example, only garbage-collecting batches with alarge percentage of invalid entries, or reducing the frequencyof garbage collection during periods when the hot/cold setsremain stable.3.4Steady state overheadDuring steady state operation, the majority of protocol-relatedmessages are piggybacked on client requests. Heartbeatsare implicitly piggybacked on AppendEntries RPCs whenreplicating client Puts, and in the absence of client Puts, theprimary sends heartbeats to every other node in the cluster ata rate that does not burden the network.The CANDStore protocol does incur overhead in the keypopularity propagation, where the primary periodically notifies the backups about frequently read keys. However, this isnot a significant overhead, as we expect to send these updatesinfrequently, perhaps once every few seconds.The largest overhead incurred by the CANDStore protocolare the additional messages that must be sent to the witnessnodes when replicating client Puts, with 𝑁 additional messagesrequired for each Put where 𝑁 is the number of witnesses.In cases where the value is comparable in size to the key,this overhead can be up to 33% increase in communicationoverhead for Put-only workloads. In cases where the value islarger than the key, this overhead is lower since CANDStoredoes not transmit values to the witness during steady stateoperation.

SoCC ’20, October 19–21, 2020, Virtual Event, USAFigure 5: CANDStore RPCsRecipientContentsbackup, witness term, leaderid, prevlogindex,prevlogterm, entriesprimary, witness backup, witness term, candidateId,lastLogIndex, lastLogTermclientprimarykeyclientprimarykey, valuewitness, primary , indexRPC typeSenderAppendEntries primaryResponse contentsterm, successRequestVoteterm, lastLogIdxvoteGrantedvaluesuccesslarge batch of entries4k batch of Thomas Kim, Daniel Lin-Kit Wong, Gregory R. Ganger, Michael Kaminsky, and David G. AndersenHandling failuresIn the event of primary failure, there are four differencesbetween our protocol and the standard Raft protocol. Inthis section, we explain these differences and prove that ourprotocol maintains both consistency and liveness. A timelineof our recovery protocol is shown in Figure 6.4.1to the index received in the RequestVote response. This guarantees that leader election will eventually terminate and choosea new leader.Upon election, the new leader first compares itslastLogIndex with lastLogIndexOld. If they areequal, then leader election is complete. However, if they arenot equal, then the new leader enters the Reconciliation phase,described in the next section.Leader electionThe leader election process in CANDStore is similar to thatof Raft, with the additional constraint that only witness andprimary nodes can send RequestVote RPCs. This means thatBackup nodes cannot become the new leader of the cluster —this design decision ensures that the new primary (i.e., recoveryprimary) is not coincident with a backup node. The benefitof this is that the backup, which is the most performancesensitive node in the recovery process, does not experienceany contention for resources.Because the witnesses and primary node constitute at least𝐹 1 nodes in the cluster, our failure assumption guaranteesthat there is always at least one live witness or primary. Similarto Cheap Paxos, it is possible for the system to lose liveness ifthe set of non-faulty nodes shifts too quickly. However, unlikeCheap Paxos, which only allows non-witnesses to become theleader, our system only allows voting witnesses to becomethe leader. We explain in Section 5 how a witness transitionsfrom not having complete information about committed KVupdates into becoming a fully functioning primary.Additionally, it is possible for all voting witnesses to beunaware of a committable or committed update, as the quorumfor KV updates need only contain the primary and all backupsin the current view.To fix this problem, we modify the leader election protocol in the following ways. First, we include the most recent log index in the RequestVote response. If a witnessreceives a RequestVote response from one of the replicas withvoteGranted 0, then it saves its local lastLogIndexas lastLogIndexOld and updates its lastLogIndex4.2Log reconciliationThe purpose of the log reconciliation phase is to allow thenew primary to fast forward itself to a sufficiently up-to-datestate such that it is possible to handle client Puts. We call theprimary during this phase the “provisional leader” of the Raftcluster. During the reconciliation phase, the primary nodecannot commit any new log entries. However, it is still ableto serve client Get requests using the mechanisms outlined inSection 5.3.The provisional leader must first bring itself up to date byquerying the backup(s) for the log entries fromlastLogIndexOld to lastLogIndex. It achieves thisby sending a RequestLog RPC to the backup(s) for each logthat it suspects it is missing. Because of the Cheap Paxos–stylequorum, it is acceptable to issue these requests in parallel todifferent backups.Log reconciliation ends when one of two conditions is met:First, if the primary receives a response for each log entrythat it is missing, then it can temporarily treat these logsas uncommitted and resume accepting client Put requests,replicating and committing these log entries based on thenormal operation of the Raft protocol. Second, in the eventthat one of the backups returns a null entry for index 𝑖, then it isacceptable to discard responses for log entries correspondingto index 𝑖 and above. The modified quorum ensures that anylog entries that are not present on all voting backups cannothave been committed.

SoCC ’20, October 19–21, 2020, Virtual Event, USAHigh availability in cheap distributed key value Proactive.Stop GCs[]) Iterate hotesp(entrielogBatchPullRLeader ElectionoldLogIdx lastLogIdxlastLogIdx uestLog(oldLogIdx)RequestLog(oldLogIdx ey)Iterate coldlogllResp(PriorityPu y-State5Primary failureIn this section, we describe how our system handles the failureof a primary. We discuss the recovery protocol, and describehow the system serves client requests during the period ofdegraded performance while the system is repairing. Webriefly discuss how the system handles witness and backupfailures in Section 6.RequestVote(.)RequestLog(lastLogIdx)Live Recoverybeen committed, which implies that 𝐵 has knowledge of 𝐿1 .However, due to CANDStore’s modified quorum, any updateswhich are committed after 𝐿1 must be replicated to a quorumincluding all backups in the current view. Therefore, 𝑈 musthave been replicated to 𝐵 before being committed.Resume GCFigure 6: Recovery timeline.Proof of modified quorum correctness Suppose that thereexists a voting backup 𝐵 which does not have knowledge of acommitted update 𝑈 . This backup must have been admittedto the cluster as a non-voting node by some log entry 𝐿0and admitted to the cluster as a voting node by some logentry 𝐿1 . By the Raft log prefix invariant and the CANDStoremodified quorum, 𝑈 must have been committed after 𝐿1 .This is because after 𝐿0 is committed, all updates must bereplicated to 𝐵 before being committed, as part of Raft’s jointconsensus state, so if 𝐵 is a voting node, then 𝐿1 must haveProactive recoveryIn CANDStore, we begin the recovery process wit

High availability in cheap distributed key value storage SoCC’20,October19–21,2020,VirtualEvent,US

Related Documents:

Distributed Database Design Distributed Directory/Catalogue Mgmt Distributed Query Processing and Optimization Distributed Transaction Mgmt -Distributed Concurreny Control -Distributed Deadlock Mgmt -Distributed Recovery Mgmt influences query processing directory management distributed DB design reliability (log) concurrency control (lock)

Male 1 Cheap Medium Bus Female 1 Cheap Medium Train Female 0 Cheap Low Bus Male 1 Cheap Medium Bus Male 0 Standard Medium Train Female 1 Standard Medium Train Female 1 Expensive High Car Male 2 Expensive Medium Car Female 2 Expensive High Car Based on above training data, we can induce a decision tree as the following:

Distributed Control 20 Distributed control systems (DCSs) - Control units are distributed throughout the system; - Large, complex industrial processes, geographically distributed applications; - Utilize distributed resources for computation with information sharing; - Adapt to contingency scenarios and

the proposed distributed MPC framework, with distributed estimation, distributed target cal- culation and distributed regulation, achieves offset-free control at steady state are described. Finally, the distributed MPC algorithm is augmented to allow asynchronous optimization and

8. Distributed leadership as a companion to continuous improvement, 29 a. Distributed leadership in problem diagnosis, 31 b. Distributed leadership in solution design and enactment, 34 c. Distributed leadership in action review, 38 9. Managing the risks of using distributed leadership for improvement, 38 a. The discomfort of public disagreement .

78 Scientific American March 1998 The End of Cheap Oil The End of Cheap Oil . serves “proved” only if the oil lies near a producing well and there is “reason- . many P90 reserve estimates always un - derstates the amount of proved oil in a region. The only correct way to total

today! Cheap trackers boost solar panel and solar cooker performance. by gaiatechnician Optics experiments on the cheap (video) by gaiatechnician DIY 2 bucket dripper tracker for solar cookers and solar panels is cheap and it works! (video) by gaiatechnician Solar parabolic cooker with the

Dictator Adolf Hitler was born in Branau am Inn, Austria, on April 20, 1889, and was the fourth of six children born to Alois Hitler and Klara Polzl. When Hitler was 3 years old, the family moved from Austria to Germany. As a child, Hitler clashed frequently with his father. Following the death of his younger brother, Edmund, in 1900, he became detached and introverted. His father did not .