日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

架构之:数据流架构

發(fā)布時(shí)間:2024/2/28 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 架构之:数据流架构 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

文章目錄

  • 簡(jiǎn)介
  • 數(shù)據(jù)流架構(gòu)
    • 順序批處理
    • 管道和過濾器
    • 流程控制
  • 總結(jié)

簡(jiǎn)介

有時(shí)候我們的系統(tǒng)主要是對(duì)輸入的數(shù)據(jù)進(jìn)行處理和轉(zhuǎn)換,這些處理和轉(zhuǎn)換是互相獨(dú)立的,在這種情況下,輸入的數(shù)據(jù)經(jīng)過轉(zhuǎn)換之后被放到指定的輸出中去。

在日常的工作中,我們會(huì)經(jīng)常遇到這種數(shù)據(jù)處理的任務(wù),那么對(duì)于這樣的任務(wù)我們就可以采用數(shù)據(jù)流架構(gòu)。

數(shù)據(jù)流架構(gòu)

在實(shí)際工作中的流有很多種,最常見的就是I/O流,I / O緩沖區(qū),管道等。不同的組件或者模塊通過這些流進(jìn)行連接。數(shù)據(jù)的流向可以是帶有循環(huán)的拓?fù)鋱D,沒有循環(huán)的線性結(jié)構(gòu)或者樹形結(jié)構(gòu)等。

數(shù)據(jù)流架構(gòu)的主要目的是實(shí)現(xiàn)重用和方便的修改。 它適用于在順序定義的輸入和輸出上進(jìn)行一系列定義明確的獨(dú)立數(shù)據(jù)轉(zhuǎn)換或計(jì)算,例如編譯器和業(yè)務(wù)數(shù)據(jù)處理應(yīng)用程序。 一般來說有三種基本的數(shù)據(jù)流結(jié)構(gòu)。

順序批處理

順序批處理是最常見也是最基礎(chǔ)的數(shù)據(jù)流架構(gòu)。數(shù)據(jù)作為一個(gè)整體,會(huì)經(jīng)過一個(gè)一個(gè)的處理單元,在上一個(gè)處理單元處理結(jié)束之后,才會(huì)進(jìn)入到下一個(gè)處理單元。

我們看下順序批處理的流程圖:

數(shù)據(jù)被作為一個(gè)整體,從一個(gè)處理器傳到另外一個(gè)處理器。主要通過臨時(shí)文件進(jìn)行交互。每個(gè)處理器的輸出被作為下一個(gè)處理器的輸入,經(jīng)過一次次的數(shù)據(jù)處理,最終得到要得的結(jié)果。

順序批處理的優(yōu)點(diǎn)是每個(gè)處理都是獨(dú)立的,他們進(jìn)行組合得到一個(gè)整體的順序處理架構(gòu)。

當(dāng)然缺點(diǎn)就是不能并行,只能串行執(zhí)行,吞吐量也不夠。各個(gè)處理器之間只通過中間文件進(jìn)行交互,交互程度不高。

管道和過濾器

順序批處理中各個(gè)處理器的功能差異比較大,通常來說他們是不同的系統(tǒng)。如果在同一個(gè)系統(tǒng)中處理數(shù)據(jù)流任務(wù),那么就需要用到管道和過濾器。

java 8引入了stream和管道的概念。一個(gè)集合可以轉(zhuǎn)換成stream,通過對(duì)stream的操作,可以對(duì)整個(gè)數(shù)據(jù)流進(jìn)行變換,最終得到想要的結(jié)果。

這種方法強(qiáng)調(diào)連續(xù)組件對(duì)數(shù)據(jù)的增量轉(zhuǎn)換。 在這種方法中,數(shù)據(jù)流由數(shù)據(jù)驅(qū)動(dòng),整個(gè)系統(tǒng)可以分解為數(shù)據(jù)源、過濾器、管道和數(shù)據(jù)接收器等組件。

模塊之間的連接是數(shù)據(jù)流,它是先進(jìn)/先出的緩沖區(qū),可以是字節(jié)流、字符流或任何其他類型的此類流。 這種架構(gòu)的主要優(yōu)點(diǎn)在于它的并發(fā)和增量執(zhí)行。

這種模式下,最重要的組件就是過濾器,過濾器是獨(dú)立的數(shù)據(jù)流轉(zhuǎn)換器。 它轉(zhuǎn)換輸入數(shù)據(jù)流的數(shù)據(jù),對(duì)其進(jìn)行處理,并將轉(zhuǎn)換后的數(shù)據(jù)流寫入管道以供下一個(gè)過濾器處理。 它以增量模式工作,一旦數(shù)據(jù)通過連接的管道到達(dá),它就會(huì)開始工作。

上圖中的數(shù)據(jù)從管道出發(fā),經(jīng)過一個(gè)個(gè)的過濾器,最終得到處理過后的結(jié)果。

過濾器有兩種類型,分別是主動(dòng)型過濾器和被動(dòng)型過濾器。主動(dòng)型過濾器可以主動(dòng)從管道中拉取數(shù)據(jù),并將處理過后的數(shù)據(jù)推出。這種模式主要用于UNIX 管道。而被動(dòng)型過濾器則是負(fù)責(zé)接收管道推入的數(shù)據(jù)。

這種模式的優(yōu)點(diǎn)是可以提供高并發(fā)和高吞吐量。缺點(diǎn)就是不適合動(dòng)態(tài)交互。

流程控制

還有一種模式,既不是批量處理也不是管道模式,他是根據(jù)輸入內(nèi)容的不同,來控制不同的執(zhí)行流程。類似于我們程序中使用的判斷語句。

總結(jié)

上面我們介紹了幾種數(shù)據(jù)流的架構(gòu)方式,希望大家能夠喜歡。

本文作者:flydean程序那些事

本文鏈接:http://www.flydean.com/07-data-flow-architecture/

本文來源:flydean的博客

歡迎關(guān)注我的公眾號(hào):「程序那些事」最通俗的解讀,最深刻的干貨,最簡(jiǎn)潔的教程,眾多你不知道的小技巧等你來發(fā)現(xiàn)!

總結(jié)

以上是生活随笔為你收集整理的架构之:数据流架构的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。