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

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

3天內不再提示

什么是架構及架構的本質?

架構師技術聯(lián)盟 ? 來源:CSDN ? 2023-01-05 15:01 ? 次閱讀

9902ee1c-8cb0-11ed-bfe3-dac502259ad0.png

9915a070-8cb0-11ed-bfe3-dac502259ad0.gif

內容介紹:

一、什么是架構和架構本質

二、架構分層和分類

三、架構級別

四、應用架構演進

五、衡量架構的合理性

六、常見架構誤區(qū)

七、架構知識體系

八、架構學習推薦(附鏈接)

一. 什么是架構和架構本質

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

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

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

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

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

1.2. 模塊與組件

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

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

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

1.3. 框架與架構

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

框架是規(guī)范,架構是結構。

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

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

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

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

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

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

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

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

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

架構設計完全是為了業(yè)務,

需求相對復雜.

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

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

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

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

二. 架構分層和分類

架構分類可細分為業(yè)務架構、應用架構、技術架構, 代碼架構, 部署架構。

992502ae-8cb0-11ed-bfe3-dac502259ad0.jpg

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

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

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

2.1. 業(yè)務架構(俯視架構):

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

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

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

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

993b2516-8cb0-11ed-bfe3-dac502259ad0.jpg

2.2. 應用架構(剖面架構,也叫邏輯架構圖):

硬件到應用的抽象,包括抽象層和編程接口。應用架構和業(yè)務架構是相輔相成的關系。業(yè)務架構的每一部分都有應用架構。

類似:

9963d0a6-8cb0-11ed-bfe3-dac502259ad0.png

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

應用架構圖關鍵有2點:

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

邏輯分層

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

關鍵類。

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

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

協(xié)作關系:應用之間的調用關系。

應用分層有兩種方式:

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

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

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

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

應用架構的本質是通過系統(tǒng)拆分,平衡業(yè)務和技術復雜性,保證系統(tǒng)形散神不散。

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

2.3. 數(shù)據(jù)架構

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

9978a13e-8cb0-11ed-bfe3-dac502259ad0.jpg

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

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

代碼架構主要定義:

①. 代碼單元:

配置設計

框架、類庫。

②. 代碼單元組織:

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

項目模塊劃分

頂層文件結構設計,比如mvc設計。

依賴關系

9998c0e0-8cb0-11ed-bfe3-dac502259ad0.jpg

2.5. 技術架構

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

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

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

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

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

99b20e06-8cb0-11ed-bfe3-dac502259ad0.jpg

物理架構主要考慮硬件選擇和拓撲結構,軟件到硬件的映射,軟硬件的相互影響。

99d283f2-8cb0-11ed-bfe3-dac502259ad0.jpg

三. 架構級別

我們使用金字塔的架構級別來說明,上層級別包含下層:

99dfd75a-8cb0-11ed-bfe3-dac502259ad0.png

系統(tǒng)級:即整個系統(tǒng)內各部分的關系以及如何治理:分層

應用級:即單個應用的整體架構,及其與系統(tǒng)內單個應用的關系等。

模塊級:即應用內部的模塊架構,如代碼的模塊化、數(shù)據(jù)和狀態(tài)的管理等。

代碼級:即從代碼級別保障架構實施。

戰(zhàn)略設計與戰(zhàn)術設計

基于架構金字塔,我們有了系統(tǒng)架構的戰(zhàn)略設計與戰(zhàn)術設計的完美結合:

戰(zhàn)略設計:業(yè)務架構用于指導架構師如何進行系統(tǒng)架構設計。

戰(zhàn)術設計:應用架構要根據(jù)業(yè)務架構來設計。

戰(zhàn)術實施:應用架構確定以后,就是技術選型。

99edf8bc-8cb0-11ed-bfe3-dac502259ad0.png

四. 應用架構演進

業(yè)務架構是生產(chǎn)力,應用架構是生產(chǎn)關系,技術架構是生產(chǎn)工具。業(yè)務架構決定應用架構,應用架構需要適配業(yè)務架構,并隨著業(yè)務架構不斷進化,同時應用架構依托技術架構最終落地。

