[套装书]架构之道+架构真意+软件架构+架构师的自我修炼+架构即未来(5册)

作者
居瓦·洛瑞 范钢 孙玄 马克·理查兹 尼尔·福特 李智慧 马丁 L. 阿伯特 迈克尔 T. 费舍尔
丛书名
架构师书库
出版社
机械工业出版社
ISBN
9782109262071
简要
简介
内容简介书籍计算机书籍 ---------------------------8082990 - 架构之道:软件构建的设计方法--------------------------- 本课程通过自顶向下的程序设计演示和解释,教授学生如何在机器层面上编写和调试程序,并将有效的设计技巧应用于多种程序设计课程。这种方法简化并消除了学生在学习更高级的计算机体系结构和操作系统课程之前需要掌握的概念。 ---------------------------8082131 - 架构真意:企业级应用架构设计方法论与实践--------------------------- 本书分三大部分: 首先是部分,架构设计方法论。这部分首先侃侃而谈,为架构师成长指引道路。然后,以“5视图法”架构设计为主线,同时穿插领域驱动设计、整洁架构设计、大前端+技术中台等思想,为读者展现一整套严密、完整,且落地可操作的架构设计方法。后,探讨另一个难题:技术架构改造,并提出架构跑道、使能故事、架构重构等一系列方法。 之后是第二部分,分布式架构设计与实践。这部分从实践的角度讲解目前非常流行的互联网分布式架构的设计思路、软件架构,以及涉及的软件技术,让读者在应对这一类型的系统时,对架构设计、技术选型、架构演化,都有一个清楚的认识。 第三部分,大数据架构设计。这部分首先从宏观的角度描绘未来大数据、人工智能的发展方向、商业应用,以及技术发展趋势,以及5G/物联网背景下新的发展动向。然后,从大数据技术、数据治理、数据分析和人工智能等几个方面,讲解大数据架构设计。 ---------------------------8081045 - 软件架构:架构模式、特征及实践指南--------------------------- . 本书全面概述了软件架构的方方面面,涉及架构特征、架构模式、组件识别、图表化和展示架构、演进架构,以及许多其他主题。本书分为三部分。第1部分介绍关于组件化、模块化、耦合和度量软件复杂度的基本概念和术语。第2部分详细介绍各种架构风格:分层架构风格、管道架构风格、微内核架构风格、基于服务的架构风格、事件驱动的架构风格、基于空间的架构风格、编制驱动的面向服务的架构、微服务架构。第3部分介绍成为一个成功的软件架构师所必需的关键技巧和软技能。 ---------------------------8079921 - 架构师的自我修炼:技术、架构和未来--------------------------- 本书共38章,分四个部分。 第 一部分是架构师的基础知识修炼。软件的基础知识原理主要是操作系统、数据结构、数据库原理等,书中会从常见的问题入手,直达这些基础技术本质的原理,并覆盖这些基础技术的关键技术点,帮助读者理解这些基础技术原理和日常开发工作的关联关系,对这些基础技术有一个全新的认知。 第二部分是架构师的程序设计修炼。讲述如何设计一个强大灵活、易复用、易维护的软件,在这个过程中,应该依赖哪些工具和方法,遵循哪些原则和思想,使用哪些模式和手段。 第三部分是架构师的架构方法修炼。围绕目前主要的互联网分布式架构以及大数据、物联网架构分析这些架构背后的原理,详解它们都遵循了怎样的驱动力和设计思想,以及如何通过这些技术实现系统的高可用和高性能。 第四部分是架构师的思维修炼。软件开发是一个实践性很强的活动,如果只是学习技术,那就是在纸上谈兵。只有将知识技能应用到工作实践中,才能真正体会到技术的关键点在哪里。如何在工作中处理好各种关系,得到充分的授权和信任,在工作中实践自己的技术思想,并为公司创造更多的价值,使自己的技术成长和职业发展进入互相促进的正向通道,也是架构师需要修炼与提升的。 ---------------------------4939961 - 架构即未来:现代企业可扩展的Web架构、流程和组织(原书第2版)--------------------------- 任何一个持续成长的公司最终都需要解决系统、组织和流程的扩展性问题。本书汇聚了作者从eBay、VISA、Salesforce.com到Apple超过30年的丰富经验, 全面阐释了经过验证的信息技术扩展方法,对所需要掌握的产品和服务的平滑扩展做了详尽的论述,并在第1版的基础上更新了扩展的策略、技术和案例。 针对技术和非技术的决策者,马丁?阿伯特和迈克尔?费舍尔详尽地介绍了影响扩展性的各个方面,包括架构、过程、组织和技术。通过阅读本书,你可以学习到以*大化敏捷性和扩展性来优化组织机构的新策略,以及对云计算(IaaS/PaaS)、NoSQL、DevOps和业务指标等的新见解。而且利用其中的工具和建议,你可以系统化地清除扩展性道路上的障碍,在技术和业务上取得前所未有的成功。第二版的更新:用现实世界中成功和失败的真实故事,取代第一版中的AllScale虚拟案例新增了关键话题:敏捷组织的新型结构,把数据中心转移到云端的决策根据,业务指标对系统整体健康的重要性,云计算技术,以及关于NoSQL解决方案的讨论等。
目录
[套装书具体书目]
4939961 - 架构即未来:现代企业可扩展的Web架构、流程和组织(原书第2版) - 9787111532644 - 机械工业出版社 - 定价 99
8079921 - 架构师的自我修炼:技术、架构和未来 - 9787111679363 - 机械工业出版社 - 定价 89
8081045 - 软件架构:架构模式、特征及实践指南 - 9787111682196 - 机械工业出版社 - 定价 129
8082131 - 架构真意:企业级应用架构设计方法论与实践 - 9787111685029 - 机械工业出版社 - 定价 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



