前言 .......................................................................................... xvii
第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
· · · · · · (
收起)