系统软件 应用软件 图形软件 行业软件 安全相关 网络软件 聊天软件 影音软件 教育教学 驱动工具 编程开发 插件下载 源码下载 APP电脑版 其他类别

Akka Actor模型开发库官方版

v2.6.14

Akka Actor模型开发库官方版

  • 软件大小:15.0 MB
  • 软件语言:简体中文
  • 软件授权:共享软件
  • 软件类型:编程开发
  • 软件平台:WinAll
  • 更新时间:2022-01-27 15:11
  • 星级评分:4级
  • 软件官网:https://www.downza.com/
好评:50%顶一个
坏评:50踩一个

Akka Actor模型开发库简介

Akka Actor提供了一种分布式程序开发方案,用于为Java和Scala构建高度并发、分布式和消息驱动的应用程序。该软件提供了几个模块来帮助您构建程序。您可以在软件中配置并发和分发方案、HTTP和集群。提供的模块还有很多,适合需要设计分布式工作方案的朋友。您可以在软件中创建集群共享方案。提供集群中参与者的分片功能,可以设置预设数量的参与者在集群中运行,支持启动实体的设置,可以通过其实体标识符配置启动特定分片实体的权限,可以在软件中直接新建实体,更容易构建强大的反应式、并发式应用!

Akka Actor模型开发库软件功能

1、阿卡演员

Akka的核心是:一个没有线程原语所有痛苦的并发和分发模型。

2.阿卡流

一种直观安全的异步无堵塞反压流量处理方法。

3、阿克卡HTTP

现代、快速、异步、流优先的HTTP和客户端。

4.阿卡星团

炸弹和炸弹是通过将系统分布在多个节点上实现的。

5.集群碎片

根据他们的身份在集群中分配他们的角色。

6.分布式数据

最终数据是一致的、可读性高且低延迟的数据。

7、阿克卡持久

参与者的事件外包使他们能够在重启后达到相同的状态。

8.阿卡投影

使用Akka Pjections,您可以处理事件或记录从源到投影模型或外部系统的流。

9.阿卡管理

Akka系统的扩展,用于在云系统(k8、aws等)上运行。)

10、阿尔帕克卡

Alpakka是基于Reactive Streams和akka的Java和Scala的Reactive企业集成库。

11、阿尔帕克卡卡夫卡

Alpakka Kafka连接器-Alpakka是一个基于Reactive Streams和akka的Java和Scala的Reactive Enterpse Integration库。

12、Akka gRPC

Akka Streams上的流式gRPC和客户端。

Akka Actor模型开发库软件特色

1.更简单的并发和分布式系统

Actor和stream允许您构建一个大规模的系统,更有效地使用资源,并使用多个系统。

2、设计有子弹

根据“反应式声明Akka”的原理,你可以编写一个在出现故障时能够自我修复并保持响应性的系统。

3.高能量

计算机的速度高达5000万msg/秒。内存消耗更少;每个GB堆大约有250万参与者。

4.轰炸和分散

分布式系统没有单点故障。跨节点的负载平衡和自适应路由。事件源和具有聚类碎片的CQRS。利用CRDT实现最终一致的分布式数据。

5.反应流数据

带背压的异步无阻塞流程处理。完全异步和流式的HTTP和客户端为构建微服务提供了一个很好的平台。与Alpakka的流集成。

Akka Actor模型开发库教程

创建演员

到目前为止,我们已经研究了Actor的定义及其消息。现在让我们了解更多关于位置透明度的功能以及如何创建一个Actor实例。

职位透明度的力量

在Akka中,不能使用新关键字创建Actor的实例。相反,使用FactOr产卵方法创建一个actor实例。Spawn不返回参与者实例,但是akka . actor . type . actor ref引用了参与者实例。这种间接性为分布式系统增加了许多功能和灵活性。

在阿卡,位置不重要。位置透明性意味着ActorRef容器仍然表示进程中或远程计算机上执行元的运行实例,同时保留相同的语义。

如果需要,运行时可以通过在运行时更改Actor的位置或整个应用程序拓扑来优化系统。这将启用故障管理的“让它崩溃”模型,在该模型中,系统可以通过崩溃失败的执行元并重新启动健康的执行元来修复自身。

阿卡演员系统

AnActor是Akka的初始入口点。通常,每个应用程序只创建一个Actor。AnActor有名字和监护人。应用程序的引导程序通常在守护进程参与者之间完成。

这位守护演员是格雷尔曼。

