数据密集型应用系统设计2021-8-30

负载可以用负载参数来描述,例子:

  1. web server 每秒请求
  2. 数据库中写入的比例
  3. 聊天室同时活动用户数
  4. 缓存命中率

有时平均值重要,有时峰值重要。

例子:twitter
用户可以推送新消息到所有关注者,平均大约4.6K req/s。峰值12K req/s。
有两种方案:

  1. 存入关系数据库,一个用户需要看他的时间线的时候去db里query
  2. 对每个用户的时间线维护一个缓存,发推时直接存入

最后twitter结合了两个方案,对于一般用户的帖子,采取方法二,但是对于关注者众多的名人,采用方案一。

latency usually refer to time spent on processing
response time usually refer to end to end time duration between a user’s query and its response.

Servie Level Agreements (SLA) might be used to enfore service quality for customer.

响应时间每增加100ms,销售额就会下降百分之1.

快速迭代推出产品功能往往比投入精力来应对不可知的扩展性更为重要。

可维护性:

  1. 可运维性
  2. 简单性
  3. 可塑性

一个优秀的运维团队至少负责以下内容:

  1. 监视系统的健康状况,并在服务出现异常时快速恢复
  2. 跟踪问题的原因
  3. 保持软件和平台最新,例如打安全补丁
  4. 了解不同的系统如何相互影响,避免执行破坏性的操作
  5. 预测未来可能的问题
  6. 建立部署,配置管理等工具包
  7. 平台迁移
  8. monitor 配置
  9. 制定流程
  10. 保持知识传承

简单性:抽象

可塑性:micro services

End at page 33