Akka应用模式:分布式应用程序设计实践指南

书名:Akka应用模式:分布式应用程序设计实践指南
作者:[美]MichaelNash(迈克尔·纳什)/[加]WadeWaldron(韦德·沃尔德龙)
译者:虞航仲
ISBN:9787121325298
出版社:电子工业出版社
出版时间:2017-10-1
格式:epub/mobi/azw3/pdf
页数:184
豆瓣评分: 7.1

书籍简介:

对于想要学习Akka的Java 和 Scala 开发者们,有很多技术资源可供参考,但是如要想知道如何去应用这些技术就需要不同的思维方式了。为了帮助你正确地使用Akka,《Akka应用模式:分布式应用程序设计实践指南》这本实用的实践指南提供了若干高级的设计模式,还包括了如何以及何时应用那些模式去解决在大型分布式系统中遇到的实际问题的一些案例。

作者简介:

Michael Nash是Lightbend 的总监。过去30 多年间,他为各种规模的公司及客户设计、开发、发布了很多软件项目。作为项目管理和架构实践的软件工艺倡导者,他是“安全堆栈”最早的实践者之一,在Scala、Akka 和Spray 方面有五年以上的工作经验。他大部分业余时间致力于“安全响应式平台”的相关工作,在会议中发表主题演讲,以及在软件相关领域撰写书籍。<br>Wade Waldron是Lightbend 的高级顾问。他现在针对Lightbend 响应式平台提供培训和咨询服务。在Lightbend 之外,Wade 在过去9 年中一直在建立坚实的软件和游戏,重点是设计测试驱动、设计域驱动、设计面向服务的架构、设计事件驱动架构以及敏捷开发。

书友短评:

@ 李鼎 100多面篇幅,有理念有实践有体系地讲了分布式应用程序设计主题,真是非常难得。第一章的『异步世界观』形象又高屋建瓴的讲解让我眼前一亮虎躯一振! @ char Day 53 实在写的非常乱,讲Akka和Actor都跳来跳去,标题为DDDD的一章,实际都在讲DDD… #百日早起学习挑战# @ Lonely Highway 在我的领域是屠龙术那种,但我的领域没有龙 @ 清玩 更多是分布式基础概念解说列举,对于 Akka 使用讲解比较少 @ Nobu黄祁 概念还是很不错的,DDDD……内容略少,很多地方没展开 @ Lonely Highway 在我的领域是屠龙术那种,但我的领域没有龙 @ 天平上的尘埃 第五章讲流和第六章讲一致性的内容不错,到了最后一章有赶时间草草收尾之嫌 @ 清玩 更多是分布式基础概念解说列举,对于 Akka 使用讲解比较少 @ char Day 53 实在写的非常乱,讲Akka和Actor都跳来跳去,标题为DDDD的一章,实际都在讲DDD… #百日早起学习挑战# @ Nobu黄祁 概念还是很不错的,DDDD……内容略少,很多地方没展开

书籍目录

前言 ……………………………………………………………………………… 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
· · · · · ·

添加微信公众号:好书天下获取

添加微信公众号:“好书天下”获取书籍好书天下 » Akka应用模式:分布式应用程序设计实践指南
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

添加微信公众号:“好书天下”获取书籍

添加微信公众号:“好书天下”获取书籍添加微信公众号:“好书天下”获取书籍