Marten (Wiebe-Marten Wijnja)
Online: Qqwy
These Things Are False:
Why Communication is Hard
Situations look The Same!
No Reply!
What should the General do?
Network Partition!
What should the Node do?
CP vs AP?
CP vs AP?
CP: Critical data like banks account balances.
✔No need to 'fix' state: Easier to work with!
✘ Needs lots of communication: Hard to scale
AP: Chat/Social Media feeds, Sensor data, etc.
✘ Needs to fix inconsistent states: Tricky!
✔Little communication needed: Scalable
2-Phase-Commit/Paxos/Raft: Basically, 'Voting'
Have to wait until more than half of nodes is available
Example: Distributed ACID Transactions
Distributed Postgres / CockroachDB / Citus
Distributed MongoDB
FaunaDB
BigTable
VoltDB
Conflict-Free Replicated Data-Types
Only supported are:
In Practice: CP vs AP choice is Non-Binary
Phoenix.Presence / Phoenix.Tracker
CRDTs! :-)
GenServer.multi_call / GenServer.abcast
Hot-Code upgrades