原文地址: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