登入帳戶  | 訂單查詢  | 購物車/收銀台( 0 ) | 在線留言板  | 付款方式  | 運費計算  | 聯絡我們  | 幫助中心 |  加入書簽
會員登入 新用戶登記
HOME新書上架暢銷書架好書推介特價區會員書架精選月讀2023年度TOP分類瀏覽雜誌 臺灣用戶
品種:超過100萬種各類書籍/音像和精品,正品正價,放心網購,悭钱省心 服務:香港台灣澳門海外 送貨:速遞郵局服務站

新書上架簡體書 繁體書
暢銷書架簡體書 繁體書
好書推介簡體書 繁體書

三月出版:大陸書 台灣書
二月出版:大陸書 台灣書
一月出版:大陸書 台灣書
12月出版:大陸書 台灣書
11月出版:大陸書 台灣書
十月出版:大陸書 台灣書
九月出版:大陸書 台灣書
八月出版:大陸書 台灣書
七月出版:大陸書 台灣書
六月出版:大陸書 台灣書
五月出版:大陸書 台灣書
四月出版:大陸書 台灣書
三月出版:大陸書 台灣書
二月出版:大陸書 台灣書
一月出版:大陸書 台灣書

『簡體書』深入理解分布式系统

書城自編碼: 3736934
分類:簡體書→大陸圖書→計算機/網絡操作系統/系統開發
作者: 唐伟志
國際書號(ISBN): 9787121428111
出版社: 电子工业出版社
出版日期: 2022-03-01

頁數/字數: /
書度/開本: 16开 釘裝: 平装

售價:HK$ 135.0

我要買

 

** 我創建的書架 **
未登入.


新書推薦:
大学问·生活中的意义
《 大学问·生活中的意义 》

售價:HK$ 94.8
待客之道:7-Eleven如何把客户体验做到极致
《 待客之道:7-Eleven如何把客户体验做到极致 》

售價:HK$ 82.8
空腹力(诺贝尔奖得主研究成果!科学空腹,让身体脱胎换骨!)
《 空腹力(诺贝尔奖得主研究成果!科学空腹,让身体脱胎换骨!) 》

售價:HK$ 69.6
邓小平视察纪实
《 邓小平视察纪实 》

售價:HK$ 117.6
财商养成第一课
《 财商养成第一课 》

售價:HK$ 69.6
腐蚀工程手册(原著第三版)
《 腐蚀工程手册(原著第三版) 》

售價:HK$ 477.6
神话的脉络:中国绘画中的传说建构
《 神话的脉络:中国绘画中的传说建构 》

售價:HK$ 93.6
锦奁曾叠:古代妆具之美
《 锦奁曾叠:古代妆具之美 》

售價:HK$ 153.6

 

建議一齊購買:

+

HK$ 111.3
《 负载均衡:高并发网关设计原理与实践 》
+

HK$ 123.8
《 凤凰架构:构建可靠的大型分布式系统 》
+

HK$ 111.3
《 从程序员到架构师:大数据量 缓存、高并发、微服务 多团队协同等核心场景实战 》
+

HK$ 111.3
《 业务架构·应用架构·数据架构实战(第2版) 》
+

HK$ 87.3
《 Linux是怎样工作的 》
+

