国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

實例淺析網(wǎng)站架構(gòu)的設(shè)計和調(diào)整

2018-04-03 19:13:47
關(guān)鍵詞:頁面架構(gòu)調(diào)整

徐 立

(商丘職業(yè)技術(shù)學(xué)院 軟件學(xué)院,河南 商丘 476100)

軟件的架構(gòu)既是一個軟件的骨架,又是其靈魂. David Garlan[1]92-97認(rèn)為軟件架構(gòu)要解決如下層面的問題:“在計算的算法和數(shù)據(jù)結(jié)構(gòu)之外,設(shè)計并確定系統(tǒng)整體結(jié)構(gòu)成了新的問題.結(jié)構(gòu)問題包括總體組織結(jié)構(gòu)和全局控制結(jié)構(gòu);通信、同步和數(shù)據(jù)訪問的協(xié)議;設(shè)計元素的功能分配;物理分布;設(shè)計元素的組成;定標(biāo)與性能;備選設(shè)計的選擇.”一個合理的架構(gòu)設(shè)計方案,可以使軟件開發(fā)流程變得順暢易行;可以使程序員在愉悅的環(huán)境下工作;可以使軟件在其運(yùn)行場景內(nèi)高效地運(yùn)行;在場景變換時也能具有良好的可擴(kuò)展性和可維護(hù)性.由此可見,軟件架構(gòu)設(shè)計至關(guān)重要,它決定著一個軟件產(chǎn)品的成敗.在架構(gòu)設(shè)計時,既要避免“牛刀殺雞”,又要避免“小馬拉大車”,下面將以實例子來淺析軟件架構(gòu)設(shè)計.

1 低成本快速開發(fā)的架構(gòu)設(shè)計

1.1 應(yīng)用場景

小創(chuàng)型互聯(lián)網(wǎng)公司有了好的設(shè)計構(gòu)思后,需要迅速低成本地將其轉(zhuǎn)化為產(chǎn)品,進(jìn)而驗證產(chǎn)品設(shè)計的好壞.

1.2 場景分析

有產(chǎn)品的設(shè)計,有未來的盈利規(guī)劃,但由于是創(chuàng)業(yè)型公司,依靠的資金來源主要是個人積蓄,在做軟件架構(gòu)設(shè)計時要充分考慮以下需求:

第一,上線要快.互聯(lián)網(wǎng)行業(yè),有了構(gòu)思,要迅速轉(zhuǎn)換為產(chǎn)品,進(jìn)而驗證其能否成功;第二,投入要少.個人積蓄有限且不知道產(chǎn)品上線后效果如何,能否成功是個未知數(shù),先期投入要盡量少,以最低成本滿足特定訪問量;第三,設(shè)計要靈活.盡量低耦合,擴(kuò)展性要好.

1.3 架構(gòu)設(shè)計

選用小而美的框架LAMP[2]50-52,LAMP是架構(gòu)中用到的幾種技術(shù)及開源軟件的首字母縮寫.A代表http服務(wù)器采用Apache,是最受歡迎的開源web服務(wù)器;L代表Linux是開源的操作系統(tǒng);M代表Mysql,架構(gòu)選擇開源的Mysql數(shù)據(jù)庫用來管理數(shù)據(jù),Mysql是多線程、多用戶的支持SQL語言的數(shù)據(jù)庫管理系統(tǒng);P代表PHP,它是一種編程語言,適合快速開發(fā)Web系統(tǒng).由于初期訪問量較小,其物理架構(gòu)也非常簡單,Web服務(wù)器和數(shù)據(jù)庫以及文件系統(tǒng)(如頁面html緩存、圖片等)均部署在同一臺托管服務(wù)器上.

該架構(gòu)非常輕量,性能穩(wěn)定,被很多大型互聯(lián)網(wǎng)公司使用,如Yahoo和維基百科.借助該架構(gòu),一般二百人日的工作量即可完成開發(fā),網(wǎng)站就能上線調(diào)試運(yùn)行.

