[套装书]架构之道:软件构建的设计方法+凤凰架构:构建可靠的大型分布式系统(2册)

作者
居瓦·洛瑞 周志明
丛书名
架构师书库
出版社
机械工业出版社
ISBN
9782108101751
简要
简介
内容简介书籍计算机书籍 ---------------------------8082990 - 架构之道:软件构建的设计方法--------------------------- 本课程通过自顶向下的程序设计演示和解释,教授学生如何在机器层面上编写和调试程序,并将有效的设计技巧应用于多种程序设计课程。这种方法简化并消除了学生在学习更高级的计算机体系结构和操作系统课程之前需要掌握的概念。 ---------------------------8081487 - 凤凰架构:构建可靠的大型分布式系统--------------------------- 内容简介 这是一本从架构视角讲解如何构建大型分布式系统的著作,是超级畅销书《深入理解Java虚拟机》的作者周志明多年架构和研发经验的总结,得到了多位行业资深架构专家的联袂推荐。 全书共16章,分为演进中的架构、架构师的视角、分布式的基石、不可变基础设施和技术方法论五部分。 第1部分 演进中的架构(第1章) 着重介绍了软件开发历史中多种主流架构风格出现的契机、解决的问题以及带来的新缺陷。 第二部分 架构师的视角(第2~5章) 总结了一名架构师应该在架构设计时思考哪些问题,有哪些主流的解决方案和行业标准做法,各种方案有什么优缺点,不同的解决方法会带来什么不同的影响,等等。 第三部分 分布式的基石(第6~10章) . 重点讨论了“不同架构风格是应该在技术规范上统一,还是由应用系统自行解决”这个问题,给出了解决思路、方法和常见工具。 第四部分 不可变基础设施(第11~15章) 重点讲解了基础设施不变性的目的、原理与实现途径,包括虚拟化容器、容器间网络、持久化存储、资源与调度、服务网格等内容。 第五部分 技术方法论(第16章) 面向技术决策者集中讨论了与分布式、微服务、架构等相关的理论话题,将解决问题的能力归纳、总结、升华为方法论。 全书以实践为导向,一个案例贯穿全书,同时给出了基于Spring Boot、Spring Cloud、Kubernetes、Istio、AWS Lambda 五种架构风格的样例工程。
目录
[套装书具体书目]
8081487 - 凤凰架构:构建可靠的大型分布式系统 - 9787111683919 - 机械工业出版社 - 定价 99
8082990 - 架构之道:软件构建的设计方法 - 9787111687702 - 机械工业出版社 - 定价 199



---------------------------8082990 - 架构之道:软件构建的设计方法---------------------------