99ff6c50-8cb0-11ed-bfe3-dac502259ad0.png

架構演進路程:單體應用→分布式應用服務化→微服務

4.1. 單體應用

企業(yè)一開始業(yè)務比較簡單,只應用某個簡單場景,應用服務支持數(shù)據(jù)增刪改查和簡單的邏輯即可,單體應用可以滿足要求。

典型的三級架構,前端(Web/手機端)+中間業(yè)務邏輯層+數(shù)據(jù)庫層。這是一種典型的Java Spring MVC或者Python Django框架的應用。其架構圖如下所示:

9a305086-8cb0-11ed-bfe3-dac502259ad0.png

針對單體應用,非功能性需求的做法:

性能需求:使用緩存改善性能

并發(fā)需求:使用集群改善并發(fā)

讀寫分離:數(shù)據(jù)庫地讀寫分離

使用反向代理和cdn加速

使用分布式文件和分布式數(shù)據(jù)庫

單體架構的應用比較容易部署、測試, 在項目的初期,單體應用可以很好地運行。然而,隨著需求的不斷增加, 越來越多的人加入開發(fā)團隊,代碼庫也在飛速地膨脹。慢慢地,單體應用變得越來越臃腫,可維護性、靈活性逐漸降低,維護成本越來越高。下面是單體架構應用的一些缺點:

復雜性高:以一個百萬行級別的單體應用為例,整個項目包含的模塊非常多、模塊的邊界模糊、 依賴關系不清晰、 代碼質量參差不齊、 混亂地堆砌在一起??上攵麄€項目非常復雜。每次修改代碼都心驚膽戰(zhàn), 甚至添加一個簡單的功能, 或者修改一個Bug都會帶來隱含的缺陷。

技術債務:隨著時間推移、需求變更和人員更迭,會逐漸形成應用程序的技術債務, 并且越積 越多?!?不壞不修”, 這在軟件開發(fā)中非常常見, 在單體應用中這種思想更甚。已使用的系統(tǒng)設計或代碼難以被修改,因為應用程序中的其他模塊可能會以意料之外的方式使用它。

部署頻率低:隨著代碼的增多,構建和部署的時間也會增加。而在單體應用中, 每次功能的變更或缺陷的修復都會導致需要重新部署整個應用。全量部署的方式耗時長、 影響范圍大、 風險高, 這使得單體應用項目上線部署的頻率較低。而部署頻率低又導致兩次發(fā)布之間會有大量的功能變更和缺陷修復,出錯率比較高。

可靠性差:某個應用Bug,例如死循環(huán)、內存溢出等, 可能會導致整個應用的崩潰。

擴展能力受限:單體應用只能作為一個整體進行擴展,無法根據(jù)業(yè)務模塊的需要進行伸縮。例如,應用中有的模塊是計算密集型的,它需要強勁的CPU;有的模塊則是IO密集型的,需要更大的內存。由于這些模塊部署在一起,不得不在硬件的選擇上做出妥協(xié)。

阻礙技術創(chuàng)新:單體應用往往使用統(tǒng)一的技術平臺或方案解決所有的問題, 團隊中的每個成員 都必須使用相同的開發(fā)語言和框架,要想引入新框架或新技術平臺會非常困難。

4.2. 分布式

隨著業(yè)務深入,業(yè)務要求的產(chǎn)品功能越來越多,每個業(yè)務模塊邏輯也都變得更加復雜,業(yè)務的深度和廣度都增加,使得單體應用變得越來越臃腫,可維護性、靈活性逐漸降低,增加新功能開發(fā)周期越來越長,維護成本越來越高。

這時需要對系統(tǒng)按照業(yè)務功能模塊拆分,將各個模塊服務化,變成一個分布式系統(tǒng)。業(yè)務模塊分別部署在不同的服務器上,各個業(yè)務模塊之間通過接口進行數(shù)據(jù)交互。

