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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > windows >内容正文

windows

八、软考·系统架构师——架构设计

發(fā)布時(shí)間:2023/12/20 windows 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 八、软考·系统架构师——架构设计 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

系列文章

一、程序員進(jìn)階架構(gòu)師的基礎(chǔ)知識(shí)【計(jì)算機(jī)基礎(chǔ)】
二、程序員進(jìn)階架構(gòu)師的基礎(chǔ)知識(shí)【操作系統(tǒng)】
三、程序員進(jìn)階架構(gòu)師的基礎(chǔ)知識(shí)【計(jì)算機(jī)網(wǎng)絡(luò)基礎(chǔ)】
四、程序員進(jìn)階架構(gòu)師的專業(yè)知識(shí)【軟件工程基礎(chǔ)】
五、程序員進(jìn)階架構(gòu)師的專業(yè)知識(shí)【UML建模工具】
六、程序員進(jìn)階架構(gòu)師的專業(yè)知識(shí)【系統(tǒng)分析】
七、程序員進(jìn)階架構(gòu)師的專業(yè)知識(shí)【系統(tǒng)設(shè)計(jì)】
八、程序員進(jìn)階架構(gòu)師的專業(yè)知識(shí)【架構(gòu)設(shè)計(jì)】
九、程序員進(jìn)階架構(gòu)師的專業(yè)知識(shí)【架構(gòu)質(zhì)量及評(píng)估】
十、程序員進(jìn)階架構(gòu)師的專業(yè)知識(shí)【軟件測(cè)試及維護(hù)】

文章目錄

  • 系列文章
  • 前言
  • 生命周期
  • 4+1視圖
  • 基于架構(gòu)的軟件設(shè)計(jì)方法ABSD
  • 特定領(lǐng)域軟件體系架構(gòu)DSSA
  • 架構(gòu)風(fēng)格
    • 數(shù)據(jù)流風(fēng)格
    • 調(diào)用返回風(fēng)格
    • 獨(dú)立構(gòu)件風(fēng)格
    • 虛擬機(jī)風(fēng)格
    • 倉(cāng)庫(kù)風(fēng)格
    • C2風(fēng)格
    • 二層/三層架構(gòu)風(fēng)格
      • C/S架構(gòu)
      • B/S架構(gòu)
      • 多層架構(gòu)優(yōu)缺點(diǎn)
    • SOA架構(gòu)
    • 微服務(wù)架構(gòu)

前言

軟件架構(gòu)設(shè)計(jì)主要關(guān)注軟件構(gòu)件的結(jié)構(gòu)屬性交互作用,并通過(guò)多種視圖全面描述特定系統(tǒng)的架構(gòu)。何為構(gòu)件?構(gòu)件可以小到一個(gè)類,也可以是一個(gè)系統(tǒng)、中間件。多種視圖可以使不同角色的人員站在不同角度了解系統(tǒng)。本文圍繞著架構(gòu)設(shè)計(jì)的生命周期、架構(gòu)的設(shè)計(jì)方法以及架構(gòu)的風(fēng)格以及架構(gòu)的質(zhì)量屬性等幾個(gè)方面進(jìn)行說(shuō)明,描述架構(gòu)設(shè)計(jì)的工作以及如何設(shè)計(jì)出高質(zhì)量的架構(gòu)。

生命周期

