基本信息

【插图】

编辑推荐
(1)作者是资深Java技术专家,Akka领域的布道者和实践者,从事软件开发和架构近10年,现任上海小虫科技CTO。
(2)本书以实战为导向,从Akka架构、组件、工具包、分布式、集群、微服务等多个角度展开,为构建高可用、高性能、分布式应用提供了详尽指导。
内容简介
计算机书籍
Akka是一款非常优秀的分布式并行应用框架,它为快速构建高性能、高可用的分布式应用提供了良好的解决方案。
本书是资深Java技术专家在大量实践后的经验与教训的总结,以实战为导向,从架构、组件、工具包、分布式&集群、微服务等多个角度对Akka进行了详细的讲解,为快速构建高可用、高性能的分布式应用提供了详尽指导。每个知识点都配备了详细的代码示例和配置说明,实操性极强。
全书一共10章:
第1章全面介绍了Akka的概念、应用场景和系统架构,为技术团队全面了解Akka和技术选型提供了参考依据;
第2~5章详细讲解了Akka的各种模型&组件的原理及用法,如Actor、线程调度(Dispatcher)、邮箱和消息路由等;
第6章介绍了Akka的一些实用工具包,如Future、Event Bus、Akka Streams等;
第7~8章主要讲解了Akka分布式&集群相关的内容,如远程Actor、远程路由、事件监听、集群搭建、集群分片、持久化等;
第9章讲解了如何使用Akka构建HTTP和WebSocket服务,并实现了一个完整的图文聊天系统。
第10章介绍了一款“全家桶式”的微服务框架Lagom,它基于Akka和Play而构建,提供了一整套微服务解决方案。
作译者
资深Java技术专家,上海小虫科技合伙人兼CTO,在Akka方面有丰富的实践经验。
从事软件开发和架构近10年,擅长Java体系下各项技术,在大型企业软件平台(如制造业ERP、财税云平台、智慧城市服务平台、电商系统等)的开发和架构方面经验丰富。
曾穿梭于各个技术岗位之间,并乐此不彼,期间独立创业近两年。多次受邀为惠普、通用等企业做技术分享、培训和咨询。
"})cnp([{"op":"60.60","m":"69.00","id":"J_12345168","p":"60.60"}]);
目录
第1章 认识Akka1
1.1 Akka简介1
1.1.1 技术背景1
1.1.2 Akka是什么3
1.2 Akka应用场景4
1.3 Akka架构体系4
1.3.1 Actor模型4
1.3.2 体系结构4
1.4 本章小结7
第2章 走进Actor8
2.1 Actor组件8
2.1.1 Akka中的Actor8
2.1.2 ActorSystem与监管9
2.1.3 生命周期监控9
2.1.4 引用与路径10
2.2 Akka环境搭建10
2.2.1 环境准备11
2.2.2 使用Lightbend Activator平台12
2.3 创建一个Actor14
前言
在大力提倡互联网+的今天,人们在PC、手机、Pad上安装了各式各样的软件服务或APP,享受着互联网技术带来的高效和便捷。同时,随着这些产品的高速发展,用户规模急剧扩大,系统承载能力会逐渐达到瓶颈,一些早期不常出现的问题也会慢慢浮出水面。实际上,系统开发者们也越来越重视软件的稳定性、高可用性、可扩展性对用户体验的影响,大家纷纷使出浑身解数,实践出多个构建大型应用所需要的技术架构。在这些架构方案中,有几个词始终不绝于耳,那就是:“高并发”“分布式”“高可用”。
对于很多工程师来讲,这几个词可谓“既爱又恨”。“爱”是因为大家都希望能掌握大型分布式系统架构所涉及的各个知识点。这样,大家在实现产品不断迭代更新,并持续服务好用户的同时,也能够进一步提升自己的技术实力和技术视野,可谓“产品”和“技术”共同成长。“恨”是因为很多产品并没有机会“跑”成大型系统,工程师们也就没有机会去解决大型系统才会出现的可扩展性问题,再加上目前市面上的一些分布式架构解决方案确实都存在不小的门槛,让大家认为任何分布式系统(学习起来)都是如此复杂。从某种程度上,这些都限制了工程师的自我提升。后来,我有幸接触到了一些较大型的系统,也逐渐开始承担起技术选型的工作,以我的经验来看,当你对整个系统架构有一定决策权的时候,就必须考虑你所选的架构是否足够稳定、可控、可依赖,更直白点说,即是否足够“简单”。因为只有简单的东西,才是可控的、低风险的。所以在当时,我所有的技术选型都以“简单”作为出发点,不希望将事情做得更复杂。就在我们打算为某个业务产品实现一套实时数据处理系统时,我接触到了Akka框架,在经过初步的了解后,我们开始尝试搭建Demo工程。最初我们只需要一个足够简单的单机程序,不用考虑太多的可扩展性问题,而Akka在单机上的并发性能也足以支撑我们当时的业务需求。但随着产品不断迭代和更新,数据处理所需要的系统资源突破单机的瓶颈,这时就不得不对其做水平扩展,即分布式&集群。我们发现,使用Akka做这类扩展是如此简单,无论是单机还是分布式,它都提供了统一的编程模型,这正好符合我的“简单”原则。Akka并非大型项目才可以使用,只要场景合适,它可以从“小”用到“大”。所以当你想要学习一门简单够用的分布式并行框架时,可以从Akka开始。
Akka虽然好用,但是在国内的知名度并不高(特别是和Java界的那几座大山相比)。我个人认为,出现这样的情况,可能有两个原因:一是Akka是基于Scala开发的,虽然同为JVM上的语言,也提供了Java API,但是Scala还略显小众(语言本身还是挺棒的),大家接受度不高;二是Akka的中文资料非常匮乏,这让很多工程师学习起来比较吃力,并且在出了问题后,不太容易找到合适的解决方案。我曾有幸被好几家企业邀请做一些这方面的技术咨询和培训,期间和小伙伴儿们一起踩过不少坑,但是总算爬出来了(笑),并且还留下了一些自己做的笔记和资料,所以就想写一本Java版的Akka书籍,也算是为普及Akka框架做点小贡献。再后来,一个偶然的机会认识了机械工业出版社的杨福川老师,了解了书籍出版的相关事宜,在他的鼓励下,我开始走上写书的道路。
写书对我来讲,远比写代码要困难得多。写代码时,我只需要考虑当前业务场景下的功能实现,并且对于技术的运用更多靠的是一种习惯—觉得该这么写,不用考虑“why”,也不用考虑具体的细节。但写书需要更加全面地了解整个框架结构,将零散的知识“点”串成一条“线”,然后连成一个个知识“面”。虽然以前我有记笔记和写博客的习惯,但是要把这些整合成一本书,还是花费了不少精力。另外,写作时间对我来说也是个问题。在决定要写这本书时,我正处于独立创业中,并且刚从上一个项目中抽出身来,时间相对来说比较充裕,所以趁热打铁,很快交出了第一稿。正当我为自己的写作进度感到开心时,一个新的创业机会向我招手了,然后我来到了现在这家公司。加入新公司后,我几乎把所有精力都投入到新产品的研发和管理工作上,所以写书一事也只能暂缓了。在这期间,我一直得到家人、朋友,包括福川老师的支持和鼓励,我对完成本书的愿望也越来越强,所以不敢(也不想)有任何懈怠,一直尽可能挤出空闲时间用于写作。终于,在搭上了多个“不那么忙”的周日后,我完成了本书。
本书特色
据我了解,目前国内还没有一本真正意义上的Akka原创书籍,而网上流传的相关资料同质化又比较严重,同时对Java版进行全面介绍的也非常少,这些都对初学者产生了很大干扰。本书以Java版为基础,对Akka的各个知识点都做了较为全面的介绍,并且每个知识点都附带了详细的代码示例,也对配置进行了说明,相信读者朋友们可以很快上手。
本书读者对象
Java工程师
系统架构师
分布式系统爱好者
高校师生及IT培训机构相关人员
如何阅读本书
本书一共分为10章,全面介绍了Akka的基础架构、Actor模型、常用组件、分布式&集群、微服务等。下面是各个章节的简介及阅读说明。
第1章主要介绍了Akka的技术背景、应用场景及架构体系,为大家日后做技术选型提供参考依据。
第2章全面介绍了Actor的相关概念、常见用法、生命周期、容错处理等。Actor可谓Akka最核心的组件,所有其他功能都是围绕它来构建的,所以对其理解越深刻,越有助于后续内容的学习。
第3章介绍了Dispatcher的用途和常见配置方法。对其进行合理配置,可以有效提高系统吞吐率。
第4章介绍了邮箱的常见类型及配置,同时给出了一个自定义邮箱类型的简单案例。
第5章介绍了消息路由器的基本概念和创建方式(Pool和Group),然后分别演示了“广播”“最快响应”等常见路由策略。虽然本章的示例都是基于本地系统的,但实际上它可以无缝切换成远程模式,即在分布式集群环境下(具体会在第7章和第8章进行介绍),路由功能也是完全可用的。
第6章介绍了Akka的一些实用工具包,比较重要的有Future、Event Bus(事件总线)、Akka Streams等。其中Future可以接收Actor的计算结果,并通过多种方式对结果进行处理;事件总线实现了基于发布-订阅的消息流处理,解决了耦合问题;Akka Streams是基于Reactive Streams的一个实现,它提供的“背压”(Back Pressure)机制用于解决大规模数据处理带来的生产和消费速度不均的问题,并以此实现流控。Akka Streams的内容较多且复杂,大家可以通过本章入门,更多详细的内容请参考官方文档。
媒体评论
——黄勇特赞科技CTO/《架构探险》作者
?
学习并掌握一个分布式并行应用框架,已经成为当下对普通程序员的基本要求。Akka以其高性能、高容错性,恰巧可以作为一个极佳的基础学习框架。作者在Akka方面不仅有丰富的实战经验,并且善于将实战中的各种要点和最佳实践,以通俗易懂的方式呈现在本书中。对于广大程序员而言,本书是对官方文档极佳的补充和解释,强烈推荐!
——陆舟社区技术专家/《Struts2技术内幕》作者
?
Akka的文档稀缺、学习曲线偏高、难以上手……现在,国内终于有了一本Akka的专著。本书系统讲解了Akka的方方面面,既有Akka本身的特性,也有Akka的周边生态,理论与实践并重,值得一读。
——周立 ?《Spring Cloud与Docker微服务架构实战》作者
?
目前市面上关于Akka的资料比较少,为了帮助读者更好地了解并使用Akka,作者从实战的角度全面介绍了它,读者朋友们可以借助本书快速构建自己的高可用的分布式并行应用,非常值得一读。
——占军(占小狼)? 美团点评基础架构组技术专家