编辑推荐

适读人群:程序员软件工程师架构师相关院校师生
从实战角度介绍了Akka工具及其重要模块
入门+手册的内容安排,代码测试贯穿《Akka实战
实例丰富、内容实用,上手容易、起点较低

内容简介

Akka是JAVA虚拟机JVM平台上构建高并发、分布式和容错应用的工具包和运行库,同时提供了Scala和Java的开发接口。《Akka实战》主要介绍了Akka的Actor开发模型,并行编程、消息传递、路由功能、集群、持久化等内容,还介绍了Akka的配置、系统集成和性能分析与度量等有关知识,全面介绍了Akka的主要功能,并给出了丰富的实例。
Akka实战》可作为程序员、软件工程师和架构师关于开发分布式并行应用的参考,也可以作为高等院校分布式并行开发的教材还可以作为对于分布式并行开发感兴趣的读者的入门参考书。

作者简介

雷蒙德·罗斯腾伯格(RaymondRoestenburg)是一位经验丰富的软件工程师,多语言程序员和软件架构师。他是一位Scala社区的活跃成员和Akka的贡献者,参与了Akka-Camel模块的开发。

罗勃·贝克尔(RobBakker)是一位经验丰富的软件开发人员,专注于并行后端系统和系统集成。他从0.7版本开始就使用Scala和Akka。

罗勃·威廉姆斯(RobWilliams)S是ontometrics的创始人,专注于包括机器学习在内的Java解决方案。十多年前开始从事基于Actor的编程开发,从那时起已经完成了几个项目。

目录

目录
序I
译者序II
致谢III
关于《Akka实战》IV
第1章Akka简介1
1.1什么是Akka?3
1.2Actor简介4
1.3两种扩展方法:建立我们的实例4
1.4传统扩展5
1.4.1传统扩展和持久性:一切移入数据库6
1.4.2传统扩展和交互应用:轮询8
1.4.3传统扩展和交互应用:Web服务9
1.5用Akka进行扩展10
1.5.1用Akka扩展和持久化:发送和接收消息11
1.5.2用Akka扩展和交互应用:消息推送13
1.5.3用Akka扩展和容错:异步解耦14
1.5.4Akka方式:发送和接收消息15
1.6Actor:向上和向外扩展的编程模型16
1.6.1异步模型16
1.6.2Actor操作17
1.7AkkaActor20
1.7.1ActorSystem20
1.7.2ActorRef、邮箱和Actor21
1.7.3分发器21
1.7.4Actor和网络24
1.8总结24
第2章搭建和运行25
2.1克隆、构建和测试接口25
2.1.1用sbt进行构建26
2.1.2快进到GoTicks.comREST服务器28
2.2探索应用中的app32
2.2.1app结构32
2.2.2处理销售的Actor:TicketSeller39
2.2.3BoxOfficeActor40
2.2.4RestApi43
2.3部署到云上46
2.3.1在Heroku上创建app46
2.3.2在Heroku上部署并运行48
2.4总结49
第3章Actor测试驱动开发50
3.1测试Actor50
3.2单向消息52
3.2.1SilentActor实例52
3.2.2SendingActor实例57
3.2.3SideEffectingActor实例63
3.3双向消息66
3.4总结68
第4章容错69
4.1容错是什么(不是什么)?69
4.1.1普通对象与异常70
4.1.2Letitcrash73
4.2Actor生命周期76
4.2.1启动事件77
4.2.2停止事件78
4.2.3重启事件78
4.2.4生命周期综合80
4.2.5生命周期监控82
4.3监视83
4.3.1监视器层次结构83
4.3.2预定义策略85
4.3.3自定义策略87
4.4总结94
第5章Futures95
5.1Future的应用实例95
5.2Future无阻塞99
5.3Future错误处理106
5.4Future组合111
5.5Future组合Actor122
5.6总结123
第6章第一个分布式Akkaapp125
6.1向外扩展125
6.1.1通用网络术语125
6.1.2采用分布式编程模型的原因126
6.2远程扩展127
6.2.1把GoTicks.comapp改造成分布式应用128
6.2.2远程REPL活动129
6.2.3远程查找135
6.2.4远程部署143
6.2.5多JVM测试149
6.3总结156
第7章配置、日志和部署158
7.1配置158
7.1.1尝试Akka配置158
7.1.2使用默认值162
7.1.3Akka配置165
7.1.4多系统166
7.2日志168
7.2.1Akka中的日志记录168
7.2.2使用日志170
7.2.3Akka的日志控制171
7.3部署基于Actor的应用173
7.4总结178
第8章Actor的结构模式179
8.1管道和过滤器179
8.1.1企业集成模式:管道和过滤器179
8.1.2Akka中的管道和过滤器180
8.2企业集成模式:分发-收集模式185
8.2.1适用性185
8.2.2Akka处理并行任务187
8.2.3使用接收者列表实现分发组件188
8.2.4使用聚合器模式实现收集组件189
8.2.5组合组件实现分发-收集模式198
8.3企业集成模式:路由表模式199
8.4总结205
第9章路由消息207
9.1企业集成路由模式207
9.2使用AkkaRouter实现负载平衡208
9.2.1AkkaRouter池211
9.2.2AkkaRouter群组217
9.2.3ConsistentHashingRouter225
9.3用Actor实现路由模式229
9.3.1基于内容的路由229
9.3.2基于状态的路由230
9.3.3Router的实现233
9.4总结234
第10章消息通道235
10.1通道类型235
10.1.1点对点通道235
10.1.2发布-订阅通道236
10.2特殊通道245
10.2.1死信245
10.2.2保证投递248
10.3总结254
第11章有限状态机和代理256
11.1使用有限状态机256
11.1.1有限状态机简介256
11.1.2创建FSM模型257
11.2FSM模型的实现258
11.2.1实现转换259
11.2.2实现入口动作264
11.2.3FSM定时器270
11.2.4FSM的终止273
11.3使用代理实现共享状态274
11.3.1使用代理简单地共享状态274
11.3.2等待状态更新276
11.4总结277
第12章系统集成278
12.1消息终端278
12.1.1归一化279
12.1.2规范数据模型280
12.2使用ApacheCamel实现终端282
12.2.1创建从外部系统接收消息的消费者终端283
12.2.2实现生产者向外部系统发送消息291
12.3实现HTTP接口297
12.3.1HTTP实例298
12.3.2用Akka-http实现REST终端300
12.4总结307
第13章流309
13.1基本流处理309
13.1.1使用源和接收器复制文件313
13.1.2实体化可运行图316
13.1.3用Flow处理事件321
13.1.4处理流中的错误324
13.1.5用BidiFlow创建协议326
13.2HTTP流330
13.2.1接收HTTP流330
13.2.2HTTP响应流333
13.2.3内容类型和协调的自定义编组与解组334
13.3用GraphDSL进行扇入和扇出340
13.3.1广播流340
13.3.2合并流343
13.4协调生产者和消费者347
13.4.1使用缓冲区347
13.5图的速率隔离350
13.5.1对较慢的消费者,对事件进行汇总351
13.5.2快速消费者的扩展度量351
13.6总结352
第14章集群353
14.1为什么使用集群?353
14.2集群成员关系355
14.2.1加入集群356
14.2.2离开集群364
14.3集群作业处理369
14.3.1启动集群

