具体描述
全书分为三大部分:
第一部分,主要讨论有关增强数据密集型应用系统所需的若干基本原则。首先开篇第1章即瞄准目标:可靠性、可扩展性与可维护性,如何认识这些问题以及如何达成目标。第2章我们比较了多种不同的数据模型和查询语言,讨论各自的适用场景。接下来第3章主要针对存储引擎,即数据库是如何安排磁盘结构从而提高检索效率。第4章转向数据编码(序列化)方面,包括常见模式的演化历程。
第二部分,我们将从单机的数据存储转向跨机器的分布式系统,这是扩展性的重要一步,但随之而来的是各种挑战。所以将依次讨论数据远程复制(第5章)、数据分区(第6章)以及事务(第7章)。接下来的第8章包括分布式系统的更多细节,以及分布式环境如何达成一致性与共识(第9章)。
第三部分,主要针对产生派生数据的系统,所谓派生数据主要指在异构系统中,如果无法用一个数据源来解决所有问题,那么一种自然的方式就是集成多个不同的数据库、缓存模块以及索引模块等。首先第10章以批处理开始来处理派生数据,紧接着第11章采用流式处理。第12章总结之前介绍的多种技术,并分析讨论未来构建可靠、可扩展和可维护应用系统可能的新方向或方法。
作者简介
作者简介
Martin Kleppmann是英国剑桥大学分布式系统方向的研究员。此前,他曾是LinkedIn和Rapportive等互联网公司的软件工程师,负责大规模数据基础设施建设。在此过程中他遇到过一些困难,因此他希望这本书能够帮助读者避免重蹈覆辙。Martin还是一位活跃的会议演讲者、博主和开源贡献者。他认为,每个人都应该学习深刻的技术理念,对技术的深入理解能帮助我们开发出更好的软件。
译者简介
赵军平, 大数据存储与分析资深开发者与推广者(EMC 10余年),GPU异构计算的亲历者。中国计算机协会专家委员,DELL EMC资深架构师。12年系统研发、创新与团队管理经验,擅长数据存储与保护, 云计算与大数据实时分析,GPU异构加速优化等。相关领域已申请中、美技术专利100余项,并多次在SNIA,LinuxConf,Hadoop Summit, Nvidia GPU Tech Conf等做技术分享,持续关注数据密集和计算密集相关技术的演进、融合与赋能推广。
吕云松,北京大学计算机硕士,硕士及DELL EMC中国研究院实习期间专注于大数据实时流式处理相关的研究。现就职于华为2012中软院黎曼实验室,主要从事深度学习的研发。
耿煜,DELL EMC架构师兼GTM负责人,致力于推广企业级数字化转型方案。深耕分布式架构以及云计算12年,先后任职于ChinaCache,Sun Microsystems以及EMC等公司。
李三平,美国麻省大学计算机工程专业博士,DELL EMC中国研究院首席科学家,研究方向为机器学习、深度学习、智能运维、遥感影像等。已在IEEE Transactions期刊和会议上发表论文数十篇,申请美国专利20余项。推崇简约,热衷机器学习。
目录信息
第一部分 数据系统基础
第1章 可靠、可扩展与可维护的应用系统 ................... 11
认识数据系统 ...........................................12
可靠性 ..................................................14
可扩展性 ................................................18
可维护性 ................................................25
小结 .....................................................28
第2章 数据模型与查询语言 ............................... 33
关系模型与文档模型 .......................................34
数据查询语言 ...........................................46
图状数据模型 ......................................52
小结 ...................................................65
第3章 数据存储与检索 .................................. 71
数据库核心:数据结构 ...................................72
事务处理与分析处理 ...................................89
列式存储 .........................................94
小结 ..............................................101
第4章 数据编码与演化 .............................. 109
数据编码格式 .................................... 110
数据流模式 ......................................124
小结 .............................................134
第二部分 分布式数据系统
第5章 数据复制 ................................. 145
主节点与从节点 ..................................146
复制滞后问题 ......................................154
多主节点复制 .......................................160
无主节点复制 .....................................168
小结 ..............................................181
第6章 数据分区 ............................... 189
数据分区与数据复制 .................................190
键-值数据的分区 ...................................190
分区与二级索引 ...................................195
分区再平衡 ....................................198
请求路由 ..................................202
小结 .................................204
第7章 事务 .............................. 211
深入理解事务 ......................................212
弱隔离级别 .................................221
串行化 ...........................................237
小结 ...........................................250
第8章 分布式系统的挑战 ...................... 259
故障与部分失效 ...............................260
不可靠的网络 ..................................262
不可靠的时钟 ..................................271
知识,真相与谎言 ...............................282
小结 ..........................................292
第9章 一致性与共识 ..................... 303
一致性保证 ....................................304
可线性化 ........................................305
顺序保证 ........................................319
分布式事务与共识 .................................330
小结 ...............................................349
第三部分 派生数据
第10章 批处理系统 ................................ 367
使用UNIX工具进行批处理 .............................368
MapReduce与分布式文件系统 .........................375
超越MapReduce ....................................394
小结 ............................................403
第11章 流处理系统 .............................. 413
发送事件流 .......................................414
数据库与流 .......................................424
流处理 .........................................435
小结 ............................................449
第12章 数据系统的未来 ............................ 461
数据集成 .........................................461
分拆数据库 .......................................469
端到端的正确性 ....................................484
做正确的事情 .......................................500
小结 ..............................................509
术语表 ............................................ 521
· · · · · · (收起)
读后感
这本书从数据的产生、传输、存储、检索、更新等方方面面,介绍了一个后台系统使用到的种种存储技术,包括了数据库、缓存、检索引擎、批处理、流处理。对于每一种技术,作者介绍了它们的基本原理、使用场景、优势和不足,并附带了大量的扩展阅读书目。对于后台开发、运维人员,...
本书开头提到“当今很多新型应用都属于数据密集型(data-intensive)而不是计算密集型(compute-intensive)” 当今机器学习越来越普及的情况下其实用户应用后面基础件层的compute-intensive应用越来越多了。“很可惜,让鄙人日常头秃都是 compute-intensive的,啥时候有一本De...
Data is at the center of many challenges in system design today. Difficult issues need to be figured out, such as scalability, consistency, reliability, efficiency, and maintainability. In addition, we have an overwhelming variety of tools, including relati...
大概十一放假开始读这本书,中间经历了加班,双十一值班,自己病假,老婆生病请病假,娃生病请病假,断断续续到现在终于算是从头到尾看了一遍,实在是觉得不容易。 这本书的作者是少有的从工业界干到学术界的牛人,知识面广得惊人,也善于举一反三,知识之间互相关联,比如有...
用户评价
阅读这本书的过程,更像是在与一位经验丰富的架构师进行一对一的交流。作者在书中反复强调“权衡”的重要性,指出在设计数据密集型系统时,不存在银弹,所有决策都意味着在某些方面做出牺牲。这种务实的态度让我受益匪浅。书中对“可扩展性”的探讨尤为深入,不仅介绍了横向扩展和纵向扩展的概念,还详细阐述了如何通过数据分片、副本集、负载均衡等技术手段来实现系统的水平扩展。我特别对“无状态服务”和“有状态服务”的讨论印象深刻,理解了如何设计和管理有状态的服务,以及如何降低状态管理的复杂性。书中还分享了许多作者在实际项目中遇到的坑和经验教训,例如如何处理“拜占庭将军问题”,以及如何设计健壮的错误处理机制。这些真实的案例让我觉得这本书不仅仅是一本教科书,更是一本实用的“工具箱”,能够帮助我在面对复杂问题时,找到更有效的解决方案。
这本书带给我的最大收获,是它彻底改变了我对“数据”的理解方式。在此之前,我更多地将数据视为一堆信息,而读完这本书,我才真正认识到数据背后蕴含的巨大能量,以及如何通过精妙的设计,将这些能量转化为驱动业务增长的动力。作者在书中强调了“可观察性”的重要性,指出一个优秀的数据密集型系统,不仅要能够处理数据,还要能够清晰地反映自身的状态和性能。书中关于“监控”、“日志”和“追踪”的讲解,为我提供了一套完善的可观察性体系。我特别喜欢书中关于“弹性设计”的讨论,它不仅仅是关于系统的可用性,更是关于系统如何在面对不可预测的负载变化时,依然能够保持稳定和响应。书中对“级联失败”的预防和处理机制的介绍,让我深刻理解了构建鲁棒系统的必要性。总而言之,这本书不仅仅是一本技术指南,更是一本关于如何构建智能、高效、可持续发展的数据驱动型应用的“思想启蒙”。
这本书的深度和广度都令人赞叹。它不仅涵盖了基础的分布式系统理论,还深入探讨了许多前沿的技术话题,比如“实时数据处理”和“批量数据处理”的融合,以及如何构建高效的“数据流水线”。作者在讲解“数据流水线”时,详细介绍了ETL、ELT等概念,并对不同数据处理框架的特点进行了深入分析。我尤其对书中关于“数据仓库”和“数据湖”的比较感兴趣,这让我对如何有效地组织和管理海量数据有了更清晰的认识。此外,书中还涉及到了“搜索引擎”和“推荐系统”等数据密集型应用的具体设计思路,这对于我了解这些领域是如何利用大数据技术来解决实际问题的,非常有帮助。作者并没有止步于理论,而是结合了大量的实际案例和代码示例,让读者能够更直观地理解抽象的概念。读完这本书,我感觉自己对如何构建强大、可靠、高效的数据密集型应用系统,有了系统性的提升。
这本书的封面设计简洁大气,书名“数据密集型应用系统设计”几个字很有分量,一眼就能看出这是一本硬核的技术书籍。翻开扉页,作者深厚的背景介绍和本书旨在解决的痛点让我对接下来的阅读充满期待。我一直以来在实际工作中都面临着海量数据处理、高并发读写以及如何保证系统可用性和可扩展性等挑战,而这本书似乎就是为解决这些问题而生的。从目录上看,它涵盖了分布式系统的核心概念,如一致性、可用性、分区容错性,以及多种数据存储技术,包括关系型数据库、NoSQL数据库和分布式文件系统。我尤其关注关于“数据流水线”和“批处理与流处理”的章节,因为这正是我当前项目需要突破的技术瓶颈。作者在引言中强调了“模型驱动设计”的重要性,这一点非常有启发性,我相信这本书会提供一套系统性的方法论,帮助我们理解如何在复杂的数据环境中进行有效的设计和决策,而不仅仅是罗列技术细节。它承诺将带领读者深入理解数据系统底层的原理,从而做出更明智的技术选型和架构设计。
这本书的语言风格非常吸引人,虽然是技术性很强的书籍,但作者并没有使用过于晦涩的术语,而是通过大量生动形象的比喻和案例,将复杂的分布式系统原理阐释得浅显易懂。我尤其喜欢作者在讲解CAP定理时,用“红皇后”和“黑天鹅”的比喻来形容一致性、可用性和分区容错性之间的权衡,这种方式不仅加深了我的理解,也让整个学习过程变得轻松有趣。书中对各种分布式一致性算法,如Paxos和Raft,进行了细致的剖析,并提供了伪代码和流程图,这对于我这样希望深入理解底层机制的读者来说,无疑是雪中送炭。此外,作者还花了相当大的篇幅介绍了几种主流的分布式数据库,并从设计理念、适用场景、优缺点等方面进行了详细的对比分析,这对于我未来在项目中进行技术选型非常有指导意义。读完这本书,我感觉自己对分布式系统的认知不再是碎片化的知识点,而是形成了一个清晰、完整的知识体系,能够更自信地应对实际工作中的技术难题。
名不虚传,分布式系统的基本问题都提到了,而且各种解决方案的优缺点都有。讲的没有那么实用,也没有那么理论,在工业与学术之间平衡的很好。
20190815第一遍。啃了大半个月才啃完,一二部分对我很有帮助,基本上梳理并讨论了现有工业界分布式系统的各种理论及其实现细节。这本书应该作为后端架构的必读书目,对很多笼罩着光环的各种架构服务很有祛媚效果。每章后面的参考文献是个大宝藏,需要好好阅读。
内容很全面,并且结构非常有条理:提出问题-提出多种解决方案-解决方案的优劣和使用场景。 前9章翻译水平不错,第10章很差,最后三章建议直接看英文原版。 200111-200212
内容很全面,并且结构非常有条理:提出问题-提出多种解决方案-解决方案的优劣和使用场景。 前9章翻译水平不错,第10章很差,最后三章建议直接看英文原版。 200111-200212
从OLTP讲到OLAP系统的各类问题与解决之道,这种组织方式比《七周七数据库》这种更有调理,讲得也透很多。最后更有作者对于现在问题的思考与未来系统演进方向的预判,是非常有含金量的一本书。最后,应该是第一次看到技术书上看到地图和道德,满满的极客情怀。