question_text="Draw a Lamport Diagram that witnesses a violation of causal ordering, but does not violate FIFO. Be able to explain why.",
answer_text="",
),
QuizItem(
question_text="Draw a Lamport Diagram that witnesses a violation of both FIFO and Causal Ordering. Be able to explain why.",
answer_text="",
),
QuizItem(
question_text="Draw a Lamport Diagram that witnesses a violation of total ordering but not causal ordering. Be able to describe the execution.",
answer_text="",
),
QuizItem(
question_text="Draw a Lamport Diagram that witnesses a violation of causal ordering but not total ordering. Be able to describe the execution.",
answer_text="",
),
]
snapshot=[]
network_models=[
QuizItem(
...
...
@@ -225,7 +242,12 @@ reliable_delivery = [
answer_text="",
),
]
reliable_broadcast=[]
reliable_broadcast=[
QuizItem(
question_text="Draw a Lamport Diagram that witnesses a violation of reliable broadcast. Be able to describe the execution.",
answer_text="",
),
]
consistency=[
QuizItem(
question_text="What is are the three main types of consistency studied in class?",
...
...
@@ -240,6 +262,14 @@ consistency = [
question_text="What type of property is Strong Consistency? Why?",
answer_text="Strong Consistency is a safety property since a violation would require a fitness witness of the system behaving differently from a non-distributed system.",
),
QuizItem(
question_text="What type of property is Causal Consistency? Why?",
answer_text="Similar to Strong Consistency, Causal Consistency is a safety property since a violation would require a fitness witness of the system behaving differently from a non-distributed system.",
),
QuizItem(
question_text="What type of property is Eventual Consistency? Why?",
answer_text="Eventual Consistency is a Liveness Property (The Eventual keyword is a hint) since it only requires consistency eventually, meaning there does not exist a finite witness of a violatation of eventual consistency.",
),
]
write_conflicts=[]
durability=[]
...
...
@@ -247,14 +277,149 @@ primary_backup = []
chain_replication=[]
state_machine_replication=[]
quorum_replication=[]
views=[]
cap=[]
views=[]
two_generals=[]
agreement=[]
leader_election=[]
atomic_commit=[]
two_phase_commit=[]
consensus=[]
agreement=[
QuizItem(
question_text="What are the three properties of agreement?",
question_text="What is the formal definition of agreement?",
answer_text="If a node decides a value v, then all nodes decide v",
),
QuizItem(
question_text="What is the formal definition of validity?",
answer_text="If a node decided v, then v was an input"
),
QuizItem(
question_text="What is the formal definition of termination?",
answer_text="All nodes eventually decide"
),
QuizItem(
question_text="What is the FLP Impossibility statement?",
answer_text="In an async model, it is impossible to achieve agreement, validility, and termination."
),
QuizItem(
question_text="What is Strong Agreement?",
answer_text="A system will always agree and be valid, but may not terminate."
),
QuizItem(
question_text="What is Weak Agreement?",
answer_text="A system will always terminate and be valid, but may not always agree."
),
QuizItem(
question_text="Is a agreement a saftey or liveness property? Why?",
answer_text="Agreement is a safety property since there exists a finite witness of a violation of agreement",
),
QuizItem(
question_text="Is a validity a saftey or liveness property? Why?",
answer_text="Validility is a safety property since there exists a finite witness of a violation of agreement",
),
QuizItem(
question_text="Is termination a safety or liveness property? Why?",
answer_text="Termination is a liveness property since it stipulates that a system must eventually terminate which may take a long time, but there does not exist a finite witness of a violation of termination.",
),
QuizItem(
question_text="Draw a diagram that witnesses a violation of agreement. Be able to describe the execution.",
answer_text="",
),
QuizItem(
question_text="Draw a diagram that witnesses a violation of validity. Be able to describe the execution.",
answer_text="",
),
]
leader_election=[
QuizItem(
question_text="What agreement type does leader election satisfy.",
answer_text="Leader election is a weak agreement protocol (meaning nodes may disagree on the leader)",
),
QuizItem(
question_text="How does Leader election determine that a node is down (failure detection)?",
answer_text="Using heartbeats, nodes are pinging each other at certain time intervals (Usually constant). If a node doesn't reply in a certain time interval or after a number of heartbeats, that node is considered down",
),
QuizItem(
question_text="In Leader election, if a node determines the leader is down, what does it do?",
answer_text="The node will initiate a leader election.",
),
QuizItem(
question_text="By what ordering do nodes usually determine the leader",
answer_text="Nodes will usually choose that which has the lowest node id in the election process to be leader",
),
QuizItem(
question_text="Describe how a leader election works once a node initiates a leader election?",
answer_text="The node that calls for the leader election will broadcast its node id, proposing to be leader. There are two cases for a node receiving the proposal: \n 1) The node id is higher, in which case it will ack the leader \n 2) The node id is lower, in which case it will broadcast itself to the other nodes as the proper leader. This occurs until a node think its been a leader for some fixed amount of time."
),
]
atomic_commit=[
QuizItem(
question_text="Draw a Lamport Diagram that witnesses a violation of atomic commit. Be able to describe the execution.",
answer_text="",
),
QuizItem(
question_text="Draw a Lamport Diagram that witnesses a violation of atomic commit. Be able to describe the execution.",
answer_text="",
),
]
two_phase_commit=[
QuizItem(
question_text="Who are the two main actors in two-phase commit?",
answer_text="Partcipants and the Coordinator (Only one)",
),
QuizItem(
question_text="What are the two phases of two-phase commit and what do they (generally) do?",
answer_text="Phase 1: Preparation. In this stage, a transaction is sent by the coordinator to the partcipants and they attempt to prepare to perform the transaction (in an atomic way, eg. switching pointers). \n Phase 2: Action. In this stage, a transaction is either commited and the message to commit is sent to the partcipants or the message is aborted and an abort message is sent to the partcipants.",
),
QuizItem(
question_text="What if any partcipants replies with abort in the preparation phase?",
answer_text="All participants will abort. (Either via a message from the coordinator or from a Collaborative Termination Protocol)",
),
QuizItem(
question_text="How would a coordinator deal with a non-responsive participant (or the messages get lost)?",
answer_text="The coordinator has a fixed timeout, after which it will abort the transaction.",
),
QuizItem(
question_text="Draw a Lamport Diagram that witnesses a violation of atomic commit that uses a two phase commit process. Be able to describe the execution.",
answer_text="",
),
QuizItem(
question_text="Draw a Lamport Diagram in which two-phase commit will not terminate.",
answer_text="",
),
QuizItem(
question_text="Draw a Lamport Diagram in which two-phase commit performs a commit with three participant nodes.",
answer_text="",
),
]
consensus=[
QuizItem(
question_text="What is the difference between accepting and deciding a value in a consensus algorithm",
answer_text="When a value is accepted, it is a temporarily choice which can be reverted. A decided value is on for which an action is made which may have side effects and cannot be reverted.",
),
QuizItem(
question_text="What four properties can Consensus attempt to guarantee?",
answer_text="1) Availability \n 2) Validity \n 3) Termination \n 4) No single point of failure (a majority can make progress)",
),
QuizItem(
question_text="What roles exist in a consensus system?",
answer_text="Proposers, Acceptors, and Listeners",
),
QuizItem(
question_text="Why does a consensus system with just one acceptor or just one proposer fail?",
answer_text="In these systems, there exists a single point of failure for the system. If the acceptor or proposer go down, then the system can no longer make progress. This violated the requirement of no single point of failure in a consensus system.",
),
QuizItem(
question_text="Why can't acceptors just accept the first value they see? Why can't they accept the last value they see? Why can't they accept the value everyone else has accepted?",
answer_text="",
),
QuizItem(
question_text="Why is a majority required for consensus?",