电子书:《响应式架构:消息模式Actor实现与Scala、Akka应用集成》

[复制链接]
查看217 | 回复1 | 2019-12-23 14:24:13 | 显示全部楼层 |阅读模式

《响应式架构:消息模式Actor实现与Scala、Akka应用集成》_1

《响应式架构:消息模式Actor实现与Scala、Akka应用集成》_1

《响应式架构:消息模式Actor实现与Scala、Akka应用集成》_2

《响应式架构:消息模式Actor实现与Scala、Akka应用集成》_2

《响应式架构:消息模式Actor实现与Scala、Akka应用集成》_3

《响应式架构:消息模式Actor实现与Scala、Akka应用集成》_3


内容简介:

响应式架构
消息模式 Actor实现与 Scala、Akka应用集成
[美] Vaughn Vernon著
Reactive Messaging
Patterns
Actor Mode
Applications and Integration in Scala and Akka
電子工業出履
Publishing House of Electronics Industr
北京· BElJING

内容简介
通过 Actor模型使用响应式消息传输模式,可编写出具有高性能、高响应性、高可伸缩性和高韧性
的并发应用程序。本书由10章构成,详细介绍了使用 Actor模型中的响应式消息传输模式的理论和实
技巧。其中包括: Actor模型和响应式软件的主要概念、 Scala语言的基础知识、Akka框架与Akka集群功
能、Acto模型中的通道机制和技术、降低消息源与消息目的地之间耦合性的方式、持久化 Actor对象和幂
等接收者。附录A中还介绍了通过NET平台和C语言使用Acto模型的方式
在企业中任职的软件架构师和开发者,以及任何对 Actor模型感兴趣并渴望提高自身技术和价值的软
件开发者,均适合阅读本书
Authorized translation from the English language edition, entitled Reactive Messaging Pattems with the Actor
Model: Applications and Integration in Scala and Akka, by Vaughn Vernon, published by Pearson Education, Ind
All rights reserved. No part of this book may be reproduced or transmitted in any form or by any means, elec
tronic or mechanical, including photocopying, recording or by any information storage retrieval system, without
permission from Pearson Education, Inc.
CHINESE SIMPLIFIED language edition published by PEARSON EDUCATION ASIA LTD, and PUBLISH
本书简体中文版专有出版权由 Pearson Education培生教育出版亚洲有限公司授予电子工业出版社。未
经出版者预先书面许可,不得以任何方式复制或抄袭本书的任何部分。
本书简体中文版贴有 Pearson education培生教育出版集团激光防伪标签,无标签者不得销售
版权贸易合同登记号图字:01-2015-7885
图书在版编目(CP)数据
响应式架构:消息模式 Actor实现与 Scala、Akka应用集成/(美)沃恩·弗农( Vaughn vernon)著;苏宝龙
译一北京:电子工业出版社,2016.7
B54RRX: Reactive Messaging Patterns with the Actor Model: Applications and Integration in Scala and Akka
ISBN978-7-121-29113-5
①响…Ⅱ.①沃…②苏Ⅲ.①程序语言-程序设计Ⅳ.①TP312
中guo版本图书馆CIP数据核字(2016)第137490号
策划编辑:张春雨
印刷:北京中新伟业印刷有限公司
装订:北京中新伟业印刷有限公司
出版发行:电子工业出版社
北京市海淀区万寿路173信箱邮编:100036
印张:27.5字数:555千字
版次:2016年7月第1版
印次:2016年7月第1次印刷
凡所购买电子工业出版社图书有缺损问题,请向购买书店调换。若书店售缺,请与本社发行部联
系,联系及邮购电话010)8
88258888
质量投诉请发邮件至zs@p
n,盗版侵杈举报请发邮件至dbqq@phei.com.cn
本书咨询联系方式
19faqaphei.com.cn

献给我最亲爱的 Nicole和 Tristan,
你们的爱与支持是寂前进的动力!