2 訪問量劇增時性能成瓶頸

2.1 應(yīng)用場景

網(wǎng)站上線后,經(jīng)過積極推廣,產(chǎn)品符合用戶要求,網(wǎng)站的UI設(shè)計用戶體驗反映良好.網(wǎng)站的注冊用戶逐日遞增,注冊用戶中活躍用戶占比高達(dá)30%左右,已經(jīng)可以爭取到專業(yè)風(fēng)投公司的資金.然而,隨著用戶量的增多,網(wǎng)站運(yùn)行不如剛上線時流暢,頁面常出現(xiàn)白頁,而且經(jīng)常看不到頁面上的圖片;用戶提交表單時,始終提示“正在努力為您提交”,而且偶爾提交成功后,上傳的圖片卻丟失.這是網(wǎng)站的性能出現(xiàn)了問題,也許之前的架構(gòu)已經(jīng)“不堪重負(fù)”了,到了該改進(jìn)的時候.

2.2 場景分析

由于之前考慮低成本快速上線的需求,加上前期數(shù)據(jù)量較少,將文件存儲和應(yīng)用程序及數(shù)據(jù)庫均部署在同一臺服務(wù)器上.隨著注冊用戶及活躍用戶的遞增,網(wǎng)站會出現(xiàn)如下問題.

2.2.1 存儲壓力

網(wǎng)站在運(yùn)營過程中,用戶產(chǎn)生的大量圖片需要占用存儲空間,頁面的內(nèi)容以html形式存儲,也會占用存儲空間,雖然對于非大型網(wǎng)站而言,數(shù)據(jù)存儲一般不會對整個系統(tǒng)性能造成影響,但對于目前只有一臺服務(wù)器的情況,仍然會表現(xiàn)出存儲壓力.

2.2.2 數(shù)據(jù)庫“寫”操作壓力

活躍用戶在網(wǎng)站上的行為會造成大量的寫操作,比如換個頭像、寫條評論、發(fā)表個留言、訂購件商品,這些都會對數(shù)據(jù)庫進(jìn)行寫操作.當(dāng)壓力達(dá)到一定限度,就會出現(xiàn)數(shù)據(jù)丟失的現(xiàn)象,用戶反映的頁面不顯示,已上傳的圖片的問題,就是由于圖片已經(jīng)上傳成功但是其存儲路徑?jīng)]有成功地寫進(jìn)Mysql數(shù)據(jù)庫造成的.

2.2.3 流量壓力主要來自圖片

網(wǎng)站上的文章、商品等內(nèi)容上會有大量的圖片,圖片是該網(wǎng)站流量壓力的最主要貢獻(xiàn)者.用戶反映的網(wǎng)站加載太慢,跟圖片占用大量的流量有很大關(guān)系,當(dāng)然還有其他諸多原因也會造成網(wǎng)站加載太慢.

2.2.4 用于服務(wù)器壓力

大量用戶同時在線,操作網(wǎng)站,系統(tǒng)響應(yīng)用戶的操作要靠應(yīng)用服務(wù)器來完成,應(yīng)用服務(wù)器負(fù)載達(dá)到極限時會崩潰.網(wǎng)站經(jīng)?!鞍醉摗保褪荳eb服務(wù)器死機(jī)造成的.

2.3 架構(gòu)調(diào)整

架構(gòu)調(diào)整的主要措施是增加服務(wù)器,這不僅要將應(yīng)用分拆到專門的服務(wù)器上,而且每種應(yīng)用還要多臺服務(wù)器來支撐,做出該決策的依據(jù)一是目前的經(jīng)濟(jì)狀況,二是針對以后用戶量和流量增速的預(yù)測,雖然目前來講可能有冗余,但這種冗余是值得的.具體調(diào)整方案如下.

2.3.1 對數(shù)據(jù)庫調(diào)整

