mirror of
https://github.com/donnemartin/system-design-primer.git
synced 2024-03-22 13:11:35 +08:00
Add availability in numbers section (#237)
This commit is contained in:
parent
55d09f611d
commit
dd15249b65
47
README.md
47
README.md
|
@ -112,6 +112,7 @@ Review the [Contributing Guidelines](CONTRIBUTING.md).
|
||||||
* [Availability patterns](#availability-patterns)
|
* [Availability patterns](#availability-patterns)
|
||||||
* [Fail-over](#fail-over)
|
* [Fail-over](#fail-over)
|
||||||
* [Replication](#replication)
|
* [Replication](#replication)
|
||||||
|
* [Availability in numbers](#availability-in-numbers)
|
||||||
* [Domain name system](#domain-name-system)
|
* [Domain name system](#domain-name-system)
|
||||||
* [Content delivery network](#content-delivery-network)
|
* [Content delivery network](#content-delivery-network)
|
||||||
* [Push CDNs](#push-cdns)
|
* [Push CDNs](#push-cdns)
|
||||||
|
@ -527,6 +528,52 @@ This topic is further discussed in the [Database](#database) section:
|
||||||
* [Master-slave replication](#master-slave-replication)
|
* [Master-slave replication](#master-slave-replication)
|
||||||
* [Master-master replication](#master-master-replication)
|
* [Master-master replication](#master-master-replication)
|
||||||
|
|
||||||
|
### Availability in numbers
|
||||||
|
|
||||||
|
Availability is often quantified by uptime (or downtime) as a percentage of time the service is available. Availability is generally measured in number of 9s--a service with 99.99% availability is described as having four 9s.
|
||||||
|
|
||||||
|
#### 99.9% availability - three 9s
|
||||||
|
|
||||||
|
| Duration | Acceptable downtime|
|
||||||
|
|---------------------|--------------------|
|
||||||
|
| Downtime per year | 8h 45min 57s |
|
||||||
|
| Downtime per month | 43m 49.7s |
|
||||||
|
| Downtime per week | 10m 4.8s |
|
||||||
|
| Downtime per day | 1m 26.4s |
|
||||||
|
|
||||||
|
#### 99.99% availability - four 9s
|
||||||
|
|
||||||
|
| Duration | Acceptable downtime|
|
||||||
|
|---------------------|--------------------|
|
||||||
|
| Downtime per year | 52min 35.7s |
|
||||||
|
| Downtime per month | 4m 23s |
|
||||||
|
| Downtime per week | 1m 5s |
|
||||||
|
| Downtime per day | 8.6s |
|
||||||
|
|
||||||
|
#### Availability in parallel vs in sequence
|
||||||
|
|
||||||
|
If a service consists of multiple components prone to failure, the service's overall availability depends on whether the components are in sequence or in parallel.
|
||||||
|
|
||||||
|
###### In sequence
|
||||||
|
|
||||||
|
Overall availability decreases when two components with availability < 100% are in sequence:
|
||||||
|
|
||||||
|
```
|
||||||
|
Availability (Total) = Availability (Foo) * Availability (Bar)
|
||||||
|
```
|
||||||
|
|
||||||
|
If both `Foo` and `Bar` each had 99.9% availability, their total availability in sequence would be 99.8%.
|
||||||
|
|
||||||
|
###### In parallel
|
||||||
|
|
||||||
|
Overall availability increases when two components with availability < 100% are in parallel:
|
||||||
|
|
||||||
|
```
|
||||||
|
Availability (Total) = 1 - (1 - Availability (Foo)) * (1 - Availability (Bar))
|
||||||
|
```
|
||||||
|
|
||||||
|
If both `Foo` and `Bar` each had 99.9% availability, their total availability in parallel would be 99.9999%.
|
||||||
|
|
||||||
## Domain name system
|
## Domain name system
|
||||||
|
|
||||||
<p align="center">
|
<p align="center">
|
||||||
|
|
Loading…
Reference in New Issue
Block a user