多种网盘链接检测插件 购买前,请先检测网盘链接是否有效
《Akka应用模式:分布式应用程序设计实践指南》_1
《Akka应用模式:分布式应用程序设计实践指南》_2
《Akka应用模式:分布式应用程序设计实践指南》_3
内容简介:
内容简介
本书一开始介绍了 Actor模型,因为该模型比其他模型更能反映现实世界。另外,本书介绍了
ctor模型的一个实现框架Aka以及它的工具,而后讨论了在充分利用 actor架构的基础上使用Aka
框架来设计软件系统的方法,以及使用它来开发并发性和分布式应用程序的方法。本书还介绍了领域
駆动设计(DDD),指导通过结合Aka, Actor模型和DDD构建强大的、高可扩展的、高可维护的系统
遵循并灵活运用本书介绍的思路和方法,一定能创建出集可伸缩性、弹性、灵活性、长期易于维
护性等优点于一身的应用程序和系统
C2017 by Michael Nash Wade Waldron
Simplified Chinese Edition, jointly published by O'reilly Media, Ine, and Publishing House of Electronics
Industry, 2017. Authorized translation of the English edition, 2017 O'reilly Media, Inc, the owner of a
rights to publish and sell the
All rights reserved including the rights of reproduction in whole or in part in any form
本书简体中文版专有出版权由 O'reilly Media,Inc.授予电子工业出版社。未经许可,不得以任何
方式复制或抄袭本书的任何部分。专有出版权受法律保护
版权贸易合同登记号图字:01-2017-3966
图书在版编目(CIP)数据
Akka应用模式:分布式应用程序设计实践指南/(美)迈克尔?纳什( Michael Nash),(加)书德?沃
尔德龙( Wade Waldron)著;處航仲译.一北京:电子工业出版社,2017.10
书名原文: Applied Akka Patterns: A Hands- On Guide to Designing Distributed Applications
1.①A…,①迈…事…虞…Ⅲ、①JAVA语言一程序设计IV,①TP31
中guo版本图书馆CIP数据核字(2017)第200914号
策划编辑:孙奇俏
责任编辑:张春雨
封面设计: Karen Montgomery张健
印刷:三河市良远印务有限
装订:三河市良远印务有限公司
出版发行:电子工业出版社
比京市海淀区万寿路173信箱邮:100036
开本:787×980116印张:115字数:255千字
版次:2017年10月第1
印次:2017年10月第1次印刷
定价:65.00元
凡所购买电子工业出版社图书有缺损问题,请向购买书店调换。若书店售缺,请与本社发行部联
系,联系及邮购电话010)8825488,882588
质量投诉请发邮件至zitsaphei.com.cn,盗版侵权举报请发邮件至dbqaphei.com.cn
本书咨询联系方式:010-512608888
O Reily Media,nc.介绍
O' Reilly Media通过图书、杂志、在线服务、调查研究和会议等方式传播创新知识。自
1978年开始, O'reilly-直都是前沿发展的见证者和推动者。超级JiKe们正在开创着未来
而我们关注真正重要的技术趋势一一通过放大那些“细微的信号”来刺激社会对新科
的应用。作为技术社区中活跃的参与者,O' Reilly的发展充满了对创新的倡导、创造和
O' Reilly为软件开发人员带来ge命性的“动物书”:创建第一个商业网站(GNN)组
织了影响深远的开放源代码峰会,以至于开源软件运动以此命名;创立了Make杂志
从而成为DIYge命的主要先锋:公司一如既往地通过多种形式締结信息与人的组带
O'reilly E的会议和峰会集聚了众多超级JiKe和高贈远照的商业领神,共同描绘出开创新
产业的ge命性思想。作为技术人土获取信息的选择,O' Reilly I现在还将先锋专家的知识
传递给普通的计算机用户。无论是通过书籍出版、在线服务或者面授课程,毎每一项 O'reilly
的产品都反映了公司不可动摇的理念一一信息是激发创新的力量
业界评论
O' Reilly Radar博客有口皆碑
Reilly s凭借一系列(真希望当初我也想到了)非凡想法建立了数百万美元的业
O'reilly Conference是聚集美恶想袖的绝对典范
一CRN
本 O Reilly t的书就代表一个有用、有前途、需要学习的主題。
Irish Times
Tim是位特立独行的商人,他不光放眼于最长远、最广的视野并且切实地接照
Yogi Berra的建议去做了:'如果你在路上遇到當路口,走小路(當路)。”回过去
Tim似乎每一次都择了小路,而且有几次都是一闪即逝的机会,尽管大路也不错
Linux Journa
推荐序
Aka是在 Scala语言中实现的一个明星产品,被广泛地应用在构建基础框架和业务架
构中,它把 Erlang中被工业界证实为高可用、高容错的 Actor模型成功应用到JVM之
中,并产生了巨大的影响。我所在的挖财公司,其生产环境中也有一些基于Aka的系统,
经过长时间的观案,这些系统运行得都很稳定
Actor模型本身是一种非常出色的编程模型,但要充分发挥它的优勢,还需要开发者对
它的各种细节及使用模式非常熟悉。例如,在常见的模式中,有一种“隔离阻塞”模式
经常会让初学者很头疼
actor系统的核心在于各个 actor之间的通信,但基于JVM的Akka,其底层仍是基于线
程池来工作的, actor之间的通信也是靠线程调度来实现的。因此,当逻辑中含有一些阻
塞操作时,需要额外注意并反复确认这些阻塞操作使用的线程与 actor通信中使用的线
程是否相同,并发请求中多了这些阻塞操作是否会导致所有的线程都被“ block"住,进
而导致 actor之间的通信受到影响
我自己曾经遇到过一个因为未正确设置隔离阻塞操作而造成严重bug的案例:有一个项
目在我自己的笔记本电脑上运行时不会发生任何异常,但当部署到測试环境中运行时却
发生了导致整个 actor系统不可用的问题
深入系统调试后发现,系统里有一个作为 Router角色的 actor,其背后竟然有40个实例
在执行同一个会发生阻塞的.远.程.调用(在这种情况下系统至少需要40个可用的线程)
我们知道 actor系统底层调度的线程池大小是由井发因子和CPU核心数决定的,我的个
人笔记本的CPU核心数是8,測试环境中机器的CPU核心数只有2,两个不同环境的线
程池大小相差很大。当设置的并发因子数为10时,系统在我个人笔记本电脑上的线程池
大小是80,大于40,因此那40个实例执行.远.程.调用的同时还有空闲的线程可用于 actor
之间的通信,系统可以正常运行;而测试环境中的线程数只有20,是少于40的,这使
得所有线程都被那40个实例的.远.程.调用所占用,系统中没有可用于 actor之间通信的多
余线程,从而导致系统出现了不可用的情
了常见模式,还有一个对于开发者和架构师而言都非常重要的事情一如何集成已有
的非 Actor模型的框架,库或服务
例如,已有的系统都是基于 Spring生态的,那么Aka应用是否也应该基于 Spring生态?
或者,HTTP服务究竟该选用运维熟悉的Tomcat,还是Aka自帯的AkkaHTTP呢?这
些都是需要技术人员根据实际工程认真思考的问題,不是单单权衡技术利弊就可以做出
选择的,可见Akka中值得我们去探索的问题还有很多
这本书对于Akka中各个技术点的述非常简练,作者在不到200页的篇幅中介绍了
从 Actor模型到Akka组件,再到领域躯动设计等许多知识点,为读者提供了正确应用
Akka框架进行分布式设计开发的思路。另外,这本书中有很多干货,内容非常务实,对
于应用Aka框架进行实际项目开发的人有很大的帮助。
希
强烈推荐从事Aka分布式开发的的技术人员都能仔细阅读这本书,希望有更多的读者
能够通过这本书了解Akka这个非常强大的工具
挖财中间件团队负责人,王宏江
2017年8月
1推荐序
译者序
我在大学期间开始接触并使用 Scala,当时就发现了这门语言的强大。正如其名字所表达
的那样, Scala是一门可扩展的编程语言,融合了函数式编程和而向对象编程的特点,支
持并发,让异步编程变得很自然,同时表达能力也特别强。虽然 Scala的学习成本会
较高,尤其和 Golang、 Python这类语言相比,但是这门语言还是非常实用的,对提高开
发效率很有帮助。而且 Scala的创始人 Martin Odersky说过:“ Scala现在是为聪明人创
后也是为聪明人服务的。“ Scala相信程序员的聪明才智,让程序员自行选择合
构,以应对千变万化的任务需求,这一点是 Scala做得很不错的地方
编写正确的具有容错性和可扩展性的分布式,高并发程序非常困难,主要是因为我们
使用了错误的工具和错误的抽象层次,而Akka的出现改变了这种情况。Akka是参照
Apache2许可证(一种公认的开源许可证)发布的开源项目,通过使用 Actor模型来提
高抽象的级别,并提供了一个更好的平台来构建可扩展的、有弹性的、响应式的应用程
序,详细信息可参阅 The Reactive Manifesto。对于容错,Aka采用“让它崩(Lett
Crash)”的模式,这种模式可以帮助构建可自我修复和水不停止的软件系统。其中 actor
还提供了透明的分布式抽象,以及真正的可扩展与高容错应用的基础设施。
毕业后,我在讯微 信团队的后台架构部从事软件开发工作,作为腾 讯的战略级产品
微 信平均每天面临亿级的在线用户。面对这种用户规模的挑機,基本每一行代码都需要
考虑高并发和分布式的场景,大道至简的思想基本贯彻在整个技术产品线上。例如,大
系统小做,让一切可扩展:剥离复杂,让剩下的更简单:在容灾之前面向最坏情况思考
止雪崩;精细监控,迅速响应等。微 信团队内部的很多技术点也和 Actor i模型很像
比如微 信最核心的消息模型和 Actor的邮件模型就很有渊源。消息被发出后,会先在后
台临时存储,为了使接收者能更快接收到消息,系统会推送通知给接收者,最后客.户.端
主动到服.务.器端拉取消息。当然整个微 信槊构就是微服务的架构,每一个请求后面可
#############################################
|