有兩臺服務(wù)器一主一從支撐Mysql數(shù)據(jù)管理,數(shù)據(jù)庫端的設(shè)計可以歸納為“主從復(fù)制、讀寫分離”,也就是說,所有寫操作由主服務(wù)器來完成,數(shù)據(jù)被復(fù)制到從服務(wù)器,以達(dá)到數(shù)據(jù)的一致性,所有的讀操作由從服務(wù)器來完成,將來可以方便地擴(kuò)展為一主多從,甚至主從均實現(xiàn)集群化.具體主從服務(wù)器的搭建步驟如下.

1)保證主從服務(wù)器mysql版本一致,修改root密碼;

2)修改主從服務(wù)器配置: #vi /etc/my.cnf

[mysqld]log-bin=mysql-bin

server-id=222,226//數(shù)值唯一,習(xí)慣選取IP地址末段;

3)重啟主從服務(wù)器并在主服務(wù)器上授權(quán)從服務(wù)器

#/usr/local/mysql/bin/mysql -uroot -pmttang

mysql>GRANT REPLICATION SLAVE ON *.* to 'mysync'@'%' identified by '192.168.0.226'; //表示授權(quán)給IP為192.168.0.226的從服務(wù)器;

4)配置從服務(wù)器啟動復(fù)制功能

mysql>change master to master_host='192.168.0.222',master_user='mysync',master_password='q123456', master_log_file='mysql-bin.000004',master_log_pos=308;

mysql>start slave;

5)編寫shell腳本監(jiān)控主從服務(wù)器狀態(tài),有問題及時報警.

2.3.2 應(yīng)用服務(wù)器調(diào)整

1)增加服務(wù)器

由兩臺服務(wù)器負(fù)責(zé)支撐網(wǎng)站的應(yīng)用程序,兩臺服務(wù)器根據(jù)各自的狀況分?jǐn)傌?fù)載,當(dāng)其中一臺死機(jī)后,另一臺仍然可以正常提供服務(wù),避免了網(wǎng)站“白頁”問題.

2)使用Memcache緩存“對象”

Memcache是一款高效的開源分布式對象緩存工具,可以將網(wǎng)站運(yùn)營中的查詢結(jié)果生成的對象進(jìn)行緩存,不僅可以減輕應(yīng)用服務(wù)器的壓力,同時減少對數(shù)據(jù)庫的查詢,也減輕了Mysql的從服務(wù)器壓力(從服務(wù)器負(fù)責(zé)讀操作).

當(dāng)然這種調(diào)整需要將應(yīng)用程序做簡單的修改,以保證涉及數(shù)據(jù)庫寫操作的程序負(fù)責(zé)通知Memcache緩存對象因數(shù)據(jù)有變而失效,可能涉及數(shù)據(jù)庫讀操作的程序要看是否有緩存以及緩存是否失效來決定數(shù)據(jù)是從Memcache中取或者是從Mysql中取.

2.3.3 流量方面的調(diào)整

由于網(wǎng)站的主要流量壓力來自圖片,且用戶反映存在圖片加載緩慢的現(xiàn)象,這就需要將網(wǎng)站所有圖片單獨(dú)放置在網(wǎng)絡(luò)運(yùn)營商提供的CDN服務(wù)器上[3]26-31,這種服務(wù)器流量的費(fèi)用較低,可以減輕網(wǎng)站流量方面的壓力,有利于圖片的加載,還可以降低費(fèi)用.

一般CDN服務(wù)器的計費(fèi)方式有按流量、按峰值和按帶寬3種.按流量計費(fèi)適用于平時流量不大,但是時不時會有短時間內(nèi)非常高的訪問量;按峰值是按單位時間內(nèi)的最大流量計費(fèi),適用于流量不大且變動不大的情況;按帶寬計費(fèi)適用于流量較大的情況,這次調(diào)整選用的是按帶寬計費(fèi)方式的某CDN產(chǎn)品.

