年薪50W的程序員,如何用5年時(shí)間成為一名架構(gòu)師,分享成功的經(jīng)驗(yàn)
架構(gòu)師,我想很多人都知道,其實(shí)該職位頭銜在最早的IT領(lǐng)域是沒有的,它是近些年來由互聯(lián)網(wǎng)的發(fā)展所引發(fā)的需求,因?yàn)楝F(xiàn)階段的數(shù)據(jù)量及高并發(fā)的活躍好動(dòng),引起了不少傳統(tǒng)的技術(shù)人員的力不從心,企業(yè)愈發(fā)關(guān)注到了系統(tǒng)架構(gòu)的重要性,所以不同行業(yè)開始招募架構(gòu)技術(shù)人員,架構(gòu)師就誕生了。
架構(gòu)設(shè)計(jì)的條件
以下三個(gè)條件不適合做架構(gòu)設(shè)計(jì)
對(duì)架構(gòu)不感興趣,但又迫于需求;
入IT行業(yè),年限小于4年的;
主觀能動(dòng)性弱,又安于現(xiàn)狀的;
架構(gòu)設(shè)計(jì)的優(yōu)勢(shì)
更好的梳理業(yè)務(wù)的結(jié)構(gòu)體系;
更好的拓展、維護(hù)及性能優(yōu)化;
更好的適應(yīng)企業(yè)業(yè)務(wù)靈活的推進(jìn);
更好的適應(yīng)大數(shù)據(jù)的沖洗和應(yīng)對(duì);
更好的穩(wěn)定性、低成本及快速迭代;
架構(gòu)設(shè)計(jì)時(shí)候需要注意的地方
架構(gòu)設(shè)計(jì)需要注意的地方,不是怎么把架構(gòu)搭建起來,而是必須根據(jù)業(yè)務(wù)需求,嚴(yán)格分析,實(shí)現(xiàn)該需求需要什么技術(shù)會(huì)更好及更長遠(yuǎn)發(fā)展的考慮;
另外,構(gòu)建好的架構(gòu)雖然可以運(yùn)行,但是性能需要跟起來,否則架構(gòu)設(shè)計(jì)會(huì)適得其反,增加不必要的工作量,那么下面就詳細(xì)介紹下架構(gòu)設(shè)計(jì)的策略。
平臺(tái)的需求
客戶需求
在線購物、在線支付或貨到付款;
購買商品后,客戶可以與客服溝通;
購買商品過程,物流的管理及跟蹤;
收取到商品后,商品、物流評(píng)價(jià)打分;
客戶的需求為***,也代表了企業(yè)的核心需求,當(dāng)然,企業(yè)需求還包括其它很多非功能性需求,具體請(qǐng)查看需求梳理部分。
平臺(tái)的業(yè)務(wù)架構(gòu)
根據(jù)業(yè)務(wù)的需求進(jìn)行子系統(tǒng)模塊劃分,可以劃分為商品子系統(tǒng)、購物子系統(tǒng)、支付子系統(tǒng)、物流子系統(tǒng)、客服子系統(tǒng)、評(píng)論子系統(tǒng);而非核心需求可拆分出客服子系統(tǒng)、評(píng)論子系統(tǒng)及接口子系統(tǒng)。另外,根據(jù)各個(gè)子系統(tǒng)的核心等級(jí),可拆分出核心子系統(tǒng)和非核心子系統(tǒng),前者包括商品子系統(tǒng)、購物子系統(tǒng)、支付子系統(tǒng)及物流子系統(tǒng);后者,則包括評(píng)論子系統(tǒng)、客服子系統(tǒng)及接口子系統(tǒng)。需要注意的是一般大型電商平臺(tái)的物流系統(tǒng)是單獨(dú)分離出來的系統(tǒng)(入庫、出庫、庫存管理、配送管理及貨品管理),而這里劃分為子系統(tǒng)的主要目的是為演示核心架構(gòu),本架構(gòu)中物流子系統(tǒng)一般作為對(duì)接和管理獨(dú)立子系統(tǒng)的對(duì)接模塊哦。
1、業(yè)務(wù)拆分目的
為了解決各個(gè)模塊子系統(tǒng)間的耦合、維護(hù)及拓展性;
方便單獨(dú)部署子系統(tǒng),避免集中部署導(dǎo)致一個(gè)出問題,全部不能用;
分配專門的團(tuán)隊(duì),負(fù)責(zé)具體的子系統(tǒng),***化工作效率安排;
應(yīng)對(duì)大數(shù)據(jù),高壓力時(shí),保護(hù)核心子系統(tǒng)正常使用;
2、業(yè)務(wù)的架構(gòu)圖
在上面的業(yè)務(wù)架構(gòu)圖中,將核心和非核心業(yè)務(wù)進(jìn)行拆分,同時(shí)每個(gè)系統(tǒng)都要獨(dú)立部署實(shí)現(xiàn),做到大數(shù)據(jù)量壓下,各個(gè)系統(tǒng)獨(dú)立運(yùn)作,提高可用性,必要時(shí)可以暫停掉非核心系統(tǒng)的資源開銷,保證核心業(yè)務(wù)正常為用戶服務(wù)。
平臺(tái)的技術(shù)架構(gòu)
在上面業(yè)務(wù)架構(gòu)圖基礎(chǔ)上,我們需要一個(gè)技術(shù)架構(gòu)的演變過程,一切只為滿足用戶的體驗(yàn)和支撐為前提,所以技術(shù)架構(gòu)的搭建不是一蹴而就的,而是隨著業(yè)務(wù)的不斷衍變,系統(tǒng)的架構(gòu)會(huì)逐漸完善更新,以實(shí)現(xiàn)應(yīng)對(duì)業(yè)務(wù)數(shù)據(jù)量的沖擊。
1、基本的架構(gòu)設(shè)計(jì)
記得很早的時(shí)候,很多中小企業(yè)所采用的架構(gòu)設(shè)計(jì)十分簡單,基本使用一臺(tái)服務(wù)器來滿足一切需求部署,比如:一臺(tái)服務(wù)器同時(shí)用作應(yīng)用部署、數(shù)據(jù)庫存儲(chǔ)以及圖片存儲(chǔ)等,不料的是待用戶數(shù)據(jù)達(dá)到50萬以上,系統(tǒng)出現(xiàn)很多性能問題,盡管對(duì)數(shù)據(jù)庫和程序做個(gè)各種性能優(yōu)化,結(jié)果仍無明顯改善,架構(gòu)如下:
后來,IT程序猿發(fā)現(xiàn)圖片的讀寫嚴(yán)重影響了系統(tǒng)性能,并將圖片單獨(dú)存放在獨(dú)立服務(wù)器中,并且在架構(gòu)中引入了Cache中間件,比如:Memcache,這種做法是可取的,而且比原來性能提高了1-2個(gè)性能級(jí)別,架構(gòu)設(shè)計(jì)如下:
2、初級(jí)的架構(gòu)設(shè)計(jì)
前幾年,一般的電商網(wǎng)站的做法是選用三臺(tái)服務(wù)器,一臺(tái)部署應(yīng)用,一臺(tái)部署數(shù)據(jù)庫,一臺(tái)部署NFS文件系統(tǒng),做到將各個(gè)規(guī)模龐大并耗用性能的部分剝離到不同服務(wù)器設(shè)備,再配備必要的緩存中間件,基本可以滿足近1000萬的數(shù)據(jù)量,具體的架構(gòu)圖如下:
但是,目前主流使用的網(wǎng)站架構(gòu)已經(jīng)不同,大多采用集群的方式來實(shí)現(xiàn)負(fù)載均衡和高可用性,架構(gòu)可以是下面的樣子:
注意:
如果涉及到多臺(tái)網(wǎng)站服務(wù)器的話,就會(huì)存在Session如何同步的問題,一般也是最為常用的做法,就是使用Cache中間件來存儲(chǔ)和管理Session信息。
3、優(yōu)化的架構(gòu)設(shè)計(jì)
這里為解決高并發(fā),高可用的大型電商網(wǎng)站的架構(gòu)設(shè)計(jì)方案,主要采用了分布式、集群、負(fù)載均衡、反向代理、消息隊(duì)列及多級(jí)緩存技術(shù)。該架構(gòu)設(shè)計(jì)方案,是現(xiàn)今比較流程的大型電商網(wǎng)站采用的架構(gòu)模式,比如:淘寶、京東等,也許會(huì)有細(xì)微不同的地方,但大同小異哦!具體的架構(gòu)圖方案如下:
平臺(tái)架構(gòu)的總結(jié)
這里主要總結(jié)的是優(yōu)化架構(gòu),架構(gòu)按層次結(jié)構(gòu)羅列組織,共分為四層,層次分工明確,高拓展,低耦合,負(fù)載均衡、集群、分布式及緩存等技術(shù)的使用,架構(gòu)如下:
好了,電商平臺(tái)的架構(gòu)設(shè)計(jì)就介紹到這里。