色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

從分層架構到微服務架構介紹(三)

jf_78858299 ? 來源:元閏子的邀請 ? 作者:元閏子 ? 2023-05-10 16:58 ? 次閱讀

前言

管道架構Pipeline Architecture),通常也被稱為 管道-過濾器架構 (Pipes and Filter Architecture),是最常用的架構模式之一。大部分軟件工程師都是通過Unix終端初次接觸到該架構模式,Unix終端的Shell語言,對管道-過濾器有著原生的支持。

比如,現在需要實現這樣的一個功能: 讀取一個文本文件的內容,找到使用頻率最高的5個單詞,并按照使用頻率的大小順序打印出單詞及其使用頻率

那么,使用Shell可以這樣來實現:

cat content.txt |     # step1: 讀取文件內容
tr -cs A-Za-z '\\n' |  # step2: 將單詞按行輸出
tr A-Z a-z |          # step3: 將所有單詞轉換為
sort |                # step4: 對單詞進行排序
uniq -c |             # step5: 計算出單詞的頻率
sort -rn |            # step6: 按照頻率對單詞進行排序
head -n 5             # step7: 獲取排序前5的單詞
# 輸出結果示例:
   4 to
   4 and
   3 the
   3 networks
   3 linux

這段Shell代碼就是一個簡單的管道架構實現,其中|表示管道pipe,每一個step就相當于一個過濾器filter。每個filter都將上一個filter的輸出結果作為輸入數據,對數據進行處理后再將結果輸出到管道中。

除了Shell語言之外,MapReduce也是基于管道架構搭建,其中的mapreduce可以看成是過濾器,只是它們通信的管道為HDFS。

Shell語言和MapReduce編程模型都可以看成是管道架構的low-level實現,當然,它也能應用于higher-level的系統應用上,下面我們來介紹管道架構模式的架構視圖。

架構視圖

管道架構由管道pipe和過濾器filter組成:

圖片

管道架構架構視圖

pipe作為filter之間的數據傳輸通道,通常都是單向、點對點通信的 ,這樣的設計不僅實現簡單,在性能上也能取得較好的效果。另外,pipe上傳輸的數據并沒有統一的格式,每個系統都可以根據自身的特點選擇合適的數據結構。

filter作為數據處理的組件,通常是無狀態的 。每個filter都應當只完成一項工作,滿足 單一職責原則 ,復雜的工作流應該由多個filter組合而成。一般地,我們將filter分成以下幾種類型:

  • Producer : 有時候也稱為 Source ,是整個pipeline的start point,負責從數據源中接收數據,并將數據輸出到pipe中。
  • Transformer : 從pipe中接收輸入數據,然后對部分或全部數據進按照一定的規則行轉換,并將結果輸出到pipe中。在函數式編程里,該步驟通常被稱為map
  • Tester : 從pipe中接收數據,然后對數據進行一些條件判斷,并根據判斷結果選擇是否將數據傳遞到下游的pipe中。需要注意的是, tester并未對數據進行任何修改
  • Consumer : 是整個pipeline的end point,通常將從pipe中讀取到的數據持久化到數據庫或呈現到用戶界面上。

一個系統中可以有多個producer和consumer,比如我們可以同時通過Kafka和REST接口接收輸入數據,經過系統的處理后,將結果數據存儲到MySQL中,同時也傳遞一份到數據倉庫上用作數據分析。總之, 管道架構模式有著很大的靈活性

應用例子

管道架構模式被廣泛應用在很多應用上,下面我們以一個ETL系統作為例子來理解該模式的運作方式。

ETLExtract, Transform, Load)是將業務系統的數據經過抽取、清洗轉換之后加載到數據倉庫的過程,目的是將企業中的分散、零亂、標準不統一的數據整合到一起,為企業的決策提供分析依據。

圖片

管道架構模式應用例子

業務應用系統在運行過程中會產生各種各樣的數據輸出到kafka中,ETL系統會消費相關數據,并在經過處理后將結果存儲到數據庫上。在上圖的ETL系統里,各個過濾器的作用如下所述:

  • Service Info Capture : 訂閱kafka的topic,從中消費業務系統產生的數據,然后通過pipe傳送到下游filter。
  • Duration Filter : 判斷數據是否與計算 服務請求的處理時長 (duration)指標相關,是則將數據傳遞給Duration Calculator,否則傳遞給Uptime Filter。
  • Duration Calculator : 計算服務請求的處理時長,并將計算結果傳遞給Database Output。
  • Uptime Filter : 判斷數據是否與計算 系統正常運行時長 (uptime)指標相關,是則將數據傳遞給Uptime Calculator,否則認為數據并非本ETL系統所關系,結束數據流程。
  • Uptime Calculator : 計算系統正常運行時長,并將結果傳遞給Database Output。
  • Database Output : 將數據持久化到MongoDB中。