該架構相對于單體架構來說,這種架構提供了負載均衡的能力,大大提高了系統(tǒng)負載能力,解決了網(wǎng)站高并發(fā)的需求。另外還有以下特點:

降低了耦合度:把模塊拆分,使用接口通信,降低模塊之間的耦合度。

責任清晰:把項目拆分成若干個子項目,不同的團隊負責不同的子項目。

擴展方便:增加功能時只需要再增加一個子項目,調用其他系統(tǒng)的接口就可以。

部署方便:可以靈活的進行分布式部署。

提高代碼的復用性:比如Service層,如果不采用分布式rest服務方式架構就會在手機Wap商城,微信商城,PC,AndroidiOS每個端都要寫一個Service層邏輯,開發(fā)量大,難以維護一起升級,這時候就可以采用分布式rest服務方式,公用一個service層。

缺點:系統(tǒng)之間的交互要使用遠程通信,接口開發(fā)增大工作量,但是利大于弊。

4.3. 微服務

緊接著業(yè)務模式越來越復雜,訂單、商品、庫存、價格等各個模塊都很深入,比如價格區(qū)分會員等級,訪問渠道(app還是PC),銷售方式(團購還是普通)等,還有大量的價格促銷,這些規(guī)則很復雜,容易相互沖突,需要把分散到各個業(yè)務的價格邏輯進行統(tǒng)一管理,以基礎價格服務的方式透明地提供給上層應用,變成一個微內核的服務化架構,即微服務。

微服務的特點:

易于開發(fā)和維護:一個微服務只會關注一個特定的業(yè)務功能,所以它業(yè)務清晰、代碼量較少。開發(fā)和維護單個微服務相對簡單。而整個應用是由若干個微服務構建而成的,所以整個應用也會被維持在一個可控狀態(tài)。

單個微服務啟動較快:單個微服務代碼量較少, 所以啟動會比較快。

局部修改容易部署:單體應用只要有修改,就得重新部署整個應用,微服務解決了這樣的問題。一般來說,對某個微服務進行修改,只需要重新部署這個服務即可。

技術棧不受限:在微服務架構中,可以結合項目業(yè)務及團隊的特點,合理地選擇技術棧。例如某些服務可使用關系型數(shù)據(jù)庫MySQL;某些微服務有圖形計算的需求,可以使用Neo4j;甚至可根據(jù)需要,部分微服務使用Java開發(fā),部分微服務使用Node.js開發(fā)。

微服務雖然有很多吸引人的地方,但它并不是免費的午餐,使用它是有代價的。使用微服務架構面臨的挑戰(zhàn)。

運維要求較高:更多的服務意味著更多的運維投入。在單體架構中,只需要保證一個應用的正常運行。而在微服務中,需要保證幾十甚至幾百個服務服務的正常運行與協(xié)作,這給運維帶來了很大的挑戰(zhàn)。

分布式固有的復雜性:使用微服務構建的是分布式系統(tǒng)。對于一個分布式系統(tǒng),系統(tǒng)容錯、網(wǎng)絡延遲、分布式事務等都會帶來巨大的挑戰(zhàn)。

接口調整成本高:微服務之間通過接口進行通信。如果修改某一個微服務的API,可能所有使用了該接口的微服務都需要做調整。

重復勞動:很多服務可能都會使用到相同的功能,而這個功能并沒有達到分解為一個微服務的程度,這個時候,可能各個服務都會開發(fā)這一功能,從而導致代碼重復。盡管可以使用共享庫來解決這個問題(例如可以將這個功能封裝成公共組件,需要該功能的微服務引用該組件),但共享庫在多語言環(huán)境下就不一定行得通了。

五. 衡量架構的合理性

架構為業(yè)務服務,沒有最優(yōu)的架構,只有最合適的架構,架構始終以高效,穩(wěn)定,安全為目標來衡量其合理性。

合理的架構設計:

5.1. 業(yè)務需求角度

能解決當下業(yè)務需求和問題

