自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

架構(gòu)師最常使用的5種架構(gòu)模式及其適用場(chǎng)景分析

新聞 架構(gòu)
在本文中,我將五種軟件架構(gòu)模式的優(yōu)缺點(diǎn)以及適合場(chǎng)景提煉出來(lái)作為快速參考。

 好萊塢電影中有多少情節(jié)?一些電影評(píng)論家說(shuō)只有五個(gè)。您可以采用幾種架構(gòu)來(lái)實(shí)現(xiàn)應(yīng)用程序?目前大多數(shù)程序都使用下面提到的五種架構(gòu)之一。

在本文中,我將五種軟件架構(gòu)模式的優(yōu)缺點(diǎn)以及適合場(chǎng)景提煉出來(lái)作為快速參考。你可以在單個(gè)系統(tǒng)中使用多個(gè)架構(gòu)模式,它們的組合既是計(jì)算機(jī)科學(xué),也是一門藝術(shù)。

一、分層架構(gòu)

這種方法可能是最常見的方法,因?yàn)樗ǔ@數(shù)據(jù)庫(kù)構(gòu)建,并且業(yè)務(wù)中的許多應(yīng)用程序自然會(huì)傾向于將信息存儲(chǔ)在RDBMS的表中。許多比較大的軟件框架(例如Java EE,Drupal和Express)都是在這種架構(gòu)下實(shí)現(xiàn)的,因此使用它們構(gòu)建的許多應(yīng)用程序自然都來(lái)自分層體系結(jié)構(gòu)。

架構(gòu)師最常使用的5種架構(gòu)模式及其適用場(chǎng)景分析

Model-View-Controller(MVC)分層結(jié)構(gòu)是大多數(shù)流行的Web框架提供的標(biāo)準(zhǔn)軟件開發(fā)方法,顯然是分層體系結(jié)構(gòu)。數(shù)據(jù)持久層上方是服務(wù)層,它通常包含業(yè)務(wù)邏輯和有關(guān)數(shù)據(jù)庫(kù)中數(shù)據(jù)類型的信息。視圖層位于頂層,通常是CSS,JavaScript和帶有動(dòng)態(tài)嵌入式代碼的HTML。在中間有一個(gè)控制層,該控制層具有用于轉(zhuǎn)換在視圖和模型之間移動(dòng)的數(shù)據(jù)的各種規(guī)則和方法。

分層架構(gòu)的優(yōu)點(diǎn):每個(gè)層可以只集中于自己的功能實(shí)現(xiàn)。這使得應(yīng)用程序:

  • 容易維護(hù)
  • 容易單元測(cè)試
  • 易于分配單獨(dú)的“角色”
  • 易于更新和擴(kuò)展

適當(dāng)?shù)姆謱芋w系結(jié)構(gòu)將開發(fā)層面進(jìn)行隔離,這些層不受其他層的更改的影響,從而使重構(gòu)更加容易。劃分任務(wù)并定義單獨(dú)的層是架構(gòu)師面臨的挑戰(zhàn)。當(dāng)需求很好地適應(yīng)了模式時(shí),這些層將易于解耦或分層開發(fā)。

適合:

  • 需要快速構(gòu)建的新應(yīng)用程序
  • 傳統(tǒng)IT部門和流程的企業(yè)或業(yè)務(wù)應(yīng)用程序
  • 具有尚不了解其他架構(gòu)的經(jīng)驗(yàn)不足的開發(fā)人員的團(tuán)隊(duì)
  • 需要嚴(yán)格的可維護(hù)性和可測(cè)試性標(biāo)準(zhǔn)的應(yīng)用

二、事件驅(qū)動(dòng)架構(gòu)

事件驅(qū)動(dòng)的體系架構(gòu)根據(jù)數(shù)據(jù)生成一個(gè)“事件”,事件由“消息中間件”或“事件分發(fā)管理的中央單元”統(tǒng)一接收,并將事件分配特定類型的代碼處理。

