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

?

網(wǎng)站系統(tǒng)的架構(gòu)設(shè)計(jì)

2020-10-27 05:45焦花花
科學(xué)與財(cái)富 2020年24期
關(guān)鍵詞:網(wǎng)站部署架構(gòu)

焦花花

摘 要:一個(gè)網(wǎng)站系統(tǒng)在需求確定后,就可以開始架構(gòu)設(shè)計(jì)了。架構(gòu)設(shè)計(jì)不同于編寫代碼,需要遵循嚴(yán)格的語法和編程規(guī)范。它沒有規(guī)范可遵循,存在即合理,適合網(wǎng)站系統(tǒng)開發(fā)和運(yùn)行的架構(gòu)就是最合理的系統(tǒng)架構(gòu)。

關(guān)鍵詞:網(wǎng)站;系統(tǒng);架構(gòu);部署

對(duì)于一網(wǎng)站系統(tǒng),根據(jù)數(shù)據(jù)量或者邏輯的復(fù)雜性會(huì)有不同的架構(gòu)上的設(shè)計(jì)。也可以根據(jù)用戶量的多少來對(duì)不同系統(tǒng)采取不同的設(shè)計(jì)。對(duì)于一個(gè)系統(tǒng),根據(jù)用戶的使用情況,可以分為幾個(gè)常見的用戶級(jí)別系統(tǒng)。分別是萬級(jí)用戶的系統(tǒng)、十萬級(jí)的用戶系統(tǒng)和百萬級(jí)別的用戶系統(tǒng)。這三種級(jí)別的用戶量在系統(tǒng)的設(shè)計(jì)和應(yīng)用的部署上會(huì)有不同的方式。接下來,我們分別介紹這三種級(jí)別系統(tǒng)在設(shè)計(jì)上和部署方式上的不同。

1一萬用戶量的系統(tǒng)

用戶量不超過一萬的系統(tǒng)應(yīng)該是最簡(jiǎn)單的系統(tǒng)了,對(duì)于這種簡(jiǎn)單的系統(tǒng)應(yīng)用程序的部署包、文件的存放、還有數(shù)據(jù)的安裝都可以放在一臺(tái)服務(wù)器上即可,不會(huì)影響系統(tǒng)的功能使用和性能。

在應(yīng)用程序上,基本上使用一套java的SSM/SSH框架就可以完成相應(yīng)的業(yè)務(wù)功能了。一些復(fù)雜的統(tǒng)計(jì)需要sql語句即可。然后在數(shù)據(jù)庫連接池的配置上修改下參數(shù)。因?yàn)橛脩袅渴褂玫纳?,只要能?shí)現(xiàn)需求的功能。用戶量較少一般產(chǎn)生的數(shù)據(jù)也比較少。因此數(shù)據(jù)的存放和應(yīng)用可以放在同一個(gè)服務(wù)器上。

2十萬用戶網(wǎng)站架構(gòu)

用戶使用量不超過十萬的系統(tǒng)結(jié)構(gòu),用戶量較多,一般會(huì)產(chǎn)生較多的數(shù)據(jù)。如果數(shù)據(jù)存放和應(yīng)用公用一臺(tái)服務(wù)器,隨著數(shù)據(jù)量的增多,會(huì)占用服務(wù)器的更多的資源。因此需要將部署應(yīng)用程序的服務(wù)器、存放文件的服務(wù)器、存放數(shù)據(jù)的服務(wù)器獨(dú)立出來。

實(shí)現(xiàn)應(yīng)用程序和數(shù)據(jù)的分離,不僅在邏輯上的分離,在物理上也實(shí)現(xiàn)了分離。

2.1服務(wù)器的合理選擇

對(duì)于應(yīng)用程序的服務(wù)器,主要用來處理業(yè)務(wù)邏輯,對(duì)硬件的要求是需要好點(diǎn)的cpu。對(duì)于存儲(chǔ)文件的服務(wù)器,需要較大的硬盤,對(duì)于存放數(shù)據(jù)的數(shù)據(jù)庫服務(wù)器,它的任務(wù)是做了大量的數(shù)據(jù)緩存和對(duì)磁盤進(jìn)行檢索,因此需要硬盤讀寫速度比較快的,另外需要大的內(nèi)存。

2.2程序的設(shè)計(jì)與優(yōu)化

