新書推薦:
《
地下(村上春树沙林毒气事件的长篇纪实)
》
售價:NT$
332.0
《
偿还:债务与财富的阴暗面
》
售價:NT$
347.0
《
清华大学藏战国竹简校释(壹):《命训》诸篇
》
售價:NT$
408.0
《
封建社会农民战争问题导论(光启文库)
》
售價:NT$
296.0
《
虚弱的反攻:开禧北伐
》
售價:NT$
429.0
《
泰山:一种中国信仰专论(法国汉学经典译丛)
》
售價:NT$
380.0
《
花外集斠箋
》
售價:NT$
704.0
《
有兽焉.8
》
售價:NT$
305.0
|
編輯推薦: |
1.3 年持续打磨,总结 20 年架构经验,全网阅读量60万+;2.内容涉及拆分、调用、协同、计算、存储、调度、Gao性能和可用性、指标与监控等;3.按照“为什么→ 是什么 → 怎么办”的思路介绍;4.图文并茂,全书包含300多张图片。
|
內容簡介: |
本书从软件结构的发展历史入手,通过一个简单的例子,描述了分布式架构的特性和存在的问题,并围绕这些问题展开了分析和实践。书中从为什么、是什么、怎么办这三个方面,分别讲解了分布式应用服务的拆分、分布式调用、分布式协同、分布式计算、分布式存储、分布式资源管理和调度、高性能与可用性以及指标与监控等内容,基本涵盖了分布式技术的要点。读者既可以按照逻辑联系从前往后看,也可以只阅读感兴趣的章节。
|
關於作者: |
崔皓资深架构师,10 年分布式架构经验。曾任惠普技术专家。乐于分享,撰写了很多热门技术文章,阅读量超过 60 万。
|
目錄:
|
第 1章 分布式架构设计的特征与问题11.1 架构设计的演进过程 11.1.1 应用与数据一体模式 11.1.2 应用与数据分离模式 21.1.3 缓存与性能的提升 31.1.4 服务器集群处理并发 41.1.5 数据库读写分离 51.1.6 反向代理和CDN 61.1.7 分布式数据库与分表分库 91.1.8 业务拆分 101.1.9 分布式与微服务 111.2 一个简单的例子:分布式架构的组成 131.2.1 架构概述与分层 131.2.2 客户端与CDN 151.2.3 接入层 161.2.4 应用层 171.2.5 存储层 231.3 分布式架构的特征 261.4 分布式架构的问题 271.4.1 分布式架构的逻辑结构图 271.4.2 应用服务拆分 281.4.3 分布式调用 291.4.4 分布式协同 291.4.5 分布式计算 301.4.6 分布式存储 301.4.7 分布式资源管理与调度 311.4.8 高性能与可用性 311.4.9 指标与监控 311.5 本书的阅读方式 321.6 总结 33第 2章 分布式应用服务的拆分 342.1 起因与概念 342.2 拆分思路 362.3 模型结构 382.3.1 通用语言 382.3.2 领域、子域和限界上下文 392.3.3 实体和值类型 412.3.4 聚合和聚合根 452.3.5 领域事件 462.4 分析业务需求形成应用服务 482.4.1 分析业务流程 492.4.2 抽取领域对象和生成聚合 512.4.3 划定限界上下文 532.5 领域驱动设计分层 542.5.1 分层的概述与原则 542.5.2 分层的内容 562.5.3 分层的总结 572.5.4 服务内部的分层调用与服务间的调用 582.5.5 把分层映射到代码结构 602.5.6 代码分层示例 652.6 总结 70第3章 分布式调用 713.1 负载均衡 713.1.1 负载均衡分类 723.1.2 负载均衡算法 833.2 API 网关 853.2.1 API 网关的定义 853.2.2 API 网关的服务定位 873.2.3 API 网关的技术原理 883.3 服务注册与发现 903.3.1 服务注册与发现的概念和原理 913.3.2 服务注册中心的可用性 923.3.3 服务注册中心的服务保存 923.4 服务间的远程调用 923.4.1 RPC 调用过程 933.4.2 RPC 动态代理 943.4.3 RPC 序列化 973.4.4 协议编码 983.4.5 网络传输 993.4.6 Netty 实现 RPC 1043.5 总结 116第4章 分布式协同 1174.1 分布式系统的特性与互斥问题 1174.1.1 集中互斥算法 1184.1.2 基于许可的互斥算法 1204.1.3 令牌环互斥算法 1224.2 分布式锁 1244.2.1 分布式锁的由来和定义 1254.2.2 通过Redis缓存实现分布式锁 1264.2.3 通过ZooKeeper 实现分布式锁 1294.2.4 分布式分段加锁 1324.3 分布式事务 1334.3.1 ACID 理论 1344.3.2 CAP 理论 1354.3.3 BASE 理论 1374.3.4 DTP 模型 1394.3.5 分布式事务 2PC 解决方案 1414.3.6 分布式事务 TCC 解决方案 1434.4 分布式选举 1464.4.1 Bully 算法 1474.4.2 Raft 算法 1504.4.3 ZAB 算法 1544.5 ZooKeeper——分布式系统的实践 1574.5.1 从一个简单的例子开始 1574.5.2 Znode 的原理与使用 1584.5.3 Watcher 原理与使用 1594.5.4 Version 的原理与使用 1624.5.5 会话的原理与使用 1644.5.6 服务群组 1664.6 总结 169第5章 分布式计算 1715.1 MapReduce 模式 1715.1.1 MapReduce 的策略和理念 1715.1.2 MapReduce 的体系结构 1735.1.3 MapReduce 的工作流程 1755.1.4 MapReduce 的应用实例 1785.2 Stream 模式 1805.2.1 Stream 模式的处理过程及特点 1815.2.2 Storm 的体系结构与工作原理 1825.2.3 Storm 的并发机制 1855.2.4 Stream Grouping 1885.2.5 Storm 集群架构 1915.3 总结 193第6章 分布式存储 1956.1 数据存储面临的问题以及解决思路 1956.1.1 RAID 磁盘阵列 1966.1.2 分布式存储的组成要素 1996.2 分布式数据库 2006.2.1 分表分库 2006.2.2 主从复制 2056.2.3 数据扩容 2136.3 分布式缓存 2166.3.1 缓存分片算法 2176.3.2 Redis 集群方案 2216.3.3 缓存节点之间的通信 2226.3.4 请求分布式缓存的路由 2236.3.5 缓存节点的扩展和收缩 2266.3.6 缓存故障的发现和恢复 2286.4 总结 230第7章 分布式资源管理和调度 2317.1 分布式资源调度的由来与过程 2317.1.1 资源调度可以解决什么问题 2327.1.2 资源调度过程 2347.2 资源划分和调度策略 2377.2.1 Linux Container 资源是如何划分的 2377.2.2 任务与资源如何匹配 2447.3 分布式调度架构 2497.3.1 中央式调度器 2507.3.2 两级调度器 2537.3.3 共享状态调度器 2597.4 Kubernetes——资源调度的实践 2627.4.1 Kubernetes 架构概述 2637.4.2 从一个例子开始 2647.4.3 kubectl 和 API Server 2647.4.4 controller manager、Scheduler 和 kubelet 2687.4.5 Service 和 kubelet 2717.5 总结 277第8章 高性能与可用性 2788.1 缓存的应用 2788.1.1 处处皆缓存 2798.1.2 动静分离 2808.1.3 HTTP 缓存 2848.1.4 CDN 缓存 2888.1.5 DNS 结构与访问流程 2898.1.6 负载均衡实现动态缓存 2928.1.7 进程内缓存 2968.1.8 分布式进程缓存 3048.2 可用性 3068.2.1 请求限流 3068.2.2 服务降级 3148.2.3 服务熔断 3198.3 总结 328第9章 指标与监控 3299.1 为什么需要监控系统 3299.2 监控系统的指标 3309.3 创建监控系统的步骤 3329.4 监控系统的分类 3339.4.1 日志类监控 3339.4.2 调用链监控 3399.4.3 度量类监控:LSM Tree 和 LevelDB 3509.5 监控系统的分层 3559.6 Zabbix 实现监控系统 3569.6.1 Zabbix 构建监控系统过程 3579.6.2 Zabbix 架构的安装和配置 3589.6.3 Zabbix 监控方式 3649.7 Prometheus 实现监控系统 3699.7.1 Prometheus 系统架构 3699.7.2 时间序列与 Metric 数据模型 3709.7.3 Exporter 采集数据与服务发现 3729.7.4 报警规则的定义和报警路由的分发 3749.8 总结 378第 10章 架构设计思路和要点 37910.1 架构设计思维方式 37910.1.1 架构师的设计模型 37910.1.2 过程设计模型 38310.1.3 协作式设计模型 38610.1.4 扩展立方设计模型 38910.2 重构与测试 39110.2.1 代码重构 39110.2.2 性能测试与压力测试 39510.3 学习与发展 40110.3.1 思维方式 40110.3.2 学习提升 40210.3.3 职业发展 40310.4 总结 405
|
|