原文地址:Basics and working with Flows
本文仅做一些核心概念的解释,以方便理解Akka和Squbs
核心概念
Akka Stream是一个类库,使用有界缓冲区间处理和转换一系列元素。后面一个属性就是我们所说的有界性,它是Akka Streams的定义特征。翻译成日常用语,可以表达为处理实体的链(或者是我们后面可以看到的图标),每个独立的执行(并且可能同时)的同时缓冲一个固定大小的元素在任何时间。缓冲区边界参数在每个actor模型中都不同,每个actor可能为无界的,有界但下降邮箱。Akka Stream处理实体具有不下降的“邮箱”。
在我们继续之前,让我们定义一些基础的术语,这在整篇文章中将会用到:
Stream(流)
一个包括移动和转换数据的活跃进程
Element(元素)
element 是流的处理单元。所有将元素从上行流转换到下行流的操作。缓冲大小通常表达成元素的数目,独立表达实际的元素大小。
Back-pressure(背压)
流量控制的手段。一个数据消费提供生产者关于它们当前可用性的方式,有效的减少上游生产者来匹配它们消费者的速度。Akka Streams背压的上下文始终理解为非阻塞和异步。
Non-Blocking(非阻塞)
意味着一个确定的操作不会阻碍调用线程的调用进度,即便它花费很长的时间结束请求操作。
Graph(图表)
流处理拓扑的描述,定义运行时的流的元素流向的路径。
Processing Stage(处理阶段)
所有构建图形的构建块的通用名称。processing stage的例子如map()
, filter()
,通过transform()
添加的stage,如PushStage
,PushPullStage
,StatefulStage
。图表方法如 Merge或
Broadcast`。有关内置处理stage的完整列表参见 Overview of built-in stages and their semantics