淺論建設中小型企業(yè)的高性能linux 架構論文
前言

在當今這樣高速和大數據的互聯(lián)網(wǎng)時(shí)代,每個(gè)企業(yè)都希望以最節約成本、最簡(jiǎn)單的方式來(lái)建設企業(yè)網(wǎng)站,而合理的規劃網(wǎng)站架構是保證網(wǎng)站正常運營(yíng)的基礎,因此我們需要一個(gè)高性能、高可用以及高穩定性的網(wǎng)站架構。
通常情況下,公司網(wǎng)站需要提供如下服務(wù),包括:圖片上傳下載、文件上傳下載、Web 頁(yè)面訪(fǎng)問(wèn)、數據庫訪(fǎng)問(wèn)、應用服務(wù)和日志等,這些服務(wù)往往由一臺或者多臺服務(wù)器提供,另外為了保證服務(wù)器的穩定運行,還要考慮加入必要的容錯機制,如數據庫的備份、等,服務(wù)器越少,硬件成本越低,但服務(wù)器壓力增大,性能降低,維護成本會(huì )升高。服務(wù)器劃分的過(guò)細,雖能提升網(wǎng)站性能,但服務(wù)器間協(xié)同工作開(kāi)發(fā)成本提高,硬件成本也會(huì )增加。因此,各公司都試圖從軟架構和硬架構上進(jìn)行了最大限度的改造,設計能夠很好的與自身的業(yè)務(wù)吻合,最大限度的提供高性能的服務(wù)架構。
綜合考慮以上問(wèn)題,本文結合中小型企業(yè)網(wǎng)站自身特點(diǎn),提出一套能滿(mǎn)足中小型企業(yè)網(wǎng)站業(yè)務(wù)需求、并且能最大限度的提供高性能、低成本的服務(wù)器架構。
1 構建高性能的服務(wù)器
中小型企業(yè)網(wǎng)站具有以下特點(diǎn):
(1)應用簡(jiǎn)單,中小型企業(yè)網(wǎng)站通常以Web 應用為主,配合獨立的數據存儲。
(2)訪(fǎng)問(wèn)內容重復性高,每個(gè)用戶(hù)訪(fǎng)問(wèn)的幾乎都是一樣的數據,而且短時(shí)間內變化不大。
(3)訪(fǎng)問(wèn)時(shí)間集中,用戶(hù)訪(fǎng)問(wèn)都集中在某一個(gè)時(shí)間段,所以需要一定的容錯機制和高負載性。
(4)日均訪(fǎng)問(wèn)量都在百萬(wàn)PV 以下。針對中小企業(yè)網(wǎng)站所具有的特點(diǎn),提出以下幾點(diǎn)解決方案:
(1)Web 服務(wù)器與數據庫服務(wù)器分離, 這樣做一方面降低磁盤(pán)IO,可以減緩Web 服務(wù)器也可以提高數據庫服務(wù)器性能,另外,數據庫服務(wù)器對內網(wǎng)使用,提高安全性能。
(2)提供緩存機制,對網(wǎng)站中包含的靜態(tài)的公共數據進(jìn)行緩存,而對需要實(shí)時(shí)更新的網(wǎng)站內容不進(jìn)行緩存,減少磁盤(pán)IO 的次數,同時(shí)提高網(wǎng)站性能。
(3)對于一個(gè)網(wǎng)站來(lái)說(shuō),查詢(xún)靜態(tài)資源的量顯然多與動(dòng)態(tài)頁(yè)面的量,網(wǎng)站最影響性能的地方就在于靜態(tài)文件的處理,從提升網(wǎng)站性能的角度考慮,靜態(tài)資源不應和應用服務(wù)器放在一起,可以使用反向代理分離靜態(tài)資源與動(dòng)態(tài)頁(yè)面。
(4)為保證Web 服務(wù)穩定性,采用雙應用服務(wù)器,并且把session管理放到內存數據庫進(jìn)行管理,分擔一部分應用服務(wù)器壓力,從而提升服務(wù)器的處理性能。
(5)后端數據庫采用主從雙機熱備數據庫配置,保障兩臺數據庫的數據一致,以保護企業(yè)數據結構不受故障、災難、錯誤和崩潰的影響,當出現主庫數據異常情況時(shí),備庫隨時(shí)可用.服務(wù)器框架設計。
該框架分為三層:負載均衡層、應用服務(wù)層、數據存儲層。
(1) 負載均衡層由兩部分組成,Squid 作為負載均衡的第一層,Web 程序本身訪(fǎng)問(wèn)量最大的是一些靜態(tài)文件(JS、CSS、圖片文件等),幾乎占了半數以上的訪(fǎng)問(wèn)請求,因此最前端使用Squid 完成靜態(tài)資源緩存,Squid 自身支持多重緩存策略:最少近來(lái)使用(LRU),貪婪對偶大小次數(GDSF)和動(dòng)態(tài)衰老最少經(jīng)常使用(LFUDA),使用Squid 可以有效降低磁盤(pán)I/O 次數,縮短響應時(shí)間,提升Web 服務(wù)性能。Nginx 作為負載均衡的第二層,用來(lái)處理一些靜態(tài)文件,能夠大量減少應用服務(wù)器的壓力,讓?xiě)梅⻊?wù)器僅僅只作為一個(gè)處理業(yè)務(wù)的容器,職責單一化。通過(guò)負載均衡這兩層的過(guò)濾,大量請求都被Squid 和Nginx 攔截下,使得后面的業(yè)務(wù)層可以專(zhuān)注完成實(shí)際業(yè)務(wù)處理,從而有效提高服務(wù)器性能。另外,Squid 和Nginx 誰(shuí)作為負載均衡第一層都可以,用戶(hù)可根據實(shí)際情況作為調整。
(2)應用服務(wù)層,用來(lái)處理一些動(dòng)態(tài)的業(yè)務(wù)邏輯,這里以Tomcat服務(wù)器為例,一個(gè)Tomcat 已經(jīng)足夠應對中小型企業(yè)的用戶(hù)訪(fǎng)問(wèn)量,經(jīng)過(guò)一些嘗試,在每分鐘訪(fǎng)問(wèn)量在4000 左右PV 的情況下,到達Tomcat的請求量最多也就上百左右。
從實(shí)踐經(jīng)驗來(lái)說(shuō), 應用服務(wù)器常常因為一些升級和不穩定功能,導致Tomcat 在運行一段時(shí)間后服務(wù)掛掉的情況, 應用服務(wù)器在進(jìn)行大量計算的時(shí)候需要占有更多的CPU, 導致響應慢和內存不足的多種情況,同時(shí)多個(gè)用戶(hù)的登錄也會(huì )給應用服務(wù)器內存產(chǎn)生一部分的內存壓力。針對這一情況,可以采用多個(gè)應用服務(wù)器去處理業(yè)務(wù),并且把Session 的管理從應用服務(wù)器中分離出來(lái),讓多個(gè)應用服務(wù)器去處理業(yè)務(wù),并且采用單獨的Redis 內存數據庫去進(jìn)行管理和連接多個(gè)應用服務(wù)器。
(3)數據存儲層,為保證數據的完整性、防止數據丟失,采用主、從數據庫服務(wù)器的設計方式, 雙機熱備的這種方式主要是通過(guò)主機,把數據復制到相應的其他從服務(wù)器上去(Slaves)。主服務(wù)器將更新寫(xiě)進(jìn)二進(jìn)制日志文件中, 并且維護文件的一個(gè)索引,Slaves 連接上主服務(wù)器(Master)從服務(wù)器在日志中讀取最后一次更新的位置,當主服務(wù)器掛掉的時(shí)候能夠進(jìn)行切換。
MySQL 是通過(guò)對數據的復制來(lái)保證數據的統一性。整體來(lái)說(shuō),MySQL 的復制分為三個(gè)步驟:
(1)Master 將改變記錄到二進(jìn)制日志(binary log)中。
(2)Slave 將master 的binary log events 拷貝到它的中繼日志(relaylog)。
(3)Slave 重做中繼日志中的事件,將改變反映它自己的數據。
2 總結
針對與中小型企業(yè)來(lái)說(shuō), 該套系統能夠輕松的應對日均百萬(wàn)的PV 訪(fǎng)問(wèn)量,但是也存在著(zhù)不足的地方,前端過(guò)于單薄,需要把靜態(tài)文件放到單獨的文件服務(wù)器上去,同時(shí)一旦最前端掛掉,會(huì )導致整個(gè)系統的奔潰。但是基于中小型企業(yè)的用戶(hù)量來(lái)說(shuō)卻是足夠的,不用擔心該問(wèn)題。
【淺論建設中小型企業(yè)的高性能linux 架構論文】相關(guān)文章:
淺論小學(xué)班級文化建設中的評價(jià)策略教學(xué)論文03-16
淺論酒文化研究的論文提綱12-08
淺論翻譯的歸化和異化論文06-09
淺論企業(yè)儀式在煙草企業(yè)文化建設中的作用11-16
教育的語(yǔ)言藝術(shù)淺論論文11-13
- 相關(guān)推薦