数据密集型应用系统设计(MartinKleppmann)

书: https://pan.baidu.com/s/1A6ZLSPMbCiZ-L4eRucUvXQ?pwd=kt7i
一些笔记分享给大家:

一、数据系统基础

  1. “可靠性(Reliability)指系统容忍故障,可伸缩性(Scalability)指系统应对负载增长,可维护性(Maintainability)指系统易于演进。”
  2. “批处理(Batch Processing)与流处理(Stream Processing)的本质区别:前者处理有限数据集,后者处理无限事件流。”

二、数据存储与编码

  1. “B树与LSM树的权衡:B树读更快(随机访问),LSM树写更快(顺序追加),但需后台压缩。”
  2. “Avro、Protocol Buffers等二进制编码比JSON更高效,模式(Schema)演进需兼容性规则(如字段只增不减)。”

三、分布式系统

  1. “CAP定理的实践意义:网络分区(Partition)时需在一致性(Consistency)与可用性(Availability)间选择,但三者不可兼得。”
  2. “线性一致性(Linearizability)是‘最强’一致性模型,读操作总能看到最新写入,但牺牲性能。”

四、复制与分区

  1. “主从复制(Leader-Follower)的写瓶颈可通过分片(Sharding)缓解,但跨分片事务复杂。”
  2. “多领导者复制(Multi-Leader)适合多地写入场景,但需解决写冲突(如最后写入胜利-LWW或自定义合并逻辑)。”

五、事务与一致性

  1. “ACID中隔离性(Isolation)的四个级别:读未提交→读已提交→可重复读→串行化,性能与正确性成反比。”
  2. “两阶段提交(2PC)阻塞性强,Paxos/Raft等共识算法更适合跨节点协调。”

六、流处理

  1. “事件溯源(Event Sourcing)将状态变更记录为不可变事件流,支持时间旅行查询(重建历史状态)。”
  2. “Kafka的消费者组(Consumer Group)实现‘竞争消费’,分区(Partition)内消息有序。”

七、批处理

  1. “MapReduce的局限:中间结果落盘导致延迟高,Spark通过内存计算(RDD)优化。”

八、数据系统演进

  1. “从单体到微服务的代价:分布式事务、跨服务监控、数据一致性的复杂性陡增。”
  2. “数据湖(Data Lake)存储原始数据,数据仓库(Data Warehouse)存储清洗后的结构化数据。”

九、安全与隐私

  1. “端到端加密(End-to-End Encryption)确保数据仅对通信双方可见,但牺牲搜索/聚合能力。”

十、设计哲学

  1. “复杂性(Complexity)是系统的最大敌人——简单性(Simplicity)来自抽象,而非偶然。”
  2. “数据系统的未来是‘松散耦合’:组件通过明确接口交互,而非共享数据库。”
  3. “监控(Monitoring)与追踪(Tracing)的区别:前者回答‘是否出问题’,后者回答‘为何出问题’。”
  4. “没有‘银弹’架构——每个选择都是权衡(Trade-off),理解业务需求比技术选型更重要。”

发表评论

您的电子邮箱地址不会被公开。 必填项已用 * 标注