瓦尔·格雷特曼:演员[格雷特曼。say hello]= Actor(greetermin(),& # 8220;AkkaQuickStart & # 8221)

它用于行为.安装程序来引导应用程序。

生成子参与者

其他参与者是使用上的产卵方法创建的ActorContext。将通过这种方式创建一个Greeter演员,新的GreeterBot每次都会收到时间SayHello消息。

异步通信

参与者是被动的,信息驱动的。演员在收到信息之前不会做任何事情。Actor使用异步消息进行通信。这可以确保发件人不会一直等待收件人处理他的邮件。相反,发件人将邮件放在收件人的邮箱中,可以自由地做其他工作。参与者的邮箱本质上是一个带有排序语义的消息队列。从同一个参与者发送的多个消息的顺序被保留,但是它可以与另一个参与者发送的消息交错。

你可能想知道演员在不处理消息(也就是做实际工作)的时候在做什么?它处于启动状态,在这种状态下,它不消耗除内存以外的任何资源。第三,展示了Actor的轻量级和高效率。

向参与者发送消息

要将消息放入演员邮箱,请使用!(bang)方法ActorRef。例如,Hello World的主类向GreeterMainActor发送消息,如下所示:

我们研究了如何定义参与者的行为和发送信息。现在,让我们通过完整地看主课来复习一下。

主类

akquickstarthelloworld中的对象将创建一个Actor作为监护人。监护人是指导您申请的顶级参与者。通常,它是由行为.安装程序中包含初始引导程序的守护程序定义的

的完整示例代码

查看参与者行为、消息定义以及如何启动Actor:

作为另一个最佳实践,我们应该提供一些测试范围。

测试演员

Hello World示例中的测试说明了ScalaTest框架的使用。测试范围不完整。它只是展示了测试参与者的代码有多容易,并提供了一些基本概念。你可以把它作为一个练习来增加你的知识。

测试类别定义

类AkkaQuickstartSpec用AnyWordSpecLike扩展了ScalaTestWithActorTestKit

扩展中包含了对ScalaTest的支持。ScalaTestWithActorTestKit。对于其他测试框架,可以直接使用testkit。

这管理了我们将在测试中使用的ActorTestKit的生命周期。

检测方法

这个测试使用TestPbe来查询和验证预期的行为。让我们看看源代码片段:

一旦获得了对TestPbe的引用,我们将把它作为问候者消息的一部分传递给问候者。,我们验证是否已收到Greeter响应。

完整的测试代码

这是完整的代码:

示例代码只介绍了从一开始就提供的ActorTestKit函数。

Akka Actor模型开发库集群共享

这个扩展提供了集群中参与者的分片功能。一个典型的用例是当您有许多有状态的参与者,他们使用的资源(例如,内存)比一台计算机所能容纳的要多。您需要将它们分布在集群中的多个节点上,并且您希望能够使用它们的逻辑标识符与它们进行交互,而不管它们在集群中的物理位置如何,这可能会随着时间而变化。例如,它可以是域驱动设计术语中代表聚合根的参与者。在这里,我们称这些参与者为“实体”。这些角色通常具有持久(持久)状态,但此功能不限于具有持久状态的角色。

在这种情况下,碎片化意味着具有标识符的参与者(称为实体)可以自动分布在集群中的多个节点上。每个实体参与者只在一个地方运行,并且可以向实体发送消息,而发送者不知道目标参与者的位置。这是通过ShardRegion发送由该扩展提供的参与者发送的消息来实现的,这些参与者知道如何将带有实体标识的消息路由到最终目的地。

应该首先使用此扩展。通常,当集群中每个节点上的系统启动时,通过使用ClusterSharding#init方法注册支持的实体类型,该方法返回ShardRegion的命名实体类型的参与者引用。发送给实体的消息总是通过实体ActorRef(即本地)发送的ShardRegion发送。该消息也可以通过使用ClusterSharding # entityRefFor检索的EntityRef发送,并且该消息也将通过本地发送。ShardRegion

您可以配置一些设置reference.conf,如的akka . cluster . sharing部分所述。

ShardRegion执行元在集群中开始的每个节点或一组节点上标记有特定的角色。在ShardRegion中创建ShardingMessageExtractor,从传入的消息中提取实体标识符和片段标识符。切片是将被一起管理的一组实体。对于特定ShardRegion片段中的第一条消息,它向协调器akka请求片段的位置。cluster.harding.shard协调器。ShardCoordinator决定哪个ShardRegion拥有。ShardRegion接收片段的决定归属。如果它本身就是这样一个ShardRegion实例,它将是一个实体,并且它将创建代表该实体的本地子参与者和指挥者的所有消息。如果片段主目录是另一个ShardRegion实例,消息将被转发到这个ShardRegion实例。当分析片段的位置时,缓冲片段的传入消息,并在知道片段的位置时传递它。解析片段的后续消息可以立即传递到目标,而无需使用ShardCoordinator。

为了确保一个特定实体参与者的最多一个实例在集群中的某个地方运行,重要的是所有节点对片段的位置具有相同的视图。因此,ShardCoordinator的分配决策是由作为集群的单个实例运行的中央决定的,即所有集群节点中最早的成员或标记有特定角色的一组节点的实例。最早的成员可以通过akka.cluster.member # isolderhan来识别。

为了能够使用集群中新添加的成员,协调器可以促进片段的重新平衡,即实体从一个节点迁移到另一个节点。在重新平衡的过程中,协调器首先开始切换所有ShardRegion参与者切片。这意味着它们将开始缓冲这个片段的传入消息,就好像片段位置是未知的一样。在重新平衡的过程中,协调器不会响应任何要重新平衡的切片位置的请求,也就是说,本地缓冲将持续到切换完成。负责重新平衡碎片区域的人员将通过向碎片中的所有实体发送切换消息来停止它们。当所有实体终止时,ShardRegion拥有的实体将向协调员确认完成移交。此后,协调器将回复对片段位置的请求,以便为片段分配新的位置,并将缓冲的消息从ShardRegion参与者传送到新的位置。这意味着实体的状态不会被转移或迁移。如果一个实体的状态很重要,它应该是持久的(持久的),例如,使用akka-persistence,这样它就可以在一个新的位置恢复。

决定重新分区的逻辑在可插拔碎片分配策略中定义。默认情况下,阿卡。集群。哈定。夏德协调人。lease shardallocationstrategy被实现为从先前分配的具有最大数量ShardRegion的切片中选择切片用于切换。它们被分配给ShardRegion中最小数量的先前分配的片段,即集群中的新成员。有一个可配置的阈值来区分开始再平衡必须有多大。此策略可以由特定于应用程序的实现来替代。

切片位置状态的ShardCoordinator可以与故障AKKA区分数据一起存储,或者akka持久性可以保留。从集群中删除故障或不可访问的协调器节点后,新的ShardCoordinator单例角色将接管并恢复状态。在这种故障期间,具有已知位置的切片仍然可用,并且新(未知)切片的消息将被缓冲,直到新的ShardCoordinator可用。

只要发送方使用同一个ShardRegion参与者将消息传递给实体参与者,消息的顺序就会被保留。只要没有达到缓冲区限制,尽最大努力以与普通消息传递相同的方式,用最多一个传递语义来传递消息。通过使用AtLeastOnceDeliveryin,您可以添加至少具有一种语义的端到端消息akka-persistence。

由于到协调器的往返,针对新的或以前未使用的片段的消息会引入一些额外的延迟。碎片化的重新平衡也可能会增加延迟。在设计特定于应用程序的切片分辨率时,应该考虑这一点,例如,避免粒度过细的切片。

ShardRegion执行元也可以在仅代理模式下启动,也就是说,它本身不会托管任何实体,但是知道如何将消息委托给正确的位置。

如果实体的状态是持久的,您可以停止不用于减少内存消耗的实体。这是通过实体参与者的特定于应用程序的实现来完成的,例如,通过定义接收超时(context.setReceiveTimeout)。如果邮件在自身停止时已排入实体队列,则邮箱中排队的邮件将被丢弃。为了支持优雅的钝化而不丢失这样的消息,实体参与者可以发送集群共享。当ActorRef[ShardCommand]创建实体时,钝化传递给工厂方法的对象。。指定的stopMessage消息将被发送回实体,并且应该停止自身。传入的消息将在收到的消息之间缓冲区域。钝化实体的终止。此后,这些缓冲的消息被传递给实体的新化身。

此类仅用于测试目的(例如,存根实现),不能用于用户扩展。以后可能会增加更多的方法,可能会这样实现。

收起介绍展开介绍
  • 安卓合集
  • 软件合集
  • 浏览器
  • 电脑管家
  • 安卓游戏
更多 >> 安卓合集安卓合计

热门推荐

装机必备软件