一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

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

3天內(nèi)不再提示

什么是架構(gòu)和架構(gòu)本質(zhì)

倩倩 ? 來源:芋道源碼 ? 作者:芋道源碼 ? 2022-09-22 14:18 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

一. 什么是架構(gòu)和架構(gòu)本質(zhì)

二. 架構(gòu)分層和分類

一. 什么是架構(gòu)和架構(gòu)本質(zhì)

在軟件行業(yè),對于什么是架構(gòu),都有很多的爭論,每個人都有自己的理解。此君說的架構(gòu)和彼君理解的架構(gòu)未必是一回事。因此我們在討論架構(gòu)之前,我們先討論架構(gòu)的概念定義,概念是人認識這個世界的基礎(chǔ),并用來溝通的手段,如果對架構(gòu)概念理解不一樣,那溝通起來自然不順暢。

Linux有架構(gòu),MySQL有架構(gòu),JVM也有架構(gòu),使用Java開發(fā)、MySQL存儲、跑在Linux上的業(yè)務(wù)系統(tǒng)也有架構(gòu),應(yīng)該關(guān)注哪一個?想要清楚以上問題需要梳理幾個有關(guān)系又相似的概念:系統(tǒng)與子系統(tǒng)、模塊與組建、框架與架構(gòu):

1.1. 系統(tǒng)與子系統(tǒng)

系統(tǒng):泛指由一群有關(guān)聯(lián)的個體組成,根據(jù)某種規(guī)則運作,能完成個別元件不能獨立完成的工作能力的群體。

子系統(tǒng):也是由一群關(guān)聯(lián)的個體組成的系統(tǒng),多半是在更大的系統(tǒng)中的一部分。

1.2. 模塊與組件

都是系統(tǒng)的組成部分,從不同角度拆分系統(tǒng)而已。模塊是邏輯單元,組件是物理單元。

模塊就是從邏輯上將系統(tǒng)分解, 即分而治之, 將復(fù)雜問題簡單化。模塊的粒度可大可小, 可以是系統(tǒng),幾個子系統(tǒng)、某個服務(wù),函數(shù), 類,方法、 功能塊等等。

組件可以包括應(yīng)用服務(wù)、數(shù)據(jù)庫、網(wǎng)絡(luò)、物理機、還可以包括MQ、容器、Nginx等技術(shù)組件。

1.3. 框架與架構(gòu)

框架是組件實現(xiàn)的規(guī)范,例如:MVC、MVP、MVVM等,是提供基礎(chǔ)功能的產(chǎn)品,例如開源框架:Ruby on Rails、Spring、Laravel、Django等,這是可以拿來直接使用或者在此基礎(chǔ)上二次開發(fā)。

框架是規(guī)范,架構(gòu)是結(jié)構(gòu)。

我在這重新定義架構(gòu):軟件架構(gòu)指軟件系統(tǒng)的頂層結(jié)構(gòu)。

架構(gòu)是經(jīng)過系統(tǒng)性地思考, 權(quán)衡利弊之后在現(xiàn)有資源約束下的最合理決策, 最終明確的系統(tǒng)骨架: 包括子系統(tǒng), 模塊, 組件. 以及他們之間協(xié)作關(guān)系, 約束規(guī)范, 指導(dǎo)原則.并由它來指導(dǎo)團隊中的每個人思想層面上的一致。涉及四方面:

系統(tǒng)性思考的合理決策:比如技術(shù)選型、解決方案等。

明確的系統(tǒng)骨架:明確系統(tǒng)有哪些部分組成。

系統(tǒng)協(xié)作關(guān)系:各個組成部分如何協(xié)作來實現(xiàn)業(yè)務(wù)請求。

約束規(guī)范和指導(dǎo)原則:保證系統(tǒng)有序,高效、穩(wěn)定運行。

因此架構(gòu)師具備能力:理解業(yè)務(wù),全局把控,選擇合適技術(shù),解決關(guān)鍵問題、指導(dǎo)研發(fā)落地實施。

架構(gòu)的本質(zhì)就是對系統(tǒng)進行有序化地重構(gòu)以致符合當前業(yè)務(wù)的發(fā)展,并可以快速擴展。

那什么樣的系統(tǒng)要考慮做架構(gòu)設(shè)計 技術(shù)不會平白無故的出和自驅(qū)動發(fā)展起來,而架構(gòu)的發(fā)展和需求是基于業(yè)務(wù)的驅(qū)動。

架構(gòu)設(shè)計完全是為了業(yè)務(wù),