使用JavaScript編程網(wǎng)頁(yè)涉及編寫對(duì)諸如鼠標(biāo)單擊或擊鍵之類的事件做出反應(yīng)的小模塊。瀏覽器本身會(huì)協(xié)調(diào)所有輸入,并確保只有正確的代碼才能得到正確的事件。瀏覽器中常見許多不同類型的事件,但是模塊僅與相關(guān)的事件進(jìn)行交互。這與分層體系結(jié)構(gòu)非常不同,在分層體系結(jié)構(gòu)中,所有數(shù)據(jù)通常都將穿過(guò)所有層??傮w而言,事件驅(qū)動(dòng)的體系結(jié)構(gòu):

  • 容易適應(yīng)復(fù)雜,混亂的業(yè)務(wù)環(huán)境
  • 當(dāng)出現(xiàn)新的事件類型時(shí),很容易擴(kuò)展

注意事項(xiàng):

  • 如果模塊之間可以相互影響,則[測(cè)試可能會(huì)很復(fù)雜
  • 當(dāng)模塊發(fā)生故障時(shí),中央單元(或消息中間件)必須有一個(gè)事件備份計(jì)劃。
  • 消息傳遞開銷可能會(huì)降低處理速度,消息中間件必須緩沖以突發(fā)形式到達(dá)的消息時(shí)。
  • 當(dāng)事件有非常不同的需求時(shí),為事件開發(fā)數(shù)據(jù)結(jié)構(gòu)可能會(huì)很復(fù)雜。
  • 維護(hù)基于事務(wù)的一致性機(jī)制很困難,因?yàn)榻邮帐录哪K是解耦和獨(dú)立的。

適合:

  • 具有異步數(shù)據(jù)流的異步系統(tǒng)
  • 各個(gè)數(shù)據(jù)塊僅與多模塊中的少數(shù)模塊交互的應(yīng)用程序
  • 用戶界面

三、微內(nèi)核-多插件架構(gòu)

許多的應(yīng)用程序都具有一組核心代碼,這些代碼在不同的模塊下反復(fù)使用。例如,開發(fā)工具Eclipse將打開文件,批注,編輯文件并啟動(dòng)后臺(tái)處理器。用于顯示文件和對(duì)其進(jìn)行編輯的代碼是微內(nèi)核的一部分。其他的插件擴(kuò)展了Eclipse,從而擴(kuò)展了其功能。

具體到解決方案就是將一些基本的核心的任務(wù)代碼推入微內(nèi)核。然后,不同的業(yè)務(wù)部門可以根據(jù)不同類型的聲明編寫插件。

注意事項(xiàng):

  • 確定哪些代碼是微內(nèi)核中的內(nèi)容通常是一門藝術(shù)。它應(yīng)該保留經(jīng)常被使用的代碼。
  • 一旦許多插件依賴微內(nèi)核,修改微內(nèi)核可能非常困難,甚至不可能。唯一的解決方案就是修改插件。
  • 為內(nèi)核函數(shù)選擇正確的粒度很難事先完成,也幾乎不可能在后期進(jìn)行更改。

適合:

  • 工具類軟件
  • 在核心代碼與邊緣代碼之間有清晰區(qū)分的應(yīng)用程序
  • 具有一組固定的核心函數(shù)和一組動(dòng)態(tài)規(guī)則的應(yīng)用程序

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

小寶寶既可愛(ài)又有趣,但是一旦變大,就很難操縱并且難以維護(hù)。微服務(wù)架構(gòu)旨在幫助開發(fā)人員避免讓自己的寶寶長(zhǎng)大,笨拙,僵硬,煩人。它的目標(biāo)不是創(chuàng)建一個(gè)大型程序,而是創(chuàng)建多個(gè)不同的小型程序。避免修改一個(gè)小bug,就需要重新部署整個(gè)大型應(yīng)用的情況出現(xiàn)。

