软考·系统架构师论文——论软件的高并发设计
文章目錄
- 說(shuō)明
- 摘要
- 過(guò)渡
- 項(xiàng)目背景
- 論點(diǎn)理論
- 論點(diǎn)實(shí)踐
- 結(jié)尾
說(shuō)明
1、【摘要 300~330字】
① 項(xiàng)目介紹:時(shí)間、項(xiàng)目名、項(xiàng)目主要功能簡(jiǎn)述、作者角色及工作內(nèi)容
② 項(xiàng)目技術(shù)簡(jiǎn)介:正文理論/分論點(diǎn)的濃縮和精華,注意行文格式
③ 項(xiàng)目效果:簡(jiǎn)述上線效果
2、【項(xiàng)目背景 400~600字】
① 引言:項(xiàng)目由來(lái)/緣起/定位/目標(biāo),主要介紹項(xiàng)目的前提和誕生的背景,注意戴帽子要適可而止
② 項(xiàng)目主要內(nèi)容:簡(jiǎn)要介紹,不是摘要中簡(jiǎn)單的重復(fù),應(yīng)比摘要稍詳細(xì),注意5W2h的次序可根據(jù)行文而定
when:何時(shí),近三年項(xiàng)目(體現(xiàn)技術(shù)先進(jìn)性),工期建議半年至1年
where:何地,脫敏,某省/某市
who:甲乙方、作者,甲方名稱脫敏,乙方稱“我司/我單位/我廠/我公司”
why:為何立項(xiàng),項(xiàng)目建設(shè)目的
what:項(xiàng)目名、項(xiàng)目?jī)?nèi)容、作者的工作內(nèi)容
how much:項(xiàng)目預(yù)算,不宜太小,不能太大,400~100W
how:作者采用的技術(shù)/方法
3、【過(guò)渡 50~100字】
① 關(guān)鍵需求:客戶需求/項(xiàng)目特征/約束…
② 作者分析后識(shí)別出的問(wèn)題,需要怎么解決,引出下文
4、【理論/分論點(diǎn) 500~600字】
① 緊扣題干要求:一般是對(duì)題干2的應(yīng)答,注意要寫成一段,但需要有明顯的標(biāo)識(shí)。行文需要注意格式,分論點(diǎn)之間用分號(hào)隔開
② 逐點(diǎn)回答:分論點(diǎn)的基本概念、基本原理、應(yīng)用場(chǎng)景、簡(jiǎn)單舉例即可,無(wú)關(guān)內(nèi)容不要贅述
③ 惜字如金:注意控制字?jǐn)?shù),不要擠占實(shí)踐部分
5、【實(shí)踐部分 1000~1200左右】
① 結(jié)構(gòu)上:與理論部分相呼應(yīng)對(duì)應(yīng),最好保持一致
② 分論點(diǎn)標(biāo)題:最好擬一個(gè)小標(biāo)題,注意小標(biāo)題的行文格式
③ 分論點(diǎn)內(nèi)容:先識(shí)別問(wèn)題,闡述why;然后分析/設(shè)計(jì)/解決問(wèn)題,闡述how;再闡述效果
6、【結(jié)尾 300~400字】
① 項(xiàng)目效果:呼應(yīng)論點(diǎn)、上線、穩(wěn)定運(yùn)行、獲得好評(píng)、下一步計(jì)劃…
② 存在的問(wèn)題:闡述小問(wèn)題,且已解決的
③ 收獲/反思/復(fù)盤:甲乙方、個(gè)人、團(tuán)隊(duì)
摘要
2020 年 5 月,我司中標(biāo)了某一線城市大型物流公司的物流信息管理項(xiàng)目。項(xiàng)目包括倉(cāng)儲(chǔ)管理、運(yùn)輸管理、財(cái)務(wù)管理、訂單管理、BI等多個(gè)子系統(tǒng)。在需求調(diào)研的過(guò)程中了解到業(yè)主物流倉(cāng)庫(kù)分布在全國(guó)上百個(gè)不同地點(diǎn),大約3000輛貨車,客戶規(guī)模較大,系統(tǒng)需具備高并發(fā)能力。本人有幸擔(dān)任架構(gòu)師,負(fù)責(zé)系統(tǒng)架構(gòu)、系統(tǒng)設(shè)計(jì)等工作,經(jīng)過(guò)充分的分析、多次POC,設(shè)計(jì)并實(shí)現(xiàn)了支持高并發(fā)的物流信息管理系統(tǒng)。本文以此項(xiàng)目為例,首先介紹了如CDN、負(fù)載均衡、緩存、消息隊(duì)列等相關(guān)高并發(fā)設(shè)計(jì)技術(shù),然后詳細(xì)闡述了高并發(fā)設(shè)計(jì)技術(shù)在項(xiàng)目中的具體應(yīng)用。得益于高并發(fā)設(shè)計(jì)技術(shù),該項(xiàng)目已穩(wěn)定運(yùn)行兩年多,經(jīng)受了兩次的雙十一活動(dòng)的考驗(yàn),獲得了業(yè)主單位的一致好評(píng)。
過(guò)渡
在經(jīng)濟(jì)全球化和電子商務(wù)的雙重推動(dòng)下,物流業(yè)正在從傳統(tǒng)物流向現(xiàn)代物流迅速轉(zhuǎn)型并成為當(dāng)前物流業(yè)發(fā)展的必然趨勢(shì)。在系統(tǒng)工程思想的指導(dǎo)下,以信息技術(shù)為核心,強(qiáng)化資源整合和物流全過(guò)程優(yōu)化是現(xiàn)代物流的最本質(zhì)特征。通過(guò)使用計(jì)算機(jī)技術(shù)、通信技術(shù)、網(wǎng)絡(luò)技術(shù)等手段,建立物流信息化管理,以提高物流信息的處理和傳遞速度,提升更人性化的服務(wù),完善實(shí)時(shí)物流跟蹤,減少物流成本。
項(xiàng)目背景
2020 年 5 月,我有幸參加了某物流公司的物流信息管理項(xiàng)目,項(xiàng)目由多個(gè)子系統(tǒng)組成,包括倉(cāng)儲(chǔ)管理、運(yùn)輸管理、財(cái)務(wù)管理、訂單管理、BI等多個(gè)子系統(tǒng),這些子系統(tǒng)之間有許多協(xié)同作用,又是相互依賴的,同時(shí)從用戶層面系統(tǒng)分為三個(gè)端:后臺(tái)系統(tǒng)管理端、客戶端、司機(jī)端。項(xiàng)目的目的是打造物流公司內(nèi)外部各作業(yè)環(huán)節(jié)的信息化、可視化和一體化。通過(guò)對(duì)物流信息的收集、存儲(chǔ)、傳遞和處理,達(dá)到對(duì)物流活動(dòng)控制和管理,幫助企業(yè)進(jìn)行信息分析以及決策支持,加快對(duì)市場(chǎng)的反應(yīng)速度。本人作為系統(tǒng)架構(gòu)師,參與了系統(tǒng)規(guī)劃、需求分析、系統(tǒng)設(shè)計(jì)、系統(tǒng)開發(fā)和系統(tǒng)實(shí)施等過(guò)程,主要負(fù)責(zé)系統(tǒng)架構(gòu)設(shè)計(jì)的工作。通過(guò)與關(guān)鍵干系人多輪次的溝通交流,經(jīng)過(guò)項(xiàng)目組內(nèi)部充分的需求分析,我們識(shí)別出該項(xiàng)目具備業(yè)務(wù)模塊相對(duì)獨(dú)立、業(yè)務(wù)不能中斷、業(yè)務(wù)可承載高并發(fā)等關(guān)鍵需求。結(jié)合關(guān)鍵需求,我組織了項(xiàng)目組對(duì)高并發(fā)的軟件設(shè)計(jì)技術(shù)進(jìn)行調(diào)研,經(jīng)過(guò)溝通、討論、驗(yàn)證,最后一致認(rèn)為采用CDN內(nèi)容分發(fā)網(wǎng)絡(luò)、負(fù)載均衡、緩存、消息隊(duì)列等相關(guān)技術(shù)可以確保該項(xiàng)目的成功實(shí)施。下面分別對(duì)這些技術(shù)進(jìn)行描述,并說(shuō)明各自的主要適用場(chǎng)景。
論點(diǎn)理論
(1)CDN內(nèi)容分發(fā)網(wǎng)絡(luò),通過(guò)在網(wǎng)絡(luò)各處放置節(jié)點(diǎn)服務(wù)器所構(gòu)成現(xiàn)有的互聯(lián)網(wǎng)基礎(chǔ)之上的一層虛擬網(wǎng)絡(luò),能夠?qū)崟r(shí)的根據(jù)網(wǎng)絡(luò)流量和各節(jié)點(diǎn)的連接、負(fù)載情況以及到用戶的距離和響應(yīng)時(shí)間等綜合信息將用戶的請(qǐng)求導(dǎo)向離用戶最近的服務(wù)節(jié)點(diǎn)上,使用戶可以就近取得所需內(nèi)容,解決網(wǎng)絡(luò)擁擠的狀況,提高用戶訪問(wèn)網(wǎng)站的響應(yīng)速度和成功率。CDN解決因分布、寬帶、服務(wù)器性能帶來(lái)的訪問(wèn)延遲問(wèn)題,適用于站點(diǎn)加速、點(diǎn)播、直播等場(chǎng)景。
(2)負(fù)載均衡構(gòu)建在原有網(wǎng)絡(luò)結(jié)構(gòu)之上,提供了一種透明且廉價(jià)有效的方法擴(kuò)展服務(wù)器和網(wǎng)絡(luò)設(shè)備的帶寬、加強(qiáng)網(wǎng)絡(luò)數(shù)據(jù)處理能力、增加吞吐量、提高網(wǎng)絡(luò)的可用性和靈活性。將工作任務(wù)進(jìn)行平衡、分?jǐn)偟蕉鄠€(gè)操作單元上進(jìn)行運(yùn)行,例如Web服務(wù)器、FTP服務(wù)器等,從而協(xié)同完成工作任務(wù),同時(shí)根據(jù)實(shí)際情況選用不同的負(fù)載均衡技術(shù)和算法。是解決高并發(fā),高可用,擴(kuò)展性的終極解決方案。
(3)緩存技術(shù)在有高并發(fā)需求的系統(tǒng)中起著至關(guān)重要的作用,可以進(jìn)一步提高數(shù)據(jù)的讀取速率。緩存分為本地緩存和分布式緩存,區(qū)別在與是否要走網(wǎng)絡(luò)通訊。其中分布式緩存通常由一個(gè)服務(wù)端實(shí)現(xiàn)管理和控制,有多個(gè)客戶端節(jié)點(diǎn)存儲(chǔ)數(shù)據(jù),能夠動(dòng)態(tài)地?cái)U(kuò)展緩存節(jié)點(diǎn)、自動(dòng)發(fā)現(xiàn)和切換故障節(jié)點(diǎn)。主要用于在高并發(fā)環(huán)境下,減輕數(shù)據(jù)庫(kù)的壓力,提高系統(tǒng)的響應(yīng)速度和并發(fā)吞吐,一般應(yīng)用在數(shù)據(jù)庫(kù)和應(yīng)用的中間層。
(4)消息隊(duì)列是在消息的傳輸過(guò)程中保存消息的容器,它具有低耦合、可靠投遞、流量控制等一些列功能。消息隊(duì)列主要有三種角色:生產(chǎn)者、消息隊(duì)列、消費(fèi)者,消息隊(duì)列提供路由并保證消息的傳遞,生產(chǎn)者和消費(fèi)者通過(guò)消息隊(duì)列傳遞消息。可以應(yīng)用在解決系統(tǒng)之間耦合、異步通信、流量削峰填谷等問(wèn)題。
下面詳細(xì)闡述相關(guān)技術(shù)在項(xiàng)目中的具體應(yīng)用。
論點(diǎn)實(shí)踐
一是,采用CDN技術(shù),提高網(wǎng)站應(yīng)用中大量靜態(tài)資源的加速分發(fā)。由于各個(gè)應(yīng)用系統(tǒng)存在大量的靜態(tài)資源,例如加載頁(yè)面時(shí)需要的html、css、js等文件,物流作業(yè)過(guò)程中產(chǎn)生的倉(cāng)庫(kù)貨品、運(yùn)輸存證等大量圖片和視頻。為了避免當(dāng)大量請(qǐng)求涌入,在帶寬不足的情況下,導(dǎo)致頁(yè)面或資源加載不出來(lái),影響工作人員效率及用戶體驗(yàn)。我們利用CDN技術(shù)將這些靜態(tài)資源提供下載加速分發(fā),通過(guò)CDN緩存在邊緣節(jié)點(diǎn)上,使各終端用戶訪問(wèn)時(shí)可以就近訪問(wèn),提高了回源速度,節(jié)省了近2/3的回源(業(yè)務(wù)服務(wù)器)帶寬成本。
二是,采用負(fù)載均衡技術(shù),提高系統(tǒng)并發(fā)處理能力。在設(shè)計(jì)和開發(fā)階段,根據(jù)各子系統(tǒng)獨(dú)立性、耦合度,采用微服務(wù)形式將項(xiàng)目拆分成倉(cāng)儲(chǔ)作業(yè)服務(wù)、庫(kù)存服務(wù)、訂單服務(wù)、運(yùn)輸服務(wù)、用戶中心、GPS服務(wù)、數(shù)據(jù)計(jì)算等多個(gè)服務(wù),形成了各終端用戶訪問(wèn)應(yīng)用系統(tǒng),應(yīng)用系統(tǒng)訪問(wèn)各服務(wù)的鏈路。為避免短時(shí)間內(nèi)大量客戶下單、查詢物流信息,倉(cāng)儲(chǔ)高峰期業(yè)務(wù)人員的大量操作等高并發(fā)請(qǐng)求導(dǎo)致系統(tǒng)癱瘓。我們根據(jù)不同系統(tǒng)的訪問(wèn)量及用戶量,為各計(jì)算節(jié)點(diǎn)添加若干節(jié)點(diǎn),在各終端用戶訪問(wèn)子系統(tǒng)時(shí)采用反向代理負(fù)載均衡技術(shù)Nginx,各子系統(tǒng)訪問(wèn)內(nèi)部服務(wù)時(shí)采用基于HTTP的負(fù)載均衡技術(shù)Ribbon。由于相同系統(tǒng)或服務(wù)所分布的資源相同,在負(fù)載均衡算法上統(tǒng)一使用了輪詢算法。項(xiàng)目實(shí)踐中因負(fù)載均衡技術(shù),不僅提高了系統(tǒng)高并發(fā),也提高了系統(tǒng)的高可用和高擴(kuò)展性。
三是,采用分布式緩存Redis,保障熱數(shù)據(jù)的應(yīng)用,提高系統(tǒng)訪問(wèn)效率。項(xiàng)目的數(shù)據(jù)大抵可以分為三類。一類是例如倉(cāng)庫(kù)配置、運(yùn)輸設(shè)備資源配置、組織結(jié)構(gòu)配置等系統(tǒng)的基礎(chǔ)信息。一類是系統(tǒng)正常運(yùn)行時(shí)產(chǎn)生的數(shù)據(jù),例如倉(cāng)儲(chǔ)相關(guān)數(shù)據(jù)、運(yùn)輸相關(guān)數(shù)據(jù)、訂單數(shù)據(jù)等一些業(yè)務(wù)數(shù)據(jù)。第三類是經(jīng)過(guò)計(jì)算、分析、加工后的數(shù)據(jù),例如倉(cāng)儲(chǔ)報(bào)表、運(yùn)輸報(bào)表等業(yè)務(wù)報(bào)表以及監(jiān)控作業(yè)大屏等。其中,第一類數(shù)據(jù)在系統(tǒng)中維護(hù)好后需要頻繁訪問(wèn)名副其實(shí)的熱數(shù)據(jù),如果用傳統(tǒng)關(guān)系型數(shù)據(jù)來(lái)存儲(chǔ),其讀寫 I/O 性能必然成為瓶頸,因此我們采用 Redis 來(lái)存儲(chǔ)這類熱數(shù)據(jù),大大提升了系統(tǒng)響應(yīng)速度,提高了用戶體驗(yàn)感。并且建立高可用的Redis集群和哨兵模式,防止因Redis的宕機(jī)而影響整個(gè)系統(tǒng)。
四是,采用消息隊(duì)列 Kafka,達(dá)到流量削峰填谷、應(yīng)用耦合、異步通信作用。項(xiàng)目中為實(shí)現(xiàn)對(duì)運(yùn)輸中的車輛實(shí)時(shí)定位追蹤,接入了第三方GPS定位系統(tǒng),在GPS數(shù)據(jù)服務(wù)中與第三方GPS系統(tǒng)約定好協(xié)議,實(shí)時(shí)的接收成千上百個(gè)車輛的大量GPS信息,同時(shí)需要向數(shù)據(jù)計(jì)算服務(wù)和運(yùn)輸服務(wù)提供數(shù)據(jù)進(jìn)行業(yè)務(wù)計(jì)算。為防止下游鏈路遭到流量沖擊而癱瘓,利用Kafka的高吞吐以及異步通信等特點(diǎn),承載了大量GPS數(shù)據(jù),并且下游服務(wù)通過(guò)訂閱Kafka主題對(duì)數(shù)據(jù)消費(fèi)進(jìn)行處理,完美的解決了大量GPS信息接收問(wèn)題以及多個(gè)業(yè)務(wù)對(duì)相關(guān)信息的同時(shí)處理。
結(jié)尾
得益于高并發(fā)設(shè)計(jì)技術(shù),項(xiàng)目組在時(shí)間緊、任務(wù)重、跨多部門的前提條件下,經(jīng)過(guò) 6 個(gè)月的艱苦奮戰(zhàn)研發(fā),保質(zhì)保量地按期完成項(xiàng)目交付,目前已穩(wěn)定運(yùn)行 2 年。該項(xiàng)目支撐了物流公司的核心業(yè)務(wù),項(xiàng)目運(yùn)行可靠,各項(xiàng)功能和性能指標(biāo)超過(guò)客戶預(yù)期,連續(xù)兩年經(jīng)受了雙十一活動(dòng)的考驗(yàn),深受客戶好評(píng)。在項(xiàng)目開發(fā)過(guò)程中也存在不足之處,由于系統(tǒng)被拆分了多個(gè)服務(wù),同時(shí)還存在多個(gè)中間件,在初期需要登錄多個(gè)服務(wù)器進(jìn)行部署,操作繁瑣復(fù)雜,后面通過(guò)Docker和Jenkins實(shí)現(xiàn)了自動(dòng)化部署,減少了運(yùn)維成本。經(jīng)過(guò)本項(xiàng)目的實(shí)踐,我系統(tǒng)架構(gòu)能力也得到了提高。路漫漫兮其修遠(yuǎn),吾將上下而求索,我將在未來(lái)的系統(tǒng)架構(gòu)師一路走下去,在今后的項(xiàng)目開發(fā)工作中仍需要不斷的總結(jié)和提升架構(gòu)能力。
總結(jié)
以上是生活随笔為你收集整理的软考·系统架构师论文——论软件的高并发设计的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 简单理解sticky定位与fixed定位
- 下一篇: 七年级计算机上册知识题,Word综合应用