HK$ 98.8
《 HarmonyOS IoT设备开发实战(鸿蒙操作系统开发) 》
編輯推薦:
面向初学者:通过理论和实践结合的方式介绍分布式系统,帮助读者夯实分布式基础知识;
面向实践者:实现简单的Paxos共识算法,分析HDFS、ZooKeeper、etcd、Kubernetes等分布式系统案例。
內容簡介:
本书主要讲解分布式系统常用的基础知识、算法和案例,经笔者对文献海洋中晦涩艰深的原理和算法进行提炼,辅以图示和代码,并结合实际经验进行分析总结而成。通过阅读本书,读者可以快速、轻松地掌握分布式系统的基本原理,以及Paxos或Raft共识算法,并通过典型的案例学习如何设计大型分布式系统。
本书首先介绍什么是分布式系统、分布式系统带来的挑战,以及如何对分布式系统进行建模,这部分内容偏向概念性介绍。接着介绍了分布式数据的基础知识,包括数据分区技术、数据复制技术、CAP定理、一致性模型和隔离级别,尝试厘清一些十分容易混淆的术语,比如一致性、线性一致性、终一致性和一致性算法等。本书还介绍了分布式系统的核心算法——Paxos和Raft算法,不仅补充了大量图示进行讲解,还从零实现了一个Paxos算法。此外,本书分析了常见的分布式事务,并讨论了分布式系统中的时间问题,整理了一些实际发生的编程陷阱。后结合一些对工业界产生重大影响的论文或开源系统,学习前人在设计大型分布式系统时的思路、取舍和创新。
關於作者:
唐伟志,曾任网易游戏、腾讯基础架构工程师。毕业后一直从事分布式系统相关工作,在知乎和公众号“多颗糖”上分享对分布式系统论文的解读和算法的讲解。开源爱好者、TiDB Reviewer和Kubernetes Contributor。
目錄
第1章 认识分布式系统
1.1 什么是分布式系统
1.2 为什么需要分布式系统
1.3 分布式系统的示例
1.3.1 搜索引擎
1.3.2 加密货币
1.4 分布式系统的挑战
1.4.1 网络延迟问题
1.4.2 部分失效问题
1.4.3 时钟问题
1.5 每个程序员都应该知道的数字
1.6 本章小结
第2章 分布式系统模型
2.1 两将军问题
2.2 拜占庭将军问题
2.3 系统模型
2.3.1 网络链路模型
2.3.2 节点故障类型
2.3.3 按时间划分系统模型
2.4 消息传递语义
2.5 本章小结
第3章 分布式数据基础
3.1 分区
3.1.1 水平分区算法
3.1.2 分区的挑战
3.2 复制
3.2.1 单主复制
3.2.2 多主复制
3.2.3 无主复制
3.3 CAP定理
3.3.1 PACELC定理
3.3.2 BASE
3.4 一致性模型
3.4.1 线性一致性
3.4.2 实现线性一致性
3.4.3 线性一致性的代价
3.4.4 顺序一致性
3.4.5 因果一致性
3.4.6 终一致性
3.4.7 以客户端为中心的一致性模型
3.5 隔离级别
3.6 一致性和隔离级别的对比
3.7 本章小结
第4章 分布式共识
4.1 分布式共识简介
4.1.1 什么是分布式共识
4.1.2 为什么要达成共识
4.2 异步系统中的共识
4.2.1 FLP不可能定理
4.2.2 故障屏蔽
4.2.3 使用故障检测器
4.2.4 使用随机性算法
4.3 同步系统中的共识
4.4 Paxos
4.4.1 基本概念
4.4.2 问题描述
4.4.3 Paxos算法实现流程
4.4.4 案例
4.4.5 活锁
4.5 实验:使用Go语言实现Paxos共识算法
4.5.1 定义相关结构体
4.5.2 定义消息结构体
4.5.3 算法实现流程
4.5.4 学习提案
4.5.5 实现单元测试
4.6 Multi-Paxos
4.6.1 确定日志索引
4.6.2 领导者选举
4.6.3 减少请求
4.6.4 副本的完整性
4.6.5 客户端请求
4.6.6 配置变更
4.6.7 完整实现
4.6.8 Paxos练习题
4.7 其他Paxos变体
4.7.1 Disk Paxos
4.7.2 Cheap Paxos
4.7.3 Fast Paxos
4.7.4 Mencius
4.7.5 EPaxos
4.7.6 Flexible Paxos
4.7.7 WPaxos
4.7.8 CASPaxos
4.7.9 其他
4.8 Raft算法
4.8.1 系统模型
4.8.2 基本概念
4.8.3 领导者选举
4.8.4 日志复制
4.8.5 领导者更替
4.8.6 选举限制举例
4.8.7 延迟提交之前任期的日志条目
4.8.8 清理不一致的日志
4.8.9 处理旧领导者
4.8.10 客户端协议
4.8.11 实现线性一致性
4.8.12 配置变更
4.8.13 配置变更存在的Bug
4.8.14 情况下的活性问题
4.8.15 日志压缩
4.8.16 基于内存的状态机的快照
4.8.17 基于磁盘的状态机的快照
4.8.18 性能优化
4.8.19 Raft练习题
4.9 Paxos vs Raft
4.10 拜占庭容错和PBFT算法
4.11 本章小结
第5章 分布式事务
5.1 什么是分布式事务
5.2 原子提交
5.2.1 两阶段提交
5.2.2 三阶段提交
5.2.3 Paxos提交算法
5.2.4 基于Quorum的提交协议
5.2.5 Saga事务
5.3 并发控制
5.3.1 两阶段锁
5.3.2 乐观并发控制
5.3.3 多版本并发控制
5.4 Percolator
5.5 本章小结
第6章 时间和事件顺序
6.1 物理时钟
6.2 时钟同步
6.3 逻辑时钟
6.4 向量时钟
6.5 分布式快照
6.6 本章小结
第7章 案例研究
7.1 分布式文件系统
7.1.1 GFS的目标
7.1.2 架构
7.1.3 读取文件
7.1.4 写入文件
7.1.5 一致性模型
7.1.6 其他
7.2 分布式协调服务
7.2.1 ZooKeeper架构
7.2.2 数据模型
7.2.3 ZooKeeper实现
7.2.4 客户端API
7.2.5 其他
7.3 分布式表格存储Bigtable
7.3.1 数据模型
7.3.2 架构
7.3.3 SSTable和LSM Tree
7.3.4 其他优化
7.4 分布式键值存储Dynamo
7.4.1 架构
7.4.2 请求协调
7.4.3 成员管理和故障检测
7.5 分布式NoSQL数据库Cassandra
7.5.1 数据模型
7.5.2 架构
7.5.3 协调请求
7.5.4 一致性级别
7.5.5 轻量级事务
7.5.6 二级索引
7.5.7 批处理
7.6 分布式数据库Spanner
7.6.1 数据模型
7.6.2 架构
7.6.3 TrueTime
7.6.4 读写事务
7.6.5 只读事务
7.6.6 快照读和模式变更事务
7.7 分布式批处理
7.7.1 MapReduce
7.7.2 Spark
7.8 分布式流处理框架Flink
7.8.1 计算模型
7.8.2 系统架构
7.8.3 时间处理
7.8.4 分布式快照
7.8.5 端到端的精确一次语义
7.9 本章小结
內容試閱
前  言