---------------------------8082131 - 架构真意:企业级应用架构设计方法论与实践---------------------------


前言
第一部分 架构设计方法论
第1章 架构师的修炼5
1.1 何为软件架构5
1.1.1 常见研发场景6
1.1.2 准确理解软件架构7
1.2 如何成为合格的架构师9
1.2.1 架构师的职责9
1.2.2 架构师的思维模式10
1.3 如何成为顶级的架构师12
1.3.1 能够将业务转换为技术13
1.3.2 能合理利用技术支撑业务13
1.3.3 具备前瞻思维和战略思维15
1.4 “5视图法”架构设计16
第2章 逻辑架构设计18
2.1 用例模型分析19
2.1.1 用例模型20
2.1.2 由粗到细的用例分析21
2.1.3 用例描述23
2.1.4 事件流25
2.1.5 业务需求列表29
2.1.6 需求规格说明书30
2.2 界面原型分析32
2.3 领域模型分析34
2.3.1 软件退化的根源34
2.3.2 两顶帽子的设计方式38
2.3.3 领域驱动的设计思想41
2.3.4 领域驱动的变更设计42
2.3.5 领域驱动设计总结48
2.4 技术可行性分析50
第3章 数据架构设计52
3.1 数据架构的设计过程52
3.2 基于领域的数据库设计54
3.2.1 传统的4种关系55
3.2.2 继承关系59
3.2.3 NoSQL数据库的设计61
3.3 基于领域的程序设计63
3.3.1 服务、实体与值对象64
3.3.2 贫血模型与充血模型64
3.3.3 聚合70
3.3.4 仓库与工厂71
3.3.5 问题域和限界上下文75
第4章 开发架构设计78
4.1 系统规划与接口定义78
4.1.1 系统规划79
4.1.2 接口定义80
4.2 系统分层与整洁架构82
4.2.1 系统分层82
4.2.2 底层技术更迭84
4.2.3 整洁架构设计86
4.2.4 易于维护的架构88
4.3 技术中台建设90
4.3.1 增删改的架构设计91
4.3.2 查询功能的架构设计94
4.3.3 支持领域驱动的架构设计99
4.3.4 支持微服务的架构设计107
4.4 技术选型与技术规划109
4.4.1 软件正确决策的过程109
4.4.2 商用软件与开源框架110
4.5 模块划分与代码规范111
第5章 运行架构设计114
5.1 属性→场景→决策115
5.2 非功能性需求117
5.3 恰如其分的架构设计117
5.4 技术架构演化118
5.4.1 意图架构119
5.4.2 使能故事120
5.4.3 架构跑道122
5.4.4 我们的实践122
5.5 技术改造与软件重构124
5.5.1 架构师的十年奋斗125
5.5.2 演化式的技术改造思路126
5.5.3 一个遗留系统改造的故事127
第6章 物理架构设计131
6.1 集中式与分布式132
6.2 网络架构图134
6.3 系统架构与应用架构135
第二部分 分布式架构设计与实践
第7章 分布式架构设计141
7.1 互联网架构演进141
7.1.1 All-in-One架构142
7.1.2 流量在1000万以内的架构设计143
7.1.3 流量在1000万以上的架构设计147
7.1.4 流量在5000万以上的架构设计155
7.1.5 亿级流量的架构设计160
7.2 分布式技术165
7.2.1 分布式缓存165
7.2.2 内存数据库169
7.2.3 分布式事务173
7.2.4 分布式队列179
7.2.5 分布式数据库182
第8章 微服务架构设计192
8.1 为什么要采用微服务架构192
8.1.1 快速变化需要快速交付192
8.1.2 打造高效的团队组织193
8.1.3 大前端+技术中台196
8.1.4 小而专的微服务197
8.1.5 微服务中的去中心化概念199
8.1.6 互联网转型利器202
8.2 微服务的关键技术204
8.2.1 注册中心205
8.2.2 服务网关219
8.2.3 熔断机制227
8.3 微服务的系统设计235
8.3.1 6种设计模式235
8.3.2 微服务设计实践244
8.3.3 微服务测试调优262
8.4 微服务项目实战过程276
8.4.1 在线订餐系统项目实战278
8.4.2 统一语言与事件风暴278
8.4.3 子域划分与限界上下文282
8.4.4 微服务拆分与设计实现284
第9章 基于云端的分布式部署290
9.1 DevOps与快速交付290
9.2 Docker容器技术292
9.2.1 虚拟技术与容器技术292
9.2.2 对Docker容器的操作294
9.2.3 用Dockerfile制作镜像296
9.2.4 微服务的Docker容器部署297
9.2.5 Docker容器的应用298
9.2.6 搭建Docker本地私服299
9.3 Kubernetes分布式容器管理299
9.3.1 微服务发布的难题299
9.3.2 Kubernetes的运行原理300
9.3.3 Kubernetes的应用场景303
9.3.4 Kubernetes的虚拟网络304
9.3.5 用Kubernetes部署微服务305
9.3.6 用有状态集部署组件308
9.3.7 Kubernetes应用实践310
9.4 自动化运维平台实践312
第三部分 大数据架构设计
第10章 大数据时代变革319
10.1 从IT时代向DT时代转变319
10.2 数据分析与应用319
10.2.1 数据应用的发展历程320
10.2.2 数据应用的成熟度321
10.3 数据中台建设325
10.3.1 对数据中台的正确理解325
10.3.2 数据中台建设的核心326
10.3.3 数据中台的建设思路332
10.3.4 数据中台的技术架构333
第11章 大数据技术中台335
11.1 大数据技术335
11.1.1 Hadoop技术框架336
11.1.2 Spark技术框架339
11.2 大数据采集345
11.2.1 结构化数据采集346
11.2.2 非结构化数据采集347
11.3 大数据治理350
11.3.1 SparkSQL大数据开发中台351
11.3.2 ETL过程的设计实践353
11.3.3 数据仓库建设357
11.3.4 数据标签设计360
11.4 大数据展示362
11.4.1 大数据索引363
11.4.2 多维模型分析367
11.4.3 HBase数据库369