在應(yīng)用程序的設(shè)計(jì)上,主要對(duì)業(yè)務(wù)中的數(shù)據(jù)的批量處理和統(tǒng)計(jì)上的改進(jìn)。Hibernate框架寫的速度每分鐘兩千條,如果需要處理10w條數(shù)據(jù),使用java語言,提交批處理的sql語句,每秒可以處理5萬條數(shù)據(jù)。Oracle數(shù)據(jù)庫每秒可以修改5w條數(shù)據(jù)的狀態(tài)。簡(jiǎn)單的業(yè)務(wù)可以用批處理sql語句來解決問題,復(fù)雜的需要批量操作的業(yè)務(wù),就無法通過簡(jiǎn)單的批處理的sql來解決。需要使用消息隊(duì)列機(jī)制,它是解決批量數(shù)據(jù)、大數(shù)據(jù)的通用方案。MQ實(shí)現(xiàn)了批量數(shù)據(jù)處理與業(yè)務(wù)的分離,實(shí)現(xiàn)對(duì)程序的解耦。

Tomcat支持的線程數(shù)是200到300之間,十萬級(jí)用戶,如果每個(gè)用戶一天請(qǐng)求50次,按照十小時(shí)算的話,每秒需要請(qǐng)求服務(wù)數(shù)是139次,如果峰值翻倍的話,也在tomcat的最大并發(fā)數(shù)承受范圍內(nèi)。因此應(yīng)用服務(wù)器選用tomcat即可。

3百萬用戶網(wǎng)站架構(gòu)

現(xiàn)實(shí)中絕大多數(shù)的系統(tǒng)的用戶量是達(dá)不到百萬級(jí)用戶的,這種級(jí)別的系統(tǒng)業(yè)務(wù)是比較復(fù)雜的,使用分布式技術(shù)、緩存技術(shù)和負(fù)載均衡技術(shù)等。因此系統(tǒng)架構(gòu)也比較復(fù)雜些。

3.1應(yīng)用服務(wù)器的設(shè)計(jì)

負(fù)載均衡服務(wù)器統(tǒng)一管理著系統(tǒng)的入口和出口。百萬級(jí)別用戶的系統(tǒng),負(fù)載均衡服務(wù)器選用nginx。它可以最高支持5萬的并發(fā)數(shù)。雖然是百萬級(jí)別的用戶數(shù),但在某一時(shí)刻的并發(fā)量可能就是幾萬。因此,一臺(tái)nginx完全可以支撐百萬級(jí)別用戶的負(fù)載均衡。相比于apache和tomcat服務(wù)器,ngnix做負(fù)載服務(wù)器是較好的選擇。

應(yīng)用服務(wù)器上主要部署的是應(yīng)用程序、本地的一些數(shù)據(jù)緩存、還有數(shù)據(jù)的訪問模塊功能。應(yīng)用程序可選用tomcat即可,因?yàn)閼?yīng)用程序可做集群,保持與其他模塊的耦合性。本地的緩存可以存儲(chǔ)一些數(shù)據(jù)量不大的數(shù)據(jù),但經(jīng)常需要訪問當(dāng)?shù)臄?shù)據(jù)即可,像session這種,因?yàn)榘偃f級(jí)別的用戶量,雖然每一個(gè)的session占用空間不大,但是百萬個(gè)seeeion就需要很大的空間,因此seesion建議存儲(chǔ)在遠(yuǎn)程分布式緩存中,目前常用的遠(yuǎn)程分布式緩存有Redis和Memcached。Redis可以支持的數(shù)據(jù)結(jié)構(gòu)更多些,而memchached只是支持key-value的結(jié)構(gòu)。而且redis可以處理簡(jiǎn)單的業(yè)務(wù)邏輯,做消息隊(duì)列代理等。因此遠(yuǎn)程緩存服務(wù)器選redis。

數(shù)據(jù)庫訪問的模塊,因?yàn)閿?shù)據(jù)量比較大,而且傳統(tǒng)的關(guān)系型數(shù)據(jù)庫對(duì)表數(shù)據(jù)是行級(jí)鎖的,即讀一張表或?qū)懸粡埍頂?shù)據(jù),會(huì)形成阻塞的。因此建議,數(shù)據(jù)庫做主從備份,將數(shù)據(jù)的讀和寫分開。Spring框架和中間件都可以做對(duì)數(shù)據(jù)庫的讀寫分離。

3.2文件服務(wù)器

常用的存儲(chǔ)文件的有HDFS和FDHS,這兩種在網(wǎng)上的資料都比較多,是比較成熟的存儲(chǔ)系統(tǒng)了。關(guān)于文件系統(tǒng)的使用基本上都是一樣的,用戶將文件上傳到應(yīng)用服務(wù)器上,經(jīng)過程序的處理,將文件存在文件系上,文件系統(tǒng)給應(yīng)用服務(wù)器回一個(gè)存儲(chǔ)的路徑。應(yīng)用服務(wù)器將路徑告訴客戶端,客戶端就可以直接去文件系統(tǒng)上讀取處理過的文件了。相對(duì)獨(dú)立,和其它服務(wù)器上的耦合度較低。

3.3數(shù)據(jù)庫服務(wù)器