需求相對復(fù)雜.

非功能性需求在整個系統(tǒng)占據(jù)重要位置.

系統(tǒng)生命周期長,有擴展性需求.

系統(tǒng)基于組件或者集成的需要.

業(yè)務(wù)流程再造的需要.

基于 Spring Boot + MyBatis Plus + Vue & Element 實現(xiàn)的后臺管理系統(tǒng) + 用戶小程序,支持 RBAC 動態(tài)權(quán)限、多租戶、數(shù)據(jù)權(quán)限、工作流、三方登錄、支付、短信、商城等功能

項目地址:https://gitee.com/zhijiantianya/ruoyi-vue-pro

視頻教程:https://doc.iocoder.cn/video/

二. 架構(gòu)分層和分類

架構(gòu)分類可細分為業(yè)務(wù)架構(gòu)、應(yīng)用架構(gòu)、技術(shù)架構(gòu), 代碼架構(gòu), 部署架構(gòu)

80d3573e-3a3d-11ed-9e49-dac502259ad0.jpg

業(yè)務(wù)架構(gòu)是戰(zhàn)略,應(yīng)用架構(gòu)是戰(zhàn)術(shù),技術(shù)架構(gòu)是裝備。其中應(yīng)用架構(gòu)承上啟下,一方面承接業(yè)務(wù)架構(gòu)的落地,另一方面影響技術(shù)選型。

熟悉業(yè)務(wù),形成業(yè)務(wù)架構(gòu),根據(jù)業(yè)務(wù)架構(gòu),做出相應(yīng)的應(yīng)用架構(gòu),最后技術(shù)架構(gòu)落地實施。

如何針對當前需求,選擇合適的應(yīng)用架構(gòu),如何面向未來,保證架構(gòu)平滑過渡,這個是軟件開發(fā)者,特別是架構(gòu)師,都需要深入思考的問題。

2.1. 業(yè)務(wù)架構(gòu)(俯視架構(gòu)):

包括業(yè)務(wù)規(guī)劃,業(yè)務(wù)模塊、業(yè)務(wù)流程,對整個系統(tǒng)的業(yè)務(wù)進行拆分,對領(lǐng)域模型進行設(shè)計,把現(xiàn)實的業(yè)務(wù)轉(zhuǎn)化成抽象對象。

沒有最優(yōu)的架構(gòu),只有最合適的架構(gòu),一切系統(tǒng)設(shè)計原則都要以解決業(yè)務(wù)問題為最終目標,脫離實際業(yè)務(wù)的技術(shù)情懷架構(gòu)往往會給系統(tǒng)帶入大坑,任何不基于業(yè)務(wù)做異想天開的架構(gòu)都是耍流氓。

所有問題的前提要搞清楚我們今天面臨的業(yè)務(wù)量有多大,增長走勢是什么樣,而且解決高并發(fā)的過程,一定是一個循序漸進逐步的過程。合理的架構(gòu)能夠提前預(yù)見業(yè)務(wù)發(fā)展1~2年為宜。這樣可以付出較為合理的代價換來真正達到技術(shù)引領(lǐng)業(yè)務(wù)成長的效果。

看看京東業(yè)務(wù)架構(gòu)(網(wǎng)上分享圖):

812e6b42-3a3d-11ed-9e49-dac502259ad0.jpg

2.2. 應(yīng)用架構(gòu)(剖面架構(gòu),也叫邏輯架構(gòu)圖):

硬件到應(yīng)用的抽象,包括抽象層和編程接口。應(yīng)用架構(gòu)和業(yè)務(wù)架構(gòu)是相輔相成的關(guān)系。業(yè)務(wù)架構(gòu)的每一部分都有應(yīng)用架構(gòu)。

類似:

8173afd6-3a3d-11ed-9e49-dac502259ad0.png

應(yīng)用架構(gòu):應(yīng)用作為獨立可部署的單元,為系統(tǒng)劃分了明確的邊界,深刻影響系統(tǒng)功能組織、代碼開發(fā)、部署和運維等各方面. 應(yīng)用架構(gòu)定義系統(tǒng)有哪些應(yīng)用、以及應(yīng)用之間如何分工和合作。這里所謂應(yīng)用就是各個邏輯模塊或者子系統(tǒng)。

應(yīng)用架構(gòu)圖關(guān)鍵有2點:

①. 職責劃分: 明確應(yīng)用(各個邏輯模塊或者子系統(tǒng))邊界

邏輯分層

子系統(tǒng)、模塊定義。