---------------------------8081045 - 软件架构:架构模式、特征及实践指南---------------------------


前言:失效的公理1
第1章 概述5
1.1 定义软件架构7
1.2 架构师的角色期望10
1.3 与架构的交集14
1.4 软件架构定律19
第一部分 基础21
第2章 架构思维23
2.1 架构与设计24
2.2 技术广度25
2.3 分析权衡28
2.4 理解业务驱动因素31
2.5 平衡架构和动手编码31
第3章 模块化34
3.1 定义34
3.2 度量模块化36
3.3 从模块到组件48
第4章 现有的架构特征49
4.1 部分已罗列出来的架构特征51
4.2 权衡和最差可用的架构56
第5章 识别架构特征57
5.1 从领域问题中提取架构特征57
5.2 从需求中提取架构特征59
5.3 案例研究:硅三明治60
第6章 度量和治理架构特征66
6.1 度量架构特征66
6.2 治理和适应度函数70
第7章 架构特征的范围76
7.1 耦合与共生性76
7.2 架构量子与粒度77
第8章 组件化思维83
8.1 组件范围83
8.2 架构师角色84
8.3 开发人员角色90
8.4 组件识别流程90
8.5 组件粒度91
8.6 组件设计92
8.7 案例研究:“前进,前进,消失”之发现组件94
8.8 架构量子回归:单体架构和分布式架构之间的选择96
第二部分 架构风格99
第9章 基础101
9.1 基础模式101
9.2 单体架构与分布式架构104
第10章 分层架构风格112
10.1 拓扑结构112
10.2 分层隔离性113
10.3 增加分层114
10.4 其他考虑116
10.5 为什么使用这种架构风格116
10.6 架构特征评级117
第11章 管道架构风格119
11.1 拓扑结构119
11.2 示例121
11.3 架构特征评级122
第12章 微内核架构风格124
12.1 拓扑结构124
12.2 注册129
12.3 契约130
12.4 示例和用例131
12.5 架构特征评级132
第13章 基于服务的架构风格134
13.1 拓扑结构134
13.2 拓扑结构变体135
13.3 服务设计和粒度137
13.4 数据库分区138
13.5 架构示例139
13.6 架构特征评级141
13.7 何时使用这种架构风格143
第14章 事件驱动的架构风格144
14.1 拓扑结构145
14.2 代理拓扑145
14.3 中介拓扑149
14.4 异步能力156
14.5 错误处理157
14.6 防止数据丢失160
14.7 广播功能162
14.8 请求-应答163
14.9 在基于请求和基于事件之间进行选择165
14.10 混合的事件驱动的架构166
14.11 架构特征评级166
第15章 基于空间的架构风格169
15.1 常规拓扑结构170
15.2 数据冲突179
15.3 云实现与预置实现181
15.4 复制缓存与分布式缓存182
15.5 近缓存中的注意事项184
15.6 实现示例185
15.7 架构特征评级186
第16章 编制驱动的面向服务的架构188
16.1 历史和哲学188
16.2 拓扑结构188
16.3 分类189
16.4 重用与解耦191
16.5 架构特征评级193
第17章 微服务架构195
17.1 历史195
17.2 拓扑结构196
17.3 分布式196
17.4 有界上下文197
17.5 API层198
17.6 运维重用199
17.7 前端201
17.8 通信202
17.9 架构特征评级209
17.10 附加参考210
第18章 选择合适的架构风格211
18.1 改变架构“时尚”211
18.2 决策标准212
18.3 单体案例研究:硅三明治214
18.4 分布式案例研究:前进,前进,消失216
第三部分 技巧和软技能221
第19章 架构决策223
19.1 架构决策反模式223
19.2 具备架构意义225
19.3 架构决策记录226
第20章 分析架构风险235
20.1 风险矩阵235
20.2风险评估236
20.3 风险风暴238
20.4 敏捷用户故事的风险分析244
20.5 风险风暴范例244
第21章 架构绘图和演示250
21.1 绘图251
21.2 演示255
第22章 打造高效团队259
22.1 团队边界259
22.2 架构师的个性260
22.3 有多少控制力263
22.4 团队告警信号267
22.5 利用检查清单269
22.6 提供指导273
22.7 总结275
第23章 谈判和领导能力276
23.1 谈判和推进276
23.2 软件架构师作为领导者281
23.3 与开发团队集成287
23.4 总结289
第24章 打造职业发展路径290
24.1 20分钟规则290
24.2 开发个人雷达291
24.3 使用社交媒体295
24.4 临别赠言296
附录A 自我评估问题297
关于作者
关于封面



