https://codahale.com/you-cant-sacrifice-partition-tolerance/
1. Partition tolerance is not optional. It's a given - packets will
drop/communication errors are bound to happen between nodes.
2. So all you can choose is Availability or Consistency.
3. Choosing Consistency - You can stop accepting writes or only take
writes if the node is "Master" of the data to be written.
4. Choosing Availability - You can take all the writes but clients may
get "stale data".
2 more relevant metrices which better capture the performance
Yield & Harvest
Yield is similar to uptime but one major diff. If node is down for 1
second in peak/off-peak hours - uptime is same - but yield is vastly
different. Yield directly maps to what the user experienced. So Yield
= % of user requests served.
Harvest = available data/total data. If data lies on 3 nodes but
server was able to serve data from only 2 nodes => harvest = 66%
Now we need to decide whether faults impact yield or harvest.
Replicated systems tend to map faults to reduced yield - since fewer
requests will complete.
Partitioned systems will map faults to reduced harvest - since lesser
data will be available.
No comments:
Post a Comment