第Ⅰ部分 简介
第1章 为什么需要反应式? 3
1.1 剖析反应式应用 5
1.2 应对负载 6
1.3 应对失败 7
1.4 让系统即时响应 9
1.5 避免大泥球 10
1.6 整合非反应式组件 11
1.7 小结 12
第2章 《反应式宣言》概览 13
2.1 对用户作出反应 13
2.1.1 理解传统方法 14
2.1.2 使用共享资源的延迟分析 16
2.1.3 使用队列限制*延迟 17
2.2 利用并行性 18
2.2.1 通过并行化降低延迟 19
2.2.2 使用可组合的Future改善并行性 21
2.2.3 为序列式执行表象买单 22
2.3 并行执行的限制 24
2.3.1 阿姆达尔定律 24
2.3.2 通用伸缩性法则 25
2.4 对失败作出反应 26
2.4.1 划分与隔离 28
2.4.2 使用断路器 29
2.4.3 监督 30
2.5 放弃强一致性 32
2.5.1 ACID 2.0 33
2.5.2 接受更新 34
2.6 对反应式设计模式的需求 35
2.6.1 管理复杂性 36
2.6.2 使编程模型更贴近真实世界 37
2.7 小结 38
第3章 行业工具 39
3.1 反应式的早期解决方案 39
3.2 函数式编程 41
3.2.1 不可变性 42
3.2.2 引用透明性 44
3.2.3 副作用 45
3.2.4 函数作为一等公民 46
3.3 即时响应用户 47
3.4 对反应式设计的现有支持 49
3.4.1 绿色线程 49
3.4.2 事件循环 50
3.4.3 通信顺序进程 51
3.4.4 Future和Promise 53
3.4.5 反应式扩展工具包 58
3.4.6 Actor模型 59
3.5 小结 64
第Ⅱ部分 微言大义
第4章 消息传递 67
4.1 消息 67
4.2 垂直伸缩 68
4.3 “基于事件”与“基于消息” 69
4.4 “同步”与“异步” 71
4.5 流量控制 73
4.6 送达保证 75
4.7 作为消息的事件 77
4.8 同步消息传递 79
4.9 小结 79
第5章 位置透明性 81
5.1 什么是位置透明性? 81
5.2 透明化远程处理的谬误 82
5.3 基于显式消息传递的纠正方案 83
5.4 优化本地消息传递 84
5.5 消息丢失 85
5.6 水平扩展性 87
5.7 位置透明性使测试更加简单 88
5.8 动态组合 88
5.9 小结 90
第6章 分而治之 91
6.1 分层拆解问题 92
6.2 “依赖”与“子模块” 94
6.3 构建你自己的大公司 96
6.4 规范和测试的优点 97
6.5 水平扩展性和垂直伸缩性 98
6.6 小结 99
第7章 原则性失败处理 101
7.1 所有权意味着承诺 101
7.2 所有权隐含生命周期控制 103
7.3 所有级别上的回弹性 104
7.4 小结 105
第8章 有界一致性 107
8.1 封装模块纠正方案 108
8.2 根据事务边界对数据和行为进行分组 109
8.3 跨事务边界建模工作流 109
8.4 失败单元即一致性单元 110
8.5 分离职责 111
8.6 坚持一致性的隔离范围 113
8.7 小结 114
第9章 按需使用非确定性 115
9.1 逻辑编程和声明式数据流 115
9.2 函数式反应式编程 117
9.3 不共享简化并发 118
9.4 共享状态的并发 119
9.5 如何窘境突围? 119
9.6 小结 121
第10章 消息流 123
10.1 推动数据向前流动 123
10.2 模型化领域流程 125
10.3 认清回弹性的局限性 125
10.4 估计速率和部署规模 126
10.5 为流量控制进行规划 127
10.6 小结&n
|