21世纪以来,大规模分布式系统、云计算和云原生飞速发展,在短短20年间就成为各大企业信息技术基础架构的核心基石。企业迈向分布式的根本原因包括:移动互联网时代,各大企业每天都在和巨大的流量和爆炸性增长的数据打交道;摩尔定律的失效,使得提升单机性能会产生很高的成本,同时网络速度越来越快,意味着并行化程度只增不减;此外,许多应用都要求7×24小时可用,因停电或维护导致的服务不可用,变得越来越让人难以接受;后,经济全球化也导致了企业必须构建分布在多台计算机甚至多个地理区域的系统。
相较于单体应用或单机系统,分布式应用或分布式系统具有高性能、高可用性、容错性和可扩展性等优点。可见,未来所有的基础架构都会是分布式的。然而分布式系统是一个相当复杂的领域,需要处理各种各样的异常,这些异常不仅难以排查和诊断,而且难以复现,这不是增加测试或采用DevOps就能解决的,有些异常是不可避免的,需要在软件架构中做取舍。因此,想要构建一个健壮的分布式系统,必须先学习相关的基础知识,消化大量信息。尽管学习分布式系统好的方式是阅读大量的经典论文,但大部分关于分布式系统的资料,要么艰深太晦涩,要么散落在不计其数的学术论文中,对于初学分布式系统的从业者来说,门槛太高,学习曲线太陡峭;再加上相关知识点比较零散、不成体系,让人觉得云山雾罩、望而却步。本书以易懂的方式,配以大量的图示和代码,帮助读者构建分布式系统相关的知识体系,使读者不再惧怕Paxos或Raft等分布式算法。
笔者从事分布式系统工作多年,虽算不上“老兵”,但笔者对分布式系统的热爱与日俱增。在笔者曾工作过的腾讯微信事业部,基于共识算法构建了一套强大的分布式基础架构,支撑了十亿级用户数量的App。笔者如今涉足云原生领域,Kubernetes等开源分布式系统更是让无数“小厂”有机会抹平与一线企业基础设施的差距,轻松实现高可用、高并发和高可扩展性应用。本书内容源自笔者在工作和学习中积累的实际经验,也参考了无数前辈的研究成果。本书可以帮助开发人员设计出精美的分布式系统,理解其他研究者设计的系统和撰写的论文。对于运维人员,如今SRE如火如荼,而Google的《SRE运维解密》提到了大量Google自研的分布式系统,本书可以帮助运维人员更好地理解和实践SRE。总之,笔者希望通过本书让各个岗位的技术人员都有所收获,无论是自己动手设计系统,还是跟面试官或同事们聊起分布式系统,都能够胸有成竹。
本书写作目的
本书面向对分布式系统感兴趣的技术人员,无论初次接触分布式系统的新手、拥有工作经验的行家,还是分布式系统方面的专业人士,都可以根据自身所需阅读本书各个章节。
目前国内对分布式系统的学习非常依赖于国外课程和资源,其中的佼佼者如MIT的课程代号为6.824的经典分布式系统课程。然而,国内在分布式系统方面仍缺乏成体系的学习材料,缺乏对Paxos和Raft算法进行深入剖析同时包含实际代码实战的图书。更糟糕的是,分布式系统领域有的词语被过度复用,再加上翻译的影响,导致许多概念和术语混淆,代表性的便是“一致性”和“一致性算法”,读者可以就这两个概念与周围的朋友交流,应该会得到各种不同的答案。
因此,本书的写作目的还包括:
能解释清楚各种分布式原理、算法和系统“是什么”“为什么”“如何实现”,以及优缺点。同时,本书会穿插介绍许多分布式技术相关的有趣故事。能够讲清楚算法背景,尝试解决什么问题,如何解决,以及如何优化算法。能够尽量展示伪代码。笔者信奉“代码胜过千言”,虽然对于分布式系统来说,代码经常会比较复杂,但本书会尽量展示代码或伪代码。能够对每个原理举例并画图说明,并结合实际案例和经验进行分析。能够深度剖析各个案例,让读者无惧系统设计。本书结构
本书内容涵盖常见的分布式系统基础知识,包括分布式系统定义和基本原则、分布式数据基础、分布式共识算法(以Paxos和Raft为主)、分布式事务、分布式系统中的时间问题及案例分享。
第1章主要介绍什么是分布式系统,为什么需要分布式系统,以及分布式系统带来的挑战,后给出一些设计分布式系统时非常有用的数字。有基础的读者可以选择性阅读。
第2章主要介绍分布式系统模型,本章从两个著名的思想实验(两将军问题和拜占庭将军问题)开始,然后从网络链路、节点故障和时间三个方面对分布式系统进行分类,可作为读者日常工作中进行系统建模的引子。
第3章主要介绍分布式数据基础。为了满足分布式系统对高性能、可用性、容错性和可扩展性的需求,通常底层数据存储系统会对数据进行分散存储,常见的技术有数据分区和数据复制。然而,这也带来了一致性问题:上层应用如何理解分布式数据的不一致?什么样的数据是不一致的?什么是 CAP 定理?更深入地讲,我们该如何区分线性一致性、强一致性、弱一致性和终一致性等容易混淆的词汇?什么是隔离级别?它和一致性又有什么不同?本章尝试厘清分布式系统中这些概念,帮助读者更好地理解和构建一个分布式数据存储系统。
第4章主要介绍分布式共识算法,即Paxos和Raft等算法。共识算法通常作为一个分布式系统的基础库被其他应用调用,各大互联网厂商如Google、Meta、Amazon、腾讯、阿里巴巴、百度和字节跳动都实现了自己的Paxos或Raft基础库。但共识算法的难以理解可谓“臭名昭著”,笔者周围许多人都被Paxos晦涩的论文和数不尽的变体“劝退”。虽说Raft更为容易理解,但想要实现一个“工业级”的Raft,仍需许多必不可少的优化,并不像大多数人想象的那么简单。因此,本章毋庸置疑是本书重点,笔者将带领读者深入浅出地理解共识算法,让读者不再畏惧Paxos和Raft算法。
第5章主要介绍常见的分布式事务实现,主要分为原子提交和并发控制两部分。原子提交算法包括两阶段提交、三阶段提交、Paxos提交、Saga事务等,并发控制包括两阶段锁、乐观并发控制和多版本并发控制。后具体分析Google的Percolator——一个结合了两阶段提交和快照隔离的分布式事务解决方案。虽说分布式事务解决方案层出不穷,但基本离不开本书介绍的这几种类型。
第6章主要介绍分布式系统中的时间和事件顺序问题。由于分布式系统没有一个统一的时钟服务,所以诞生了许多单体系统中不存在的时钟问题,本章介绍了物理时钟、时钟同步、逻辑时钟、向量时钟和分布式快照。
第7章介绍了一些经典分布式系统的案例,这些案例的设计精妙且经久不衰,巧妙结合了前几章许多分布式系统的技术,成为人们争相模仿的对象,影响了无数的开发者和开源软件。本章重新审视这些案例,希望给读者带来新的灵感,能够帮助读者解决工作或面试中遇到的难题。
为了照顾初次接触分布式系统的读者,也为了循序渐进地展开主题,本书前两章会从基础概念讲起,有基础的读者可以选择跳过前两章的内容。
表达约定
介于不同的参考资料或不同的上下文语境,在本书中,对以下术语可能有不同的表述方式,例如:
节点:也叫进程、计算机、服务器、组件甚至副本。分片:有时会叫分区或水平分区,本书不考究其概念上的细微差别。共识(Consensus):国内许多博客会把Paxos或Raft等算法称为“一致性”算法,这容易与一致性(Consistency)混淆,因此,本书将其统称为共识算法。源代码与官方参考
相关链接请登录www.broadview.com.cn/42811中的下载资源处获取。
勘误和支持
笔者尽量保证书中的内容严谨,但限于笔者水平,无法保证内容百分之百全面与正确,本书可能出现的错误和不受欢迎的观点都是本人的原因,与笔者引用的参考资料没有任何关系。若读者在阅读过程中发现书中存在失误和不足,或者有任何建议,都可以通过本书源码仓库提交Issue或PR,还可以关注我的公众号“多颗糖”直接与我交流。我会把每一位读者都当作良师益友,你们的批评和意见我都会十分重视与感激,我会在本书后续版本和勘误中及时更新。

 

 

書城介紹  | 合作申請 | 索要書目  | 新手入門 | 聯絡方式  | 幫助中心 | 找書說明  | 送貨方式 | 付款方式 香港用户  | 台灣用户 | 大陸用户 | 海外用户
megBook.com.hk
Copyright © 2013 - 2024 (香港)大書城有限公司  All Rights Reserved.