上述的ETL系統由1個producer filter,2個tester filter,2個transform filter和1個consumer filter組成,主要的數據處理邏輯是計算系統的遙測指標。系統在架構上具有很高的可擴展性,比如后續想要新增一個指標計算,我們可以在Uptime Filter之后加上新的tester和transform,系統原有的指標計算無需改動;又比如系統后續打算用HBase替換MongoDB,那么我們可以新開發一個HBase Output替換掉原有的Database Output,系統的其他流程同樣無需改動。

架構評分

圖片

管道架構模式的架構評分

管道架構模式通常被實現為單體架構,同分層架構模式一樣,因為單體架構本身的劣勢,其在Elasticity、Fault tolerance、Scalability方面都具有很低的評分。Simplicity是管道架構模式的主要優點之一,filter和pipe實現簡單,可以快速構建起一個基于管道架構風格的系統,因此也具有很高的Overall cost評分。

另外,相比于分層架構模式,管道架構模式在Modularity、Evolutionary和Testability上都有著較高的評分, 這得益于filter之間的松耦合,我們可以很容易擴展系統的filter,以及對單個filter進行測試

總結

本文主要介紹了管道架構模式,它由管道pipe和過濾器filter組成。根據具體的數據處理邏輯,它將filter劃分為producer、transformer、tester和consumer四種類型,是一種典型的technical partition軟件架構風格。管道架構模式因為其可擴展性很高的特點而被廣泛應用,其中不乏有Shell語言這種low-level的實現,也有ETL系統這種high-level的實現。

雖說該模式通常被實現為單體架構,但也有像MapReduce這種基于分布式系統的編程模式實現,總之,如果你需要為一個數據處理型的系統選型,那么可以認真地考慮是否采用管道架構模式。

每種架構模式都有其合適的應用場景,只有熟悉常用的幾種架構模式,才能設計出更好的軟件系統。下一篇文章,我們將繼續介紹 微內核架構

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • UNIX
    +關注

    關注

    0

    文章

    296

    瀏覽量

    41992
  • 架構
    +關注

    關注

    1

    文章

    525

    瀏覽量

    25815
  • 過濾器
    +關注

    關注

    1

    文章

    436

    瀏覽量

    20104
