Skip to content

Commit ee25f1e

Browse files
committed
frontend: add FAQ
1 parent c9ec40d commit ee25f1e

8 files changed

+50
-23
lines changed

frontend/app/app.routing.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ const appRoutes: Routes = [
6868
children: [
6969
{ path: 'announcing-etcd-v31', component: AnnouncingEtcdV31Component },
7070
{ path: 'announcing-etcd-website', component: AnnouncingEtcdWebsiteComponent },
71-
{ path: 'etcd-stm', component: STMComponent },
71+
{ path: 'stm', component: STMComponent },
7272
],
7373
}
7474
],

frontend/app/blog/2016/stm.component.html

+6-3
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,7 @@ <h2 class="blog-title">Serializability and Distributed Software Transactional Me
4040
atomicity. To judge whether etcd3’s primitives are expressive and efficient, we implemented and benchmarked common distributed concurrency control "recipes".
4141
</p>
4242
<p>
43-
This post looks at the atomicity granted by etcd3’s new mini-transactions. We’ll cover etcd3 transactions and demonstrate atomic updates with transactions. Next, we’ll show how etcd’s revision metadata naturally maps to software transactional memory (STM)
44-
by outlining a simple client-side STM implementation. Finally, we’ll show this STM implementation is a performant alternative to distributed shared locks.
43+
This post looks at the atomicity granted by etcd3’s new mini-transactions. We’ll cover etcd3 transactions and demonstrate atomic updates with transactions. Next, we’ll show how etcd’s revision metadata naturally maps to software transactional memory (STM)<sup>[1]</sup> by outlining a simple client-side STM implementation. Finally, we’ll show this STM implementation is a performant alternative to distributed shared locks.
4544
</p>
4645

4746
<br>
@@ -236,7 +235,11 @@ <h3>What’s Next?</h3>
236235
in the v3 client <a href="https://github.com/coreos/etcd/tree/master/clientv3/concurrency" target="_blank" class="normal-link">concurrency package</a>.
237236
</p>
238237

239-
238+
<br>
239+
<hr align="left" class="footer-top-line">
240+
<footer>
241+
[1] "<a href="https://en.wikipedia.org/wiki/Software_transactional_memory" target="_blank" class="footer-link">Software transactional memory</a>," Wikipedia.
242+
</footer>
240243
</article>
241244
</div>
242245
</md-sidenav-layout>

frontend/app/blog/blog.component.css

+24
Original file line numberDiff line numberDiff line change
@@ -87,4 +87,28 @@ md-sidenav-layout {
8787
padding: 8px;
8888
margin: 1em 0px 1em;
8989
word-wrap: normal;
90+
}
91+
92+
sup {
93+
color: black;
94+
font-family: 'Open Sans', sans-serif;
95+
font-size: 10px;
96+
}
97+
98+
footer {
99+
color: black;
100+
font-family: 'Open Sans', sans-serif;
101+
font-size: 12px;
102+
}
103+
104+
.footer-link {
105+
color: dodgerblue;
106+
text-decoration: none !important;
107+
font-family: 'Open Sans', sans-serif;
108+
font-size: 12px;
109+
}
110+
111+
.footer-top-line {
112+
color: darkgray;
113+
width: 30%;
90114
}

frontend/app/blog/blog.component.html

-1
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,5 @@
1818

1919
<div class="blog-group">
2020
<router-outlet></router-outlet>
21-
Hello World! Welcome to etcd blogs!
2221
</div>
2322
</md-sidenav-layout>

frontend/app/blog/blog.component.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ export class BlogComponent {
4444
),
4545
new blogItem(
4646
'Serializability and Distributed Software Transactional Memory with etcd3',
47-
'/blog/2016/etcd-stm'
47+
'/blog/2016/stm'
4848
),
4949
]
5050
),

frontend/app/doc/tip/common.component.css

+7-7
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,13 @@ a {
4242
font-style: italic;
4343
}
4444

