小苏子
小苏子PDF在线图书

Akka应用模式 分布式应用程序设计实践指南 作者:[美] Michael Nash(迈克尔·纳什),[加] Wade Waldron(韦德·沃尔德龙)

Akka应用模式 分布式应用程序设计实践指南 作者:[美] Michael Nash(迈克尔·纳什),[加] Wade Waldron(韦德·沃尔德龙)

Akka应用模式 分布式应用程序设计实践指南 出版社: 电子工业出版社

Akka应用模式 分布式应用程序设计实践指南 内容简介

Akka应用模式 分布式应用程序设计实践指南 目录

Akka应用模式 分布式应用程序设计实践指南 精彩文摘

对于想要学习Akka的Java 和 Scala 开发者们,有很多技术资源可供参考,但是如要想知道如何去应用这些技术就需要不同的思维方式了。为了帮助你正确地使用Akka,这本实用的实践指南提供了若干高级的设计模式,还包括了如何以及何时应用那些模式去解决在大型分布式系统中遇到的实际问题的一些案例。前言O’Reilly Safari第1章 Actor模型现实是最终一致的解构Actor模型所有的计算都在一个actor中执行actor之间只能通过消息进行通信actor可以创建子actoractor可以改变自己的状态或行为一切都是actorActor模型的使用定义清晰的边界何时适合使用Actor模型结论第2章 Akka简介Akka是什么Akka组件Akka实现的Actor模型Actor模型中的Akka actorAkka Typed项目结论第3章 分布式领域驱动设计DDD概述DDD的好处DDD组件域实体域值对象聚合与聚合根仓储工厂和对象创建域服务有界上下文结论第4章 优秀的Actor设计大系统小做封装actor中的状态Ask模式和替代方案命令与事件结论第5章 数据流吞吐量与延迟流路由器邮箱拉取的工作模式背压Akka数据流结论第6章 一致性和可扩展性事务和一致性强一致性与最终一致性并发性与并行性为什么全局一致的分布式状态影响可扩展性位置透明性交付保证可扩展性集群分片和一致性结论第7章 容错故障类型故障隔离故障处理结论第8章 可用性微服务和单体式应用用有界上下文划分微服务细粒度的微服务集群感知路由器分布式数据优雅降级部署分阶段部署/滚动重启蓝/绿部署崩溃恢复/运维监测结论第9章 性能隔离瓶颈优化Akka派发器结论后记参考文献理解如何正确使用actor是最基本的,这样才能使其发挥最大的作用,这也是我们将在本章中学到的知识。本章将会探讨actor——它是如何工作的,它们如何与彼此及外部世界进行交互。设计软件时用到的很多技术都教导我们,在编写代码之前先去了解现实世界是很有必要的。我们必须了解将要开发的软件用例,知道谁将使用它,如何使用它,这些信息对设计优秀的软件系统而言至关重要。还有一个非常重要的问题在设计过程中经常被忽略:系统执行需要耗费多长时间?任何一个开发过高并发系统的工程师都知道,时间是整个软件开发过程中的重要组成部分。下面先探讨一些看似与软件开发并不密切相关的话题,不用担心,稍后会向大家说明这些是如何与软件开发产生联系的!现实是最终一致的思考一下平时去拿一杯咖啡的过程,表面上看,这是一个很简单的过程:伸手,然后拿到一杯咖啡。这个过程并没有包含太多动作,但是,更深入地去思考这个过程会发现许多奥秘。为了能拿到这杯咖啡,首先需要知道它在哪里。环顾四周然后会看到它,但是此时看到的这杯咖啡是它现在的状态吗?可能已经是它曾经的状态了?因为我们是基于这个杯子反射回来的光来判断它的位置的,但是光是需要时间传播的。而且,当眼睛接收到这些数据之后,也需要时间先来处理数据然后再传送到大脑。另外,神经系统的其他部分还需要进行额外的一系列处理,才能让我们移动手臂,最后拿起这杯咖啡。这个过程中的每个阶段都会产生一些时间延迟,而这些延迟最终都会影响到拿杯子这件事情本身。如果处于一个静止的环境中,这点延迟对于简单的拿杯子的动作而言不会有太大的影响,然而世界本质上是动态的,时刻都在发生变化,随着事件频繁发生而剧烈变化,这些小的延迟便会积累。不过对于前面那个简单的拿起一杯咖啡的例子来说,这点延迟还是相当微不足道的。那么,如果想要在杯子从桌子上掉下来的时候尝试去抓住它,同时又保证咖啡不洒出来,是不是就变得相当有挑战性了呢?如果想要同时抓住很多正在掉落的杯子呢?我们现在仿佛处在一个不可能完成任务的境界之中。事实上,现实世界是受制于光速的。物理定律和光速为因果关系规定了上限。只有当两件事情占据相同的空间(当然这是不可能的),并且它们发生的时间有一定间隔时,先发生的事件才能对后发生的事件产生影响。当两个人在不同的距离点观察同一件事件时,其实他们会在不同的时间点经历这件事,距离近的人会稍早于距离远的人。然而,尽管经历的时间点不同,但都是真实地经历了。Actor模型就是基于这种现实物理世界的规律而设计的。我们生活在处理一些过时信息的状态中。比如,细胞之间通过激素进行消息交流。再比如,我们日常聊天、看新闻、阅读博客,所有这些不同信息间的交流都是以异步的形式进行的。事实上,最后会发现生活中并没有事情是同步进行的。即便是计算机,其行为也是异步的,计算机的每一步操作都是通过在某种介质上传播信号来完成的,信号可以是电信号、光信号或者其他信号。既然世界上所有的事情都是以某种异步的形式在进行着,那么为什么还要花大力气去尝试编写同步的软件系统呢?我们也经常告诫自己,软件系统应该基于现实世界来建模和构造,但却忽略了时间这一基本概念。如果基于现实世界来建模,同时使用异步事件或消息机制来构造软件系统,岂不是更好吗?反过来思考一下,如果通过传统的同步软件系统来模拟现实世界的话,这个世界会变成什么样子?最后的结果又会是什么?

赞(0)
未经允许不得转载:小苏子图书 » Akka应用模式 分布式应用程序设计实践指南 作者:[美] Michael Nash(迈克尔·纳什),[加] Wade Waldron(韦德·沃尔德龙)