前言/序言

  《Akka实战》介绍了Akka工具和重要的模块,集中介绍Actor编程模型,和支持Actor构建并发和分布式应用的模块。代码测试贯穿《Akka实战》,这是软件开发每天面临的重要方面。所有例子代码用Scala编写。
  在有了Actor编写和测试的基础之后,《Akka实战》介绍了使用Akka构建实际应用可能遇到的重要方面。
  《Akka实战》面向所有想学习利用Akka构建应用程序的读者。因为所有例子以Scala编写,所以希望你已经有了一些Scala语言基础,或者在学习过程中乐于学习一些Scala的知识。还希望你比较熟悉Java,因为Scala运行于JVM(Java虚拟机)之上。
  《Akka实战》包含17章。
  第1章介绍了Akka的Actor。主要介绍了Actor编程模型如何解决一系列应用程序难于扩展的问题。
  第2章介绍了使用Akka构建的示例HTTP服务,以显示如何快速地在云中获得服务并运行。它会让你潜移默化地看到将要学习的章节。
  第3章介绍使用ScalaTest和akka-testkit模块进行Actor单元测试。
  第4章介绍了如何对Actor进行监督和监控,构建可靠的、容错的系统。
  第5章介绍了Future,它是异步组合函数结果的简单而强大的工具。并学习如何组合Future与Actor。
  第6章介绍akka-remote模块,它允许在网络上分布Actor。并学习如何对分布式Actor系统进行单元测试。
  第7章介绍如何使用TypesafeConfig库配置Akka。还介绍了如何使用这个库配置自己的应用组件。
  第8章详细介绍了基于Actor应用的结构模式。你将学习如何实现几个经典的企业集成模式。
  第9章介绍了路由(router)的使用。路由用于Actor之间交换、广播和负载均衡信息。
  第10章介绍了Actor之间发送信息的消息通道。你将学习Actor的点到点和发布-订阅消息通道。还将学习死信和保证投递通道。
  第11章讨论了如何使用FSM模块构造有限状态机,还介绍了用于异步共享状态的代理。
  第12章介绍了与其他系统的集成。在本章你将学习如何通过ApacheCamel集成各种协议,以及使用akka-http模块构建HTTP服务。
  第13章介绍了akka-stream模块。你将学习如何利用Akka构建流(streaming)应用程序。本章详细介绍了如何构建处理日志事件的HTTP流服务。
  第14章介绍了akka-cluster模块。你将学习如何在网络集群上动态扩展Actor。
  第15章介绍了akka-persistence模块。在本章你将学习如何使用持久化Actor记录和恢复持久化状态,以及如何使用单例集群和分片集群扩展构建集群化的购物车应用。
  第16章讨论了Actor系统的关键性能参数,并提供了如何分析性能问题的提示。
  第17章对两个即将到来的重要特性做了展望:在编译时检查Actor消息的akka-typed模块,和akka-distributed-data模块,它提供了在集群中分布内存状态的机制。
  所有清单和文本中的源代码都以这种固定宽度的字体(代码的排版格式,根据实际排版情况确定。括号内不是原文内容,排版时删除。——译者注)表示,以便与普通文本相区别。许多代码清单都伴有说明,突出重点概念。实例代码可以从出版者网站www.manning.com/books/akka-in-action和GitHubhttps://github.com/RayRoestenburg/akka-in-action.上下载。

其他推荐