aboutsummaryrefslogtreecommitdiff
path: root/doc/talks/2023-01-18-tocatta/talk.tex
diff options
context:
space:
mode:
authorAlex Auvolat <alex@adnab.me>2023-01-12 17:17:13 +0100
committerAlex Auvolat <alex@adnab.me>2023-01-12 17:17:13 +0100
commitf5a7bc37365e8e593359db114a4e44f8e8c65207 (patch)
tree75b12a7971c4a66a43156f1006ea6fb82bb0c280 /doc/talks/2023-01-18-tocatta/talk.tex
parentfe850f62c908492d2c3cbe4c55c3cf3b3d097de0 (diff)
downloadgarage-f5a7bc37365e8e593359db114a4e44f8e8c65207.tar.gz
garage-f5a7bc37365e8e593359db114a4e44f8e8c65207.zip
Add 12 lattice diagrams to explain CRDTs and quorums
Diffstat (limited to 'doc/talks/2023-01-18-tocatta/talk.tex')
-rw-r--r--doc/talks/2023-01-18-tocatta/talk.tex43
1 files changed, 32 insertions, 11 deletions
diff --git a/doc/talks/2023-01-18-tocatta/talk.tex b/doc/talks/2023-01-18-tocatta/talk.tex
index ac9b4077..e789f597 100644
--- a/doc/talks/2023-01-18-tocatta/talk.tex
+++ b/doc/talks/2023-01-18-tocatta/talk.tex
@@ -494,8 +494,7 @@
\item \textbf{Linearizability} of all operations\\
(strongest consistency guarantee)
\vspace{1em}
- \item \textbf{Replicated state machines} that can implement
- any sequential specification
+ \item Any sequential specification can be implemented as a \textbf{replicated state machine}
\vspace{1em}
\item \textbf{Costly}, the leader is a bottleneck;
leader elections on failure take time
@@ -515,7 +514,7 @@
\item \textbf{Operations have to commute}, i.e.~we
can only implement CRDTs
\vspace{1em}
- \item \textbf{Fast}, no node is a bottleneck;\\
+ \item \textbf{Fast}, no single bottleneck;\\
works the same with offline nodes
\end{itemize}
} \end{minipage}
@@ -530,27 +529,29 @@
\vspace{2em}
\hspace{1em}
- \begin{minipage}{7cm}
+ \begin{minipage}{6.5cm}
\underline{Consensus-based systems:}
\vspace{1em}
\textbf{Any sequential specification}\\~
+
+ \vspace{1em}
+ \textbf{Easier to program for}: just write your program as if it were sequential on a single machine
+
\end{minipage}
\hfill
- \begin{minipage}{7cm}
+ \begin{minipage}{6.5cm}
\underline{Weakly consistent systems:}
\vspace{1em}
\textbf{CRDTs only}\\(conflict-free replicated data types)
+
+ \vspace{1em}
+ Part of the complexity is \textbf{reported to the consumer of the API}\\~
\end{minipage}
\hspace{1em}
-
- \vspace{3em}
- \begin{center}
- Part of the complexity is \textbf{reported to the consumer of the API}
- \end{center}
\end{frame}
\begin{frame}
@@ -663,7 +664,27 @@
\end{frame}
\begin{frame}
- \frametitle{Impact on performances}
+ \frametitle{Understanding CRDTs and quorums}
+ \begin{figure}
+ \centering
+ \def\svgwidth{.8\textwidth}
+ \only<1>{\import{assets/}{lattice1.pdf_tex}}%
+ \only<2>{\import{assets/}{lattice2.pdf_tex}}%
+ \only<3>{\import{assets/}{lattice3.pdf_tex}}%
+ \only<4>{\import{assets/}{lattice4.pdf_tex}}%
+ \only<5>{\import{assets/}{lattice5.pdf_tex}}%
+ \only<6>{\import{assets/}{lattice6.pdf_tex}}%
+ \only<7>{\import{assets/}{lattice7.pdf_tex}}%
+ \only<8>{\import{assets/}{lattice8.pdf_tex}}%
+ \only<9>{\import{assets/}{lattice9.pdf_tex}}%
+ \only<10>{\import{assets/}{latticeA.pdf_tex}}%
+ \only<11>{\import{assets/}{latticeB.pdf_tex}}%
+ \only<12>{\import{assets/}{latticeC.pdf_tex}}%
+ \end{figure}
+\end{frame}
+
+\begin{frame}
+ \frametitle{Performance gains in practice}
\begin{center}
\includegraphics[width=.8\linewidth]{assets/endpoint-latency-dc.png}
\end{center}