第一部分 管道理论 2
第1章 并行计算与商业应用 2
1.1 机械式解决方案:操作系统级的并行计算方式 3
1.1.1 对称多处理 3
1.1.2 集群 3
1.2 自动化网络路由:预定逻辑下的并行计算 3
1.3 网格计算:分布式并行计算 4
1.4 商业应用的并行计算 4
1.5 解决方案:软件管道 5
1.6 流体动力学 6
1.7 软件管道示例 7
1.8 小结 10
第2章 管道定律 11
2.1 CPU资源浪费问题 11
2.2 流体动力学 11
2.3 管道定律:基本法则 12
2.4 推论1:流量限制 12
2.5 推论2:输出流的约束 13
2.6 软件管道规则 14
2.7 规则1 14
2.8 规则2 15
2.9 规则3 17
2.10 小结 20
第3章 管道示例 21
3.1 银行ATM系统(单层分布) 21
3.1.1 管道 21
3.1.2 管道分配器 22
3.2 银行ATM系统(多层分布) 23
3.2.1 下层管道层 24
3.2.2 上层管道层 27
3.3 小结 28
第4章 管道模式 30
4.1 服务调用模式 31
4.1.1 推模式 31
4.1.2 拉模式 31
4.2 消息交换模式 32
4.2.1 一路交换模式 32
4.2.2 请求—应答模式 33
4.3 管道路由模式 34
4.3.1 轮循路由模式 34
4.3.2 基于内容的路由模式 35
4.3.3 定制路由模式 36
4.3.4 加入模式 36
4.4 分配器模式 37
4.4.1 单一分配器模式 37
4.4.2 多层分配器模式 38
4.4.3 客户端分配器模式 39
4.4.4 数据库分片分配器模式 40
4.5 分配器连接器模式 40
4.5.1 本地方法调用模式 41
4.5.2 Socket调用模式 41
4.5.3 Web服务调用模式 41
4.5.4 其他模式 42
4.6 小结 42
第5章 管道:公司的影响 43
5.1 战略评估 43
5.2 预算影响 44
5.3 公司职位与责任 46
5.3.1 管道架构师 46
5.3.2 业务部门领导骨干 47
5.3.3 IT部门管理人员 48
5.3.4 应用开发人员 49
5.3.5 应用项目管理者 50
5.3.6 质量保证管理者 50
5.3.7 IT运营部 51
5.4 小结 51
第二部分 管道方法学 54
第6章 软件管道优化周期:概述 54
6.1 另一种软件方法学 54
6.2 SPOC概述 54
第7章 SPOC的5个步骤 56
7.1 软件管道优化周期文档 56
7.2 小结 57
第8章 管道示例:管道银行公司介绍 58
8.1 SPOC报告模板 60
8.2 小结 61
第9章 SPOC第一步:管道目标 62
9.1 步骤1.1:确定业务目标/需求 63
9.2 步骤1.2:确定输入处理率 66
9.3 步骤1.3:检测未来潜在的输入处理速率 67
9.4 步骤1.4:当前处理能力的测定 69
9.5 步骤1.5:计算性能差距 70
9.6 步骤1.6:定义管道目标 71
9.7 小结 72
第10章 SPOC步骤2:管道分析 73
10.1 步骤2.1:映射目前处理流程 74
10.2 步骤2.2:确定现有的组件 76
10.3 步骤2.3:测定现有组件的处理速率 77
10.4 步骤2.4:计算整个流程的处理速率 79
10.5 步骤2.5:确定约束点 80
10.6 小结 81
第11章 SPOC步骤3:管道设计 82
11.1 步骤3.1:定义服务流程设计 83
11.2 步骤3.2:确定新的组件 86
11.3 步骤3.3:确定管道化时机 87
11.4 步骤3.4:确定管道方案 89
11.5 步骤3.5:确定分配器处理速率 93
11.6 步骤3.6:物理部署环境的设计 94
11.7 步骤3.7:确定/优化管道设计 95
11.8 小结 104
第12章 SPOC步骤4:管道实现 105
12.1 步骤4.1:构建软件管道框架 106
12.2 步骤4.2:修改现有的组件 107
12.3 步骤4.3:开始新的组件 109
12.4 步骤4.4:编排服务流程 110
12.5 步骤4.5:仪表化服务流程 112
12.6 步骤4.6:开发/修改管道套件 112
12.7 步骤4.7:测试并优化管道实现 119
12.8 小结 120
第13章 SPOC步骤5:管道部署 121
13.1 步骤5.1:规划管道部署 122
13.2 步骤5.2:部署到产品环境中 122
13.3 步骤5.3:检测产品环境 123
13.4 步骤5.4:评估结果,规划下一次SPOC迭代过程 124
13.5 小结 124
第三部分 管道示例 126
第14章 Hello软件管道 126
14.1 定义消息 126
14.2 构建服务 127
14.3 配置分配器 129
14.4 创建客户端 130
14.5 运行服务 133
14.6 小结 133
第15章 扩展Hello软件管道 134
15.1 扩展服务 134
15.2 开发可扩展的测试客户端 135
15.3 运行服务 138
15.4 小结 142
第16章 增加的管道路由器配置 143
16.1 基于内容的路由器 143
16.2 定制管道路由器 152
16.3 小结 163
第17章 从Hello软件管道获得应答 164
17.1 请求——响应消息传递 164
17.2 在Hello软件管道中使用请求——响应 167
17.3 小结 177
第18章 增添的分配器连接器模式 178
18.1 定义并配置连接器 178
18.2 Socket连接器 180
18.3 Web服务连接器 181
18.4 小结 183
第19章 使用多层分配器 184
19.1 配置多层分配器 184
19.2 创建客户端 188
19.3 运行服务 190
19.4 小结 191
第20章 数据库分片分配器 192
20.1 数据库分片示例 193
20.2 创建数据库分片 194
20.3 构建服务 194
20.4 配置分配器 197
20.5 配置分片驱动 198
20.6 创建客户端 199
20.7 执行服务 201
20.8 小结 202
第21章 管道框架概要 203
21.1 接口概要 203
21.2 管道工具 205
21.3 小结 211
第22章 管道银行公司(PBCOR)示例 212
22.1 账户交易事务 213
22.2 管道配置信息 215
22.3 Spring框架 218
22.4 数据库访问 219
22.5 连接服务 225
22.6 运行测试 229
22.7 小结 230
第四部分 软件管道的未来 231
第23章 软件管道的未来 231
23.1 最后的建议 231
23.2 未来的一些想法 232
附录 管道参考架构Javadoc 234