Akka应用模式 分布式应用程序设计实践指南pdf下载

Akka应用模式 分布式应用程序设计实践指南 作者:[美] Michael Nash(迈克尔纳什),[加] Wade Waldron(韦德沃尔德龙)Akka应用模式 分布式应用程序设计实践指南 出版社: 电子工业出版社Akka应用模式 分布式应用程序设计实践指南 内容简介对于想要学习Akka的Java 和 Scala...

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

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

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

对于想要学习Akka的Java 和 Scala 开发者们,有很多技术资源可供参考,但是如要想知道如何去应用这些技术就需要不同的思维方式了。为了帮助你正确地使用Akka,这本实用的实践指南提供了若干高级的设计模式,还包括了如何以及何时应用那些模式去解决在大型分布式系统中遇到的实际问题的一些案例。

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

前言

O'Reilly Safari

第1章 Actor模型

现实是最终一致的

解构Actor模型

所有的计算都在一个actor中执行

actor之间只能通过消息进行通信

actor可以创建子actor

actor可以改变自己的状态或行为

一切都是actor

Actor模型的使用

定义清晰的边界

何时适合使用Actor模型

结论

第2章 Akka简介

Akka是什么

Akka组件

Akka实现的Actor模型

Actor模型中的Akka actor

Akka Typed项目

结论

第3章 分布式领域驱动设计

DDD概述

DDD的好处

DDD组件

域实体

域值对象

聚合与聚合根

仓储

工厂和对象创建

域服务

有界上下文

结论

第4章 优秀的Actor设计

大系统小做

封装actor中的状态

Ask模式和替代方案

命令与事件

结论

第5章 数据流

吞吐量与延迟

路由器

邮箱

拉取的工作模式

背压

Akka数据流

结论

第6章 一致性和可扩展性

事务和一致性

强一致性与最终一致性

并发性与并行性

为什么全局一致的分布式状态影响可扩展性

位置透明性

交付保证

可扩展性

集群分片和一致性

结论

第7章 容错

故障类型

故障隔离

故障处理

结论

第8章 可用性

微服务和单体式应用

用有界上下文划分微服务

细粒度的微服务

集群感知路由器

分布式数据

优雅降级

部署

分阶段部署/滚动重启

蓝/绿部署

崩溃恢复/运维监测

结论

第9章 性能

隔离瓶颈

优化Akka

派发器

结论

后记

参考文献

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

理解如何正确使用actor是最基本的,这样才能使其发挥最大的作用,这也是我们将在本章中学到的知识。本章将会探讨actor——它是如何工作的,它们如何与彼此及外部世界进行交互。

设计软件时用到的很多技术都教导我们,在编写代码之前先去了解现实世界是很有必要的。我们必须了解将要开发的软件用例,知道谁将使用它,如何使用它,这些信息对设计优秀的软件系统而言至关重要。还有一个非常重要的问题在设计过程中经常被忽略:系统执行需要耗费多长时间?任何一个开发过高并发系统的工程师都知道,时间是整个软件开发过程中的重要组成部分。

下面先探讨一些看似与软件开发并不密切相关的话题,不用担心,稍后会向大家说明这些是如何与软件开发产生联系的!

现实是最终一致的

思考一下平时去拿一杯咖啡的过程,表面上看,这是一个很简单的过程:伸手,然后拿到一杯咖啡。这个过程并没有包含太多动作,但是,更深入地去思考这个过程会发现许多奥秘。

为了能拿到这杯咖啡,首先需要知道它在哪里。环顾四周然后会看到它,但是此时看到的这杯咖啡是它现在的状态吗?可能已经是它曾经的状态了?因为我们是基于这个杯子反射回来的光来判断它的位置的,但是光是需要时间传播的。而且,当眼睛接收到这些数据之后,也需要时间先来处理数据然后再传送到大脑。另外,神经系统的其他部分还需要进行额外的一系列处理,才能让我们移动手臂,最后拿起这杯咖啡。

这个过程中的每个阶段都会产生一些时间延迟,而这些延迟最终都会影响到拿杯子这件事情本身。如果处于一个静止的环境中,这点延迟对于简单的拿杯子的动作而言不会有太大的影响,然而世界本质上是动态的,时刻都在发生变化,随着事件频繁发生而剧烈变化,这些小的延迟便会积累。不过对于前面那个简单的拿起一杯咖啡的例子来说,这点延迟还是相当微不足道的。那么,如果想要在杯子从桌子上掉下来的时候尝试去抓住它,同时又保证咖啡不洒出来,是不是就变得相当有挑战性了呢?如果想要同时抓住很多正在掉落的杯子呢?我们现在仿佛处在一个不可能完成任务的境界之中。

事实上,现实世界是受制于光速的。物理定律和光速为因果关系规定了上限。只有当两件事情占据相同的空间(当然这是不可能的),并且它们发生的时间有一定间隔时,先发生的事件才能对后发生的事件产生影响。当两个人在不同的距离点观察同一件事件时,其实他们会在不同的时间点经历这件事,距离近的人会稍早于距离远的人。然而,尽管经历的时间点不同,但都是真实地经历了。Actor模型就是基于这种现实物理世界的规律而设计的。

我们生活在处理一些过时信息的状态中。比如,细胞之间通过激素进行消息交流。再比如,我们日常聊天、看新闻、阅读博客,所有这些不同信息间的交流都是以异步的形式进行的。事实上,最后会发现生活中并没有事情是同步进行的。

即便是计算机,其行为也是异步的,计算机的每一步操作都是通过在某种介质上传播信号来完成的,信号可以是电信号、光信号或者其他信号。

既然世界上所有的事情都是以某种异步的形式在进行着,那么为什么还要花大力气去尝试编写同步的软件系统呢?我们也经常告诫自己,软件系统应该基于现实世界来建模和构造,但却忽略了时间这一基本概念。如果基于现实世界来建模,同时使用异步事件或消息机制来构造软件系统,岂不是更好吗?

反过来思考一下,如果通过传统的同步软件系统来模拟现实世界的话,这个世界会变成什么样子?最后的结果又会是什么?

本文来自牙可爱的骚云吖~投稿,不代表电子书资源网立场,如若转载,请联系原作者获取。

打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
() 0
上一篇 02-13
下一篇 02-13

相关推荐

评论列表

联系我们

在线咨询: QQ交谈

邮件:admin@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信