高效完成業(yè)務需求: 能以優(yōu)雅且可復用的方式解決當下所有業(yè)務問題

前瞻性設計: 能在未來一段時間都能以第2種方式滿足業(yè)務,從而不會每次當業(yè)務進行演變時,導致架構翻天覆地的變化。

5.2. 非業(yè)務需求角度

①. 穩(wěn)定性。指標:

高可用:要盡可能的提高軟件的可用性,我想每個操作人都不愿意看到自己的工作無法正常進行。黑盒白盒測試、單元測試、自動化測試、故障注入測試、提高測試覆蓋率等方式來一步一步推進。

②. 高效指標:

文檔化:不管是整體還是部分的整個生命周期內都必須做好文檔化,變動的來源包括但不限于BUG,需求。

可擴展:軟件的設計秉承著低耦合的理念去做,注意在合理的地方抽象。方便功能更改、新增和運用技術的迭代,并且支持在適時對架構做出重構。

高復用:為了避免重復勞動,為了降低成本,我們希望能夠重用之前的代碼、之前的設計。這點對于架構環(huán)境的依賴是最大的。

③. 安全指標

安全:組織的運作過程中產(chǎn)生的數(shù)據(jù)都是具有商業(yè)價值的,保證數(shù)據(jù)的安全也是刻不容緩的一部分。以免出現(xiàn)XX門之類丑聞。加密、https等為普遍手段

六. 常見架構誤區(qū)

開高走落不到實處

遺漏關鍵性約束與非功能需求

為虛無的未來埋單而過度設計

過早做出關鍵性決策

客戶說啥就是啥成為傳話筒

埋頭干活兒缺乏前瞻性

架構設計還要考慮系統(tǒng)可測性

架構設計不要企圖一步到位

常見誤區(qū)

誤區(qū)1——架構專門由架構師來做,業(yè)務開發(fā)人員無需關注:架構的再好,最終還是需要代碼來落地,并且組織越大這個落地的難度越大。不單單是系統(tǒng)架構,每個解決方案每個項目也由自己的架構,如分層、設計模式等。如果每一塊磚瓦不夠堅固,那么整個系統(tǒng)還是會由崩塌的風險。所謂“千里之堤,潰于蟻穴”。

誤區(qū)2——架構師確定了架構藍圖之后任務就結束了:架構不是“空中樓閣”,最終還是要落地的,但是架構師完全不去深入到第一線怎么知道“地”在哪?怎么才能落的穩(wěn)穩(wěn)當當。

誤區(qū)3——不做出完美的架構設計不開工:世上沒有最好架構,只有最合適的架構,不要企圖一步到位。我們需要的不是一下子造出一輛汽車,而是從單輪車→自行車→摩托車,最后再到汽車。想象一下2年后才能造出的產(chǎn)品,當初市場還存在嗎?

誤區(qū)4—— 為虛無的未來埋單而過度設計:在創(chuàng)業(yè)公司初期,業(yè)務場景和需求邊界很難把握,產(chǎn)品需要快速迭代和變現(xiàn),需求頻繁更新,這個時候需要的是快速實現(xiàn)。不要過多考慮未來的擴展,說不定功能做完,效果不好就無用了。如果業(yè)務模式和應用場景邊界都已經(jīng)比較清晰,是應該適當?shù)目紤]未來的擴展性設計。

誤區(qū)5——一味追隨大公司的解決方案:由于大公司巨大成功的光環(huán)效應,再加上從大公司挖來的技術高手的影響,網(wǎng)站在討論架構決策時,最有說服力的一句話就成了“淘寶就是這么搞的”或者“騰訊 就是這么搞的”。大公司的經(jīng)驗和成功模式固然重要,值得學習借鑒,但如果因此而變得盲從,就失去了堅持自我的勇氣,在架構演化的道路上遲早會迷路。