收藏 0人收藏

    評論

    相關推薦
    熱點推薦

    微服務架構和CQRS架構基本概念介紹

    微服務架構現在很熱,到處可以看到各大互聯網公司的微服務實踐的分享總結。但是,我今天的分享和微服務沒有關系,希望可以帶給大家一些新的東西。如果一定要說
    發表于 05-22 09:03

    什么是微服務架構_微服務架構的優缺點及應用

    什么是微服務架構 簡單地說,微服務是系統架構上的一種設計風格, 它的主旨是將一個原本獨立的系統拆分成多個小型服務,這些小型
    的頭像 發表于 06-02 10:03 ?1.8w次閱讀
    什么是<b class='flag-5'>微服務</b><b class='flag-5'>架構</b>_<b class='flag-5'>微服務</b><b class='flag-5'>架構</b>的優缺點及應用

    SOA架構微服務架構的主要區別

    SOA和微服務架構一個層面的東西,而對于ESB和微服務網關是一個層面的東西,一個談到是架構風格和方法,一個談的是實現工具或組件。SOA架構
    的頭像 發表于 05-04 14:11 ?6040次閱讀
    SOA<b class='flag-5'>架構</b>和<b class='flag-5'>微服務</b><b class='flag-5'>架構</b>的主要區別

    微服務架構有哪些_微服務架構設計模式

    小伙伴們知道常用的微服務架構框架有哪些嗎?上回我們介紹了一些常用的微服務架構設計模式,這次我們就來了解一下一些常用的
    的頭像 發表于 05-17 17:06 ?2.9w次閱讀
    <b class='flag-5'>微服務</b><b class='flag-5'>架構</b>有哪些_<b class='flag-5'>微服務</b><b class='flag-5'>架構</b>設計模式

    微服務架構的特點_微服務架構適用場景

     微服務架構是一項在云中部署應用和服務的新技術。
    的頭像 發表于 05-17 17:28 ?5374次閱讀

    微服務軟件架構應用研究綜述

    自2014年,微服務架構概念經Martin Flower提出以來,受到廣泛關注,為更好了解微服務架構風格,本文首先分析、梳理了軟件架構的發展
    發表于 05-26 09:26 ?2次下載

    什么是微服務架構

    在Medium,我們的技術堆棧始于2012年的單片Node.js應用程序。我們已經構建了幾個衛星服務,但我們還沒有制定一個系統地采用微服務架構的策略。隨著系統變得越來越復雜并且團隊不斷發展,我們在2018年初轉向了
    的頭像 發表于 02-24 11:15 ?1513次閱讀
    什么是<b class='flag-5'>微服務</b><b class='flag-5'>架構</b>?

    分層架構微服務架構介紹(一)

    們看到一個架構模式的名字時,也要馬上想到對應的架構圖及其基本特點。比如,當談到**分層架構**時,我們就應該想起它的架構圖是怎樣的、有哪些出
    的頭像 發表于 05-10 16:55 ?1337次閱讀
    <b class='flag-5'>從</b><b class='flag-5'>分層</b><b class='flag-5'>架構</b><b class='flag-5'>到</b><b class='flag-5'>微服務</b><b class='flag-5'>架構</b><b class='flag-5'>介紹</b>(一)

    分層架構微服務架構介紹(二)

    系統按照功能劃分成前端和后端,分別部署在兩臺服務器上,問題得到了緩解,于是便有了**Client/Server架構**的出現。
    的頭像 發表于 05-10 16:57 ?929次閱讀
    <b class='flag-5'>從</b><b class='flag-5'>分層</b><b class='flag-5'>架構</b><b class='flag-5'>到</b><b class='flag-5'>微服務</b><b class='flag-5'>架構</b><b class='flag-5'>介紹</b>(二)

    分層架構微服務架構介紹(四)

    微內核架構 (Microkernel Architecture),也被稱為 **插件式架構** (plug-in architecture),作為一個在幾十年前就被創建出來的架構模式,它如今仍然被
    的頭像 發表于 05-10 17:00 ?937次閱讀
    <b class='flag-5'>從</b><b class='flag-5'>分層</b><b class='flag-5'>架構</b><b class='flag-5'>到</b><b class='flag-5'>微服務</b><b class='flag-5'>架構</b><b class='flag-5'>介紹</b>(四)

    分層架構微服務架構介紹(五)

    本文要介紹的是 服務架構 (Service-Based Architecture, SBA )。 SBA 可以看成是單體架構微服務
    的頭像 發表于 05-10 17:02 ?1032次閱讀
    <b class='flag-5'>從</b><b class='flag-5'>分層</b><b class='flag-5'>架構</b><b class='flag-5'>到</b><b class='flag-5'>微服務</b><b class='flag-5'>架構</b><b class='flag-5'>介紹</b>(五)

    springcloud微服務架構

    Spring Cloud是一個開源的微服務架構框架,它提供了一系列工具和組件,用于構建和管理分布式系統中的微服務。它基于Spring框架,旨在通過簡化開發過程和降低系統復雜性來幫助開發人員構建彈性
    的頭像 發表于 11-23 09:24 ?1800次閱讀

    docker微服務架構實戰

    的容器化技術,為微服務架構的實施提供了強大的支持。本文將介紹Docker微服務架構的實戰經驗,包括Docker的概述、
    的頭像 發表于 11-23 09:26 ?783次閱讀

    設計微服務架構的原則

    微服務是一種軟件架構策略,有利于改善整體性能和可擴展性。你可能會想,我的團隊需不需要采用微服務,設計微服務架構有哪些原則?本文會給你一些靈感
    的頭像 發表于 11-26 08:05 ?786次閱讀
    設計<b class='flag-5'>微服務</b><b class='flag-5'>架構</b>的原則

    架構與設計 常見微服務分層架構的區別和落地實踐

    架構風格越傾向于清晰的職責定位,且讓領域模型成為架構的核心。 基于這些架構風格,在軟件架構設計過程中又有非常多的架構
    的頭像 發表于 10-22 15:34 ?523次閱讀
    <b class='flag-5'>架構</b>與設計 常見<b class='flag-5'>微服務</b><b class='flag-5'>分層</b><b class='flag-5'>架構</b>的區別和落地實踐
    主站蜘蛛池模板: 亚洲人精品午夜射精日韩 | 亚洲免费网站在线观看 | 暖暖 日本 视频 在线观看免费 | 国产精品日本一区二区在线播放 | 办公室日本肉丝OL在线 | 久久高清内射无套 | 免费A级毛片无码无遮挡 | 九九在线免费视频 | 午夜免费啪视频观看视频 | 好男人视频免费高清在线观看www | 嫩草影院在线观看精品 | 欧美特级特黄AAAAA片 | 国产午夜a理论毛片在线影院 | 亚洲精品久久久无码一区二区 | 欧美freesex黑人又粗又 | 四虎视频最新视频在线观看 | 中文字幕A片视频一区二区 中文字幕AV在线一二三区 | 18岁男人女人插孔 | 2021扫黑风暴在线观看免费完整版 | 成人18视频在线 | 欧洲精品一区二区不卡观看 | 大睾丸内射老师 | 99久久久免费精品免费 | 在线视频 国产精品 中文字幕 | 坠落的丝袜美人妻 | 久久大香线蕉综合爱 | 日韩欧美群交P内射捆绑 | 91综合精品网站久久 | 日韩高清一区二区三区不卡 | 十分钟免费视频大全在线 | 最近2019中文字幕免费 | 2022精品福利在线小视频 | 大胸美女脱内衣黄网站 | 成人国内精品久久久久影 | 娇妻中日久久持久久 | fyeex性欧美人与曾 | 97免费视频在线观看 | 挺进老师的紧窄小肉六电影完整版 | 欧美午夜特黄AAAAAA片 | 男人J桶进男人屁股过程 | 小护士大pp |

    電子發燒友

    中國電子工程師最喜歡的網站

    • 2931785位工程師會員交流學習
    • 獲取您個性化的科技前沿技術信息
    • 參加活動獲取豐厚的禮品