關(guān)鍵類。

②. 職責之間的協(xié)作:

接口協(xié)議:應(yīng)用對外輸出的接口。

協(xié)作關(guān)系:應(yīng)用之間的調(diào)用關(guān)系。

應(yīng)用分層有兩種方式:

一種是水平分(橫向),按照功能處理順序劃分應(yīng)用,比如把系統(tǒng)分為web前端/中間服務(wù)/后臺任務(wù),這是面向業(yè)務(wù)深度的劃分。

另一種是垂直分(縱向),按照不同的業(yè)務(wù)類型劃分應(yīng)用,比如進銷存系統(tǒng)可以劃分為三個獨立的應(yīng)用,這是面向業(yè)務(wù)廣度的劃分。

應(yīng)用的合反映應(yīng)用之間如何協(xié)作,共同完成復(fù)雜的業(yè)務(wù)case,主要體現(xiàn)在應(yīng)用之間的通訊機制和數(shù)據(jù)格式,通訊機制可以是同步調(diào)用/異步消息/共享DB訪問等,數(shù)據(jù)格式可以是文本/XML/JSON/二進制等。

應(yīng)用的分偏向于業(yè)務(wù),反映業(yè)務(wù)架構(gòu),應(yīng)用的合偏向于技術(shù),影響技術(shù)架構(gòu)。分降低了業(yè)務(wù)復(fù)雜度,系統(tǒng)更有序,合增加了技術(shù)復(fù)雜度,系統(tǒng)更無序。

應(yīng)用架構(gòu)的本質(zhì)是通過系統(tǒng)拆分,平衡業(yè)務(wù)和技術(shù)復(fù)雜性,保證系統(tǒng)形散神不散。

系統(tǒng)采用什么樣的應(yīng)用架構(gòu),受業(yè)務(wù)復(fù)雜性影響,包括企業(yè)發(fā)展階段和業(yè)務(wù)特點;同時受技術(shù)復(fù)雜性影響,包括IT技術(shù)發(fā)展階段和內(nèi)部技術(shù)人員水平。業(yè)務(wù)復(fù)雜性(包括業(yè)務(wù)量大)必然帶來技術(shù)復(fù)雜性,應(yīng)用架構(gòu)目標是解決業(yè)務(wù)復(fù)雜性的同時,避免技術(shù)太復(fù)雜,確保業(yè)務(wù)架構(gòu)落地。

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

數(shù)據(jù)架構(gòu)指導(dǎo)數(shù)據(jù)庫的設(shè)計. 不僅僅要考慮開發(fā)中涉及到的數(shù)據(jù)庫,實體模型,也要考慮物理架構(gòu)中數(shù)據(jù)存儲的設(shè)計。

81d496d4-3a3d-11ed-9e49-dac502259ad0.jpg

2.4. 代碼架構(gòu)(也叫開發(fā)架構(gòu)):

子系統(tǒng)代碼架構(gòu)主要為開發(fā)人員提供切實可行的指導(dǎo),如果代碼架構(gòu)設(shè)計不足,就會造成影響全局的架構(gòu)設(shè)計。比如公司內(nèi)不同的開發(fā)團隊使用不同的技術(shù)?;蛘呓M件,結(jié)果公司整體架構(gòu)設(shè)計就會失控。

代碼架構(gòu)主要定義:

①. 代碼單元:

配置設(shè)計

框架、類庫。

②. 代碼單元組織:

編碼規(guī)范,編碼的慣例。

項目模塊劃分

頂層文件結(jié)構(gòu)設(shè)計,比如mvc設(shè)計。

依賴關(guān)系

81efaa46-3a3d-11ed-9e49-dac502259ad0.jpg

2.5. 技術(shù)架構(gòu)

技術(shù)架構(gòu):確定組成應(yīng)用系統(tǒng)的實際運行組件(lvs,nginx,tomcat,php-fpm等),這些運行組件之間的關(guān)系,以及部署到硬件的策略。

技術(shù)架構(gòu)主要考慮系統(tǒng)的非功能性特征,對系統(tǒng)的高可用、高性能、擴展、安全、伸縮性、簡潔等做系統(tǒng)級的把握。

系統(tǒng)架構(gòu)的設(shè)計要求架構(gòu)師具備軟件和硬件的功能和性能的過硬知識,這也是架構(gòu)設(shè)計工作中最為困難的工作。

2.6. 部署拓撲架構(gòu)圖(實際物理架構(gòu)圖):