推荐序
终于有一本围绕企业应用和架构来讲解Acor模型和Akka的书了。很期待
这类书的出现,希望能引领 Actor模型开始向企业应用的“回归”
本书作者 Vaughn Vernon恰好也是《实现领域驱动设计》( Implementing
Domain Driven Design)一书的作者,这在某种程度上印证了,近十来年的“领域
驱动设计(DDD)”理想在 Actor模型和Aka上终于找到了现实的技术实现
DDD希望能在业务领域层面就把模型和逻辑设计清楚(业务模型和逻辑是
最稳定的),并一一对应到实现中。或者说,领域有什么,实现中才应该有,也
应该有。但由于计算机性能限制、语言实现难度等方面的原因
理想在现实
中一直没能得到很大程度的实现
近二十年来,Java及其生态一直占据着企业应用领域的主导地位。尤其从
20世纪90年代末以来,J2EE规范(现在叫 Java EE)也试图围绕业务领域,为
企业应用提供从建模到分层,涵盖事务、持久化、分布式的整套解决方案,并提
出 Entity Bean、 Session bean及 Message bean等试图对应到业务领域的模型。
遗憾的是,基于当时的技术, Java ee也并没有很好地实现初衷,这在我看
来至少有以下几方面的原因
EJB规范起初的一个主要价值一一对分布式应用进行事务管理,在实践中
乎很少被使用,反倒引入了整个架构的复杂性。
Entity Bean不能在集群中分片部署,而这本应是分布式系统最需要解决的
问题之一。
只有 Message Bean是异步的,但它却不是 Entity Bean。这意味着系统很
难在时间维度解耦
2005年前后, Hibernate、 Spring等技术逐渐兴起,以轻量化的角度切入了企
应用领域,并在互联网领域异军突起
对于 Spring+ Hibernate的方案,保存在持久层的业务实体的数据/状态

推荐序V
需要反复被业务逻辑存取。为了解决这个性能瓶颈,不得不引入 Ehcache、
Memcached、 Redis等中间缓存。这样,在数据扩张时,为了解决这些缓存数据
的分片( sharding)问题,这些缓存方案还需要进一步引入和实现集群分片的支
持,这带来了复杂性。可即便如此,它解决的是缓存数据的分布,而并没有解决
Beans本身的分布。 Beans仍然受限于Bean容器的缓存大小,而不得不经常去中
间缓存甚至持久层要数据
那么,在企业应用领域,Acor模型能带来更合适的解决范式吗?
Carl hewitt在1973年对 Actor模型进行了如下定义:“Acor模型是一个把
Actor'’作为并发数字计算的通用原语’的数学理论。”。这个定义跟我常说的
“ Actor是最适合并行计算的最小颗粒”是相通的。
Actor是异步驱动、可以并行和分布式部署及运行的最小颗粒。也即,它可以
被分配、分布、调度到不同的CPU、不同的节点,乃至不同的时间片上运行,而
不影响最终的结果。因此, Actor是在空间(分布式)和时间(异步驱动)上解耦的
Aka是 Tightend(前身是 Typesafe)公司在JM上的 Actor模型实现,它
同时是一个可扩展、引入了多种分布式范式的框架。而且,Aka23.0开始支持
带状态的 Actors的分片集群,以及根据 journal/snapshot形式对事件流和状态快照
实施持久化和回放
Akka的 Actor模式本身可以保证在单个 Actor实例中每个行为的原子性,并
行的粒度可以细化到单个Acor实例。也即,当行为被封装在一个 Actor实例中时
该行为不会阻塞其他 Actors实例的行为,从而很难出现整个系统被阻塞的情况
从EJB角度看, Akka Actor提供了什么对应的角色呢?
首先,从各类Bean的角色看。 Akka actor支持持久化,所以有一类 Actor可
以设成“ Entity Bean”Acor实例可以维护自己的状态,所以它也可以是“ Stateful
Session bean”;而不需要关心其状态的Acor,自然可以担当“ Stateless Session
Bean”;最后,对Acor的存取、调用,都是通过异步的消息传递来实现的,因此
它们都是“ Message Bean
其次,从架构层面看。 Actor能同时担当实体 Beans和中间缓存的角色,并
且是异步驱动的,且具备分片集群下的水平扩展能力。而 akka-persistent进一步
将持久化、HA一并细粒度地实现了。与 SSH/Java ee相比,Acor减少了数据反
复在各种形态(数据库、缓存、业务层中的实体对象实例)间转化的消耗,减少
了线程阻塞的消耗,并提供了一致的并行和分布式机制
再次,从业务领域看。 Actor可以非常自然地直接对应到业务实体。某类
Actor的一个实例可以是一个人、一个物品、一部设备,等等。这些实体 Actor都



回复

使用道具 举报

哈哈大笑 | 2019-12-23 14:24:17 | 显示全部楼层
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则