lec09
dz / distributed_systems_MIT / lec09Summary
More Replication, CRAQ
Node Tree
- test_and_set
- zookeeper
- CRAQ
- different_ft_properties
Nodes
zookeeper | |
content | zookeeper |
children | problems_to_solve, reads_stale_writes_ordered, API, based_on_raft |
based_on_raft | |
content | based on raft |
parents | zookeeper |
reads_stale_writes_ordered | |
content | Reads can be stale, writes are ordered |
parents | zookeeper |
problems_to_solve | |
content | Problems to solve |
children | config_info, elect_master |
parents | zookeeper |
remarks | problems it solves, perhaps? |
config_info | |
content | Config info |
parents | problems_to_solve |
test_and_set | |
content | VMWare test and set service that is fault-tolerant and does right thing under partitions |
elect_master | |
content | Elect Master |
children | zookeeper_primitives (I think this was a phrase used while talking about,electing a master as a usecase) |
parents | problems_to_solve |
zookeeper_primitives | |
content | "zookeeper primitives" |
parents | elect_master |
API | |
content | API |
children | exists, filesystem_like, get_data, list, set_data, z_nodes, create, delete, ex_count, ex_locks |
parents | zookeeper |
filesystem_like | |
content | Filesystem-like |
children | naming_system |
parents | API |
naming_system | |
content | naming system |
parents | filesystem_like |
z_nodes | |
content | Z-Nodes |
children | regular, sequential, ephemeral |
parents | API |
regular | |
content | Regular |
children | flags |
parents | z_nodes |
ephemeral | |
content | Ephemeral |
children | flags |
parents | z_nodes |
sequential | |
content | Sequential |
children | flags |
parents | z_nodes |
flags | |
content | flags |
children | create (flags argument) |
parents | ephemeral, regular, sequential |
create | |
content | create(path, data, flags) |
parents | API, flags |
delete | |
content | delete |
children | version |
parents | API |
version | |
content | version |
parents | delete |
exists | |
content | exists(path, watch) |
children | check_and_insert |
parents | API |
check_and_insert | |
content | exists check and insert if watch is atomic |
parents | exists |
remarks | "if watch is atomic?" I think I meant to say it was an atomic operation? |
get_data | |
content | get data |
parents | API |
set_data | |
content | set data |
parents | API |
ex_count | |
content | Example: count (using zookeeper) |
children | count_pseudocode |
parents | API |
count_pseudocode | |
content | While true x,v = getdata("f") if setdata("f", x-> 1, w) break |
children | mini_transaction, no_finish_guarantee, pulled_off_atomic |
parents | ex_count |
mini_transaction | |
content | Mini-transaction |
children | pulled_off_atomic (Atomicity is why this is referred to as a "mini,transaction") |
parents | count_pseudocode |
pulled_off_atomic | |
content | Once pulled off, is atomic |
parents | count_pseudocode, mini_transaction |
no_finish_guarantee | |
content | Not guaranteed to finish |
children | okay_in_practice |
parents | count_pseudocode |
okay_in_practice | |
content | this is usually okay in practice and doesn't happen |
parents | no_finish_guarantee |
ex_locks | |
content | Example: Locks |
children | herd_effect, lock_without_herd, non_scalable_lock |
parents | API |
remarks | Prof: "in paper, not necessarily helpful" |
herd_effect | |
content | Herd effect |
children | lock_without_herd, too_many_clients |
parents | ex_locks |
too_many_clients | |
content | Problem caused by too many clients |
parents | herd_effect |
non_scalable_lock | |
content | non-scalable lock |
parents | ex_locks |
list | |
content | list operation |
parents | API |
lock_without_herd | |
content | Lock without herd effect |
children | scalable_lock |
parents | ex_locks, herd_effect |
scalable_lock | |
content | Scalable lock |
parents | lock_without_herd |
remarks | Prof impressed that zookeeper can express it but not sure why it is helpful to have in zookeeper |
CRAQ | |
content | CRAQ |
children | optimizes_reads, why_reading, chain_repl |
why_reading | |
content | Why read about this? |
parents | CRAQ |
different_ft_properties | |
content | The fault-tolerant properties are different from from RAFT |
chain_repl | |
content | Chain replication |
children | failure_recovery, incomplete_repl_story, old_version, optimizes_reads, raft_load_higher_than_chain_head, chain_of_servers |
parents | CRAQ |
old_version | |
content | old version |
parents | chain_repl |
optimizes_reads | |
content | Optimizes reads |
parents | chain_repl, CRAQ |
chain_of_servers | |
content | Chain of servers |
children | head, tail |
parents | chain_repl |
head | |
content | Head |
children | writes_start_proliferate |
parents | chain_of_servers |
tail | |
content | tail |
children | reads_from_tail, sends_reply_client |
parents | chain_of_servers |
reads_from_tail | |
content | Reads from tail |
parents | tail |
sends_reply_client | |
content | sends reply to client |
parents | writes_start_proliferate, tail |
writes_start_proliferate | |
content | writes start here, proliferate |
children | sends_reply_client |
parents | head |
failure_recovery | |
content | Failure Recovery |
children | head_fails_next, intermediate_more_compliex, tail_fails_prev, constrainted_set_of_states |
parents | chain_repl |
constrainted_set_of_states | |
content | Set of strates after failure relatively constrained |
parents | failure_recovery |
head_fails_next | |
content | If head fails, next one in chain becomes head |
children | intermediate_more_compliex (more complex than head) |
parents | failure_recovery |
tail_fails_prev | |
content | If tail fails, previous node takes over |
children | intermediate_more_compliex (more complex than tail) |
parents | failure_recovery |
intermediate_more_compliex | |
content | Intermediate failed node, more complex than head/tail |
parents | tail_fails_prev, failure_recovery, head_fails_next |
raft_load_higher_than_chain_head | |
content | load on raft leader higher than chain replication head |
parents | chain_repl |
incomplete_repl_story | |
content | Not a complete replication story |
children | config_manager (config manager completes I think?) |
parents | chain_repl |
config_manager | |
content | Configuration manager |
children | if_dead_new_config, monitors_liveness, built_on |
parents | incomplete_repl_story |
monitors_liveness | |
content | Monitors Liveness |
parents | config_manager |
if_dead_new_config | |
content | If it thinks a server is dead, it sends a new config |
parents | config_manager |
built_on | |
content | built on RAFT, Pasx, or zookeeper |
parents | config_manager |