编辑推荐
Akka是一个分布式计算工具集,支持开发者使用Java以及Scala便捷地构建正确的并发分布式应用程序。用户使用Akka构建的应用程序能够扩展至多台服务器,并能通过自恢复对失效情况做出响应。
《Akka入门与实践》旨在对Akka进行系统的介绍。对刚开始使用Akka构建并发分布式应用程序的读者来说,本书将带领大家学习所需的所有概念。本书首先从Actor的概念开始,然后逐步介绍Akka中的并发实现以及网络应用程序的构建。在教授如何使用Akka来解决疑难问题的同时,本书将介绍如何规避其中常见的陷阱。
从本书中学到的知识
·使用Akka来解决并发编程中遇到的挑战
·使用Akka来构建集群,并在多台机器上分配工作
·扩展应用程序,使之支持大量并发用户
·利用自恢复的应用程序为系统提供容错性
·使用事件驱动的方法构建低延迟应用程序
·通过高效利用系统资源来减少硬件开销
·通过扩展来有效提高网络效率
内容简介
《Akka入门与实践》主要面向使用Akka工具集来构建大规模分布式应用程序的Java和Scala开发者。Akka入门与实践 介绍了分布式系统的基本概念以及如何使用Akka来构建容错性高、可横向扩展的分布式应用程序。
《Akka入门与实践》的主要内容包括:Akka工具集、Actor模型、响应式编程、Actor及Future的使用、Akka消息传递模式、Actor生命周期、监督机制、状态与错误处理、Akka并发编程、路由、阻塞IO的处理、Akka Cluster、CAP理论、Akka邮箱问题的处理、Akka Testkit、领域驱动设计等。
《Akka入门与实践》贯穿使用了分布式键值存储以及文章解析服务两个实例,将原理与实践结合,介绍了使用Akka设计并实现分布式应用程序的方法。
作者简介
Jason Goodwin,自学成才的开发者,从15岁起就开始学习编程,并且一直对技术保持着浓厚的兴趣。他在mDialog公司初次接触到Akka项目,这家公司zui终被Google收购。他同时还是一名很有影响力的“技术控”,将Akka引入加拿大一家主要的电信公司,帮助该公司为客户提供容错性更高、响应更及时的软件。现在他主要从事大规模分布式系统的开发。在业余时间,他喜欢自己原创电子音乐。
译者简介
诸豪文,网名clasnake,毕业于清华大学,现为全职软件开发工程师,常用的开发语言有Java、Scala、JavaScript和Python。其个人博客地址为http://clasnake.net。他也是开源项目Swagger的贡献者,并译有《Python网络编程》(第3版)一书。
目录
第1章 初识Actor 1
1.1 本章概述 1
1.2 什么是Akka 1
1.2.1 Actor模型的起源 1
1.2.2 什么是Actor 2
1.2.3 Actor和消息传递 2
1.3 本书示例系统 7
1.3.1 示例1:处理分布式状态 7
1.3.2 示例2:完成更多工作 8
1.4 配置环境 8
1.4.1 选择一门语言 9
1.4.2 安装Java——Oracle JDK8 9
1.4.3 确认Java环境配置 10
1.4.4 安装Scala 10
1.4.5 安装Typesafe Activator 10
1.4.6 新建项目 11
1.4.7 安装IDE 12
1.5 创建第一个Akka应用程序——设置SBT项目 15
1.5.1 将Akka添加至build.sbt 16
1.5.2 创建第一个Actor 17
1.5.3 使用单元测试验证代码 21
1.5.4 运行测试用例 24
1.6 课后作业 25
1.7 小结 26
第2章 Actor与并发 27
2.1 响应式系统设计 27
2.2 响应式四准则 28
2.2.1 灵敏性 28
2.2.2 伸缩性 28
2.2.3 容错性 28
2.2.4 事件驱动/消息驱动 28
2.2.5 响应式准则的相关性 29
2.3 剖析Actor 29
2.3.1 Java Actor API 29
2.3.2 Scala Actor API 32
2.4 Actor的创建 33
2.5 Promise、Future和事件驱动的编程模型 36
2.5.1 阻塞与事件驱动API 36
2.5.2 使用Future进行响应的Actor 40
2.5.3 理解Future和Promise 45
2.5.4 在失败情况下执行代码 49
2.5.5 从失败中恢复 49
2.5.6 异步地从失败中恢复 50
2.5.7 链式操作 51
2.5.8 组合Future 51
2.5.9 处理Future列表 52
2.5.10 Future速查表 53
2.5.11 准备数据库与消息 54
2.5.12 编写客户端 59
2.6 课后作业 62
2.6.1 基本知识 62
2.6.2 项目作业 62
2.7 小结 63
第3章 传递消息 64
3.1 示例问题 64
3.2 消息传递 65
3.2.1 消息是不可变的 66
3.2.2 Ask消息模式 69
3.2.3 Tell 78
3.3 课后作业 88
3.4 小结 88
第4章 Actor的生命周期——处理状态与错误 90
4.1 分布式计算的8个误区 90
4.1.1 网络是可靠的 90
4.1.2 没有延迟 91
4.1.3 带宽是无限的 91
4.1.4 网络是安全的 92
4.1.5 网络拓扑不会改变 92
4.1.6 只有一个管理员 92
4.1.7 网络传输没有开销 93
4.1.8 网络是同构的 93
4.2 错误 93
4.2.1 隔离错误 94
4.2.2 监督 95
4.3 状态 102
4.3.1 在线/离线状态 103
4.3.2 条件语句 104
4.3.3 热交换(Hotswap):Become/Unbecome 105
4.3.4 通过重启转移状态 113
4.4 课后作业 113
4.5 小结 114
第5章 纵向扩展 115
5.1 摩尔定律 115
5.2 多核架构的分布式问题 116
5.3 选择Future或Actor进行并发编程 117
5.4 并行编程 117
5.4.1 使用Future进行并行编程 118
5.4.2 使用Actor进行并行编程 119
5.5 使用Dispatcher 123
5.5.1 Dispatcher解析 123
5.5.2 Executor 124
5.5.3 创建Dispatcher 124
5.5.4 决定何时使用哪种Dispatcher 126
5.5.5 默认Dispatcher 128
5.5.6 使用Future的阻塞IO Dispatcher 130
5.5.7 用于解析文章的Dispatcher 132
5.5.8 并行最优化 135
5.6 课后作业 135
5.7 小结 136
第6章 横向扩展——集群化 137
6.1 Akka Cluster介绍 137
6.2 巨型单体应用vs微服务 137
6.3 集群的定义 138
6.3.1 失败检测 139
6.3.2 通过gossip协议达到最终一致性 139
6.4 CAP理论 140
6.4.1 C –一致性(Consistency) 140
6.4.2 A –可用性(Availability) 140
6.4.3 P –分区容错性(Partition Tolerance) 140
6.4.4 CAP理论中的妥协 141
6.5 使用Akka Cluster构建系统 143
6.5.1 创建集群 143
6.5.2 集群成员的状态 150
6.5.3 通过路由向集群发送消息 151
6.5.4 编写分布式文章解析服务 151
6.5.5 用于集群服务的集群客户端 153
6.5.6 集群设计 159
6.6 结合分区与冗余 164
6.7 远程Actor寻址 166
6.8 课后作业 167
6.9 小结 167
第7章 处理邮箱问题 169
7.1 搞垮最可能出问题的服务 169
7.1.1 响应时间变长 170
7.1.2 崩溃 171
7.2 恢复能力 171
7.3 在高负载情况下保持响应速度 175
7.4 课后作业 181
7.5 小结 182
第8章 测试与设计 183
8.1 示例问题 183
8.2 应用程序设计 184
8.3 设计、构建并测试领域模型 186
8.3.1 行为说明 186
8.3.2 设计领域模型 187
8.3.3 构建并测试领域模型 188
8.3.4 基于行为说明编写代码 190
8.4 测试Actor 192
8.4.1 测试Actor行为及状态 192
8.4.2 测试消息流 195
8.5 测试建议 198
8.6 课后作业 199
8.7 小结 200
第9章 尾声 201
9.1 其他Akka功能及模块 201
9.1.1 Akka中的日志 202
9.1.2 消息信道与EventBus 204
9.1.3 Agent 206
9.1.4 Akka Persistence 209
9.1.5 Akka I/O 210
9.1.6 Akka Streams与HTTP 210
9.2 部署工具 210
9.3 监控日志与事件 212
9.4 下一步 212
9.4.1 编写一些Actor代码 213
9.4.2 Coursera课程 213
9.5 小结 214
Akka入门与实践 电子书 下载 mobi epub pdf txt