En nyligen publicerad rapport om benchmarking visade att när en konstant arbetsbörda tillämpas mot Cassandra, visas intressanta men oförklarade variationer när värden återställs av läsoperationer när de ritas mot tiden. I detta dokument återger vi detta fenomen och undersöker mer ingående de mekanismer på låg nivå som ger upphov till gamla avläsningar. Vi visar att de staleness spikar som Cassandra ställer ut är starkt korrelerade med sophämtning, särskilt "stop-the-world" fasen som pausar alla applikationstrådar i en Java virtuell maskin. Vi visar experimentellt att stavelsen spikar kan praktiskt taget elimineras genom att fördröja läsningen operationer artificiellt på servrar omedelbart efter en sophämtning paus. I våra experiment ger detta mer än en 98-procentig minskning av antalet avvikelser i konsekvens som överstiger 5 ms, och har försumbar inverkan på genomströmning och latens. I det här dokumentet studerar vi hur gamla värden som returneras av läsoperationer som tillämpas på Cassandra-ett distribuerat lagringssystem med öppen källkod som stödjer eventuell överensstämmelse med beslutförhet baserad på replikering. Mer exakt undersöker vi orsakerna till vassa spikar som uppstår när en konstant arbetsbelastning appliceras på Cassandra och den gamla mätmetoden ritas upp som en funktion av tiden. Liknande anomalier har observerats av Wada et al., Bermbach et al., och Rahman et al., vilket leder till spekulation om möjliga orsaker inklusive biverkningar av caching och DDoS motåtgärder, samt nätverk jitter [2, 5, 7]. Efter metoden [5] kör vi experiment i ett enda privat datacenter, som isolerar lagringssystemet från effekterna av cachelager, DDoS motåtgärder, och omgivande nätverkstrafik. Ingen av de mekanismer som föreslås i tidigare arbete står på ett tillfredsställande sätt för stavelse spikar i en sådan kontrollerad miljö. Våra specifika bidrag när det gäller att hitta orsaken till avvikelser i Cassandra är följande: • Först återger vi det gamla tidsserieexperimentet av Rahman et al. (se figur 3 i [5] ) i vårt datacenter med hjälp av en nyare version av Cassandra. Våra experiment använder en förbättrad konsistens metriska som är mer motståndskraftig mot klocka skev, och därmed visar att stavelse spikar inte är artefakter orsakas av användningen av en specifik metriska. • Därefter formulerar vi hypotesen att de observerade spikarna orsakas av processförseningar, speciellt förseningar på grund av Java virtuella maskinens sophämtning (GC) "stop-the-world" (STW) paus. • Vi testar vår hypotes experimentellt genom att rita både GC pauser och konsistens spikar mot tiden. Våra resultat uppvisar starka korrelationer mellan de tidpunkter då GC pauser och konsistens spikar, liksom mellan varaktigheten av GC pauser och höjderna på spikarna. • Vägleds av insikter från våra experiment föreslår vi en metod för att ta bort stavelse spikar genom att fördröja läsa operationer artificiellt på servrar i tidsperioden omedelbart efter en GC paus. Denna teknik ger mer än en 98 % minskning av antalet avvikelser i konsistensen som överstiger 5 ms, och har försumbar inverkan på genomströmning och latens. EXPERIMENT De experiment som presenteras häri använder Ε (gamma) metrisk för konsistens [3], som är teoretiskt liknande den metrisk som används i [5] men i praktiken uppvisar mindre buller i miljöer där klockan skev över värdar överstiger operation latenser. Den metrisk kvantifierar hur illa den konsekvens som observerats av kunder avviker från linjärisability [4], som anger (informellt sett) att varje transaktion verkar träda i kraft omedelbart vid någon punkt mellan dess start- och sluttider mätt från perspektivet av den kund som tillämpade transaktionen. Våra experiment mäter en finkornig form av den â metrisk som kallas per-värde â score, som fångar avvikelser från linjärisability i samband med en samling av operationer som får tillgång till samma 810
Användningen av artificiella fördröjningar på serversidan undersöks i REF som en teknik för att minska allvarlighetsgraden av konsekvensavvikelser i Cassandra när klientsidans konsistensnivå ett används.
Understanding the Causes of Consistency Anomalies in Apache Cassandra
{'venue': 'PVLDB', 'journal': 'PVLDB', 'mag_field_of_study': ['Computer Science']}