阅读时间: 3 分钟
Akka是一个免费的开源工具包,简化了并发和分布式系统/应用的构建。我们已经处理过Akka Actors,在那里我们学习了Akka Actors和它们的行为。但是,行为者可以被视为处理数据序列,他们发送或接收一系列的消息。因此,在这篇博客中,我们将详细讨论Akka流。
什么是Akka Streams?
它是一个处理和传输数据序列的库,数据的大小可能不知道,也可能是无限的。Akka Streams的实现在内部使用Reactive Streams接口,在不同操作者之间传递数据。Akka Reactive是一个为异步流处理提供标准的倡议,具有非阻塞的背压。
为了在你的项目中引入Akka Stream,请在项目中的'build.sbt'文件中添加以下依赖。
这个依赖项将允许你访问丰富的Akka流库。在了解Akka流的组件之前,让我们先了解一些与之相关的术语。
1.流 --
一个涉及移动和转换数据的活动过程。
2.2.元素 -
流的处理单元被称为元素,用来表示缓冲区的大小。
3.3.背压 -
它意味着控制流,即理解为非阻塞和同步。
4.4.非阻塞 -
它表明一个进程不应该阻碍调用线程的进展,尽管它可能需要很长的时间来完成请求。
5.5.图形 -
图形被用来定义元素在流运行时的流动轨迹。
6.6.操作者 -
操作符是建立图的所有构建块的名称。
Akka流的组件 -
Akka Stream有许多组件,如Source、Sinks、Flows、Runnable graphs、Fault Tolerance、Graph、Fusing。我们将讨论其中的主要部分,具体如下
1.1.源 --
源是一个有确切的单一输出的阶段。它作为流的输入,其数量不是预先确定的,也可以是无限的。
每当下游操作者(Flow或Sink)准备消费或接收数据时,它就发射数据元素。源的类型可以是文件、集合和角色等。
一些类型的源已经在下面的片段中被定义。
2.汇 -
水槽是一个正好有一个输入的阶段。它作为流的一个端点。
这种类型的操作者请求并接受数据元素,可能会减慢元素的上游生产者。它可以将数据写到文件、数据库、REST API、集合等。
一些类型的汇已经在下面的片段中被定义。
3.流 -
流是一个有确切的一个输入和一个输出的阶段,因此可以作为一个源和汇。它被用来连接上游和下游,操作流经它的数据(转换、过滤等)。
每当一个流收到来自下游的需求时,它就将其传播到上游。它还通过减少或停止需求向上游传播背压。
一些类型的源已经被定义在下面的片段中。
下面是一个说明Akka流的示例代码。
这是一个简单的Akka流的代码,它连接了源、汇和流。
结论 --
在这篇博客中,我们已经了解了Akka流,他们的基本术语,组件和最后的简短代码演示。