在系統(tǒng)設(shè)計(jì)上采用緩存技術(shù),可以減少程序直接讀取數(shù)據(jù)庫,可以減少數(shù)據(jù)訪問的壓力。不需要實(shí)時(shí)的數(shù)據(jù)可以先緩存在緩存中,然后使用批量提交技術(shù)同步到數(shù)據(jù)庫中。除非是一些需要實(shí)時(shí)更新的信息,需要立即訪問數(shù)據(jù)庫。緩存技術(shù)可以帶來系統(tǒng)性能上很大的改善。百萬級(jí)別的數(shù)據(jù)需要對(duì)數(shù)據(jù)庫的操作進(jìn)行讀寫分離。

目前的市面上的關(guān)系型數(shù)據(jù)庫都是采用行級(jí)鎖的,當(dāng)同時(shí)對(duì)同一張表的數(shù)據(jù)進(jìn)行寫入操作和查詢操作時(shí),是會(huì)有線程阻塞的,當(dāng)嚴(yán)重阻塞時(shí),會(huì)使降低系統(tǒng)的性能,甚至讓系統(tǒng)掛掉的;對(duì)數(shù)據(jù)采用讀寫分離后,主庫主要用來寫,減少查詢的系數(shù),降低阻塞。而從庫只有查詢操作,不存在阻塞的。這樣將主從數(shù)據(jù)庫服務(wù)器的性能發(fā)揮到最大,而且也比較的穩(wěn)定。另外對(duì)數(shù)據(jù)的安全也有所保證了。因此,百萬級(jí)別的系統(tǒng)相比十萬級(jí)別的系統(tǒng)主要上的改變就是對(duì)數(shù)據(jù)庫的設(shè)計(jì)做讀寫分離,實(shí)現(xiàn)數(shù)據(jù)庫的主從庫設(shè)計(jì)。

隨著系統(tǒng)在設(shè)計(jì)上的邏輯越來越復(fù)雜,使用的技術(shù)也會(huì)越來越多。對(duì)于后期的維護(hù)成本也會(huì)增加。一個(gè)好的系統(tǒng),除了在滿足需求的功能上,還需要比較好的代碼質(zhì)量。好的代碼的編程會(huì)減少系統(tǒng)出問題的幾率。另外在框架的選型上也是比較重要的。不同的框架能夠?qū)崿F(xiàn)不同需求的功能。但是在最初選型上有前瞻性,對(duì)于后期系統(tǒng)的維護(hù)成本也會(huì)減低。因此設(shè)計(jì)一個(gè)針對(duì)不同用戶量的系統(tǒng),需要考慮的因素是多方面的。并且隨著技術(shù)在不斷的更新,可以選擇的選擇項(xiàng)就比較多。目前的springboot框架,springcloud技術(shù),微服務(wù)等等。應(yīng)用開發(fā)的前后端分離技術(shù)等等,讓開發(fā)變得越來越簡(jiǎn)單。微服務(wù)的使用也讓系統(tǒng)功能可以部署在不同的服務(wù)器上。一個(gè)功能的開發(fā)部署不會(huì)影響其他功能的使用。這樣對(duì)于大型系統(tǒng)的維護(hù)會(huì)簡(jiǎn)單些。包括前端技術(shù),從之前的html、css、js技術(shù)發(fā)展到j(luò)query框架。到目前前端比較流行的vue.js框架。以及還可以做后端開發(fā)的node.js的前端技術(shù)。這些新框架技術(shù)的出現(xiàn)會(huì)使程序應(yīng)用的開發(fā)變得容易。因此未來的系統(tǒng)設(shè)計(jì)也會(huì)在不停的變化中。

參考文獻(xiàn):

[1] 李智慧.大型網(wǎng)站技術(shù)架構(gòu)[M].電子工業(yè)出版社.2013.

[2] 唐文.海量運(yùn)維、運(yùn)營(yíng)規(guī)劃之道[M].電子工業(yè)出版社.2014.

猜你喜歡
網(wǎng)站部署架構(gòu)
基于FPGA的RNN硬件加速架構(gòu)
一種基于Kubernetes的Web應(yīng)用部署與配置系統(tǒng)
晉城:安排部署 統(tǒng)防統(tǒng)治
功能架構(gòu)在電子電氣架構(gòu)開發(fā)中的應(yīng)用和實(shí)踐
部署
LSN DCI EVPN VxLAN組網(wǎng)架構(gòu)研究及實(shí)現(xiàn)
河洛文化旅游資源外宣網(wǎng)站日譯現(xiàn)狀調(diào)查及對(duì)策研究
文管綜合實(shí)踐教學(xué)中心網(wǎng)站建設(shè)與維護(hù)
部署“薩德”意欲何為?
一種基于FPGA+ARM架構(gòu)的μPMU實(shí)現(xiàn)