赞誉
译者序
前言
作者介绍
第1章 元设计方法 / 1
1.1 什么是元设计方法 / 2
1.1.1 设计验证 / 3
1.1.2 紧迫的时间 / 3
1.1.3 消除分析瘫痪 / 4
1.1.4 沟通 / 5
1.2 元设计方法不是什么 / 6
|第一部分| 系统设计
第2章 分解 / 8
2.1 避免功能分解 / 9
2.1.1 功能分解带来的问题 / 9
2.1.2 关于功能分解的思考 / 13
2.1.3 避免领域分解 / 15
2.1.4 错误的动机 / 17
2.1.5 可测试性和设计 / 17
2.1.6 示例:功能型交易系统 / 19
2.2 基于易变性的分解 / 21
2.2.1 分解、维护和开发 / 22
2.2.2 普遍性原则 / 23
2.2.3 基于易变性的分解与测试 / 24
2.2.4 易变性的挑战 / 24
2.3 识别易变性 / 26
2.3.1 易变性与可变性 / 26
2.3.2 易变轴 / 27
2.3.3 伪装成需求的解决方案 / 29
2.3.4 易变列表 / 30
2.3.5 示例:基于易变性的交易系统 / 30
2.3.6 抵制“塞壬之歌” / 34
2.3.7 易变性与业务 / 35
2.3.8 为竞争对手设计 / 37
2.3.9 易变性和寿命 / 38
2.3.10 实践的重要性 / 38
第3章 结构 / 40
3.1 用例和需求 / 41
3.2 分层方法 / 43
3.3 典型分层 / 44
3.3.1 客户端层 / 44
3.3.2 业务逻辑层 / 45
3.3.3 资源访问层 / 46
3.3.4 资源层 / 47
3.3.5 实用工具库栏 / 48
3.4 分类指南 / 48
3.4.1 命名的玄机 / 48
3.4.2 四个问题 / 49
3.4.3 管理器与引擎比 / 50
3.4.4 关键观察 / 51
3.5 子系统和服务 / 52
3.5.1 增量构造 / 52
3.5.2 关于微服务 / 54
3.6 开放和封闭式架构 / 56
3.6.1 开放式架构 / 56
3.6.2 封闭式架构 / 56
3.6.3 半封闭/半开放架构 / 57
3.6.4 放宽规则 / 57
3.6.5 设计禁忌 / 59
3.6.6 力求对称 / 61
第4章 组合 / 62
4.1 需求与变更 / 62
4.1.1 憎恨变更 / 63
4.1.2 设计基本准则 / 63
4.2 可组合设计 / 64
4.2.1 核心用例 / 64
4.2.2 架构师的使命 / 65
4.3 这里没有功能 / 68
4.4 处理变更 / 69
第5章 系统设计示例 / 71
5.1 系统概述 / 72
5.1.1 遗留系统 / 73
5.1.2 新系统 / 74
5.1.3 公司 / 74
5.1.4 用例 / 74
5.2 反设计工作 / 80
5.2.1 巨型系统 / 80
5.2.2 颗粒化构建块 / 80
5.2.3 域分解 / 81
5.3 业务对齐 / 82
5.3.1 愿景 / 82
5.3.2 业务目标 / 83
5.3.3 使命陈述 / 84
5.4 架构 / 84
5.4.1 TradeMe词汇表 / 84
5.4.2 TradeMe易变区域 / 85
5.4.3 静态架构 / 88
5.4.4 操作概念 / 90
5.4.5 工作流管理器 / 92
5.5 设计验证 / 93
5.5.1 添加技工/承包商用例 / 94
5.5.2 请求技工用例 / 95
5.5.3 匹配技工用例 / 96
5.5.4 分配技工用例 / 98
5.5.5 终止技工用例 / 100
5.5.6 支付技工用例 / 101
5.5.7 创建项目用例 / 101
5.5.8 结束项目用例 / 102
5.6 接下来会是什么 / 103
|第二部分| 项目设计
第6章 动机 / 106
6.1 项目设计的背景和基本动机 / 106
6.1.1 项目设计和项目稳健 / 107
6.1.2 组装说明 / 108
6.2 软件项目的需求层级 / 108
第7章 项目设计综述 / 111
7.1 定义成功 / 111
7.2 项目初始人员配备 / 113
7.2.1 一个架构师,非一群架构师 / 113
7.2.2 核心团队 / 114
7.3 明智的决定 / 116
7.3.1 计划,不计划 / 116
7.3.2 软件开发计划评审 / 117
7.4 服务和开发人员 / 117
7.4.1 设计和团队效率 / 119
7.4.2 任务连续性 / 120
7.5 工作量的估算 / 120
7.5.1 经典错误 / 121
7.5.2 估算技术 / 123
7.5.3 总体项目估算 / 124
7.5.4 活动估算 / 126
7.6 关键路径分析 / 127
7.6.1 项目网络图 / 127
7.6.2 关键路径 / 130
7.6.3 分配资源 / 131
7.7 安排活动 / 134
7.8 项目费用 / 140
7.9 挣值计划 / 143
7.9.1 经典错误 / 144
7.9.2 浅S曲线 / 145
7.10 角色和责任 / 148
第8章 网络和浮动时间 / 149
8.1 网络图 / 149
8.1.1 节点图 / 150
8.1.2 箭头图 / 150
8.1.3 箭头图与节点图 / 151
8.2 浮动时间 / 152
8.2.1 总浮动时间 / 153
8.2.2 自由浮动时间 / 153
8.2.3 计算浮动时间 / 154
8.2.4 可视化浮动时间 / 155
8.3 基于浮动时间的进度安排 / 157
第9章 时间和成本 / 159
9.1 加速软件项目 / 159
9.2 进度压缩 / 162
9.2.1 利用更好的资源 / 162
9.2.2 并行工作 / 162
9.2.3 并行工作和成本 / 164
9.3 时间-成本曲线 / 164
9.3.1 时间-成本曲线上的要点 / 165
9.3.2 离散建模 / 167
9.3.3 避免经典错误 / 168
9.3.4 项目可行性 / 168
9.3.5 找到常规方案 / 169
9.4 项目成本要素 / 171
9.4.1 直接成本 / 171
9.4.2 间接成本 / 172
9.4.3 会计与价值 / 172
9.4.4 总成本、直接成本和间接成本 / 172
9.4.5 压缩和成本要素 / 173
9.4.6 人员配备和成本要素 / 176
9.4.7 固定成本 / 178
9.5 网络压缩 / 178
第10章 风险 / 181
10.1 选择选项 / 181
10.2 时间-风险曲线 / 182
10.3 风险建模 / 184
10.3.1 标准化风险 / 185
10.3.2 风险和浮动 / 185
10.3.3 风险和直接成本 / 186
10.3.4 临界风险 / 186
10.3.5 斐波那契风险 / 188
10.3.6 活动风险 / 189
10.3.7 临界风险与活动风险 / 191
10.4 压缩和风险 / 191
10.5 风险缓解 / 192
10.5.1 如何缓解 / 192
10.5.2 缓解目标 / 193
10.6 风险指标 / 194
第11章 实践中的项目设计 / 196
11.1 使命 / 196
11.1.1 静态架构 / 197
11.1.2 调用链 / 197
11.1.3 活动清单 / 199
11.1.4 网络图 / 200
11.1.5 计划假设 / 201
11.2 寻找常规的解决方案 / 203
11.2.1 无限的资源(迭代1) / 203
11.2.2 网络和资源问题 / 204
11.2.3 基础设施优先(迭代2) / 204
11.2.4 有限的资源 / 205
11.2.5 亚临界化(迭代7) / 208
11.2.6 选择常规的解决方案 / 211
11.3 网络压缩 / 211
11.3.1 使用更好的资源进行压缩 / 211
11.3.2 引入并行工作 / 213
11.3.3 压缩迭代结束 / 219
11.3.4 产出分析 / 219
11.4 效率分析 / 221
11.5 时间-成本曲线 / 221
11.5.1 时间-成本相关模型 / 222
11.5.2 死亡区域 / 224
11.6 规划与风险 / 225
11.6.1 风险缓解 / 226
11.6.2 重建时间-成本曲线 / 228
11.6.3 风险模型化 / 230
11.6.4 风险包含与排除 / 232
11.7 SDP评审 / 232
第12章 高级技巧 / 234
12.1 上帝活动 / 234
12.2 风险交叉点 / 235
12.3 找到缓解目标 / 238
12.4 几何风险 / 240
12.4.1 几何临界风险 / 241
12.4.2 几何斐波那契风险 / 241
12.4.3 几何活动风险 / 242
12.4.4 几何风险行为 / 243
12.5 执行复杂度 / 244
12.5.1 圈复杂度 / 244
12.5.2 项目类型与复杂度 / 245
12.5.3 项目压缩与复杂度 / 246
12.6 超大型项目 / 247
12.6.1 复杂系统与脆弱性 / 248
12.6.2 网络群 / 250
12.6.3 设计网络群 / 250
12.7 小项目 / 253
12.8 基于层次设计 / 253
12.8.1 基于层次设计的利弊 / 254
12.8.2 层次与构造 / 255
第13章 项目设计示例 / 256
13.1 估算 / 257
13.1.1 单个活动估算 / 257
13.1.2 总体项目估算 / 258
13.2 依赖关系和项目网络 / 259
13.2.1 行为依赖 / 259
13.2.2 非行为依赖 / 259
13.2.3 覆盖某些依赖 / 260
13.2.4 完整性检查 / 260
13.3 常规方案 / 261
13.3.1 网络图 / 261
13.3.2 计划进度 / 263
13.3.3 计划的人员配备分布 / 263
13.3.4 成本和效率 / 264
13.3.5 结果总结 / 264
13.4 压缩方案 / 264
13.4.1 添加启用活动 / 264
13.4.2 分配资源 / 265
13.4.3 计划进度 / 266
13.4.4 计划的人员配备分布 / 266
13.4.5 成本和效率 / 266
13.4.6 结果总结 / 267
13.5 分层设计 / 268
13.5.1 分层设计和风险 / 268
13.5.2 人员配备分布 / 269
13.5.3 结果总结 / 269
13.6 亚临界方案 / 269
13.6.1 持续时间、计划进度和风险 / 270
13.6.2 成本和效率 / 270
13.6.3 结果总结 / 270
13.7 比较选项 / 271
13.8 计划与风险 / 271
13.8.1 风险缓解 / 271
13.8.2 重新计算成本 / 274
13.9 为SDP评审做准备 / 274
第14章 总结 / 276
14.1 项目设计时间 / 276
14.1.1 真实的答案 / 277
14.1.2 迈向未来 / 278
14.2 一般性指导 / 279
14.2.1 架构与估算 / 279
14.2.2 设计立场 / 280
14.2.3 可选性 / 280
14.2.4 压缩 / 281
14.2.5 计划与风险 / 283
14.3 项目设计的设计 / 283
14.4 不同的视角 / 285
14.5 交接 / 287
14.5.1 初级交接 / 287
14.5.2 高级交接 / 287
14.5.3 资深开发人员作为初级架构师 / 288
14.6 实践 / 289
14.7 项目设计的口头汇报 / 290
14.8 关于质量 / 291
14.8.1 质量控制活动 / 291
14.8.2 质量保证活动 / 292
14.8.3 质量与文化 / 293
|附录|
附录A 项目跟踪 / 296
附录B 服务契约设计 / 310
附录C 设计标准 / 323



