电子书:《数据密集型应用系统设计》_赵军平等译_2018-09-01

[复制链接]
查看218 | 回复1 | 2019-12-27 15:03:54 | 显示全部楼层 |阅读模式

《数据密集型应用系统设计》_赵军平等译_2018-09-01_1

《数据密集型应用系统设计》_赵军平等译_2018-09-01_1

《数据密集型应用系统设计》_赵军平等译_2018-09-01_2

《数据密集型应用系统设计》_赵军平等译_2018-09-01_2

《数据密集型应用系统设计》_赵军平等译_2018-09-01_3

《数据密集型应用系统设计》_赵军平等译_2018-09-01_3


内容简介:

第4章数据编码与演化∴
数据编码格式
数据流模式
第二部分分布式数据系统
第5章数据复制
145
主节点与从节点
复制滞后问题
多主节点复制
无主节点复制
第6章数据分区
数据分区与数据复制
键值数据的分区
分区与二级索引
分区再平衡
请求路由
第7章事务
深入理解事务
弱隔离级别
串行化
第8章分布式系统的挑战
259
故障与部分失效
不可靠的网络
不可靠的时钟
i|目录

知识,真相与谎言
第9章一致性与共识
303
致性保证
可线性化
顺序保证
分布式事务与共识
第三部分派生数据
第10章批处理系统
367
使用UNIX工具进行批处理
MapReduce与分布式文件系统
超越 MapReduce
第11章流处理系统
413
发送事件液
数据库与流
流处理
第12章数据系统的未来
461
数据集成
分拆数据库
端到端的正确性
做正确的事情
术语表
521
目录|ⅲ

前言
如果你是一位软件行业从业者,尤其是从事服.务.器端或者后台系统软件开发,相信近
年来一定被层出不穷的商业名词所包围: NoSQL、 Big Data、Web- scale、 Sharding,
Eventual consistency、ACID、CAP理论、云服务、 MapReduce和 Real-time等,所有这
其实都围绕着如何构建高效存储与数据处理这一核心主题
过去十年,在数据库领域与分布式系统方面涌现了许多引人瞩目的进展,由此深刻地
影响了如何构建上层应用系统。分析这些激动人心的变化背后,你会发现有以下几
非常重要的驱动因素
互联网公司,包括ogle、 Yahoo!、 Amazon, Facebook
以及 Twitter等,它们每天都在面对海量数据和负载,迫使其不断创新,并改进支
撑系统以更有效地处理这种量级的数据
商业方面因素,如敏捷开发、测试驱动和对市场机会做出快速反应等,都要求尽
量缩短产品开发周期,因此系统中的数据模型也要足够灵活以方便调整。
免费及开源软件现在已经非常成功,在很多領域足以取代商业或者定制软件
硬件方面,CPU主频增长日趋缓慢,而多核系统成为新常态,网络速度则依旧保
持快速发展,这就意味着并行分布式系统将会成为业界主流
如今一个不起眼的小公司,也完全有能力构建起大型分布式系统:跨机器甚至跨
地域的数据中心,因为现在有了逐渐普及的1aaS云服务(例如AWS)。
很多服务现在都要求高可用。道理很简单,系统失效或者维护时间越长,其损失
代价越大,甚至大到无法承受