拓撲架構(gòu),包括架構(gòu)部署了幾個節(jié)點,節(jié)點之間的關(guān)系,服務(wù)器的高可用,網(wǎng)路接口和協(xié)議等,決定了應(yīng)用如何運行,運行的性能,可維護性,可擴展性,是所有架構(gòu)的基礎(chǔ)。這個圖主要是運維工程師主要關(guān)注的對象。

8206c41a-3a3d-11ed-9e49-dac502259ad0.jpg

物理架構(gòu)主要考慮硬件選擇和拓撲結(jié)構(gòu),軟件到硬件的映射,軟硬件的相互影響。

8227e0d2-3a3d-11ed-9e49-dac502259ad0.jpg

審核編輯 :李倩

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 模塊
    +關(guān)注

    關(guān)注

    7

    文章

    2788

    瀏覽量

    50380
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11511

    瀏覽量

    213796
  • 架構(gòu)
    +關(guān)注

    關(guān)注

    1

    文章

    528

    瀏覽量

    25985

原文標題:談?wù)劶軜?gòu)的本質(zhì)和架構(gòu)分類

文章出處:【微信號:芋道源碼,微信公眾號:芋道源碼】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    同一水平的 RISC-V 架構(gòu)的 MCU,和 ARM 架構(gòu)的 MCU 相比,運行速度如何?

    ARM 架構(gòu)與 RISC-V 架構(gòu)的 MCU 在同一性能水平下的運行速度對比,需從架構(gòu)設(shè)計原點、指令集特性及實際測試數(shù)據(jù)展開剖析。以 ARM Cortex-M33 這類 ARMv8M 架構(gòu)
    的頭像 發(fā)表于 07-02 10:29 ?647次閱讀
    同一水平的 RISC-V <b class='flag-5'>架構(gòu)</b>的 MCU,和 ARM <b class='flag-5'>架構(gòu)</b>的 MCU 相比,運行速度如何?

    知識分享 | 評估模型架構(gòu)——如何實現(xiàn)?

    確保良好的模型架構(gòu)對于開發(fā)安全和可靠的軟件非常重要。本文為您介紹MES Model Examiner? (MXAM)如何優(yōu)化模型架構(gòu),簡化復(fù)雜度管理步驟,并最終提升軟件質(zhì)量。
    的頭像 發(fā)表于 06-05 11:46 ?147次閱讀
    知識分享 | 評估模型<b class='flag-5'>架構(gòu)</b>——如何實現(xiàn)?

    GPU架構(gòu)深度解析

    GPU架構(gòu)深度解析從圖形處理到通用計算的進化之路圖形處理單元(GPU),作為現(xiàn)代計算機中不可或缺的一部分,已經(jīng)從最初的圖形渲染專用處理器,發(fā)展成為強大的并行計算引擎,廣泛應(yīng)用于人工智能、科學(xué)計算
    的頭像 發(fā)表于 05-30 10:36 ?382次閱讀
    GPU<b class='flag-5'>架構(gòu)</b>深度解析

    EM儲能網(wǎng)關(guān) ZWS智慧儲能云應(yīng)用(11) — 一級架構(gòu) 主從架構(gòu)

    ZWS智慧儲能云針對儲能場景下不同的架構(gòu)體系進行了兼容,可以適配用戶面臨的復(fù)雜現(xiàn)場環(huán)境,滿足更深層次的管理和維護需求。簡介儲能系統(tǒng)包含PCS、BMS、EMS等多個組件,不同儲能架構(gòu)管理和決策方式也有
    的頭像 發(fā)表于 04-17 13:00 ?283次閱讀
    EM儲能網(wǎng)關(guān) ZWS智慧儲能云應(yīng)用(11) — 一級<b class='flag-5'>架構(gòu)</b> 主從<b class='flag-5'>架構(gòu)</b>

    汽車電氣架構(gòu)中的電源架構(gòu)

    隨著汽車電子化、智能化的快速發(fā)展,汽車電氣架構(gòu)(E/E架構(gòu))已成為現(xiàn)代汽車的核心技術(shù)之一。
    的頭像 發(fā)表于 03-29 11:25 ?373次閱讀

    華碩主板架構(gòu)認識

    電子發(fā)燒友網(wǎng)站提供《華碩主板架構(gòu)認識.pdf》資料免費下載
    發(fā)表于 03-12 16:54 ?12次下載

    classB認證獲取指南中的方案架構(gòu)看起來都是針對MCU的架構(gòu),MPU的沒辦法完全適配,怎么解決?

    classB認證獲取指南中的方案架構(gòu)看起來都是針對MCU的架構(gòu),MPU的沒辦法完全適配。ST有針對MPU的自檢解決方案嗎?我用的是STM32MP157D
    發(fā)表于 03-12 07:34

    芯片架構(gòu)設(shè)計的關(guān)鍵要素

    芯片架構(gòu)設(shè)計的目標是達到功能、性能、功耗、面積(FPA)的平衡。好的芯片架構(gòu)能有效提升系統(tǒng)的整體性能,優(yōu)化功耗,并確保在成本和時間的限制下完成設(shè)計任務(wù)。
    的頭像 發(fā)表于 03-01 16:23 ?621次閱讀

    架構(gòu)性需求的基礎(chǔ)知識

    第一次接觸“架構(gòu)性需求”,大約在六年前,當時一位大佬指導(dǎo)我們說,在前期產(chǎn)品規(guī)劃時,最重要的就是找到“架構(gòu)性需求”。本人就一頭的問號,“架構(gòu)性需求”是什么?我沒有聽錯吧?當時也沒怎么放在心上,直到近年
    的頭像 發(fā)表于 11-15 11:01 ?623次閱讀
    <b class='flag-5'>架構(gòu)</b>性需求的基礎(chǔ)知識

    架構(gòu)與設(shè)計 常見微服務(wù)分層架構(gòu)的區(qū)別和落地實踐

    前言 從強調(diào)內(nèi)外隔離的六邊形架構(gòu),逐漸發(fā)展衍生出的層層遞進、注重領(lǐng)域模型的洋蔥架構(gòu),再到和DDD完美契合的整潔架構(gòu)架構(gòu)風格的不斷演進,其實就是為了適應(yīng)軟件需求越來越復(fù)雜的特點。 可以
    的頭像 發(fā)表于 10-22 15:34 ?655次閱讀
    <b class='flag-5'>架構(gòu)</b>與設(shè)計 常見微服務(wù)分層<b class='flag-5'>架構(gòu)</b>的區(qū)別和落地實踐

    指令集架構(gòu)與微架構(gòu)的區(qū)別

    指令集架構(gòu)(Instruction Set Architecture,ISA)與微架構(gòu)(Microarchitecture)是計算機體系結(jié)構(gòu)中的兩個重要概念,它們在處理器的設(shè)計和實現(xiàn)中扮演著不同的角色。以下是對兩者區(qū)別的詳細闡述。
    的頭像 發(fā)表于 10-05 15:10 ?1192次閱讀

    京東廣告投放平臺整潔架構(gòu)演進之路

    作者:京東零售 趙嘉鐸 前言 從去年開始京東廣告投放系統(tǒng)做了一次以領(lǐng)域驅(qū)動設(shè)計為思想內(nèi)核的架構(gòu)升級,在深入理解DDD思想的同時,我們基于廣告投放業(yè)務(wù)的本質(zhì)特征大膽地融入了自己的理解和改造。新架構(gòu)是從
    的頭像 發(fā)表于 09-18 10:26 ?1225次閱讀
    京東廣告投放平臺整潔<b class='flag-5'>架構(gòu)</b>演進之路

    RISC--V架構(gòu)的目標和特點

    RISC--V架構(gòu)的目標 RISC--V架構(gòu)的目標如下 成為一種完全開放的指令集,可以被任何學(xué)術(shù)機構(gòu)或商業(yè)組織所自由使用 成為一種真正適合硬件實現(xiàn)且穩(wěn)定的標準指令集 RISC--V架構(gòu)的特點 特 性
    發(fā)表于 08-23 00:42

    X86架構(gòu)和ARM架構(gòu)有什么區(qū)別

    X86架構(gòu)和ARM架構(gòu)是兩種主流的CPU架構(gòu),它們在多個方面存在顯著的差異。以下是對這兩種架構(gòu)的詳細比較,涵蓋了追求目標、應(yīng)用領(lǐng)域、技術(shù)特點、性能功耗比、軟件生態(tài)以及未來趨勢等方面。
    的頭像 發(fā)表于 08-22 11:21 ?1.2w次閱讀

    主流芯片架構(gòu)包括哪些類型

    主流芯片架構(gòu)是芯片設(shè)計領(lǐng)域中的核心組成部分,它們決定了芯片的功能、性能、功耗等多個方面。當前,全球范圍內(nèi)主流的芯片架構(gòu)主要包括以下幾種類型。
    的頭像 發(fā)表于 08-22 11:08 ?2767次閱讀