---------------------------8081487 - 凤凰架构:构建可靠的大型分布式系统---------------------------


赞誉
自序
前言
第一部分 演进中的架构
第1章 服务架构演进史2
1.1 原始分布式时代2
1.2 单体系统时代5
1.3 SOA时代8
1.4 微服务时代12
1.5 后微服务时代16
1.6 无服务时代19
第二部分 架构师的视角
第2章 访问远程服务24
2.1 远程服务调用24
2.1.1 进程间通信24
2.1.2 通信的成本26
2.1.3 三个基本问题28
2.1.4 统一的RPC30
2.1.5 分裂的RPC32
2.2 REST设计风格34
2.2.1 理解REST35
2.2.2 RESTful的系统37
2.2.3 RMM41
2.2.4 不足与争议45
第3章 事务处理48
3.1 本地事务49
3.1.1 实现原子性和持久性50
3.1.2 实现隔离性54
3.2 全局事务57
3.3 共享事务62
3.4 分布式事务64
3.4.1 CAP与ACID64
3.4.2 可靠事件队列67
3.4.3 TCC事务69
3.4.4 SAGA事务72
第4章 透明多级分流系统75
4.1 客户端缓存76
4.1.1 强制缓存77
4.1.2 协商缓存79
4.2 域名解析81
4.3 传输链路83
4.3.1 连接数优化84
4.3.2 传输压缩88
4.3.3 快速UDP网络连接90
4.4 内容分发网络92
4.4.1 路由解析92
4.4.2 内容分发95
4.4.3 CDN应用96
4.5 负载均衡97
4.5.1 数据链路层负载均衡99
4.5.2 网络层负载均衡101
4.5.3 应用层负载均衡104
4.5.4 均衡策略与实现106
4.6 服务端缓存107
4.6.1 缓存属性108
4.6.2 缓存风险117
第5章 架构安全性120
5.1 认证121
5.1.1 认证的标准121
5.1.2 认证的实现128
5.2 授权129
5.2.1 RBAC130
5.2.2 OAuth 2133
5.3 凭证140
5.3.1 Cookie-Session140
5.3.2 JWT142
5.4 保密147
5.4.1 保密的强度147
5.4.2 客户端加密148
5.4.3 密码存储和验证149
5.5 传输151
5.5.1 摘要、加密与签名151
5.5.2 数字证书154
5.5.3 传输安全层157
5.6 验证160
第三部分 分布式的基石
第6章 分布式共识166
6.1 Paxos168
6.1.1 Paxos的诞生169
6.1.2 算法流程169
6.1.3 工作实例172
6.2 Multi Paxos174
6.3 Gossip协议178
第7章 从类库到服务180
7.1 服务发现180
7.1.1 服务发现的意义181
7.1.2 可用与可靠182
7.1.3 注册中心实现185
7.2 网关路由186
7.2.1 网关的职责186
7.2.2 网络I/O模型188
7.2.3 BFF网关190
7.3 客户端负载均衡191
7.3.1 客户端负载均衡器193
7.3.2 代理负载均衡器194
7.3.3 地域与区域196
第8章 流量治理198
8.1 服务容错198
8.1.1 容错策略199
8.1.2 容错设计模式201
8.2 流量控制209
8.2.1 流量统计指标210
8.2.2 限流设计模式211
8.2.3 分布式限流215
第9章 可靠通信217
9.1 零信任网络217
9.1.1 零信任安全模型的特征218
9.1.2 Google的实践探索220
9.2 服务安全222
9.2.1 建立信任222
9.2.2 认证223
9.2.3 授权227
第10章 可观测性230
10.1 事件日志233
10.1.1 输出233
10.1.2 收集与缓冲235
10.1.3 加工与聚合236
10.1.4 存储与查询237
10.2 链路追踪239
10.2.1 追踪与跨度239
10.2.2 数据收集240
10.2.3 追踪规范化243
10.3 聚合度量244
10.3.1 指标收集245
10.3.2 存储查询248
10.3.3 监控预警250
第四部分 不可变基础设施
第11章 虚拟化容器254
11.1 容器的崛起256
11.1.1 隔离文件:chroot256
11.1.2 隔离访问:名称空间257
11.1.3 隔离资源:cgroups258
11.1.4 封装系统:LXC259
11.1.5 封装应用:Docker260
11.1.6 封装集群:Kubernetes263
11.2 以容器构建系统266
11.2.1 隔离与协作266
11.2.2 韧性与弹性271
11.3 以应用为中心的封装275
11.3.1 Kustomize276
11.3.2 Helm与Chart277
11.3.3 Operator与CRD279
11.3.4 开放应用模型284
第12章 容器间网络288
12.1 Linux网络虚拟化288
12.1.1 网络通信模型289
12.1.2 干预网络通信291
12.1.3 虚拟化网络设备294
12.1.4 容器间通信304
12.2 容器网络与生态306
12.2.1 CNM与CNI306
12.2.2 CNM到CNI308
12.2.3 网络插件生态310
第13章 持久化存储314
13.1 Kubernetes存储设计314
13.1.1 Mount和Volume316
13.1.2 静态存储分配318
13.1.3 动态存储分配322
13.2 容器存储与生态325
13.2.1 Kubernetes存储架构325
13.2.2 FlexVolume与CSI327
13.2.3 从In-Tree到Out-of-Tree329
13.2.4 容器插件生态331
第14章 资源与调度336
14.1 资源模型336
14.2 服务质量与优先级337
14.3 驱逐机制340
14.4 默认调度器342
第15章 服务网格346
15.1 透明通信的涅槃347
15.1.1 通信成本347
15.1.2 数据平面352
15.1.3 控制平面358
15.2 服务网格与生态360
15.2.1 服务网格接口361
15.2.2 通用数据平面API363
15.2.3 服务网格生态364
第五部分 技术方法论
第16章 向微服务迈进368
16.1 目的:微服务的驱动力369
16.2 前提:微服务需要的条件371
16.3 边界:微服务的粒度375
16.4 治理:理解系统复杂性377
16.4.1 静态的治理378
16.4.2 发展的治理380
附录A 技术演示工程实践383
附录B 部署Kubernetes集群402

推荐

车牌查询
桂ICP备20004708号-3