45+
.code-link {
46+
color: dodgerblue;
47+
text-decoration: none !important;
48+
font-family: 'Roboto', sans-serif;
49+
font-size: 15px;
50+
}
51+
4552
sup {
4653
color: black;
4754
font-family: 'Open Sans', sans-serif;
@@ -61,13 +68,6 @@ footer {
6168
font-size: 12px;
6269
}
6370

64-
.code-link {
65-
color: dodgerblue;
66-
text-decoration: none !important;
67-
font-family: 'Roboto', sans-serif;
68-
font-size: 15px;
69-
}
70-
7171
.footer-top-line {
7272
color: darkgray;
7373
width: 30%;

frontend/app/doc/tip/faq.component.html

+8-7
Original file line numberDiff line numberDiff line change
@@ -42,10 +42,15 @@ <h3 md-subheader>More</h3>
4242
<div id="cap-theorem-in-etcd"></div>
4343
<h2><a href="/doc/{{version.etcdVersionURL}}/faq#cap-theorem-in-etcd" class="faq-title">CAP theorem in etcd?</a></h2>
4444
<p>
45-
CAP often represents <i>Consistency</i>, <i>Availability</i>, <i>Partition tolerance</i>: you can only pick 2 out of 3. Since network partition is not avoidable, you are left with either consitency or availability when partition happens. That
46-
is, systems with A and P are more tolerant of network faults, but possible to serve stale data. etcd chooses C and P to achieve linearizability with strong consistency.
45+
CAP<sup>[1]</sup> represents <i>Consistency</i>, <i>Availability</i>, <i>Partition tolerance</i>: you can only pick 2 out of 3. Since network partition is not avoidable, you are left with either consitency or availability when partition happens.
46+
That is, systems with A and P are more tolerant of network faults, but possible to serve stale data. etcd chooses C and P to achieve linearizability with strong consistency.
4747
</p>
48-
<br>
48+
<hr align="left" class="footer-top-line">
49+
<footer>
50+
[1] Seth Gilbert and Nancy Lynch: "<a href="https://pdfs.semanticscholar.org/24ce/ce61e2128780072bc58f90b8ba47f624bc27.pdf" target="_blank" class="footer-link">Brewer's Conjecture and the Feasibility of Consistent, Available, Partition-Tolerant Web Services</a>,"
51+
ACM SIGACT News, volume 33, number 2, pages 51–59, 2002.
52+
</footer>
53+
<br><br>
4954

5055
<div id="remove-member-first"></div>
5156
<h2><a href="/doc/{{version.etcdVersionURL}}/faq#remove-member-first" class="faq-title">Always remove first when replacing member?</a></h2>
@@ -56,17 +61,14 @@ <h2><a href="/doc/{{version.etcdVersionURL}}/faq#remove-member-first" class="faq
5661
<p>
5762
How this applies to membership:
5863
</p>
59-
6064
<p>
6165
If a 3-member cluster has 1 downed member, it can still make forward progress because the quorum is 2 and 2 members are still live. However, adding a new member to a 3-member cluster will increase the quorum to 3 because 3 votes are required for a majority
6266
of 4 members. Since the quorum increased, this extra member buys nothing in terms of fault tolerance; the cluster is still one node failure away from being unrecoverable.
6367
</p>
64-
6568
<p>
6669
Additionally, that new member is risky because it may turn out to be misconfigured or incapable of joining the cluster. In that case, there's no way to recover quorum because the cluster has two members down and two members up, but needs three votes to
6770
change membership to undo the botched membership addition. etcd will by default (as of last week) reject member add attempts that could take down the cluster in this manner.
6871
</p>
69-
7072
<p>
7173
On the other hand, if the downed member is removed from cluster membership first, the number of members becomes 2 and the quorum remains at 2. Following that removal by adding a new member will also keep the quorum steady at 2. So, even if the new node
7274
can't be brought up, it's still possible to remove the new member through quorum on the remaining live members.
@@ -76,7 +78,6 @@ <h2><a href="/doc/{{version.etcdVersionURL}}/faq#remove-member-first" class="faq
7678
</p>
7779
<br>
7880

79-
8081
<div id="why-so-strict-about-membership-change"></div>
8182
<h2><a href="/doc/{{version.etcdVersionURL}}/faq#why-so-strict-about-membership-change" class="faq-title">Why so strict about membershp change?</a></h2>
8283
<p>

frontend/app/doc/tip/why.component.html

+3-3
Original file line numberDiff line numberDiff line change
@@ -36,15 +36,15 @@ <h2><a href="/doc/{{version.etcdVersionURL}}/why#why-etcd">Why etcd</a></h2>
3636
<div class="feature">
3737
<h3>Consistent</h3>
3838
<p>
39-
etcd is not an eventually consistent database, where two different nodes give two different values. etcd provides <b>linearizability</b><sup>[2]</sup> with <b>strong consistency</b><sup>[3]</sup>. When write completes,
40-
all etcd clients read the same value, most recent and up-to-date in any node.
39+
etcd is not an eventually consistent database, where two different nodes can serve two different values (stale data). etcd provides <b>linearizability</b><sup>[2]</sup> with <b>strong consistency</b><sup>[3]</sup>. When
40+
write completes, all etcd clients would read the same, <i>most recent and up-to-date</i>, value in any node.
4141
</p>
4242
</div>
4343

4444
<div class="feature">
4545
<h3>Partition Tolerant</h3>
4646
<p>
47-
etcd continues to function, even with network partition, where message is not delivered or gets delayed. Network glitches are very common, and <b>no system is immune</b> from such network faults<sup>[4]</sup>.
47+
etcd continues to function, even with network partition, where message is not delivered or gets delayed. Network glitches are very common, and <b>no system is immune</b> from network faults<sup>[4]</sup>.
4848
</p>
4949
</div>
5050

0 commit comments

Comments
 (0)