第一章:可靠性、可扩展性、可维护性-《数据密集型应用系统设计》读书笔记

1 可靠性Reliability

容忍硬件故障、软件失效、人为错误即使发生了错误,系统仍可用。针对可消除影响的故障类型。

  • 硬件故障:硬件增加冗余;软件容错容忍多机失效;
  • 软件失效:
    • 特点:长期引而不发,特定条件触发。
    • 方案:全面考虑,充分测试,反复评估,及时响应。
  • 人为错误:简化人为操作;分离易错场景;充分测试;快速恢复机制;监控系统,及时报警;流程化与培训;

 

2 可扩展性Scalability

处理负载与性能、延迟概率、吞吐量系统应对负载增加的能力

  • 描述负载:用负载参数的数字来描述,参数取决于系统的体系架构。​例如:每秒处理请求数、数据库写入比例、同时在线用户数、缓存命中率
  • 描述性能:
    • 吞吐量throughput:每秒处理记录数或作业运行时间;
    • 服务响应时间response time:客户端发送请求到收到响应的时间差,是一种数值分布;
    • SLO服务质量目标Service Level Objective​;
    • SLA服务质量协议Service Level Agreements;
  • 应对负载:
    • 增加垂直扩展:升级到更高配的机器;
    • 水平扩展:将负载平均分不到多个低配机器,无状态服务易采用此扩展;
    • 弹性扩缩容方式,适用于负载高且不可预测,手动扩缩容可减少意外情况​超大规模场景需进行定制化处理,难以形成通用方案

 

3 可维护性Maintainability

可操作性、简单性、可演化性

  • 可操作性Operability(可运维性)让日常维护工作尽量简单,使运营团队专注于高附加值任务。数据系统设计阶段需考虑:
    • 系统行为与内部逻辑可观测性(方便监控)
    • 自动化、避免绑定特定机器或人员
    • 完善文档
    • 友好默认配置
    • 自我修复
    • 行为可预测
  • 简单性Simplicity抽象,消除意外复杂性设计好的抽象,大型系统可拆分为定义明确、可重用的组件;
  • 可演化性Evolvability,提高敏捷性,使其方便适应不断变化的需求,简单易懂的高抽象化系统更容易进行修改;

 


 

书籍基本信息:

  • 《数据密集型应用系统设计》,英文名称是《Designing Data-Intensive Application》 ,也被简称为 DDIA
  • 推荐指数:🌟🌟🌟🌟🌟
  • 作者:Martin Kleppmann,译者 :赵军平、李三平、吕云松
  • 内容简介:驾驭处理数据和存储数据的相关技术。探索经典数据系统的设计之道,梳理核心算法、设计理念、权衡之道,以便重新审视系统架构,在实际应用场景中选择最佳工具搭配。
  • 数据密集型(data-intensive)应用基本模块
    • 数据库:存储数据,应用可多次访问
    • 高速缓存:缓存操作复杂或代价高昂的结果,加速访问速度
    • 索引:支持关键字搜索与各种过滤
    • 流处理:持续处理数据,并将结果发送至另一进程
    • 批处理:定期处理大量累积数据

 

posted @ 2022-03-23 20:27  雪梨大佬  阅读(308)  评论(0编辑  收藏  举报