2.3.4 其他調(diào)整

1)頁面靜態(tài)化

靜態(tài)化是指自己編寫程序,把一些經(jīng)常訪問的頁面且變動不大的頁面或頁面的某塊內(nèi)容(比如:主頁、商品詳細(xì)頁、文章瀏覽頁等)生成文件,以某種形式比如html代碼的形式保存在文件服務(wù)器上,當(dāng)這次高頻次被訪問的頁面被訪問時,避免了多次向應(yīng)用服務(wù)器或數(shù)據(jù)庫發(fā)起請求,減輕了各個環(huán)節(jié)的壓力.

2)動靜分離

使用squid反向代理緩存技術(shù),將靜態(tài)頁面、html、css和JavaScript代碼等進(jìn)行緩存,被訪問時會從適合的緩存池中取的,也能避免各個環(huán)節(jié)的壓力.

通過該次大規(guī)模的架構(gòu)調(diào)整,新的架構(gòu)已經(jīng)具備了服務(wù)大型網(wǎng)站的能力,只要沒有特殊的業(yè)務(wù)需求(比如某些業(yè)務(wù)需要存儲海量圖片或音視頻文件,或者秒殺等業(yè)務(wù)觸發(fā)短時間內(nèi)高并發(fā)訪問),該架構(gòu)兩三年內(nèi)不用調(diào)整,當(dāng)性能出現(xiàn)問題時,只需簡單地增加服務(wù)器即可.

3 結(jié)語

進(jìn)行軟件架構(gòu)設(shè)計時,要根據(jù)實際情況,不能一味貪大;在運(yùn)營中,網(wǎng)站出現(xiàn)性能瓶頸后,要能夠?qū)彆r度勢地進(jìn)行架構(gòu)調(diào)整.

本文以實例淺析軟件架構(gòu)的設(shè)計和調(diào)整只是起到拋磚引玉的作用,限于篇幅,所述雖全,但欠缺深度,實際操作中如果用到可以進(jìn)入深度研究.

[1] Garlan D,Shaw M.An introduction to software architecture[J].Advances in software engineering and knowledge engineering,1993,1(3).

[2] 余立強(qiáng).LAMP架構(gòu)搭建與網(wǎng)站運(yùn)行實例[J].網(wǎng)絡(luò)與信息,2011(8).

[3] 李素粉,董 暉,房秉毅,等.面向云化EPC的mobile CDN融合架構(gòu)研究[J].電信研究,2014(11).

猜你喜歡
頁面架構(gòu)調(diào)整
基于FPGA的RNN硬件加速架構(gòu)
刷新生活的頁面
夏季午睡越睡越困該如何調(diào)整
功能架構(gòu)在電子電氣架構(gòu)開發(fā)中的應(yīng)用和實踐
汽車工程(2021年12期)2021-03-08 02:34:30
工位大調(diào)整
意林(2020年10期)2020-06-01 07:26:37
滬指快速回落 調(diào)整中可增持白馬
LSN DCI EVPN VxLAN組網(wǎng)架構(gòu)研究及實現(xiàn)
一種基于FPGA+ARM架構(gòu)的μPMU實現(xiàn)
18
同一Word文檔 縱橫頁面并存
时尚| 大连市| 宜良县| 双江| 乡城县| 莆田市| 沁源县| 宁乡县| 环江| 依兰县| 乐业县| 克拉玛依市| 嘉黎县| 曲水县| 察隅县| 祁连县| 富蕴县| 鄂托克前旗| 临颍县| 吉林省| 车致| 印江| 屏边| 专栏| 革吉县| 内江市| 江门市| 偏关县| 凯里市| 临汾市| 衡山县| 襄垣县| 驻马店市| 北辰区| 于都县| 聂荣县| 礼泉县| 陆良县| 揭阳市| 栾川县| 海阳市|