簡介
串流處理是針對數據流套用大規模密集型計算特點和多核處理器而設計的一種編程模型 。串流處理範例是通過限制可執行的並行計算來簡化並行軟體和硬體。給定一個數據序列(串流處理),一系列操作(核心函式)被套用到串流中的每個元素。例如:直播軟體。核心函式通常使用流水線(計算),並且嘗試最佳化本地片上記憶體重用,以便最大限度地減少頻寬損失,並通過外部存儲器互動。典型的是統一串流式傳輸,其中一個核心函式套用於流中的所有元素。由於核心和流抽象展現了數據依賴性,編譯器工具可以完全自動化和最佳化片上管理任務。串流處理硬體可以使用記分板例如,當依賴關係變得已知時啟動直接記憶體存取(DMA)。手動DMA管理的取消減少了軟體的複雜性,並且相關的硬體快取I / O消除,減少了專用計算單元(例如算術邏輯單元)必須涉及服務的數據區域擴展。在20世紀80年代,串流處理在數據流編程中得到了探索。一個例子是語言SISAL(單一賦值語言中的流和疊代)。
事件流處理
數據流(事件流),在通信領域中它常用來表示一連串的數字編碼序列,但是,在實際套用中它用來表示某一設備所產生的連續事件信息。它代表了一種新的數據模式,與傳統資料庫模型不同,它是一種大量、連續、快速、隨時間變化的數據流。這類事件流包含兩個方面的特徵:一是事件信息是連續不斷的產生,在早期,這類數據一般在股票交易系統中出現的比較多,但是銀行、網際網路監控等領域也會產生大量持續的數據;二是需要實時的對更新的數據流進行分析(如趨勢分析、預測等),提取有用的信息。
事件流處理要求系統能夠實時準確的分析流事件,並將符合業務邏輯的事件告訴給事件監聽器。同時與此功能大致相同的還有一個相關的概念叫複雜事件處理。使用模式比對、事件的相互關係、事件間的聚合關係,其目的是從事件雲中找出有意義的事件,使得架構可以更能彈性使用事件驅動架構,並且能使企業更能快速的開發出更複雜的邏輯’架構。複雜事件處理可以看作是一種處理串流的資料庫處理。在關係資料庫中數據是由許多行組成的數據表,複雜事件流處理將事件串流看作是數據表來處理,每個事件的屬性相當於數據表中的欄位 。
回響式編程
在計算機中,回響式編程或反應式編程(Reactive programming)是一種面向數據流和變化傳播的編程範式。這意味著可以在程式語言中很方便地表達靜態或動態的數據流,而相關的計算模型會自動將變化的值通過數據流進行傳播。
電子表格程式就是回響式編程的一個例子。單元格可以包含字面值或類似"=B1+C1"的公式,而包含公式的單元格的值會依據其他單元格的值的變化而變化 。
另一個例子是硬體描述語言,比如Verilog,這裡回響式編程可以對電路中傳播的信號變化進行建模。回響式編程最初是為了簡化互動式用戶界面的創建和實時系統動畫的繪製而提出來的一種方法,但它本質上是一種通用的編程範式。例如,在MVC軟體架構中,回響式編程允許將相關模型的變化自動反映到視圖上,反之亦然。
回響式程式語言包括從顯式的使用箭頭來表示數據流,到隱式的通過語言類似命令式或者函式式的語言架構派生而來的數據流。例如,在隱式的函式式回響式編程中,一個函式調用可能隱式的導致一個節點在數據流圖中被創建出來。動態語言的回響式編程庫(例如Lisp的“Cells”和Python的“Trellis”等)可以在運行時通過對函式執行數值讀取的過程進行分析,構建出依賴圖,使得數據流不僅隱式,而且動態。回響式編程的說法有時候會被用在軟體工程的架構分層中,這是數據流圖中所謂的節點只是能夠互相通信的普通程式。
並行處理
並行處理(Parallel Processing)是計算機系統中能同時執行兩個或更多個處理的一種計算方法。並行處理可同時工作於同一程式的不同方面。並行處理的主要目的是節省大型和複雜問題的解決時間。為使用並行處理,首先需要對程式進行並行化處理,也就是說將工作各部分分配到不同處理進程(執行緒)中。並行處理由於存在相互關聯的問題,因此不能自動實現。另外,並行也不能保證加速。從理論上講,在 n 個並行處理的執行速度可能會是在單一處理機上執行的速度的 n 倍。