---------------------------8079921 - 架构师的自我修炼:技术、架构和未来---------------------------


前言
第一部分  架构师的基础知识修炼
第1章 操作系统原理:程序是如何运行和崩溃的 2
1.1 程序是如何运行起来的 2
1.2 一台计算机如何同时处理数以百计的任务 4
1.3 系统为什么会变慢,为什么会崩溃 5
1.4 小结 7
第2章 数据结构原理:Hash表的时间复杂度为什么是O(1) 8
2.1 数组的结构 8
2.2 链表的结构 9
2.3 Hash表的结构 10
2.4 栈的结构 12
2.5 队列的结构 13
2.6 树的结构 14
2.7 小结 14
第3章 Java虚拟机原理:JVM为什么被称为机器 16
3.1 JVM的构造 17
3.2 JVM的垃圾回收 19
3.3 Web应用程序在JVM中的执行过程 22
3.4 小结 24
第4章 网络编程原理:一个字符的互联网之旅 25
4.1 DNS域名解析原理 26
4.2 CDN 27
4.3 HTTP的结构 28
4.4 TCP的结构 29
4.5 链路层负载均衡原理 32
4.6 小结 33
第5章 文件系统原理:用1分钟遍历一个100TB的文件 34
5.1 硬盘结构原理 35
5.2 文件系统原理 36
5.3 RAID硬盘阵列原理 37
5.4 分布式文件系统架构原理 39
5.5 小结 40
第6章 数据库原理:SQL为什么要预编译 42
6.1 数据库架构与SQL执行过程 43
6.2 使用PrepareStatement执行SQL的好处 45
6.3 数据库文件存储与索引工作原理 46
6.4 小结 48
第7章 编程语言原理:面向对象编程是编程的终极形态吗 49
7.1 软件编程的远古时代 49
7.2 机器与汇编语言时代 51
7.3 高级编程语言时代 51
7.4 面向对象编程时代 52
7.5 编程语言的未来 53
7.6 小结 54
第二部分  架构师的程序设计修炼
第8章 软件设计的方法论:软件为什么要建模 56
8.1 什么是软件建模 57
8.2 4+1视图模型 58
8.3 UML建模 59
8.4 小结 60
第9章 软件设计实践:使用UML完成一个设计文档 61
9.1 用类图设计对象模型 61
9.2 用序列图描述系统调用 62
9.3 用组件图进行模块设计 63
9.4 用部署图描述系统物理架构 64
9.5 使用用例图进行需求分析 65
9.6 用状态图描述对象状态变迁 66
9.7 用活动图描述调用流程 66
9.8 使用合适的UML模型构建一个软件设计文档 67
9.9 软件架构设计文档示例模板 68
9.10 小结 74
第10章 软件设计的目的:糟糕的程序差在哪里 75
10.1 糟糕的设计有多糟糕 76
10.2 一个设计“腐坏”的例子 77
10.3 解决之道 78
10.4 小结 80
第11章 软件设计的开闭原则:不修改代码却能实现需求变更 81
11.1 什么是开闭原则 81
11.2 一个违反开闭原则的例子 82
11.3 使用策略模式实现开闭原则 84
11.4 使用适配器模式实现开闭原则 85
11.5 使用观察者模式实现开闭原则 86
11.6 使用模板方法模式实现开闭原则 88
11.7 小结 89
第12章 软件设计的依赖倒置原则:不依赖代码却可以复用它的功能 91
12.1 依赖倒置原则 91
12.2 依赖倒置的关键是接口所有权的倒置 93
12.3 使用依赖倒置来实现高层模块复用 94
12.4 小结 96
第13章 软件设计的里氏替换原则:正方形可以继承长方形吗 97
13.1 里氏替换原则 98
13.2 一个违反里氏替换原则的例子 99
13.3 正方形可以继承长方形吗 100
13.4 子类不能比父类更严格 101
13.5 小结 102
第14章 软件设计的单一职责原则:一个类文件打开后最好不要超过一屏 104
14.1 单一职责原则 107
14.2 一个违反单一职责原则的例子 107
14.3 从Web应用架构演进看单一职责原则 108
14.4 小结 110
第15章 软件设计的接口隔离原则:如何对类的调用者隐藏类的公有方法 112
15.1 接口隔离原则 113
15.2 一个使用接口隔离原则优化的例子 114
15.3 接口隔离原则在迭代器设计模式中的应用 117
15.4 小结 117
第16章 设计模式基础:不会灵活应用设计模式,就没有掌握面向对象编程 119
16.1 面向对象编程的本质是多态 119
16.2 设计模式的精髓是对多态的使用 121
16.3 小结 123
第17章 设计模式应用:编程框架中的设计模式 125
17.1 什么是框架 125
17.2 Web容器中的设计模式 127
17.3 JUnit中的设计模式 129
17.4 小结 132
第18章 反应式编程框架设计:如何使程序调用不阻塞等待,立即响应 133
18.1 反应式编程 135
18.2 反应式编程框架Flower的基本原理 135
18.3 反应式编程框架Flower的设计方法 138
18.4 反应式编程框架Flower的落地效果 140
18.5 小结 141
第19章 组件设计原则:组件的边界在哪里 143
19.1 组件内聚原则 144
19.2 组件耦合原则 145
19.3 小结 147
第20章 领域驱动设计:35岁的程序员应该写什么样的代码 148
20.1 领域模型模式 149
20.2 领域驱动设计 151
20.3 小结 154
第三部分  架构师的架构方法修炼
第21章 分布式架构:如何应对高并发的用户请求 156
21.1 垂直伸缩与水平伸缩 157
21.2 互联网分布式架构演化 157
21.3 小结 163
第22章 缓存架构:减少不必要的计算 165
22.1 通读缓存 166
22.2 旁路缓存 168
22.3 缓存注意事项 171
22.4 小结 173
第23章 异步架构:避免互相依赖的系统间耦合 174
23.1 使用消息队列实现异步架构 175
23.2 消息队列异步架构的好处 178
23.3 小结 180
第24章 负载均衡架构:用10行代码实现一个负载均衡服务 181
24.1 HTTP重定向负载均衡 181
24.2 DNS负载均衡 183
24.3 反向代理负载均衡 184
24.4 IP负载均衡 184
24.5 数据链路层负载均衡 186
24.6 小结 187
第25章 数据存储架构:改善系统的数据存储能力 188
25.1 数据库主从复制 188
25.2 数据库分片 190
25.3 关系数据库的混合部署 193
25.4 NoSQL数据库 196
25.5 小结 197
第26章 搜索引擎架构:瞬间完成海量数据检索 199
26.1 搜索引擎倒排索引 199
26.2 搜索引擎结果排序 202
26.3 小结 205
第27章 微服务架构:微服务究竟是“灵丹”还是“毒药” 206
27.1 单体架构的困难和挑战 206
27.2 微服务框架原理 208
27.3 微服务架构的落地实践 210
27.4 小结 211
第28章 高性能架构:除了代码,还可以在哪些地方优化性能 212
28.1 性能指标 212
28.2 性能测试 213
28.3 性能优化 215
28.4 小结 219
第29章 高可用架构:淘宝应用升级时,为什么没有停机 220
29.1 高可用的度量 221
29.2 高可用的架构 222
29.3 小结 225
第30章 安全性架构:为什么说用户密码泄露是程序员的问题 227
30.1 数据加密与解密 227
30.2 HTTP攻击与防护 230
30.3 小结 233
第31章 大数据架构:思想和原理 234
31.1 HDFS分布式文件存储架构 235
31.2 MapReduce大数据计算架构 236
31.3 Hive大数据仓库架构 238
31.4 Spark快速大数据计算架构 240
31.5 大数据流计算架构 242
31.6 小结 242
第32章 AI与物联网架构:从智能引擎到物联网平台 243
32.1 大数据平台架构 244
32.2 智能推荐算法 245
32.3 物联网大数据架构 249
32.4 小结 250
第33章 区块链技术架构:区块链到底能做什么 251
33.1 比特币与区块链原理 251
33.2 联盟链与区块链的企业级应用 255
33.3 小结 257
第四部分  架构师的思维修炼
第34章 技术修炼之道:同样工作十几年,为什么有的人成为资深架构师,有的人失业 260
34.1 德雷福斯模型 261
34.2 如何在工作中成长 263
34.3 小结 264
第35章 技术进阶之道:你和世界上顶级的程序员差几个等级 265
35.1 软件技术的生态江湖与等级体系 265
35.2 技术进阶之捷径 267
35.3 小结 269
第36章 技术落地之道:你真的知道自己要解决的问题是什么吗 270
36.1 确定会议真正要解决的问题是什么 271
36.2 不需要去解决别人的问题,提醒他问题的存在即可 272
36.3 去解决那些被人们习以为常而忽略了的问题 273
36.4 小结 273
第37章 技术沟通之道:如何解决问题 275
37.1 让有能力解决问题的人感受到问题的存在 275
37.2 “直言有讳” 276
37.3 想解决一个大家都不关注的问题,可以等问题变得更糟 277
37.4 如果不填老师想要的答案,你就得不了分 278
37.5 小结 278
第38章 技术管理之道:真的要转管理吗 280
38.1 彼得定律 281
38.2 用目标驱动 282
38.3 小结 283
附录A 软件开发技术的第一性原理 284
附录B 我的架构师成长之路 287
附录C 无处不在的架构之美 293
附录D 软件架构师之道 298



