1. Standart problems
1.1. Atomic commit
1.1.1. Protocols
1.1.1.1. 2PC (2-phase commit)
1.1.1.1.1. commit request
1.1.1.1.2. commit/completion phase
1.1.1.2. 3PC (3-phase commit)
1.1.1.2.1. Disadvantage
1.1.1.2.2. commit request
1.1.1.2.3. commit authorized/precommit
1.1.1.2.4. finalizing/commit
1.2. Consensus
1.2.1. Protocol
1.2.1.1. Termination
1.2.1.1.1. every correct process decides some value.
1.2.1.2. Validity
1.2.1.2.1. if all processes propose the same value v, then every correct process decides v
1.2.1.3. Integrity
1.2.1.3.1. every correct process decides at most one value, and if it decides some value v, then v must have been proposed by some process
1.2.1.4. Aggreement
1.2.1.4.1. if a correct process decides v, then every correct process decides v.
1.3. Leader election
1.3.1. Algorithms
1.3.1.1. Key concepts
1.3.1.1.1. Transfer to leader should be economical (in terms of transmit bytes and time)
1.3.1.2. Gallager, Humblet, and Spira
1.3.1.2.1. best
1.3.1.2.2. general for all undirected graphs
1.3.1.2.3. finds node with min flow from anothers
1.4. Mutual exclusion
1.4.1. Concept
1.4.1.1. No 2 processes or threads can be in their ccritical selection at the same time
1.4.2. Solutions (both hardware and software)
1.4.2.1. Busy-wait
1.4.2.2. Locks
1.4.2.3. Monitors
1.4.2.4. CAS
1.5. Replication
1.5.1. Models
1.5.1.1. Transactional
1.5.1.2. State machine
1.5.1.2.1. Deterministic finite automaton
1.5.1.3. Virtual synchrony
1.5.1.3.1. Concept: process group, checkpoints
1.5.1.3.2. On checkpoints states are being replicated
1.5.2. In life
1.5.2.1. Database
1.5.2.1.1. Master-slave
1.5.2.1.2. Master-master
1.5.2.1.3. WAL XLOGs
1.5.2.2. Disk storage
1.5.2.2.1. rsync
1.6. Resource allocation
1.6.1. Problem
1.6.1.1. Assing available res in an economic way
1.6.1.2. Used in strategic planning
1.6.2. Concepts
1.6.2.1. Resouce leveling (like priorities)
1.6.3. Algorithms
1.6.3.1. Scheduling
1.6.3.1.1. Math
1.7. Topology
1.7.1. Spanning tree
1.7.1.1. MSP
1.7.1.1.1. Prim algorithm
2. Data streams
2.1. Push
2.1.1. Concept
2.1.1.1. Based on message queues
2.1.1.2. Determine priorities of messages
2.1.1.3. Good for transactions-when-they-happen cocept
2.1.2. Pros & Cons
2.1.2.1. Pros
2.1.2.1.1. Instant
2.1.2.1.2. Fast feedback
2.1.2.1.3. New sources can come on-line and push new notifications
2.1.2.2. Cons
2.1.2.2.1. Massive sets of transaction
2.1.2.2.2. Big data flow
2.1.2.2.3. Can't establish context
2.2. Pull
2.2.1. Concept
2.2.1.1. Require data procssing
2.2.1.2. Data flow isn;t really necessary
2.2.2. Pros & Cons
2.2.2.1. Pros
2.2.2.1.1. Get what you want when you need
2.2.2.1.2. Min flow
2.2.2.2. Cons
2.2.2.2.1. Always attached to a source