数据密集型应用系统设计
故障的概率不可能降到零, 因此最好设计容错机制以防因故障而导致失败
故障 (fault) 不同于失效 (failure). 故障通常定义为系统的一部分状态偏离其标准, 而失效则是系统作为一个整体停止向用户提供服务.
在事务处理系统中, 我们使用扇出 (fan-out) 来描述为了服务一个传入请求而需要执行其他服务的请求数量
推特的扩展性挑战并不是主要来自推特量, 而是来自扇出.
理想情况下, 批量作业的运行时间是数据集的大小除以吞吐量
在实践中由于数据倾斜 (数据不是均匀分布在每个工作进程中), 需要等待最慢的任务完成, 所以运行时间往往更长.
响应时间 (response time) 是客户所看到的, 除了实际处理请求的时间 (服务时间 service time), 还包括网络延迟和排队延迟
延迟 (latency) 是某个请求等待处理的持续时长, 在此期间它处于休眠 (latent) 状态, 并等待服务.
纵向扩展 (scaling up) 垂直扩展 (vertical scaling), 转向更强大的机器
横向扩展 (scaling out) 水平扩展 (horizontal scaling), 将负载分布到多台小机器上