第1章 Actor模型 1
现实是最终一致的 1
解构Actor模型 3
所有的计算都在一个actor中执行 4
actor之间只能通过消息进行通信 5
actor可以创建子actor 6
actor可以改变自己的状态或行为 8
一切都是actor 9
Actor模型的使用 10
定义清晰的边界 11
何时适合使用Actor模型 13
结论 13
第2章 Akka简介 15
Akka是什么 15
Akka是开源的 15
Akka正在蓬勃发展 16
Akka是为分布式设计的 16
Akka组件 17
Akka actor 17
子actor 18
remoting:不同JVM上的actor 20
clustering:集群成员的自动化管理 20
Akka HTTP 24
TestKit 25
contrib 25
Akka OSGi 25
Akka HTTP 26
Akka Streams 26
Akka实现的Actor模型 26
Actor模型中的Akka actor 26
消息传递 27
actor系统 28
Akka Typed项目 28
结论 29
第3章 分布式领域驱动设计 31
DDD概述 31
DDD的好处 32
DDD组件 33
域实体 34
域值对象 34
聚合与聚合根 35
仓储 37
工厂和对象创建 38
域服务 38
有界上下文 39
结论 41
第4章 优秀的Actor设计 43
大系统小做 43
封装actor中的状态 44
使用字段封装状态 44
使用“状态”容器封装状态 47
使用become封装状态 48
将futures与actors混合 50
Ask模式和替代方案 54
Ask模式的问题 55
附带的复杂性 57
Ask的替代方案 57
命令与事件 59
构造函数的依赖注入 61
使用路径查找actor 61
结论 62
第5章 数据流 63
吞吐量与延迟 63
流 64
路由器 66
邮箱 68
无界邮箱 68
有界邮箱 69
拉取的工作模式 70
背压 73
ack 73
高水位标记 73
队列长度监控 74
速率监控 74
Akka数据流 74
源 75
汇 77
RunnableGraph 78
流 79
交叉点 80
Akka流中的背压 81
Akka流的使用 82
结论 84
第6章 一致性和可扩展性 85
事务和一致性 85
强一致性与最终一致性 86
并发性与并行性 86
为什么全局一致的分布式状态影响可扩展性 86
位置透明性 87
交付保证 87
最多投递一次 87
最少投递一次 88
恰好一次交付是不可能的(但可以近似做到) 91
如何近似做到恰好一次交付 91
集群单例 92
可扩展性 94
避免全局状态 98
避免共享状态 98
遵循Actor模型 99
避免顺序操作 99
隔离阻塞型操作 99
监控和调优 99
集群分片和一致性 99
分片 100
Akka中的分片 101
分片键的生成 102
分片的分布 103
一致性边界 103
可扩展性边界 104
分片聚合根 105
持久化 106
钝化 106
使用集群分片保证一致性 107
结论 109
第7章 容错 111
故障类型 112
异常 112
JVM中的致命错误 113
外部服务故障 113
不符合服务等级协议 113
操作系统和硬件级故障 114
故障隔离 114
舱壁模式 114
优雅降级 117
使用Akka集群隔离故障 119
使用熔断器控制故障 119
故障处理 122
异常处理 123
外部服务的故障处理 128
结论 131
第8章 可用性 133
微服务和单体式应用 133
用有界上下文划分微服务 134
细粒度的微服务 135
集群感知路由器 135
分布式数据 137
优雅降级 140
部署 141
分阶段部署/滚动重启 142
蓝/绿部署 142
崩溃恢复/运维监测 143
健康检查和应用状态页面 143
度量 145
日志 146
看门狗工具 146
结论 147
第9章 性能 149
隔离瓶颈 150
优化Akka 150
减少或隔离阻塞型操作 150
缩短消息处理时间 151
增加处理消息的actor 151
派发器 151
标准派发器 151
固定派发器 153
平衡派发器 154
calling-thread派发器 154
何时使用单独的派发器 155
提高并行性 157
结论 158
后记 159
参考文献 161
关于作者 162
封面介绍 163