
文章插圖
對(duì)于開發(fā)人員來(lái)說(shuō) , 我們每天都在用技術(shù) 。但你要知道 , 我們寫的代碼 , 其實(shí)只是系統(tǒng)的一小部分 , 我們了解的技術(shù) , 也只是系統(tǒng)用到的一小部分 。要深入掌握技術(shù)架構(gòu) , 我們就需要了解整體的系統(tǒng) 。
面對(duì)一個(gè)復(fù)雜的系統(tǒng) , 我想你可能經(jīng)常會(huì)有以下困擾:
不清楚系統(tǒng)整體的處理過(guò)程 , 當(dāng)系統(tǒng)出問(wèn)題時(shí) , 不知道如何有針對(duì)性地去排查問(wèn)題 。系統(tǒng)設(shè)計(jì)時(shí) , 經(jīng)常忽視非業(yè)務(wù)性功能的需求 , 也不清楚如何實(shí)現(xiàn)這些目標(biāo) , 經(jīng)常是付出慘痛的教訓(xùn)后 , 才去亡羊補(bǔ)牢 。不知你是否還記得 , 在之前的文章中 , 我已經(jīng)說(shuō)過(guò) , 技術(shù)架構(gòu)是從物理層面定義系統(tǒng) , 并保障系統(tǒng)的穩(wěn)定運(yùn)行 。那么今天 , 我會(huì)先分析下系統(tǒng)在物理上由哪些部分組成 , 讓你可以從全局的角度看一個(gè)系統(tǒng);然后再和你一起討論 , 技術(shù)架構(gòu)會(huì)面臨哪些軟硬件的挑戰(zhàn) , 以及它都有哪些目標(biāo) , 讓你能夠深入地了解技術(shù)架構(gòu) 。
系統(tǒng)的物理模型對(duì)于大部分開發(fā)人員來(lái)說(shuō) , 我們主要的工作是寫業(yè)務(wù)相關(guān)的代碼 , 保證業(yè)務(wù)邏輯正確、業(yè)務(wù)數(shù)據(jù)準(zhǔn)確 , 然后 , 這些業(yè)務(wù)代碼經(jīng)過(guò)打包部署后 , 變成實(shí)際可運(yùn)行的應(yīng)用 。但我們寫的代碼只是系統(tǒng)的冰山一角 , 為了保證應(yīng)用能正常運(yùn)行 , 我們需要從端到端系統(tǒng)的角度進(jìn)行分析 。
我們先看下一個(gè)系統(tǒng)的具體組成 , 這里我為你提供了一個(gè)簡(jiǎn)化的系統(tǒng)物理模型 , 你可以了解一個(gè)系統(tǒng)大致包含哪些部分 。
從用戶請(qǐng)求的處理過(guò)程來(lái)看 , 系統(tǒng)主要包括五大部分 。
首先是接入系統(tǒng) , 它負(fù)責(zé)接收用戶的請(qǐng)求 , 然后把用戶的請(qǐng)求分發(fā)到某個(gè) Web 服務(wù)器進(jìn)行處理 , 接入系統(tǒng)主要包括 DNS 域名解析、負(fù)載均衡、Web 服務(wù)器這些組件 。
接下來(lái) , Web 服務(wù)器會(huì)把請(qǐng)求交給應(yīng)用系統(tǒng)進(jìn)行處理 。一般來(lái)說(shuō) , 我們是基于某個(gè)開發(fā)框架來(lái)開發(fā)應(yīng)用的 , 比如 Java 應(yīng)用一般是基于 Spring MVC 框架 。
這個(gè)時(shí)候 , 開發(fā)框架首先會(huì)介入請(qǐng)求的處理 , 比如對(duì) HTTP 協(xié)議進(jìn)行解析 , 然后根據(jù)請(qǐng)求的 URL 和業(yè)務(wù)參數(shù) , 轉(zhuǎn)給我們寫的業(yè)務(wù)方法 。接下來(lái) , 我們的應(yīng)用代碼 , 會(huì)調(diào)用開發(fā)語(yǔ)言提供的庫(kù)和各種第三方的庫(kù) , 比如 JDK 和 Log4j , 一起完成業(yè)務(wù)邏輯處理 。在這里 , 我們會(huì)把開發(fā)框架、應(yīng)用代碼 , 還有這些庫(kù)打包在一起 , 組成一個(gè)應(yīng)用系統(tǒng) , 作為獨(dú)立的進(jìn)程在Web 服務(wù)器中進(jìn)行部署和運(yùn)行 。
到這里 , 整個(gè)系統(tǒng)要做的事情就完了嗎?
還沒(méi)有呢 , 在我們的應(yīng)用系統(tǒng)底下 , 還有基礎(chǔ)平臺(tái) , 它由好幾個(gè)部分組成:首先是各個(gè)語(yǔ)言的運(yùn)行時(shí) , 比如說(shuō) JVM;然后是容器或虛擬機(jī);下面還有操作系統(tǒng);最底下就是硬件和網(wǎng)絡(luò) 。
接入系統(tǒng)、應(yīng)用系統(tǒng)、基礎(chǔ)平臺(tái)就構(gòu)成一個(gè)最簡(jiǎn)單的系統(tǒng) 。
在大多數(shù)情況下 , 應(yīng)用系統(tǒng)還要借助大量外部的中間件來(lái)實(shí)現(xiàn)功能和落地?cái)?shù)據(jù) , 比如數(shù)據(jù)庫(kù)、緩存、消息隊(duì)列 , 以及 RPC 通訊框架等等 。這里 , 我統(tǒng)稱它們?yōu)楹诵慕M件 , 它們也是系統(tǒng)不可缺少的一部分 。
以上關(guān)于本文的內(nèi)容,僅作參考!溫馨提示:如遇健康、疾病相關(guān)的問(wèn)題,請(qǐng)您及時(shí)就醫(yī)或請(qǐng)專業(yè)人士給予相關(guān)指導(dǎo)!
「愛(ài)刨根生活網(wǎng)」www.malaban59.cn小編還為您精選了以下內(nèi)容,希望對(duì)您有所幫助:- js中計(jì)時(shí)器的用法 javascript計(jì)時(shí)器頻率設(shè)置
- 健身項(xiàng)目“方向標(biāo)”
- 男人健身的7個(gè)題目
- 滅火器維護(hù)檢查項(xiàng)目
- java獲取checkbox勾選的值 獲取選中的checkbox的值
- 怎樣鍛煉 讓腿部布滿氣力
- 產(chǎn)品推廣計(jì)劃方案模板 項(xiàng)目營(yíng)銷方案
- 簡(jiǎn)單的java程序代碼 java大小寫轉(zhuǎn)換函數(shù)
- 大學(xué)團(tuán)建活動(dòng)有哪些項(xiàng)目
- java中的對(duì)象和類理解 java對(duì)象是什么意思
