编辑推荐
(1)作者是资深Java技术专家,Akka领域的布道者和实践者,从事软件开发和架构近10年,现任上海小虫科技CTO。
(2)《Akka实战:快速构建高可用分布式应用》以实战为导向,从Akka架构、组件、工具包、分布式、集群、微服务等多个角度展开,为构建高可用、高性能、分布式应用提供了详尽指导。
内容简介
Akka是一款非常优秀的分布式并行应用框架,它为快速构建高性能、高可用的分布式应用提供了良好的解决方案。
《Akka实战:快速构建高可用分布式应用》是资深Java技术专家在大量实践后的经验与教训的总结,以实战为导向,从架构、组件、工具包、分布式&集群、微服务等多个角度对Akka进行了详细的讲解,为快速构建高可用、高性能的分布式应用提供了详尽指导。每个知识点都配备了详细的代码示例和配置说明,实操性极强。
《Akka实战:快速构建高可用分布式应用》一共10章:
第1章全面介绍了Akka的概念、应用场景和系统架构,为技术团队全面了解Akka和技术选型提供了参考依据;
第2~5章详细讲解了Akka的各种模型&组件的原理及用法,如Actor、线程调度(Dispatcher)、邮箱和消息路由等;
第6章介绍了Akka的一些实用工具包,如Future、EventBus、AkkaStreams等;
第7~8章主要讲解了Akka分布式&集群相关的内容,如远程Actor、远程路由、事件监听、集群搭建、集群分片、持久化等;
第9章讲解了如何使用Akka构建HTTP和WebSocket服务,并实现了一个完整的图文聊天系统。
第10章介绍了一款“全家桶式”的微服务框架Lagom,它基于Akka和Play而构建,提供了一整套微服务解决方案。
作者简介
杜云飞
资深Java技术专家,上海小虫科技合伙人兼CTO,在Akka方面有丰富的实践经验。
从事软件开发和架构近10年,擅长Java体系下各项技术,在大型企业软件平台(如制造业ERP、财税云平台、智慧城市服务平台、电商系统等)的开发和架构方面经验丰富。
曾穿梭于各个技术岗位之间,并乐此不彼,期间独立创业近两年。多次受邀为惠普、通用等企业做技术分享、培训和咨询。
精彩书评
Akka是一款优秀的分布式并发框架,虽然它是基于Scala语言实现的,但我们却可轻松地将其运行在JVM上,在不改变现有架构的基础上支持更高的并发量。另一方面,Akka是一款轻量级开源技术,它既具备良好的性能,也具备优秀的扩展性,非常适合应用在微服务架构中。写书是一件很有挑战的工作,尤其是IT技术类原创图书,相信云飞这《Akka实战:快速构建高可用分布式应用》能为读者提供帮助。
——黄勇 特赞科技CTO/《架构探险》作者
学习并掌握一个分布式并行应用框架,已经成为当下对普通程序员的基本要求。Akka以其高性能、高容错性,恰巧可以作为一个基础学习框架。作者在Akka方面不仅有丰富的实战经验,并且善于将实战中的各种要点和实践,以通俗易懂的方式呈现在《Akka实战:快速构建高可用分布式应用》中。对于广大程序员而言,《Akka实战:快速构建高可用分布式应用》是对官方文档的补充和解释,强烈推荐!
——陆舟 社区技术专家/《Struts2技术内幕》作者
Akka的文档稀缺、学习曲线偏高、难以上手……现在,国内终于有了一本Akka的专著。《Akka实战:快速构建高可用分布式应用》系统讲解了Akka的方方面面,既有Akka本身的特性,也有Akka的周边生态,理论与实践并重,值得一读。
——周立《SpringCloud与Docker微服务架构实战》作者
目前市面上关于Akka的资料比较少,为了帮助读者更好地了解并使用Akka,作者从实战的角度全面介绍了它,读者朋友们可以借助《Akka实战:快速构建高可用分布式应用》快速构建自己的高可用的分布式并行应用,非常值得一读。
——占军(占小狼)美团点评基础架构组技术专家
目录
Contents
前言
第1章认识Akka
1.1Akka简介
1.1.1技术背景
1.1.2Akka是什么
1.2Akka应用场景
1.3Akka架构体系
1.3.1Actor模型
1.3.2体系结构
1.4本章小结
第2章走进Actor
2.1Actor组件
2.1.1Akka中的Actor
2.1.2ActorSystem与监管
2.1.3生命周期监控
2.1.4引用与路径
2.2Akka环境搭建
2.2.1环境准备
2.2.2使用LightbendActivator平台
2.3创建一个Actor
2.3.1定义Actor
2.3.2创建Actor实例
2.3.3工厂模式——-Props/Creator
2.4发送-接收消息
2.4.1tell方法
2.4.2ask方法
2.4.3消息转发
2.5查找一个Actor
2.6消息不可变
2.7Actor行为切换
2.8Actor生命周期
2.9停掉一个Actor
2.10监督与容错处理
2.11CircuitBreaker(熔断)
2.12配置相关
2.13本章小结
第3章线程调度
3.1什么是Dispatcher?
3.2Executor选择
3.3配置Dispatcher
3.4使用Dispatcher
3.5PinnedDispatcher
3.6本章小结
第4章邮箱
4.1消息处理顺序
4.2默认邮箱配置
4.3内置邮箱
4.3.1内置邮箱说明
4.3.2自定义优先级
4.3.3控制指令优先
4.4Actor使用邮箱的多种方式
4.4.1配置Actor邮箱
4.4.2配置dispatcher邮箱
4.4.3实现RequiresMessageQueue接口
4.5自定义邮箱类型
4.6本章小结
第5章消息路由
5.1Router和Routee
5.2路由器及路由逻辑
5.3路由Actor
5.3.1Pool方式
5.3.2Group方式
5.4常见路由类型
5.4.1广播-Broadcast
5.4.2最快响应-ScatterGatherFirstCompleted
5.4.3随机-最快响应-TailChopping
5.4.4创建可修改容量的池
5.5特殊消息处理
5.5.1Broadcast消息
5.5.2PoisonPill消息
5.5.3其他管理类消息
5.6本章小结
第6章实用工具
6.1定时调度-Scheduler
6.2处理并发结果-Future
6.2.1Future常规用法
6.2.2函数式Future
6.3事件总线
6.3.1实现事件总线
6.3.2事件流处理
6.4日志处理
6.4.1基础配置
6.4.2使用slf4j
6.5Akka扩展
6.5.1TypedActor初探
6.5.2自定义扩展
6.5.3集成Spring
6.6AkkaI/O
6.6.1TCP服务
6.6.2UDP服务
6.7AkkaStreams
6.7.1Streams组件
6.7.2组合Source、Sink
6.7.3案例:日志处理
6.7.4错误处理
6.7.5关联Actor
6.8本章小结
第7章远程
7.1远程介绍
7.1.1JavaRPC
7.1.2Akka远程
7.2创建远程ActorSystem
7.3Actor远程访问
7.4创建远程Actor
7.5远程路由器
7.6远程事件
7.7序列化
7.7.1Protobuf框架
7.7.2序列化API
7.8本章小结
第8章集群
8.1Akka集群概述
8.1.1种子节点
8.1.2领导节点
8.1.3节点状态及生命周期
8.1.4故障检测
8.2创建Akka集群
8.2.1代码及集群配置
8.2.2启动集群
8.2.3加入集群
8.2.4akka-cluster集群工具
8.3集群示例-实现文章单词统计
8.3.1示例分析
8.3.2代码实现
8.4使用路由
8.4.1Group路由
8.4.2Pool路由
8.5集群指标
8.5.1指标收集
8.5.2基于指标的负载均衡
8.6集群单例
8.7集群客户端
8.7.1集群客户端概述
8.7.2使用ClusterClient
8.7.3事件监听
8.8集群分片
8.8.1分片概念
8.8.2持久化Actor
8.8.3分片示例
8.9本章小结
第9章HTTP服务
9.1HTTP协议
9.1.1header信息
9.1.2状态码
9.2AkkaHTTP
9.2.1配置依赖
9.2.2HTTP服务端
9.2.3请求和响应
9.2.4HTTP客户端
9.2.5使用RoutingDSL
9.2.6常用Directive
9.3AkkaWebSocket
9.3.1WebSocket协议
9.3.2AkkaWebSocket
9.3.3WebSocket应用之聊天室
9.4本章小结
第10章微服务全家桶之Lagom
10.1Lagom简介
10.2Lagom初探
10.3搭建Lagom服务
10.3.1项目结构
10.3.2编写Lagom服务
10.4持久化实体
10.4.1持久化简介
10.4.2PersistentEntityAPI
10.4.3持久化示例
10.4.4MySQL支持
10.5Lagom部署(SandBox)
10.5.1安装ConductRSandBox
10.5.2部署Maven项目
10.6本章小结