誤區(qū)6——為了技術而技術:技術是為業(yè)務而存在的,除此毫無意義。在技術選型和架構設計中,脫離網(wǎng)站業(yè)務發(fā)展的實際,一味追求時髦的新技術,可能會將技術發(fā)展引入崎嶇小道,架構之路越走越難??紤]實現(xiàn)成本、時間、人員等各方面都要綜合考慮,理想與現(xiàn)實需要折中。

七. 架構知識體系

7.1. 架構演進

初始階段:LAMP,部署在一臺服務器

應用服務器和數(shù)據(jù)服務器分離

使用緩存改善性能

使用集群改善并發(fā)

數(shù)據(jù)庫地讀寫分離

使用反向代理和cdn加速

使用分布式文件和分布式數(shù)據(jù)庫

業(yè)務拆分

分布式服務

7.2. 架構模式

分層:橫向分層:應用層,服務層,數(shù)據(jù)層

分割:縱向分割:拆分功能和服務

分布式

分布式應用和服務

分布式靜態(tài)資源

分布式數(shù)據(jù)和存儲

分布式計算

集群:提高并發(fā)和可用性

緩存:優(yōu)化系統(tǒng)性能

cdn

方向代理訪問資源

本地緩存

分布式緩存

異步:降低系統(tǒng)的耦合性

提供系統(tǒng)的可用性

加快響應速度

冗余:冷備和熱備,保證系統(tǒng)的可用性

自動化:發(fā)布,測試,部署,監(jiān)控,報警,失效轉移,故障恢復

安全:

7.3. 架構核心要素

高性能:網(wǎng)站的靈魂

性能測試

前端優(yōu)化

應用優(yōu)化

數(shù)據(jù)庫優(yōu)化

可用性:保證服務器不宕機,一般通過冗余部署備份服務器來完成負載均衡、數(shù)據(jù)備份、自動發(fā)布、灰度發(fā)布、監(jiān)控報警。

伸縮性:建集群,是否快速應對大規(guī)模增長的流量,容易添加新的機器集群

負載均衡

緩存負載均衡

可擴展性:主要關注功能需求,應對業(yè)務的擴展,快速響應業(yè)務的變化。是否做法開閉原則,系統(tǒng)耦合依賴。

分布式消息

服務化

安全性:網(wǎng)站的各種攻擊,各種漏洞是否堵住,架構是否可以做到限流作用,防止ddos攻擊。如:xss攻擊、sql注入、csr攻擊、web防火墻漏洞、安全漏洞、ssl等。

八. 架構學習推薦(點擊進入)

1. 《Web框架設計,開發(fā)效率和性能優(yōu)化實踐》

這是比較系統(tǒng)介紹大型網(wǎng)站技術架構專欄,通俗易懂又充滿智慧,即便你之前完全沒接觸過網(wǎng)站開發(fā),通讀前幾章,也能快速獲取到常見的網(wǎng)站技術架構及其應用場景。非常贊。

2. 《億級流量,如何讓全鏈路壓測落地?》

相比《大型網(wǎng)站技術架構》的高屋建瓴,這個《全鏈路壓測實戰(zhàn)30講》則落實到細節(jié),網(wǎng)站架構中常見的各種技術,全鏈路壓測掰開揉碎了講,全鏈路內涵、適用場景、改造方法、性能評估、技術難點、人員協(xié)調…你想到的沒想到的他都以實戰(zhàn)的形式涉及到了,細致又全面。不僅有方法論,還有完整的思考過程!

3. 《如何打造一支戰(zhàn)斗力超強的技術團隊?》

“一將無能,累死三軍”,只有優(yōu)秀的領導者才能持續(xù)為團隊賦能,他們的戰(zhàn)略眼光和管理方法,都會為團隊的工作結果造成決定性影響。但我發(fā)現(xiàn),很少有人會提前把做管理這事兒提上日程。之前看過一個調查,說超過 80% 的技術管理者都是被推到管理崗的,我自己也不例外。

4. 《許式偉的架構課》

身為技術人,無非是 3 種選擇:專精技術、轉型管理、晉升架構師。包括我自己在內的很多朋友,都選擇了第三種,或正朝這個方向努力。這個專欄,用作者自己的話說:是他第一次完整、系統(tǒng)地分享自己 20 年架構經(jīng)驗和思考。

