第1篇架构方法论 2
1 有关架构的概念认知 2
1.1 引言 2
1.2 认识架构 2
1.3 规划、架构与设计 4
1.3.1 三个不同层次的概念 4
1.3.2 规划与架构 4
1.3.3 架构与设计 5
1.4 解耦与服务化 6
1.5 分工与组件化 6
1.6 集中与分布 7
1.7 规划还是演化 8
1.8 简化也很必要 9
1.9 架构与软件开发(软件过程) 11
1.9.1 敏捷软件开发 11
1.9.2 敏捷软件开发与微服务架构 12
1.10 探讨传统企业IT系统架构 12
1.10.1 从架构角度解决企业应用痛点 13
1.10.2 企业应用系统架构服务化迁移步骤 13
1.10.3 企业应用系统架构服务化参考模型 14
1.11 总结 15
2 以终为始的架构设计 16
2.1 缘起 16
2.2 我们的思考方式 17
2.3 为什么要做架构设计 18
2.3.1 由模型到实施 18
2.3.2 业务规模发展带来的复杂度 19
2.3.3 从沟通视角看软件架构 20
2.4 如何做架构设计 20
2.4.1 以终为始,不忘初心 21
2.4.2 PMC框架 21
2.4.3 从多视角、多层次看架构 23
2.4.4 满足利益相关者的需要 25
2.4.5 聚焦SLA 26
2.4.6 抽象、协作、扩展、复用 28
2.4.7 分析全息视图 29
2.5 架构是什么 29
2.5.1 架构兼具组成和决策的特点 30
2.5.2 架构是演进来的 30
2.5.3 无纯粹的非功能特性 31
2.6 总结 32
3 闭环架构方法 34
3.1 系统提升的一般性方法和反馈环 34
3.2 产品创新闭环 36
3.3 组织闭环 37
3.4 研发流程闭环 39
3.5 系统架构闭环 40
3.6 一个反馈闭环实例 41
3.7 总结 44
4 复杂与架构演进的关系 46
4.1 什么是复杂 46
4.1.1 规模 47
4.1.2 结构 51
4.1.3 变化 58
4.2 用架构思维控制复杂 67
4.2.1 分而治之,控制规模 67
4.2.2 保持架构的清晰与一致 67
4.2.3 拥抱变化 70
4.3 总结 71
5 架构师的核心能力 72
5.1 架构师承担的职责 72
5.2 架构师的核心能力 73
5.2.1 经验 73
5.2.2 沟通 74
5.2.3 快速学习 74
5.2.4 解决问题的能力 76
5.3 架构能力的修炼 76
5.4 总结 77
第2篇 面向架构的架构(微服务) 80
6 快速继承微服务实践 80
6.1 概述 80
6.2 我们希望的微服务是什么样子的 81
6.3 实现微服务 82
6.4 实现的考量及调研 83
6.4.1 gRPC有什么问题 83
6.4.2 如何提高易用性 83
6.5 让微服务快速落地 87
6.6 总结 89
7 微服务架构下的事务处理 90
7.1 概述 90
7.2 使用传统的本地事务和分布式事务保证一致性 90
7.3 在微服务架构中应满足数据最终一致性原则 92
7.4 微服务架构实现最终一致性的三种模式 92
7.4.1 可靠事件模式 93
7.4.2 业务补偿模式 101
7.4.3 TCC(Try-Confirm-Cancel)模式 106
7.5 总结 109
8 微服务架构模式与实践 110
8.1 微服务的主要架构模式 110
8.1.1 一体化模式 110
8.1.2 聚合模式 110
8.1.3 代理模式 111
8.1.4 资源共享模式 112
8.1.5 异步消息模式 112
8.2 大量微服务带来的挑战 112
8.3 微服务在好雨的解决方案 113
8.3.1 服务发现和注册 113
8.3.2 弹性伸缩与负载均衡 115
8.3.3 容错处理(断路器与限流) 116
8.3.4 监控与报警 116
8.3.5 数据存储与共享 116
8.3.6 日志分析 117
8.4 总结 118
9 微服务与DevOps架构实践 119
9.1 概述 119
9.2 某金融创业公司的微服务架构选型 122
9.3 设计思想 124
9.4 总体架构 125
9.4.1 总体架构的特性 125
9.4.2 具体实现 126
9.5 对微服务的支撑 128
9.6 DevOps平台总体架构 130
9.7 面向微服务的研发团队介绍 131
9.8 总结 133
10 基于云的微服务架构 134
10.1 概述 134
10.2 德比软件数据对接平台的架构 134
10.3 德比软件微服务架构基础设施 135
10.4 API网关 136
10.5 服务框架 136
10.5.1 高可用RPC 137
10.5.2 服务依赖管理 138
10.6 基础服务 140
10.6.1 配置中心 140
10.6.2 安全数据服务 141
10.6.3 数据存储服务 141
10.6.4 订单服务 142
10.7 服务降级 142
10.8 自动化 142
10.9 日志处理 143
10.10 调用链追踪 144
10.11 服务健康状态 144
10.11.1 报警 144
10.11.2 监控 145
10.12 发布管理 146
10.13 总结 147
11 Service Fabric:平台架构解析 148
11.1 Service Fabric概述 148
11.1.1 Service Fabric的特点 148
11.1.2 Service Fabric的适用场景 149
11.2 Service Fabric编程模式 150
11.3 Service Fabric服务通信 152
11.3.1 Service Fabric的微服务开发工具 153
11.3.2 对Service Fabric的微服务进行监控和诊断 153
11.4 Service Fabric可靠服务概述 154
11.4.1 Service Fabric可靠服务——有状态服务的体系结构 154
11.4.2 Service Fabric可靠服务——无状态服务的体系结构 156
11.4.3 Service Fabric可靠服务——备份 157
11.5 Service Fabric可靠执行组件 157
11.6 Service Fabric容器应用程序 159
11.7 总结 160
第3篇面向业务的架构 162
12 如何搭建高可伸缩的移动电商架构 162
12.1 概述微服务的主要架构模式 162
12.2 移动端的混合架构 162
12.3 服务器端的SOA架构 164
12.4 PC端和移动端的开发协作管理 166
12.5 基于容器的虚拟化 166
12.6 关于电商的私有云建设 167
12.7 如何应用弹性云来应对电商大促 169
12.8 应对电商大促峰值的“独孤九剑” 170
13 消费信贷系统“白付美”是如何持续优化的 172
13.1 “白付美”介绍 172
13.2 “白付美”从0到1 172
13.3 大促期间的性能保证 174
13.4 大促期间的稳定性保证 177
13.5 为服务多平台所做的优化 178
13.6 未来的优化方向 179
13.7 总结 180
14 美丽联合集团支付系统架构演进 182
14.1 概述 182
14.2 支付系统1.0 182
14.2.1 业务问题 183
14.2.2 系统问题 184
14.2.3 资金问题 185
14.3 支付系统2.0 185
14.3.1 拆分系统边界 185
14.3.2 支付系统2.0系统详解 187
14.3.3 统一平台业务上下文 192
14.3.4 直面数据一致性挑战 192
14.4 性能提升 194
14.5 稳定性提升 201
14.5.1 监控先行 201
14.5.2 分离核心链路 201
14.5.3 服务依赖梳理 203
14.5.4 限流降级 203
14.6 压测 204
14.7 成效 204
14.7.1 业务支撑能力 204
14.7.2 系统服务能力 205
14.8 总结 206
15 金融撮合架构 207
15.1 概述 207
15.2 系统总体设计 208
15.2.1 系统核心模块 208
15.2.2 撮合算法设计 209
15.2.3 基于内存撮合 212
15.2.4 灾备的多机设计 212
15.2.5 状态机复制 213
15.2.6 系统架构 215
15.3 总结 218
第4篇 面向性能的架构 220
16 一线架构师带你玩性能优化 220
16.1 什么是系统优化 220
16.2 系统优化的方法论、思路和原则 220
16.2.1 常用方法论 221
16.2.2 优化思路 221
16.2.3 优化原则 222
16.3 性能优化 222
16.3.1 常见的性能问题 222
16.3.2 性能优化的具体工作 223
16.3.3 JVM优化 230
16.3.4 数据库优化 233
16.3.5 负载均衡优化 235
16.4 总结 237
17 性能优化的常见模式及趋势 238
17.1 性能优化的优缺点 238
17.2 性能优化的两种模式 239
17.3 单应用优化 239
17.3.1 优化的基本思路 239
17.3.2 确定性能瓶颈/热点的常见方法 240
17.3.3 压测时通常观察的内容及其所使用的工具 240
17.3.4 常见的优化手段及模式 240
17.4 结构型优化 241
17.5 两个结构型优化的案例 245
17.5.1 处理单点/网络瓶颈的可行方式 245
17.5.2 处理数据库连接池瓶颈的可行手段 245
17.6 总结 247
18 性能优化之几种常见的压测模型及其优缺点 248
18.1 压测模型抽象 248
18.1.1 压测环境准备 249
18.1.2 压测任务准备 249
18.1.3 压测执行闭环 249
18.2 线下压测模型 250
18.3 线上引流压测模型 251
18.4 线上全链路压测模型 252
18.5 总结 253
19 缓存为王——无线缓存架构优化 254
19.1 无线缓存的定义、限制条件及影响 254
19.2 无线缓存要从全局考虑 254
19.2.1 服务器端架构对无线缓存的影响 254
19.2.2 无线缓存对服务器端架构的影响 255
19.2.3 大流量下无线缓存作用的劣化 256
19.2.4 无线缓存与本机移动端组件的关系 256
19.2.5 无线缓存存储介质的选择 257
19.3 数据、资源缓存及失效策略 257
19.3.1 架构详论 257
19.3.2 实现失效策略 259
19.4 总结 263