這種方法類似于事件驅(qū)動(dòng)和微內(nèi)核方法,但是主要用于解耦不同模塊及任務(wù)。在許多情況下,不同的任務(wù)可能需要不同的處理量,并且用途可能會(huì)有所不同。所以微服務(wù)的特點(diǎn)是便于修改、便于擴(kuò)展。使用負(fù)載均衡及服務(wù)發(fā)現(xiàn)的機(jī)制,在用戶使用高峰期部署更多的微服務(wù),保證服務(wù)的高可用;在用戶低頻服務(wù)時(shí)段縮減微服務(wù),從而節(jié)省服務(wù)器資源。

注意事項(xiàng):

  • 并非所有應(yīng)用程序都可以拆分為相對(duì)獨(dú)立的微服務(wù)單元。
  • 當(dāng)任務(wù)分散在不同的微服務(wù)之間時(shí),通信成本會(huì)更大。單個(gè)請(qǐng)求的響應(yīng)時(shí)長(zhǎng)會(huì)增加。

適合:

  • 快速發(fā)展新業(yè)務(wù)團(tuán)隊(duì)
  • 大型Web應(yīng)用程序

五、高速緩存架構(gòu)

許多網(wǎng)站都是圍繞數(shù)據(jù)庫(kù)構(gòu)建的,只要數(shù)據(jù)庫(kù)能夠滿足負(fù)載,它們就可以正常運(yùn)行。但是當(dāng)使用量達(dá)到頂峰,并且數(shù)據(jù)庫(kù)無(wú)法跟上用戶請(qǐng)求的速度時(shí),整個(gè)網(wǎng)站就會(huì)癱瘓。將數(shù)據(jù)存儲(chǔ)在內(nèi)存中可以使許多工作更快,從而大幅度提高用戶并發(fā)訪問(wèn)的支撐能力。

注意事項(xiàng):

  • 對(duì)于內(nèi)存數(shù)據(jù)庫(kù),事務(wù)的支持更加困難。
  • 開發(fā)專業(yè)的高速緩存數(shù)據(jù)的程序,對(duì)程序員的技術(shù)水平往往要求更高一些(至少比只會(huì)寫增刪改查的程序員要高)

適合:

  • 高頻點(diǎn)擊數(shù)據(jù)流和用戶日志之類的大量數(shù)據(jù)處理
  • 低價(jià)值數(shù)據(jù),有時(shí)可能會(huì)丟失而不會(huì)造成重大后果(比如用戶訪問(wèn)量數(shù)據(jù))
  • 讀多寫少的數(shù)據(jù)。比如新聞數(shù)據(jù),寫完之后幾乎不改,但是有很多的人看。

 

 

責(zé)任編輯:張燕妮 來(lái)源: 今日頭條
相關(guān)推薦

2022-06-14 11:01:37

架構(gòu)模式開發(fā)

2020-06-28 10:15:39

架構(gòu)模式軟件

2022-09-21 10:05:09

架構(gòu)模式

2017-09-14 09:30:38

軟件架構(gòu)模式

2024-01-05 13:25:00

架構(gòu)架構(gòu)模式開發(fā)

2023-06-16 13:34:00

軟件架構(gòu)模式

2024-06-04 00:00:04

2022-07-27 20:37:45

主流企業(yè)架構(gòu)

2019-09-27 09:56:31

軟件技術(shù)硬件

2024-03-26 13:35:19

模型架構(gòu)框架

2024-06-25 13:02:25

2024-09-02 10:07:52

2020-12-29 19:15:04

架構(gòu)模式代碼分布式

2012-11-12 10:04:53

MySQL開發(fā)模式

2021-03-04 09:00:00

架構(gòu)Lambda工具

2025-04-07 01:11:00

右值C++泛型

2021-08-16 13:54:23

大數(shù)據(jù)深信服

2023-12-01 07:24:40

軟件架構(gòu)

2012-01-13 10:45:56

企業(yè)應(yīng)用架構(gòu)

2024-02-05 08:11:30

架構(gòu)模式單體
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)