---------------------------4939961 - 架构即未来:现代企业可扩展的Web架构、流程和组织(原书第2版)---------------------------


本书赞誉
中文版序一
中文版序二
中文版序三
中文版序四
译者序

前言
作者简介
第一部分 可扩展性组织的人员配置
第1章 人员和领导力对扩展性的影响 …… 2
1.1 案例方法 …… 3
1.2 为什么要讨论人 …… 3
1.3 为什么组织很重要 …… 5
1.4 为什么管理和领导如此重要 …… 12
1.5 结论 …… 15
第2章 可扩展性技术组织的角色 …… 17
2.1 失败的影响 …… 17
2.2 定义角色 …… 19
2.3 执行人员的责任 …… 22
2.4 独立贡献者的责任 …… 28
2.5 RASCI工具 …… 35
2.6 结论 …… 39
第3章 组织的设置 …… 41
3.1 组织对可扩展性的影响 …… 41
3.2 团队规模 …… 45
3.3 组织结构 …… 54
3.4 结论 …… 77
第4章 领导力秘籍 …… 80
4.1 什么是领导力 …… 82
4.2 领导力概念模型 …… 84
4.3 自知之明 …… 86
4.4 身先士卒 …… 89
4.5 谦虚谨慎 …… 91
4.6 以人为本,使命为先 …… 92
4.7 决策英明,以德服人 …… 93
4.8 用人不疑 …… 95
4.9 与股东价值保持一致 …… 96
4.10 变革型领导 …… 97
4.11 愿景 …… 98
4.12 使命 …… 102
4.13 目标 …… 104
4.14 总结 …… 106
4.15 成功的因果路线图 …… 111
4.16 结论 …… 113
第5章 管理秘籍 …… 116
5.1 什么是管理 …… 118
5.2 项目和任务管理 …… 120
5.3 团队建设:球队类比 …… 124
5.4 优化团队:花园类比 …… 126
5.5 度量、指标和目标评估 …… 131
5.6 目标树 …… 135
5.7 为成功铺路 …… 137
5.8 结论 …… 138
第6章 关系、思维和商业案例 …… 141
6.1 业务与技术之间的鸿沟 …… 141
6.2 击败IT思维模式 …… 145
6.3 为扩展性加大投入的业务理由 …… 147
6.4 结论 …… 152
第二部分 构建可扩展的过程
第7章 过程是可扩展的关键 …… 154
7.1 过程的目的 …… 155
7.2 正确的时间和正确的过程 …… 160
7.3 当好的过程变坏的时候 …… 164
7.4 结论 …… 166
第8章 管理故障和问题 …… 169
8.1 什么是故障 …… 170
8.2 什么是问题 …… 171
8.3 事故管理的组成部分 …… 172
8.4 问题管理的组成部分 …… 176
8.5 解决事故和问题管理之间的矛盾 …… 177
8.6 事故和问题的生命周期 …… 178
8.7 施行每日事故例会制 …… 179
8.8 施行季度事故总结制度 …… 181
8.9 事后处理 …… 182
8.10 融会贯通 …… 185
8.11 结论 …… 186
第9章 危机管理和升级 …… 189
9.1 什么是危机 …… 191
9.2 为什么要区分危机和其他的事故 …… 192
9.3 危机如何改变公司 …… 193
9.4 混乱中的秩序 …… 195
9.5 通信与控制 …… 200
9.6 作战室 …… 201
9.7 升级 …… 203
9.8 情况通报 …… 204
9.9 危机事后处理与沟通 …… 205
9.10 结论 …… 207
第10章 生产环境的变更管理 …… 210
10.1 什么是变更 …… 211
10.2 变更识别 …… 212
10.3 变更管理 …… 214
10.4 变更控制会议 …… 228
10.5 过程的持续改进 …… 229
10.6 结论 …… 230
第11章 确定应用发展的预留空间 …… 233
11.1 目的 …… 234
11.2 结构 …… 235
11.3 理想使用率 …… 240
11.4 使用电子表格的快速示例 …… 244
11.5 结论 …… 246
第12章 确立架构原则 …… 248
12.1 目标和原则 …… 248
12.2 架构选择 …… 251
12.3 AKF采用的最普遍的架构原则 …… 255
12.4 结论 …… 266
第13章 联合架构设计和架构审查委员会 …… 267
13.1 修复组织的功能障碍 …… 267
13.2 跨部门的扩展性设计 …… 268
13.3 JAD的准入和退出标准 …… 271
13.4 从JAD到ARB …… 274
13.5 举行会议 …… 276
13.6 ARB的准入和退出标准 …… 278
13.7 结论 …… 281
第14章 敏捷架构设计 …… 284
14.1 敏捷组织中的架构 …… 286
14.2 架构的所有权 …… 287
14.3 有限的资源 …… 288
14.4 标准 …… 290
14.5 敏捷组织中的ARB …… 293
14.6 结论 …… 294
第15章 聚焦核心竞争力:自建与外购 …… 296
15.1 自建与外购及可扩展性 …… 296
15.2 聚焦成本 …… 297
15.3 聚焦策略 …… 298
15.4 一切自建的现象 …… 299
15.5 合并成本与策略方法 …… 300
15.6 该组件是否会形成战略性的差异化竞争优势 …… 301
15.7 我们是这个组件或资产的最佳所有者吗 …… 302
15.8 这个组件的竞争力是什么 …… 303
15.9 我们能有效地构建这个组件吗 …… 303
15.10 最佳的购买决策 …… 304
15.11 自建失败剖析 …… 306
15.12 结论 …… 308
第16章 确定风险 …… 310
16.1 风险管理的重要性 …… 310
16.2 测量风险 …… 313
16.3 管理风险 …… 322
16.4 结论 …… 325
第17章 性能与压力测试 …… 328
17.1 执行性能测试 …… 328
17.2 不要过度强调压力测试 …… 338
17.3 可扩展性的性能和压力测试 …… 346
17.4 结论 …… 348
第18章 障碍条件与回滚 …… 351
18.1 障碍条件 …… 352
18.2 回滚能力 …… 358
18.3 服务降级:设计禁用 …… 362
18.4 结论 …… 364
第三部分 可扩展的架构方案
第19章 构建故障隔离的架构 …… 368
19.1 故障隔离架构 …… 369
19.2 故障隔离的好处 …… 371
19.3 如何进行故障隔离 …… 380
19.4 何时实施故障隔离 …… 383
19.5 如何测试故障隔离 …… 386
19.6 结论 …… 387
第20章 AKF扩展立方体介绍 …… 389
20.1 AKF扩展立方体 …… 389
20.2 扩展立方体的X轴 …… 391
20.3 扩展立方体的Y轴 …… 393
20.4 扩展立方体的Z轴 …… 396
20.5 融会贯通 …… 397
20.6 何时以及何处使用扩展立方体 …… 400
20.7 结论 …… 401
第21章 为扩展分割应用 …… 404
21.1 AKF应用扩展立方体 …… 404
21.2 AKF应用扩展立方体的X轴 …… 406
21.3 AKF应用扩展立方体的Y轴 …… 409
21.4 AKF应用扩展立方体的Z轴 …… 412
21.5 融会贯通 …… 414
21.6 应用立方体实例 …… 418
21.7 结论 …… 423
第22章 为扩展分割数据库 …… 426
22.1 在数据库上应用AKF扩展立方体 …… 426
22.2 AKF数据库扩展立方体的X轴 …… 428
22.3 AKF数据库扩展立方体的Y轴 …… 434
22.4 AKF数据库扩展立方体的Z轴 …… 436
22.5 融会贯通 …… 439
22.6 数据库扩展立方体使用案例 …… 443
22.7 结论 …… 450
第23章 为扩展而缓存 …… 452
23.1 定义缓存 …… 453
23.2 对象缓存 …… 457
23.3 应用缓存 …… 461
23.4 内容传送网络 …… 467
23.5 结论 …… 469
第24章 为扩展而异步 …… 472
24.1 对同步的共识 …… 472
24.2 同步与异步调用 …… 474
24.3 定义状态 …… 482
24.4 结论 …… 488
第四部分 其他的问题和挑战
第25章 海量数据 …… 492
25.1 数据的成本 …… 493
25.2 数据的成本价值困局 …… 496
25.3 数据产生利润 …… 498
25.4 处理大量的数据 …… 502
25.5 结论 …… 514
第26章 云计算的突飞猛进 …… 517
26.1 历史和定义 …… 518
26.2 云的特性与架构 …… 522
26.3 云和网格之间的差异 …… 528
26.4 云计算的优势和劣势 …… 530
26.5 云适用于什么样的公司 …… 540
26.6 决策过程 …… 543
26.7 结论 …… 546
第27章 云计算准备就绪 …… 550
27.1 云端的扩展立方体 …… 550
27.2 克服挑战 …… 553
27.3 Intuit案例研究 …… 559
27.4 结论 …… 561
第28章 应用监控 …… 564
28.1 为什么我们没有及早发现问题 …… 564
28.2 监控框架 …… 566
28.3 衡量监控的价值 …… 575
28.4 监控和过程 …… 576
28.5 结论 …… 578
第29章 规划数据中心 …… 581
29.1 数据中心的成本和约束 …… 581
29.2 位置、位置、位置 …… 584
29.3 数据中心和增量增长 …… 588
29.4 什么时候考虑采用IaaS …… 591
29.5 魔法三规则 …… 595
29.6 多活数据中心的考虑 …… 602
29.7 结论 …… 604
第30章 纵观全局 …… 608
30.1 现在该做什么 …… 610
30.2 可扩展性的其他资源 …… 612

相关资源(PDF,TXT,电子书)

村网 国学鼎 数字追踪 车牌号查询 生活分享
桂ICP备20004708号-2