《反应式设计模式》PDF下载

  • 购买积分:13 如何计算积分?
  • 作  者:(美)罗兰·库恩(Roland Kuhn),(美)布莱恩·哈纳菲(Brian Hanafee),(美)杰米·艾伦(Jamie Allen)著
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2019
  • ISBN:9787302517146
  • 页数:362 页
图书介绍:本书清晰阐述如何构建灵活的、可扩展的、消息驱动的响应式分布式系统。将介绍消息传递、流控制、资源管理和并发等模式,讨论诸如“测试友好的设计”等实用主题。在具体示例的引导下讲解所有模式,这些示例中融入Scala、Akka、Java、JavaScript和Erlang等技术。通过学习这些模式,软件工程师和架构师将可采用容错和可扩展的方式解决日常的分布式开发问题,项目经理和CTO将可更深刻地理解响应式设计的原理。

第Ⅰ部分 简介 3

第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

第Ⅱ部分 微言大义 67

第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小结 127

第Ⅲ部分 设计模式 131

第11章 测试反应式应用程序 131

11.1如何测试 131

11.1.1单元测试 132

11.1.2组件测试 133

11.1.3联动测试 133

11.1.4集成测试 133

11.1.5用户验收测试 134

11.1.6黑盒测试与白盒测试 134

11.2测试环境 135

11.3异步测试 136

11.3.1提供阻塞的消息接收者 137

11.3.2选择超时时间的难题 139

11.3.3断言消息的缺失 145

11.3.4提供同步执行引擎 146

11.3.5异步断言 148

11.3.6完全异步的测试 149

11.3.7断言没有发生异步错误 151

11.4测试非确定性系统 154

11.4.1执行计划的麻烦 155

11.4.2测试分布式组件 155

11.4.3模拟Actor 156

11.4.4分布式组件 157

11.5测试弹性 157

11.6测试回弹性 158

11.6.1应用程序回弹性 158

11.6.2基础设施的回弹性 162

11.7测试即时响应性 164

11.8小结 165

第12章 容错及恢复模式 167

12.1简单组件模式 167

12.1.1问题设定 168

12.1.2模式应用 168

12.1.3模式回顾 170

12.1.4适用性 171

12.2错误内核模式 171

12.2.1问题设定 172

12.2.2模式应用 172

12.2.3模式回顾 175

12.2.4适用性 176

12.3放任崩溃模式 176

12.3.1问题设定 177

12.3.2模式应用 177

12.3.3模式回顾 178

12.3.4实现上的考虑 179

12.3.5推论:心跳模式 180

12.3.6推论:主动失败信号模式 180

12.4断路器模式 181

12.4.1问题设定 182

12.4.2模式应用 182

12.4.3模式回顾 186

12.4.4适用性 187

12.5小结 187

第13章 复制模式 189

13.1主动-被动复制模式 190

13.1.1问题设定 190

13.1.2模式应用 191

13.1.3模式回顾 203

13.1.4适用性 204

13.2多主复制模式 204

13.2.1基于共识的复制 205

13.2.2具有冲突检测与处理方案的复制方式 208

13.2.3无冲突的可复制数据类型 210

13.3主动-主动复制模式 217

13.3.1问题设定 218

13.3.2模式应用 218

13.3.3模式回顾 225

13.3.4与虚拟同步模型的关系 226

13.4小结 227

第14章 资源管理模式 229

14.1资源封装模式 229

14.1.1问题设定 230

14.1.2模式应用 230

14.1.3模式回顾 236

14.1.4适用性 237

14.2资源借贷模式 237

14.2.1问题设定 238

14.2.2模式应用 238

14.2.3模式回顾 240

14.2.4适用性 241

14.2.5实现上的考虑 242

14.2.6变体:使用资源借贷模式进行局部公开 242

14.3复杂命令模式 243

14.3.1问题设定 243

14.3.2模式应用 244

14.3.3模式回顾 251

14.3.4适用性 252

14.4资源池模式 252

14.4.1问题设定 253

14.4.2模式应用 253

14.4.3模式回顾 255

14.4.4实现上的考虑 256

14.5托管阻塞模式 257

14.5.1问题设定 257

14.5.2模式应用 258

14.5.3模式回顾 260

14.5.4适用性 261

14.6小结 262

第15章 消息流模式 263

15.1请求-响应模式 264

15.1.1问题设定 264

15.1.2模式应用 265

15.1.3该模式的常见实例 267

15.1.4模式回顾 272

15.1.5适用性 272

15.2消息自包含模式 273

15.2.1问题设定 273

15.2.2模式应用 274

15.2.3模式回顾 276

15.2.4适用性 277

15.3询问模式 277

15.3.1问题设定 278

15.3.2模式应用 278

15.3.3模式回顾 281

15.3.4适用性 283

15.4转发流模式 283

15.4.1问题设定 283

15.4.2模式应用 284

15.4.3模式回顾 284

15.4.4适用性 285

15.5聚合器模式 285

15.5.1问题设定 285

15.5.2模式应用 286

15.5.3模式回顾 289

15.5.4适用性 290

15.6事务序列模式 290

15.6.1问题设定 291

15.6.2模式应用 291

15.6.3模式回顾 293

15.6.4适用性 294

15.7业务握手协议(或可靠投递模式) 294

15.7.1问题设定 295

15.7.2模式应用 295

15.7.3模式回顾 300

15.7.4适用性 301

15.8小结 301

第16章 流量控制模式 303

16.1拉取模式 303

16.1.1问题设定 304

16.1.2模式应用 304

16.1.3模式回顾 306

16.1.4适用性 307

16.2托管队列模式 307

16.2.1问题设定 308

16.2.2模式应用 308

16.2.3模式回顾 310

16.2.4适用性 310

16.3丢弃模式 311

16.3.1问题设定 311

16.3.2模式应用 311

16.3.3模式回顾 313

16.3.4适用性 316

16.4限流模式 316

16.4.1问题设定 316

16.4.2模式应用 317

16.4.3模式回顾 320

16.5小结 320

第17章 状态管理和持久化模式 321

17.1领域对象模式 321

17.1.1问题设定 322

17.1.2模式应用 322

17.1.3模式回顾 326

17.2分片模式 326

17.2.1问题设定 326

17.2.2模式应用 327

17.2.3模式回顾 329

17.2.4重要警告 329

17.3事件溯源模式 330

17.3.1问题设定 330

17.3.2模式应用 330

17.3.3模式回顾 333

17.3.4适用性 333

17.4事件流模式 334

17.4.1问题设定 334

17.4.2模式应用 334

17.4.3模式回顾 336

17.4.4适用性 337

17.5小结 337

附录A反应式系统图示 339

附录B一个虚构的案例 341

附录C《反应式宣言》正文 355