《軟件工程》中有寫到軟件開發(fā)的生命周期,架構(gòu)設(shè)計(jì)同樣有生命周期,他兩之間是相互交叉、包容的,通常架構(gòu)設(shè)計(jì)處于分析和詳細(xì)設(shè)計(jì)中間,也就是說(shuō)對(duì)整個(gè)系統(tǒng)的需求以及整體結(jié)構(gòu)確定后就可以對(duì)系統(tǒng)的架構(gòu)進(jìn)行設(shè)計(jì)。軟件架構(gòu)設(shè)計(jì)的生命周期:

  • 需求分析:根據(jù)需求模型構(gòu)建架構(gòu)模型,保證模型轉(zhuǎn)移的可追蹤性
  • 設(shè)計(jì)階段:分析系統(tǒng)的組成要素與相互關(guān)系,通過(guò)體系結(jié)構(gòu)描述語(yǔ)言ADL4+1視圖的描述架構(gòu)。
  • 實(shí)現(xiàn)階段:制定項(xiàng)目的組織結(jié)構(gòu),實(shí)現(xiàn)配置化管理,通過(guò)置頂向下逐步求精的方式完成構(gòu)件開發(fā)。
  • 構(gòu)件組裝階段:根據(jù)系統(tǒng)的整體邏輯組裝構(gòu)件,構(gòu)建完整的系統(tǒng)。
  • 部署階段:部署應(yīng)用。
  • 后開發(fā)階段:演化、迭代、復(fù)用。
  • 4+1視圖

    體系結(jié)構(gòu)描述語(yǔ)言ADL目前常用的就是UML建模語(yǔ)言。 "4+1"視圖從5個(gè)不同的視角包括邏輯視圖進(jìn)程視圖物理視圖開發(fā)視圖場(chǎng)景視圖來(lái)描述系統(tǒng)架構(gòu)。每一個(gè)視圖只關(guān)心系統(tǒng)的一個(gè)側(cè)面,只有5個(gè)視圖結(jié)合在一起才能反映系統(tǒng)架構(gòu)的全部?jī)?nèi)容。

    • 場(chǎng)景(用例)視圖: 從外部世界的角度描述系統(tǒng)的功能。 所有其他視圖都依靠該來(lái)指導(dǎo)它們,這就是將模型稱為4+1的原因。該視圖通常包含用例圖,描述和概述圖。
    • 邏輯視圖:描述系統(tǒng)各部分的抽象描述,主要支持功能性需求。用于系統(tǒng)的組成部分以及各組成部分之間的交互方式。該視圖通常包含類圖,對(duì)象圖,狀態(tài)圖和協(xié)作圖。
    • 進(jìn)程(過(guò)程)視圖:描述系統(tǒng)中的進(jìn)程或活動(dòng)。細(xì)化到某個(gè)構(gòu)件中,如果存在業(yè)務(wù)流程需要被可視化時(shí),使用此視圖描述。進(jìn)程架構(gòu)需要考慮一些非功能性需求,如可用性、性能。該視圖通常包含活動(dòng)圖。
    • 開發(fā)視圖:描述系統(tǒng)的各部分如何被組織為模塊和組件。該視圖通常包含包圖和組件圖。
    • 物理視圖:描述如何將邏輯視圖、進(jìn)程(過(guò)程)視圖、開發(fā)視圖中所展示的抽象部分如何映射到最終部署的系統(tǒng)中。該視圖通常包含部署圖。

    基于架構(gòu)的軟件設(shè)計(jì)方法ABSD

    ABSD方法由構(gòu)成體系結(jié)構(gòu)的(商業(yè)、質(zhì)量)非功能需求和功能需求驅(qū)動(dòng)的。ABSD方法采用視角與視圖來(lái)描述軟件架構(gòu),采用用例來(lái)描述功能需求,采用質(zhì)量場(chǎng)景來(lái)描述質(zhì)量需求。
    使用ABSD方法三個(gè)基礎(chǔ):

    • 第一個(gè)基礎(chǔ)是功能的分解。在功能分解中,ABSD方法使用模塊的內(nèi)聚和耦合技術(shù)。
    • 第二個(gè)基礎(chǔ)是通過(guò)選擇架構(gòu)風(fēng)格來(lái)實(shí)現(xiàn)質(zhì)量和商業(yè)需求。
    • 第三個(gè)基礎(chǔ)是軟件模板的使用。設(shè)計(jì)的過(guò)程中可以采用之前的軟件模板進(jìn)行復(fù)用。
      每個(gè)方法論都有對(duì)應(yīng)的開發(fā)模型,比如結(jié)構(gòu)化開發(fā)對(duì)應(yīng)瀑布模型,面向?qū)ο箝_發(fā)方法對(duì)應(yīng)噴泉模型。ABSD方法的開發(fā)模型是ABSDM,ABSDM把整個(gè)基于軟件體系結(jié)構(gòu)的過(guò)程分為體系結(jié)構(gòu)需求、設(shè)計(jì)、文檔化、復(fù)審、演化等6個(gè)子過(guò)程,得到細(xì)化,知道能產(chǎn)生構(gòu)件和類。模型如下:

      其中需求包括功能性需求和非功能性需求;體系結(jié)構(gòu)文檔化過(guò)程的主要輸出結(jié)果是體系結(jié)構(gòu)規(guī)格說(shuō)明和測(cè)試體系結(jié)構(gòu)需求的質(zhì)量設(shè)計(jì)說(shuō)明書這兩個(gè)文檔;體系結(jié)構(gòu)復(fù)審是一個(gè)迭代過(guò)程。目的是標(biāo)識(shí)出潛在的風(fēng)險(xiǎn)盡早發(fā)現(xiàn)體系結(jié)構(gòu)設(shè)計(jì)中的缺陷和錯(cuò)誤。在一個(gè)主版本的軟件體系結(jié)構(gòu)設(shè)計(jì)之后,要安排一次由外部人員(用戶代表和領(lǐng)域?qū)<?/strong>)參加的復(fù)審。下圖為具體過(guò)程:

    特定領(lǐng)域軟件體系架構(gòu)DSSA

    特定領(lǐng)域軟件架構(gòu)是在一個(gè)特定應(yīng)用領(lǐng)域中,為一組應(yīng)用提供組織結(jié)構(gòu)參考的標(biāo)準(zhǔn)軟件體系結(jié)構(gòu)。
    DSSA通常是一個(gè)具有三個(gè)層次的系統(tǒng)模型,包括領(lǐng)域開發(fā)環(huán)境(領(lǐng)域架構(gòu)師)領(lǐng)域特定應(yīng)用開發(fā)環(huán)境(應(yīng)用工程師)應(yīng)用執(zhí)行環(huán)境(操作員)。其基本活動(dòng)為:

    • 領(lǐng)域分析:獲得領(lǐng)域模型。領(lǐng)域模型描述領(lǐng)域中系統(tǒng)之間共同的需求,即領(lǐng)域需求。
    • 領(lǐng)域設(shè)計(jì):獲得特定領(lǐng)域軟件架構(gòu)。DSSA描述領(lǐng)域模型中表示需求的解決方案。
    • 領(lǐng)域?qū)崿F(xiàn):依據(jù)領(lǐng)域模型和DSSA開發(fā)組織可重用信息,并對(duì)基礎(chǔ)軟件架構(gòu)進(jìn)行實(shí)現(xiàn)。

    其中參與角色有:領(lǐng)域?qū)<摇㈩I(lǐng)域分析人員、領(lǐng)域設(shè)計(jì)人員、領(lǐng)域?qū)崿F(xiàn)人員。

    架構(gòu)風(fēng)格

    軟件體系結(jié)構(gòu)風(fēng)格是描述某一特定應(yīng)用領(lǐng)域中系統(tǒng)組織方式的慣用模式。從建筑角度來(lái)說(shuō)有中式風(fēng)格、英式風(fēng)格、哥特式風(fēng)格等,軟件角度同樣如此,同一領(lǐng)域的軟件在體系結(jié)構(gòu)中也有多種風(fēng)格。
    軟件體系結(jié)構(gòu)風(fēng)格中定義了一個(gè)系統(tǒng)家族,每個(gè)風(fēng)格有一個(gè)詞匯表一組約束。詞匯表中包含一些構(gòu)件連接件類型。約束指出系統(tǒng)是如何將這些構(gòu)件和連接件組合起來(lái)的。
    體系結(jié)構(gòu)風(fēng)格反映了領(lǐng)域中眾多系統(tǒng)所共有的結(jié)構(gòu)語(yǔ)義特性,并指導(dǎo)如何將各個(gè)模塊和子系統(tǒng)有效地組織成一個(gè)完整的系統(tǒng)。

    數(shù)據(jù)流風(fēng)格

    所有的數(shù)據(jù)按照流的形式在執(zhí)行過(guò)程中前進(jìn),不存在結(jié)構(gòu)的反復(fù)和重構(gòu),在流動(dòng)過(guò)程中,數(shù)據(jù)經(jīng)過(guò)序列間的數(shù)據(jù)處理組件進(jìn)行處理,然后將處理結(jié)果向后傳送,最后進(jìn)行輸出。就像工廠中的汽車流水線一樣,汽車零部件在流水線的各個(gè)節(jié)點(diǎn)上被加工,最終輸出所需要的結(jié)果(一部完整的汽車)。
    數(shù)據(jù)流動(dòng)方式

    • 數(shù)據(jù)自由流動(dòng):構(gòu)件之間隨意傳輸數(shù)據(jù),這樣的流動(dòng)方式可能會(huì)出現(xiàn)死循環(huán)。
    • 數(shù)據(jù)近線性流動(dòng):構(gòu)件之間只向后傳輸數(shù)據(jù)。
    • 數(shù)據(jù)有限循環(huán)流動(dòng):構(gòu)件之間傳輸數(shù)據(jù)可以存在2、3次的反復(fù)流動(dòng)。

    數(shù)據(jù)流風(fēng)格中包含兩種風(fēng)格:

    • 批處理:批處理風(fēng)格的每一步處理都是獨(dú)立的,并且每一步是順序執(zhí)行的。只有當(dāng)前一步處理完,后一步處理才能開始。數(shù)據(jù)必須是完整的,以整體的方式傳遞。如日志分析計(jì)費(fèi)程序等。
    • 管道過(guò)濾器:與批處理一樣都是順序執(zhí)行。每個(gè)構(gòu)件都有一組輸入和輸出,前一個(gè)輸出是后一個(gè)輸入,增量傳送。如傳統(tǒng)的編譯器UNIX管道等。下圖為編譯器執(zhí)行
    批處理管道過(guò)濾器
    整體數(shù)據(jù)傳送增量
    構(gòu)件粒度大構(gòu)件粒度小
    延遲高、實(shí)時(shí)性差實(shí)時(shí)性好
    無(wú)并發(fā)可并發(fā)

    調(diào)用返回風(fēng)格

    系統(tǒng)中采用了調(diào)用與返回機(jī)制,開發(fā)中用到最多的風(fēng)格。調(diào)用返回風(fēng)格中包含三種風(fēng)格:

    • 主程序/子程序:主程序發(fā)起調(diào)用,子程序返回結(jié)果,主程序的正確性取決于它調(diào)用的子程序的正確性。如開發(fā)語(yǔ)言。
    • 面向?qū)ο?#xff1a;數(shù)據(jù)的表示和它們的相應(yīng)操作被封裝起來(lái),對(duì)象的行為體現(xiàn)在其接受和請(qǐng)求的動(dòng)作中。對(duì)象具有封裝性,一個(gè)對(duì)象的改變不會(huì)影響其他對(duì)象。如面向?qū)ο箝_發(fā)語(yǔ)言。
    • 分層:只能見到與自己鄰接的層,每層為上一層提供服務(wù),使用下一層的服務(wù),修改某一層,最多影響其相鄰的上下兩層(通常只能影響上層)。上層必須知道下層的身份,不能調(diào)整層次之間的順序。如TCP/IP協(xié)議,B/S、 C/S、MVC等。

    獨(dú)立構(gòu)件風(fēng)格

    獨(dú)立構(gòu)件風(fēng)格主要包括:進(jìn)程通信和事件驅(qū)動(dòng)。

    • 進(jìn)程通信:進(jìn)程間消息傳遞的方式可以是點(diǎn)對(duì)點(diǎn)、異步或同步方式,以及遠(yuǎn)程過(guò)程(方法)調(diào)用等。
    • 事件驅(qū)動(dòng):當(dāng)某個(gè)事件被觸發(fā)時(shí),系統(tǒng)自動(dòng)調(diào)用注冊(cè)在這個(gè)事件中的所有過(guò)程。這是一種隱式調(diào)用的方式,優(yōu)點(diǎn)是為軟件復(fù)用提供了強(qiáng)大的支持,為構(gòu)件的維護(hù)和演化帶來(lái)了方便,其缺點(diǎn)是構(gòu)件放棄了對(duì)系統(tǒng)計(jì)算的控制。如斷點(diǎn)調(diào)試、新聞,公眾號(hào)等的訂閱信息。

      事件驅(qū)動(dòng)特點(diǎn):
    特點(diǎn)描述
    分離的交互事件發(fā)布者并不會(huì)意識(shí)到事件訂閱者的存在
    一對(duì)多通信采用發(fā)布/訂閱消息傳遞,一個(gè)特定時(shí)間可以影響多個(gè)訂閱者
    基于事件的觸發(fā)器由事件觸發(fā)過(guò)程調(diào)用
    異步支持異步操作

    虛擬機(jī)風(fēng)格

    虛擬機(jī)風(fēng)格主要有解釋器風(fēng)格和規(guī)則系統(tǒng)風(fēng)格兩種

    • 解釋器:解釋器通常包括一個(gè)完成解釋工作的解釋引擎、一個(gè)將被解釋的代碼的存儲(chǔ)區(qū)、一個(gè)記錄解釋引擎當(dāng)前工作狀態(tài)的數(shù)據(jù)結(jié)構(gòu),以及一個(gè)源代碼被解釋執(zhí)行進(jìn)度的數(shù)據(jù)結(jié)構(gòu)。缺點(diǎn)是執(zhí)行效率比較低。如JVM。傳統(tǒng)編譯器會(huì)產(chǎn)生可執(zhí)行文件而解釋器不會(huì)。

    • 規(guī)則系統(tǒng):基于規(guī)則的系統(tǒng)包括規(guī)則集、規(guī)則解釋器、規(guī)則選擇器和工作內(nèi)存。一般用在人工智能領(lǐng)域和DSS中。

    倉(cāng)庫(kù)風(fēng)格

    倉(cāng)庫(kù)風(fēng)格包含一個(gè)數(shù)據(jù)倉(cāng)庫(kù)和若干其他構(gòu)件,數(shù)據(jù)倉(cāng)庫(kù)位于該體系結(jié)構(gòu)的中心,其他構(gòu)件訪問(wèn)該數(shù)據(jù)倉(cāng)庫(kù)并對(duì)其數(shù)據(jù)進(jìn)行增刪改等操作。主要有數(shù)據(jù)庫(kù)系統(tǒng)、黑板和超文本系統(tǒng)三種風(fēng)格。

    • 數(shù)據(jù)庫(kù)系統(tǒng):構(gòu)件分為中央共享數(shù)據(jù)源、獨(dú)立處理單元。構(gòu)件控制中央共享數(shù)據(jù)。如IDE集成開發(fā)環(huán)境。

    • 黑板:黑板系統(tǒng)包括知識(shí)源、黑板和控制三個(gè)部分。

      • 知識(shí)源包括若干獨(dú)立計(jì)算的不同單元,提供解決問(wèn)題的知識(shí)。知識(shí)源響應(yīng)黑板的變化,也只修改黑板。
      • 黑板是一個(gè)全局?jǐn)?shù)據(jù)庫(kù),包含問(wèn)題域解空間的全部狀態(tài),是知識(shí)源相互作用的唯一媒介;
      • 知識(shí)源響應(yīng)是通過(guò)黑板狀態(tài)的變化來(lái)控制的。

      黑板系統(tǒng)通常應(yīng)用在對(duì)于解決問(wèn)題沒有確定性算法的軟件中。如語(yǔ)音識(shí)別,信號(hào)處理。

    • 超文本系統(tǒng):超文本系統(tǒng)通常應(yīng)用在靜態(tài)頁(yè)面中。

    C2風(fēng)格

    C2體系結(jié)構(gòu)風(fēng)格屬于一個(gè)分層結(jié)構(gòu),通過(guò)連接件綁定在一起按照一組規(guī)則運(yùn)作的并行構(gòu)件網(wǎng)絡(luò)。C2風(fēng)格中的系統(tǒng)組織規(guī)則如下:

  • 系統(tǒng)中的構(gòu)件和連接件都有一個(gè)頂部和一個(gè)底部。
  • 構(gòu)件的頂部應(yīng)連接到某連接件的底部,構(gòu)件的底部則應(yīng)連接到某連接件的頂部。而構(gòu)件與構(gòu)件之間的直接連接是不允許的。
  • —個(gè)連接件可以和任意數(shù)目的其他構(gòu)件和連接件連接。
  • 當(dāng)兩個(gè)連接件進(jìn)行直接連接時(shí),必須由其中一個(gè)的底部到另一個(gè)的頂部。
  • 二層/三層架構(gòu)風(fēng)格

    C/S架構(gòu)

    二層 C/S 架構(gòu)由客戶機(jī)和數(shù)據(jù)庫(kù)服務(wù)器組成,客戶機(jī)直接與數(shù)據(jù)庫(kù)服務(wù)器交互。主要缺點(diǎn)有:

  • 服務(wù)器的負(fù)荷太重,難以管理大量的客戶機(jī),系統(tǒng)的性能容易變壞。
  • 數(shù)據(jù)安全性不好。因?yàn)榭蛻舳顺绦蚩梢灾苯釉L問(wèn)數(shù)據(jù)庫(kù)服務(wù)器,那么,在客戶端計(jì)算機(jī)上的其他程序也可想辦法訪問(wèn)數(shù)據(jù)庫(kù)服務(wù)器,從而使數(shù)據(jù)庫(kù)的安全性受到威脅。
  • 與二層C/S架構(gòu)相比,在三層 C/S 架構(gòu)中增加了應(yīng)用服務(wù)器,可以使整個(gè)應(yīng)用邏輯駐留在應(yīng)用服務(wù)器上,而只有表現(xiàn)層在客戶機(jī)上。三層C/S 結(jié)構(gòu)將應(yīng)用功能分成表示層、功能層和數(shù)據(jù)層三個(gè)部分

    • 表示層是應(yīng)用的用戶接口部分,它擔(dān)負(fù)著用戶與應(yīng)用間的對(duì)話功能。它用于檢查用戶從鍵盤等輸入的數(shù)據(jù),并顯示應(yīng)用輸出的數(shù)據(jù)。在變更用戶接口時(shí),只需改寫顯示控制和數(shù)據(jù)檢查程序,而不影響其他兩層。檢查的內(nèi)容也只限于數(shù)據(jù)的形式和取值的范圍,不包括有關(guān)業(yè)務(wù)本身的處理邏輯。
    • 功能層相當(dāng)于應(yīng)用的本體,它是將具體的業(yè)務(wù)處理邏輯編入程序中。而處理所需的數(shù)據(jù)則要從表示層或數(shù)據(jù)層取得。表示層和功能層之間的數(shù)據(jù)交往要盡可能簡(jiǎn)潔。
    • 數(shù)據(jù)層就是數(shù)據(jù)庫(kù)管理系統(tǒng),負(fù)責(zé)管理對(duì)數(shù)據(jù)庫(kù)數(shù)據(jù)的讀寫。數(shù)據(jù)庫(kù)管理系統(tǒng)必須能迅速執(zhí)行大量數(shù)據(jù)的更新和檢索。因此,一般從功能層傳送到數(shù)據(jù)層的要求大都使用 SQL 語(yǔ)言。

    與二層C/S架構(gòu)相比,三層 C/S 架構(gòu)具有以下優(yōu)點(diǎn)

  • 允許合理的劃分三層的功能,在邏輯上保持相對(duì)獨(dú)立性,從而使整個(gè)系統(tǒng)的邏輯結(jié)構(gòu)更為清晰,能提高系統(tǒng)的可維護(hù)性和可擴(kuò)展性。
  • 允許更靈活的、有效的選用相應(yīng)的平臺(tái)和硬件系統(tǒng),使之在處理負(fù)荷能力上與處理特性上分別適應(yīng)于清晰的三層架構(gòu)上,并且這些平臺(tái)可以具有良好的升級(jí)性和開放性。
  • 系統(tǒng)的各層可以并行開發(fā)并且可以選擇適合各自的開發(fā)語(yǔ)言,使之能并行高效的開發(fā)達(dá)到較高的性價(jià)比,對(duì)每一層處理邏輯的開發(fā)和維護(hù)也會(huì)更容易些。
  • 利用功能層可以隔開表示層和數(shù)據(jù)層,未授權(quán)的表示層用戶難以繞過(guò)功能層利用數(shù)據(jù)庫(kù)工具或非法的黑客手段訪問(wèn)數(shù)據(jù)層,為嚴(yán)格的安全管理奠定了基礎(chǔ)。
  • B/S架構(gòu)

    B/S架構(gòu)是三層 C/S架構(gòu)的一種實(shí)現(xiàn)方式,其具體結(jié)構(gòu)為“瀏覽器/web服務(wù)器/數(shù)據(jù)庫(kù)服務(wù)器”。其特點(diǎn)為:

  • B/S 架構(gòu)主要是利用不斷成熟的 WWW 瀏覽器技術(shù),結(jié)合瀏覽器的多種腳本語(yǔ)言,用通用瀏覽器就實(shí)現(xiàn)了原來(lái)需要復(fù)雜的專用軟件才能實(shí)現(xiàn)的強(qiáng)大功能,并節(jié)約了開發(fā)成本。
  • 在 B/S 模式的計(jì)算機(jī)應(yīng)用系統(tǒng)中,應(yīng)用(程序)在一定程度上具有集中特征。在 B/S 結(jié)構(gòu)中,除了數(shù)據(jù)庫(kù)服務(wù)器外,應(yīng)用程序以網(wǎng)頁(yè)形式存放于 Web 服務(wù)器上,用戶運(yùn)行某個(gè)應(yīng)用程序時(shí)只需在客戶端上的瀏覽器中鍵入相應(yīng)的網(wǎng)址,調(diào)用 Web 服務(wù)器上的應(yīng)用程序并對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作完成相應(yīng)的數(shù)據(jù)處理工作,最后將結(jié)果通過(guò)瀏覽器顯示給用戶。
  • 基于 B/S 架構(gòu)的軟件,系統(tǒng)安裝、修改和維護(hù)全在服務(wù)器端解決。用戶在使用系統(tǒng)時(shí),僅需要一個(gè)瀏覽器就可運(yùn)行全部的模塊,真正達(dá)到了“零客戶端”的功能,很容易在運(yùn)行時(shí)自動(dòng)升級(jí)。
  • 多層架構(gòu)優(yōu)缺點(diǎn)

    優(yōu)點(diǎn)缺點(diǎn)
    開發(fā)人員可以只關(guān)注整個(gè)結(jié)構(gòu)中的其中某一層嚴(yán)格的分層可能導(dǎo)致性能問(wèn)題,具體取決于層數(shù)
    可以很容易的用新的實(shí)現(xiàn)來(lái)替換原有層次的實(shí)現(xiàn)建立清晰的分層架構(gòu)并不總是很容易
    可以降低層與層之間的依賴
    有利于標(biāo)準(zhǔn)化
    利于各層邏輯的復(fù)用
    擴(kuò)展性強(qiáng)。不同層負(fù)責(zé)不同的層面
    安全性高。用戶端只能通過(guò)邏輯層來(lái)訪問(wèn)數(shù)據(jù)層,減少了入口點(diǎn),把很多危險(xiǎn)的系統(tǒng)功能都屏蔽了
    項(xiàng)目結(jié)構(gòu)更清楚,分工更明確,有利于后期的維護(hù)和升級(jí)

    SOA架構(gòu)

    SOA是一個(gè)組件模型,它將應(yīng)用程序的不同功能單元(稱為服務(wù))通過(guò)這些服務(wù)之間定義良好的接口和契約聯(lián)系起來(lái)。接口是采用中立的方式進(jìn)行定義的,它應(yīng)該獨(dú)立于實(shí)現(xiàn)服務(wù)的硬件平臺(tái)、操作系統(tǒng)和編程語(yǔ)言。這使在系統(tǒng)中構(gòu)建的服務(wù)可以有統(tǒng)一和通用的方式進(jìn)行交互。
    服務(wù)總線ESB是SOA的一種實(shí)現(xiàn)方式,ESB在面向服務(wù)的架構(gòu)中起到的是總線作用,將各種服務(wù)進(jìn)行連接與整合,其功能如下:

    • 描述服務(wù)的元數(shù)據(jù)和服務(wù)注冊(cè)管理。
    • 在服務(wù)請(qǐng)求者和提供者之間傳遞數(shù)據(jù),以及對(duì)這些數(shù)據(jù)進(jìn)行轉(zhuǎn)換的能力,并支持由實(shí)踐中總結(jié)出來(lái)的一些模式如同步模式、異步模式等。
    • 發(fā)現(xiàn)、路由、匹配和選擇的能力,以支持服務(wù)之間的動(dòng)態(tài)交互,解耦服務(wù)請(qǐng)求者和服務(wù)提供者。高級(jí)一些的能力包括對(duì)安全的支持、服務(wù)質(zhì)量保證、可管理性和負(fù)載平衡等。

    SOA架構(gòu)中的關(guān)鍵技術(shù):

    • SOAP:簡(jiǎn)單對(duì)象訪問(wèn)協(xié)議,Simple Object Access Protocol。
    • WSDL:Web服務(wù)描述語(yǔ)言,Web Services Description Language。
    • UDDI:統(tǒng)一描述、發(fā)現(xiàn)和集成,Universal Description Discovery and Integration。

    WSDL用來(lái)描述服務(wù),UDDI用來(lái)注冊(cè)和查找服務(wù),而SOAP作為傳輸層,用來(lái)在消費(fèi)者和服務(wù)者之間傳送消息,一個(gè)消費(fèi)者可以在UDDI注 冊(cè)表查找服務(wù),取得服務(wù)的WSDL描述,然后通過(guò)SOAP來(lái)調(diào)用該服務(wù)。

    微服務(wù)架構(gòu)

    微服務(wù)是一種架構(gòu)風(fēng)格,將單體應(yīng)用劃分成一組小的服務(wù),服務(wù)之間相互協(xié)作實(shí)現(xiàn)業(yè)務(wù)功能,每個(gè)服務(wù)運(yùn)行在獨(dú)立的進(jìn)程中,服務(wù)間采用輕量級(jí)的通信機(jī)制協(xié)作(通常是HTTP/JSON),每個(gè)服務(wù)圍繞業(yè)務(wù)能力進(jìn)行構(gòu)建,并且 能夠通過(guò)自動(dòng)化機(jī)制獨(dú)立地部署。 微服務(wù)中很少有集中式的服務(wù)管理,每個(gè)服務(wù)可以使用不同的語(yǔ)言開發(fā),使 用不同的存儲(chǔ)技術(shù)。

    微服務(wù)中的基本組件

    • 服務(wù)描述。常用的服務(wù)描述方式包括RESTful API、XML配置和IDL文件三種。
    • 注冊(cè)中心。服務(wù)者發(fā)布服務(wù),消費(fèi)者訂閱服務(wù)。返回服務(wù)列表、通知變更。
    • 服務(wù)框架。通信協(xié)議、數(shù)據(jù)傳輸方式等。
    • 服務(wù)監(jiān)控。指標(biāo)收集(請(qǐng)求耗時(shí)、每秒服務(wù)請(qǐng)求量等)、數(shù)據(jù)展示。
    • 服務(wù)追蹤。追蹤服務(wù)經(jīng)過(guò)的鏈路,以便進(jìn)行追蹤與故障定位。
    • 服務(wù)治理。節(jié)點(diǎn)管理、負(fù)載均衡、制定服務(wù)路由規(guī)則、服務(wù)容錯(cuò)等。

    微服務(wù)優(yōu)缺點(diǎn)

    優(yōu)點(diǎn)缺點(diǎn)
    每個(gè)微服務(wù)都很小,這樣能聚焦一個(gè)指定的業(yè)務(wù)功能或業(yè)務(wù)需求。很難在不采用分布式事務(wù)的情況下跨服務(wù)實(shí)現(xiàn)功能。
    微服務(wù)能夠被小團(tuán)隊(duì)單獨(dú)開發(fā),這個(gè)小團(tuán)隊(duì)是2到5人的開發(fā)人員組成。測(cè)試工作更加困難。
    微服務(wù)是松耦合的,是有功能意義的服務(wù),無(wú)論是在開發(fā)階段或部署階段都是獨(dú)立的。跨服務(wù)實(shí)現(xiàn)要求團(tuán)隊(duì)之間的緊密協(xié)作。
    微服務(wù)能使用不同的語(yǔ)言開發(fā)。部署復(fù)雜。
    去中心化。每個(gè)微服務(wù)都有自己的存儲(chǔ)能力,可以有自己的數(shù)據(jù)庫(kù)。也可以有統(tǒng)一數(shù)據(jù)庫(kù)。

    總結(jié)

    以上是生活随笔為你收集整理的八、软考·系统架构师——架构设计的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

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