Wondering if networking should go in here as a subconcept or just go deeper into them in here?
Update: Added Databases and Networks and Protocols and Consensus Mechanisms in here
Concepts | Concept Map
- Networks and protocols (go deeper?)
- Types of distributed systems
- Coordination
- Consistency & Replication
- Databases
What are Distributed Systems?
A distributed system is a collection of autonomous computing elements that appears to its users as a single coherent system
- Opportunity to bring up P2P networks
- Structured & Unstructured
- Can bring up Distributed Hash Tables and bring up IPFS
- A network of independent nodes, each representing a “process” talking to each other via messages
- Properties:
- Concurrent components
- Message sharing
- No global clock
- Potential failure of individual components
- Two ways to prove the correctness of a distributed system
- Safety: what a system should never do
- Never returning a false value
- Liveness: what a system should do
- Two ensure correctness, one uses a consensus algorithm
- Validity: any value decided upon must be proposed by one of the processes
- Agreement: all non-faulty processes must agree on the same value
- Safety property. Honest nodes will never decide on different values
- Termination: all non-faulty nodes eventually decide
- Liveness property: All nodes eventually decide on a value
CAP Theorem (Can only choose 2)
Achievable properties of any distributed system
- Consistency: Every node provides the most recent state
- If a node is updated with some value, when a node returns a value, it should return either that value or an up to date value
- Availability: Every node has consistent read and write access
- Given information; receive information