正是由于这些技术,“数据密集型应用”( Data-Intensive Applications)把很多不可
变成了可能。那么什么算是“数据密集型”(data- - Intensive)呢?对于一个应用系
统,如果“数据”是其成败决定性因素,包括数据的规模、数据的复杂度或者数据产
就可以称为“数据密集型应用系统”;与之对应的是计算密
集型( Compute- Intensive),CPU主频往往是后者最大的制约瓶颈。
目前已经有足够丰富的技术或者工具来.辅。助.、帮助我们开发自己的数据密集型应用
包括存储、处理等方面,而这些技术本身也在快速演进之中。例如很多人在关注新的
NOSQL系统,但实际上消息队列、缓存、搜索引擎、批处理与流处理框架等相关技术
也非常重要,事实上,很多应用系统总是会集成组合上述多种技术
开篇所罗列的那一堆商业味颇浓的名词,某种程度上也彰显了当前大时代氛围,机会
多自是好事。然而,作为一名软件工程师或者架构师,仍需秉持严谨的态度,深入理
解繁杂词汇背后系统设计所面临的优劣权衡,只有这样才能为我所用,枸建好自己的
系统。所以,抛开那些商业名词,我们要的是深入的探索
幸好,软件千变万化,终有若干理念贯穿其中。无论你用的什么数据系统,如果可
以掌握背后的设计理念,何种工具适用于何种场景,如何最佳使用,又有哪些陷阱
),诸如此类,自然会胸有成竹,而这也是本书写作的初衷
所以,本书旨在帮助大家更好地驾驭处理数据和存储数据相关技术。它不是针对某个
特定软件的介绍手册,也不是纯理论的习题。我们会深入探讨一些成功的数据系统案
例,剖析其中的技术要点;或许在很多流行的分布式系统里都有它们的身影,正是这
些关键技术有效应对了许多生产环境对扩展性、性能和可靠性的苛刻要求
我们将对这些典型系统深入展开讨论,梳理其核心算法,探讨其设计理念和背后的权
衡之道。在此过程中,尝试总结某些经验法则来重新审视系统架构。了解怎么工作自
然重要,但更重要的是要思考它为什么这样工作,正所谓“知其然,知其所以然
读完本书之后,你应该会对哪些技术适用于哪些场景,常见工具如何搭配来构建应用
系统等有所得。或许你不会马上就决定动手开发一个全新的数据库引擎(这几乎完全
不需要),但是,关于系统的本质,相信你一定有新的认识与判断力:系统行为是否
合理,架构设计如果权衡,个中症状如何处理等,将会更加游刃有余
本书适合哪些读者?
首先你的应用如果包含服.务.器端、后台逻辑来存储、处理数据,或者你的应用需要联
网,例如Web程序、移动程序以及联网的传感器等,这本书将非常适
2|前言

本书主要针对软件工程师、软件架构师以及技术经理等,特别是那些需要对系统架构
做出权衡决定的人,例如需要选择一些工具和软件来解决特定问题,或者如何最佳适
用这些现有工具。退一步,如果不需要做这些决定,本书也可以帮助你更好地理解这
技术的优缺点
当然你最好有一些Web程序或者网络程序的经验,了解一些基本的关系型数据和
SQL;虽然不是必须,但如果通晓 NoSQL或相关系统,那再好不过。如果有常见网络
办议如TCP、HTTP等基本知识也会帮助很大。选择何种编程语言或者框架对于阅读
本书没有太大影响
如果以下若干条适用于你,可能会从本书中有所获益
需要学习了解系统扩展性方面技
需要构建高可用(减少宕机影响)和健壮运行的系统
需要有效方法来提高长时间运行系统的可维护性,应对规模增长、技术和需求不
断发生变化等
对系统如何工作有种天然的兴趣或者探索精神,特别是大型Web和在线系统。本
书会例举若干典型数据库和数据处理、分析系统,对其设计亮点逐一展开分杉
当我在介绍可扩展的系统时,有人会问:“我又不是 Google或者 Amazon,这些高大
上的扩展性太遥远,老老实实用关系数据库就得了。”在特定语境下这的确有道理
丁造一个根本不需要的扩展性系统是在浪费精力,而且会丧失其他方面的灵活性,这
其实是种过早的优化。然而我要说,选择何种工具也很有讲究或者说极其重要,不同
的技术各有优劣,事实上正如本书将要揭示的,关系数据库很重要,但它并非解决数
据问题的终极方案
本书涵盖范围
本书不会就如何安装、配置特定软件包或者API等做太多细节介绍,这方面已有足够
多的文档。我们会着重探讨不同的设计理念以及如何权衡,这些通常才是系统的核
心,也会例举实践中不同的系统产品最终采用了哪些不同的理念
本书的电子版已包含所有在线资源的链接,这些链接在书稿付梓之时都做了验证,然
而大家都能理解,这些网络链接可能在一段时间之后会失效。如果不巧碰到了失效的
链接,或者阅读的是纸质版本,可以随时用搜索引擎来查询相关资料。对于学术论



回复

使用道具 举报

红颜纷扰红尘 | 2019-12-27 15:04:01 | 显示全部楼层
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则