5. 《左耳聽風:誰說做技術沒有前途?》

這算是架構方面的一本神書了,從架構的原初談起,從業(yè)務的拆分談起,談到架構的目的,架構師的角色,架構師如何將架構落地……強烈推薦。

幾年過去,當我再拿起這個專欄重讀時,發(fā)現(xiàn)雖然各種技術概念沉浮,但耗子叔的課程內容,無論是關于技術的解讀,還是程序員職場的建議,都沒有半點過時。

6. 《Google三駕馬車核心技術是什么?》

在如今的互聯(lián)網(wǎng)時代,到處可見「分布式系統(tǒng)」,其中對分布式系統(tǒng)工程實踐領域,貢獻最大的公司是 Google,Google 的基礎設施有三駕馬車,分別是《Google File System》、《Google MapReduce》以及《Google BigTable》。

審核編輯 :李倩

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

    關注

    0

    文章

    396

    瀏覽量

    17269
  • 數(shù)據(jù)庫

    關注

    7

    文章

    3712

    瀏覽量

    64025
  • 架構
    +關注

    關注

    1

    文章

    501

    瀏覽量

    25375

原文標題:什么是架構及架構的本質?

文章出處:【微信號:架構師技術聯(lián)盟,微信公眾號:架構師技術聯(lián)盟】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    京東廣告投放平臺整潔架構演進之路

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

    RISC--V架構的目標和特點

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

    龍芯CPU統(tǒng)一系統(tǒng)架構規(guī)范及參考設計下載

    *附件:LoongArch 系統(tǒng)調用(syscall)ABI.pdf *附件:龍芯 CPU 統(tǒng)一系統(tǒng)架構規(guī)范(適用于 LA 架構通用 PC、服務器系列)-v4.1.0.pdf *附件:龍芯CPU統(tǒng)一
    發(fā)表于 06-20 14:42

    RISC--V架構的特點

    RISC--V架構的特點 RISC-V架構RISC-V 架構是基于 精簡指令集計算(RISC)原理建立的開放 指令集架構(ISA),RISC-V是在指令集不斷發(fā)展和成熟的基礎上建立的全
    發(fā)表于 05-24 08:01

    超融合架構解決方案

    隨著信息技術的發(fā)展,企業(yè)對數(shù)據(jù)中心的依賴日益增強,對存儲、計算和網(wǎng)絡資源的需求也在不斷增長。超融合架構作為一種新興的IT基礎設施解決方案,正逐漸成為企業(yè)數(shù)據(jù)中心建設的首選。本文將詳細介紹超融合架構
    的頭像 發(fā)表于 04-10 14:57 ?431次閱讀

    交換芯片架構是什么意思 交換芯片架構怎么工作

    交換芯片架構是指交換芯片內部的設計和組織方式,包括其硬件組件、處理單元、內存結構、接口以及其他關鍵部分的布局和相互作用。交換芯片的架構決定了其處理網(wǎng)絡數(shù)據(jù)包的能力和效率。
    的頭像 發(fā)表于 03-22 16:45 ?518次閱讀

    arm架構和x86架構區(qū)別 linux是x86還是arm

    ARM架構和x86架構是兩種不同的計算機處理器架構,它們在體系結構、指令集、應用領域等方面有著明顯的區(qū)別。Linux操作系統(tǒng)則具有廣泛的適配性,可以運行在各種架構上,包括x86和ARM
    的頭像 發(fā)表于 01-30 13:46 ?1.4w次閱讀

    什么是分布式架構?

    分布式架構是指將一個系統(tǒng)或應用拆分成多個獨立的節(jié)點,這些節(jié)點通過網(wǎng)絡連接進行通信和協(xié)作,以實現(xiàn)共同完成任務的一種架構模式。這種架構模式旨在提高系統(tǒng)的可擴展性、可靠性和性能表現(xiàn)。 一、分布式架構
    的頭像 發(fā)表于 01-12 15:04 ?982次閱讀
    什么是分布式<b class='flag-5'>架構</b>?

    Lambda數(shù)據(jù)架構和Kappa數(shù)據(jù)架構——構建現(xiàn)代數(shù)據(jù)架構

    如何更好地構建我們的數(shù)據(jù)處理架構,如何對IT系統(tǒng)中的遺留問題進行現(xiàn)代化改造并將其轉變?yōu)楝F(xiàn)代數(shù)據(jù)架構?該怎么為你的需求匹配最適合的架構設計呢,本文將分析兩種最流行的基于速度的數(shù)據(jù)架構,為
    的頭像 發(fā)表于 11-26 08:04 ?517次閱讀
    Lambda數(shù)據(jù)<b class='flag-5'>架構</b>和Kappa數(shù)據(jù)<b class='flag-5'>架構</b>——構建現(xiàn)代數(shù)據(jù)<b class='flag-5'>架構</b>

    什么是走線的拓撲架構?怎樣調整走線的拓撲架構來提高信號的完整性?

    什么是走線的拓撲架構?怎樣調整走線的拓撲架構來提高信號的完整性? 走線的拓撲架構是指電子設備內部的信號線路布局方式。它對信號傳輸?shù)耐暾院头€(wěn)定性有著重要影響。正確的走線拓撲架構可以降低
    的頭像 發(fā)表于 11-24 14:44 ?527次閱讀

    javaweb三層架構和mvc架構

    JavaWeb三層架構和MVC架構是當前Web開發(fā)領域中常用的兩種架構模式。 一、JavaWeb三層架構 JavaWeb三層架構是將一個We
    的頭像 發(fā)表于 11-22 16:41 ?1283次閱讀

    Lambda數(shù)據(jù)架構和Kappa數(shù)據(jù)架構——構建現(xiàn)代數(shù)據(jù)架構

    如何更好地構建我們的數(shù)據(jù)處理架構,如何對IT系統(tǒng)中的遺留問題進行現(xiàn)代化改造并將其轉變?yōu)楝F(xiàn)代數(shù)據(jù)架構?該怎么為你的需求匹配最適合的架構設計呢,本文將分析兩種最流行的基于速度的數(shù)據(jù)架構,為
    的頭像 發(fā)表于 11-15 13:32 ?535次閱讀
    Lambda數(shù)據(jù)<b class='flag-5'>架構</b>和Kappa數(shù)據(jù)<b class='flag-5'>架構</b>——構建現(xiàn)代數(shù)據(jù)<b class='flag-5'>架構</b>

    C/S架構的優(yōu)點

    C/S架構 一、C/S架構及其背景 C/S架構是一種比較早的軟件架構,主要應用于局域網(wǎng)內。在這之前經(jīng)歷了集中計算模式,隨著計算機網(wǎng)絡的進步與發(fā)展,尤其是可視化工具的應用,出現(xiàn)過兩層C/
    的頭像 發(fā)表于 11-13 10:39 ?1287次閱讀
    C/S<b class='flag-5'>架構</b>的優(yōu)點

    RISC-V開源架構和ARM架構什么區(qū)別?

    很多公司覺得ARM收費太高,決定一起搞RISC-V架構,是不是這種開源的是不是不收費的;那和ARM有啥區(qū)別,能發(fā)展起來嗎
    發(fā)表于 10-30 06:38

    基于EA的企業(yè)數(shù)字化轉型架構的設計

    從數(shù)字化轉型的定義上看,至少包含兩個方面:一方面是商業(yè)模式的轉型,一方面是技術的升級。因此,數(shù)字化轉型架構是由業(yè)務架構、技術架構兩條螺旋組成的一個循環(huán)上升的模型,其數(shù)字化轉型架構設計的
    的頭像 發(fā)表于 10-29 14:51 ?1174次閱讀
    基于EA的企業(yè)數(shù)字化轉型<b class='flag-5'>架構</b>的設計