整合營銷服務(wù)商

          電腦端+手機(jī)端+微信端=數(shù)據(jù)同步管理

          免費(fèi)咨詢熱線:

          軟件架構(gòu)最全詳解(萬字圖文總結(jié))

          關(guān)注△的架構(gòu)筆記△,十余年BAT架構(gòu)經(jīng)驗傾囊相授

          數(shù)據(jù)庫概念結(jié)構(gòu)設(shè)計步驟_數(shù)據(jù)庫概念結(jié)構(gòu)的設(shè)計步驟_數(shù)據(jù)庫概念結(jié)構(gòu)設(shè)計步驟

          大家好,我是。

          軟件架構(gòu)是架構(gòu)師進(jìn)階的必備技能,而且阿里等大廠面試都會重點考察你的架構(gòu)能力,本篇我就全面來給大家詳解軟件架構(gòu)@

          最新原創(chuàng)超30萬字《阿里架構(gòu)師進(jìn)階專題合集》和《最全大廠Java面試題答案合集》,請關(guān)注本公眾號【的架構(gòu)筆記】,后臺回復(fù):資料,即可領(lǐng)取。

          軟件架構(gòu)

          軟件架構(gòu)是一個隱喻,類似于建筑物的架構(gòu),建筑學(xué)研究建筑的規(guī)劃、設(shè)計和實施,而軟件架構(gòu)則是研究軟件的規(guī)劃、設(shè)計和實施。

          軟件架構(gòu)貫穿系統(tǒng)實現(xiàn)的整個過程,軟件架構(gòu)就是軟件的基本結(jié)構(gòu),是軟件系統(tǒng)實現(xiàn)的主要參考,是軟件系統(tǒng)實現(xiàn)的藍(lán)圖。

          為什么要學(xué)習(xí)軟件架構(gòu)

          軟件架構(gòu)的設(shè)計顯得尤其重要,系統(tǒng)架構(gòu)設(shè)計通過以下方式來解決上面的軟件難題:

          1.抽象系統(tǒng)

          抽象是將復(fù)雜的概念簡單化,在最高層次上,將軟件系統(tǒng)抽象為對象和過程,使具象的事物概念化,易于理解,易于交流。

          對象可以是系統(tǒng)、組件、接口、類、方法等等不同層次的概念,過程是系統(tǒng)運(yùn)行的方式和流程。

          2.復(fù)雜性

          軟件可以說是人類創(chuàng)造的最復(fù)雜的系統(tǒng)類,軟件的各個模塊之間有各種顯性或隱性的依賴關(guān)系,隨著系統(tǒng)的成長和模塊的增多,這些關(guān)系的數(shù)量往往以幾何級數(shù)的速度增長。

          特別是現(xiàn)在流行的微服務(wù)架構(gòu),更需要解決服務(wù)之間的依賴性,所以,這個時候我們需要從更高的架構(gòu)視角來解決以上這些問題。

          軟件架構(gòu)的本質(zhì)就是要管理復(fù)雜性。

          3.交流性

          軟件架構(gòu)會形成一套:設(shè)計文檔,描述說明,流程圖,架構(gòu)圖,這些會讓復(fù)雜的軟件系統(tǒng)以更易于理解和易于交流的方式展示。

          有哪些軟件架構(gòu)

          架構(gòu)模式雖多,但常用的也就那么幾種。

          1.分層架構(gòu)

          分層架構(gòu),英文名layered ,是最常見的軟件架構(gòu),也是事實上的軟件標(biāo)準(zhǔn)架構(gòu)。

          分層架構(gòu)將軟件分成若干個水平層,每一層都有清晰的角色和分工,層與層之間通過接口通信。

          分層架構(gòu),最常見的就是是四層結(jié)構(gòu),如下圖所示:

          數(shù)據(jù)庫概念結(jié)構(gòu)設(shè)計步驟_數(shù)據(jù)庫概念結(jié)構(gòu)的設(shè)計步驟_數(shù)據(jù)庫概念結(jié)構(gòu)設(shè)計步驟

          第一層:表現(xiàn)層:負(fù)責(zé)用戶界面;

          第二層:業(yè)務(wù)層:負(fù)責(zé)實現(xiàn)業(yè)務(wù)邏輯;

          第三層:持久層:負(fù)責(zé)提供數(shù)據(jù),比如:SQL 語句就放在這一層;

          第四層:數(shù)據(jù)庫:負(fù)責(zé)保存數(shù)據(jù),持久化重要的數(shù)據(jù);

          分層架構(gòu)的優(yōu)點

          1)分工明確

          不同技能的程序員可以分工,負(fù)責(zé)不同的層,天然適合大多數(shù)軟件公司的組織架構(gòu)。

          2)降解系統(tǒng)復(fù)雜度

          分層的核心目的還是為了降解系統(tǒng)復(fù)雜度,提高系統(tǒng)的健壯性和可維護(hù)性,這也就是為什么需要分層的原因。

          分層架構(gòu)的缺點

          每一層都可以獨(dú)立測試,其他層的接口通過模擬解決然而分層架構(gòu)固然很好,但前提是分層合理。

          擴(kuò)展性差,增加需求必須依次擴(kuò)展每一層,由于每一層內(nèi)部是耦合的,擴(kuò)展會很困難。

          2.事件驅(qū)動架構(gòu)

          事件驅(qū)動架構(gòu),英文名Event Driven ,是一個流行的分布式異步架構(gòu)模式,可以用來設(shè)計規(guī)模很大的應(yīng)用程序。

          數(shù)據(jù)庫概念結(jié)構(gòu)設(shè)計步驟_數(shù)據(jù)庫概念結(jié)構(gòu)設(shè)計步驟_數(shù)據(jù)庫概念結(jié)構(gòu)的設(shè)計步驟

          事件驅(qū)動架構(gòu)是一種基于發(fā)布/訂閱模式的消息異步通信的架構(gòu),你可以把它理解為架構(gòu)層面的觀察者模式。

          事件驅(qū)動架構(gòu)

          通常,架構(gòu)主要包含4種組件,如下圖所示:

          數(shù)據(jù)庫概念結(jié)構(gòu)的設(shè)計步驟_數(shù)據(jù)庫概念結(jié)構(gòu)設(shè)計步驟_數(shù)據(jù)庫概念結(jié)構(gòu)設(shè)計步驟

          1)事件隊列(event queue)

          負(fù)責(zé):接收事件的入口。

          2)分發(fā)器(event )

          負(fù)責(zé):將不同的事件分發(fā)到不同的業(yè)務(wù)邏輯單元。

          是一個事件中樞處理單元,知道事件的處理流程,但不執(zhí)行具體的事件業(yè)務(wù)處理邏輯,根據(jù)事件的特征對初始事件進(jìn)行拆分編排為處理事件并進(jìn)行分發(fā)。

          3)事件通道(event channel)

          負(fù)責(zé):分發(fā)器與處理器之間的聯(lián)系渠道。

          是一組各自獨(dú)立的組件,彼此之間沒有依賴,自包含,不依賴于其他 的處理結(jié)果。

          4)事件處理器(event )

          負(fù)責(zé):實現(xiàn)業(yè)務(wù)邏輯,處理完成后會發(fā)出事件,觸發(fā)下一步操作。

          事件驅(qū)動架構(gòu)工作流程

          第一步:客戶端發(fā)送一個事件到事件隊列event queues中,它用來將事件傳送給event ;

          第二步:Event 收到初始的事件后,會發(fā)送額外的一些異步事件給event 來執(zhí)行處理的每個步驟;

          第三步:Event 既可以是消息隊列,也可以是消息topic,大部分是消息topic,這樣可以由多個消息處理器(event )處理同一個消息。

          第四步:Event 監(jiān)聽event ,接收事件并處理一些業(yè)務(wù)邏輯。

          事件驅(qū)動架構(gòu)應(yīng)用場景

          典型的場景:比如在交易系統(tǒng)中,每個請求流程必須經(jīng)過特定的步驟,如驗證、訂單、配送,以及通知買家等。

          3.MVC架構(gòu)

          MVC架構(gòu)是軟件工程中的一種軟件架構(gòu)模式,它把軟件系統(tǒng)分為三個基本的部分。

          分別為:

          主要為以上三大部分組成,如下圖所示:

          數(shù)據(jù)庫概念結(jié)構(gòu)的設(shè)計步驟_數(shù)據(jù)庫概念結(jié)構(gòu)設(shè)計步驟_數(shù)據(jù)庫概念結(jié)構(gòu)設(shè)計步驟

          1.模型(Model)

          模型封裝了數(shù)據(jù)及對數(shù)據(jù)的操作,可以直接對數(shù)據(jù)庫進(jìn)行訪問。

          簡要的講:就是一個或多個對象,用于存儲數(shù)據(jù)和業(yè)務(wù)邏輯。

          2.視圖(View)

          視圖負(fù)責(zé)展示,沒有具體的程序邏輯,比如:一個JSP頁面想控制器提交數(shù)據(jù)和為模型提供數(shù)據(jù)顯示,JSP頁面主要使用HTML標(biāo)記和標(biāo)記來顯示數(shù)據(jù)。

          3.控制器()

          控制器用于控制程序的流程,將模型中的數(shù)據(jù)展示到視圖中。

          比如:Servlet對象根據(jù)視圖提交的請求進(jìn)行控制,即將請求轉(zhuǎn)發(fā)給業(yè)務(wù)邏輯的,并將處理記過存放到實體模型中,輸出給視圖顯示。

          MVC架構(gòu)優(yōu)點

          1)多個視圖共享一個模型,大大提高代碼的可重用性;

          2)三個模塊相互獨(dú)立,改變其中一個不會影響其他兩,所以依據(jù)這種設(shè)計模式,能構(gòu)建良好的松耦合性的組件;

          3)控制器提高了應(yīng)用程序的靈活性和可控制性:控制器可以用來連接不同的模型和視圖去完成用戶的需求,這樣控制器可以為構(gòu)造應(yīng)用程序提高強(qiáng)有力的手段。

          MVC架構(gòu)缺點

          1)增加了系統(tǒng)結(jié)構(gòu)和實現(xiàn)的復(fù)雜性

          數(shù)據(jù)庫概念結(jié)構(gòu)的設(shè)計步驟_數(shù)據(jù)庫概念結(jié)構(gòu)設(shè)計步驟_數(shù)據(jù)庫概念結(jié)構(gòu)設(shè)計步驟

          對于簡單頁面,嚴(yán)格遵循mvc,會增加結(jié)構(gòu)的復(fù)雜性。

          2)視圖與控制器過于緊密的連接

          視圖與控制器是相互分離,但確實聯(lián)系緊密的部件,視圖沒有控制器的存在,其應(yīng)用是很有限的。

          3)視圖對模型數(shù)據(jù)的低效率訪問

          依據(jù)模型操作接口的不同,視圖可能需要多次調(diào)用才能獲得足夠的顯示數(shù)據(jù),對未變化數(shù)據(jù)的不必要的頻繁訪問,也將損害操作性能。

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

          最早一個系統(tǒng)業(yè)務(wù)量很小的時候,大部分Web工程的Java應(yīng)用程序,打包為War包部署在一臺服務(wù)器上。

          比如:你正在構(gòu)建一個在線商店系統(tǒng),包含功能:用戶、商品、下訂單等功能,整體架構(gòu)如下圖所示:

          數(shù)據(jù)庫概念結(jié)構(gòu)設(shè)計步驟_數(shù)據(jù)庫概念結(jié)構(gòu)的設(shè)計步驟_數(shù)據(jù)庫概念結(jié)構(gòu)設(shè)計步驟

          隨著業(yè)務(wù)訪問量越來越大,單體應(yīng)用就會出現(xiàn)巨大的瓶頸。

          比如:

          所以后期就會出現(xiàn),按照業(yè)務(wù)為單位進(jìn)行拆分,出現(xiàn)的微服務(wù)架構(gòu)。

          數(shù)據(jù)庫概念結(jié)構(gòu)的設(shè)計步驟_數(shù)據(jù)庫概念結(jié)構(gòu)設(shè)計步驟_數(shù)據(jù)庫概念結(jié)構(gòu)設(shè)計步驟

          微服務(wù)優(yōu)點

          微服務(wù)缺點

          5.云架構(gòu)

          云架構(gòu),英文名cloud ,是指各項技術(shù)如何整合在一起以創(chuàng)建云,云是指能夠抽象、匯集和共享整個網(wǎng)絡(luò)中的可擴(kuò)展資源的 IT 環(huán)境。

          云被視為平臺即服務(wù)(Pass),因為云提供商為用戶提供了平臺以及底層IT基礎(chǔ)架構(gòu)。

          云架構(gòu)主要解決擴(kuò)展性和并發(fā)的問題,是最容易擴(kuò)展的架構(gòu)。

          這個模式主要分成兩部分:

          虛擬中間件又包含四個組件:

          數(shù)據(jù)庫概念結(jié)構(gòu)的設(shè)計步驟_數(shù)據(jù)庫概念結(jié)構(gòu)設(shè)計步驟_數(shù)據(jù)庫概念結(jié)構(gòu)設(shè)計步驟

          消息中間件( Grid):管理用戶請求和session,當(dāng)一個請求進(jìn)來以后,決定分配給哪一個處理單元;

          數(shù)據(jù)中間件(Data Grid):將數(shù)據(jù)復(fù)制到每一個處理單元,即數(shù)據(jù)同步。保證某個處理單元都得到同樣的數(shù)據(jù);

          處理中間件( Grid):如果一個請求涉及不同類型的處理單元,該中間件負(fù)責(zé)協(xié)調(diào)處理單元;

          部署中間件( Manager):負(fù)責(zé)處理單元的啟動和關(guān)閉,監(jiān)控負(fù)載和響應(yīng)時間,當(dāng)負(fù)載增加,就新啟動處理單元,負(fù)載減少,就關(guān)閉處理單

          云架構(gòu)的優(yōu)點:

          高負(fù)載,高擴(kuò)展,動態(tài)部署。

          云架構(gòu)的缺點

          1)實現(xiàn)復(fù)雜,成本較高;

          2)數(shù)據(jù)隱私問題:由于隱私問題,一些法律法規(guī)以及一些公司政策不允許將數(shù)據(jù)存儲在云環(huán)境中。

          3)嚴(yán)重依賴互聯(lián)網(wǎng)連接:通常云服務(wù)是通過互聯(lián)網(wǎng)提供的,如果您處于互聯(lián)網(wǎng)連接較差的地區(qū),或者更糟糕的是,根本沒有互聯(lián)網(wǎng),這可能是一個問題。

          以上

          最后送大家一個福利:

          送大家一份我原創(chuàng)超30萬字的,非常的全面。

          以及給大家整理了一份非常全面的,包含:Java、多線程、JVM、Spring、MySQL、Redis、Dubbo、中間件…等最全大廠必考題及答案詳解。

          需要以上架構(gòu)&面試&答案&合集的同學(xué),加我微信即可領(lǐng)取!

          添加時備注:資料

          數(shù)據(jù)庫概念結(jié)構(gòu)設(shè)計步驟_數(shù)據(jù)庫概念結(jié)構(gòu)設(shè)計步驟_數(shù)據(jù)庫概念結(jié)構(gòu)的設(shè)計步驟


          主站蜘蛛池模板: 国产情侣一区二区三区| 中文字幕一精品亚洲无线一区| 蜜桃视频一区二区三区在线观看| 亚洲AV综合色一区二区三区 | 免费无码一区二区三区| 亚洲一区二区三区久久| 人妻视频一区二区三区免费| 黑人一区二区三区中文字幕| 中文字幕久久亚洲一区| 人妻夜夜爽天天爽爽一区| 亚洲AV无码一区二区三区性色 | 果冻传媒一区二区天美传媒| 国产未成女一区二区三区| 日韩视频一区二区| 国产高清一区二区三区视频| 在线电影一区二区| 国产一区二区三区在线免费| 色一情一乱一伦一区二区三区日本| 在线精品视频一区二区| 久久无码人妻一区二区三区| 激情内射亚洲一区二区三区爱妻| 学生妹亚洲一区二区| 中文字幕乱码人妻一区二区三区| 无码av免费一区二区三区| 一区二区和激情视频| 无码精品人妻一区二区三区免费| 狠狠做深爱婷婷综合一区 | 国模大胆一区二区三区| 精品无码中出一区二区| 日本精品视频一区二区三区| 亚洲第一区二区快射影院| 日本无卡码一区二区三区| 精品成人一区二区三区免费视频| 国产午夜精品一区二区三区小说| 久久久91精品国产一区二区三区 | 日韩AV无码一区二区三区不卡| 国产麻豆剧果冻传媒一区| 国产精品区一区二区三在线播放| 亚洲综合无码AV一区二区| 亚洲天堂一区在线| 麻豆精品人妻一区二区三区蜜桃|