高并發(fā)高負(fù)載系統(tǒng)架構(gòu)_第1頁(yè)
高并發(fā)高負(fù)載系統(tǒng)架構(gòu)_第2頁(yè)
高并發(fā)高負(fù)載系統(tǒng)架構(gòu)_第3頁(yè)
高并發(fā)高負(fù)載系統(tǒng)架構(gòu)_第4頁(yè)
高并發(fā)高負(fù)載系統(tǒng)架構(gòu)_第5頁(yè)
已閱讀5頁(yè),還剩15頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

高并發(fā)高負(fù)載系統(tǒng)架構(gòu)二OO九年十一月目錄1、為什么要進(jìn)行高并發(fā)和高負(fù)載的研究2、高并發(fā)和高負(fù)載的約束條件3、解決之道——硬件篇4、解決之道——部署篇5、解決之道——環(huán)境篇6、解決之道——SiteEngine篇7、解決之道——測(cè)試篇8、結(jié)尾為什么要進(jìn)行高并發(fā)和高負(fù)載的研究1、產(chǎn)品開展的需要2、公司開展的需要3、當(dāng)前形式?jīng)Q定的高并發(fā)和高負(fù)載的約束條件1、硬件2、部署3、操作系統(tǒng)4、Web效勞器5、PHP6、MySQL7、測(cè)試解決之道——硬件篇處理能力的提升:部署多顆CPU,選擇多核心、具備更高運(yùn)算頻率、更大高速緩存的CPU;處理能力的提升最直接的反響在于Web請(qǐng)求的處理效率和PHP程序的執(zhí)行效率。內(nèi)存帶寬與容量:更大的內(nèi)存帶寬和容量;內(nèi)存帶寬與容量的提升最直接的反響在于應(yīng)對(duì)數(shù)據(jù)庫(kù)大量的數(shù)據(jù)交換。磁盤搜索與I/O能力:選擇更高的轉(zhuǎn)速、更大的硬盤緩存、組件磁盤陣列〔RAID〕;磁盤搜索與I/O能力的提升最直接反響在于數(shù)據(jù)庫(kù)大量的查詢和讀寫以及文件的讀寫。網(wǎng)絡(luò)帶寬的提升可考慮的因素包括:更大帶寬、多線路接入、獨(dú)享帶寬;效勞器在大負(fù)載的情況下,對(duì)網(wǎng)絡(luò)帶寬的占用是十分可觀的。策略:硬件設(shè)施是應(yīng)對(duì)大負(fù)載的根底,硬件設(shè)施的投入可根據(jù)實(shí)際壓力和預(yù)算量力而行。解決之道——部署篇1、效勞器別離2、數(shù)據(jù)庫(kù)集群和庫(kù)表散列3、鏡像4、負(fù)載均衡

分類: 1)、DNS輪循 2〕代理效勞器負(fù)載均衡 3〕地址轉(zhuǎn)換網(wǎng)關(guān)負(fù)載均衡 4〕NAT負(fù)載均衡 5〕反向代理負(fù)載均衡 6〕混合型負(fù)載均衡策略:根據(jù)硬件投入和業(yè)務(wù)需求,選擇合理的部署方案。解決之道——部署篇——方案一適用范圍:靜態(tài)內(nèi)容為主體的網(wǎng)站和應(yīng)用系統(tǒng);對(duì)系統(tǒng)平安要求較高的網(wǎng)站和應(yīng)用系統(tǒng)。MainServer:主效勞器承載程序的主體運(yùn)行壓力,處理網(wǎng)站或應(yīng)用系統(tǒng)中的動(dòng)態(tài)請(qǐng)求;將靜態(tài)頁(yè)面推送至多個(gè)發(fā)布效勞器;將附件文件推送至文件效勞器;平安要求較高,以靜態(tài)為主的網(wǎng)站,可將效勞器置于內(nèi)網(wǎng)屏蔽外網(wǎng)的訪問。DBServer:數(shù)據(jù)庫(kù)效勞器承載數(shù)據(jù)庫(kù)讀寫壓力;只與主效勞器進(jìn)行數(shù)據(jù)量交換,屏蔽外網(wǎng)訪問。File/VideoServer:文件/視頻效勞器承載系統(tǒng)中占用系統(tǒng)資源和帶寬資源較大的數(shù)據(jù)流;作為大附件的存儲(chǔ)和讀寫倉(cāng)庫(kù);作為視頻效勞器將具備視頻自動(dòng)處理能力。發(fā)布效勞器組:只負(fù)責(zé)靜態(tài)頁(yè)面的發(fā)布,承載絕大多數(shù)的Web請(qǐng)求;通過Nginx進(jìn)行負(fù)載均衡部署。解決之道——部署篇——方案二適用范圍:以動(dòng)態(tài)交互內(nèi)容為主體的網(wǎng)站或應(yīng)用系統(tǒng);負(fù)載壓力較大,且預(yù)算比較充足的網(wǎng)站或應(yīng)用系統(tǒng);Web效勞器組:Web效勞無主從關(guān)系,屬平行冗余設(shè)計(jì);通過前端負(fù)載均衡設(shè)備或Nginx反向代理實(shí)現(xiàn)負(fù)載均衡;劃分專用文件效勞器/視頻效勞器有效別離輕/重總線;每臺(tái)Web效勞器可通過DEC可實(shí)現(xiàn)連接所有數(shù)據(jù)庫(kù),同時(shí)劃分主從。數(shù)據(jù)庫(kù)效勞器組:相對(duì)均衡的承載數(shù)據(jù)庫(kù)讀寫壓力;通過數(shù)據(jù)庫(kù)物理文件的映射實(shí)現(xiàn)多數(shù)據(jù)庫(kù)的數(shù)據(jù)同步。共享磁盤/磁盤陣列將用于數(shù)據(jù)物理文件的統(tǒng)一讀寫用于大型附件的存儲(chǔ)倉(cāng)庫(kù)通過自身物理磁盤的均衡和冗余,確保整體系統(tǒng)的IO效率和數(shù)據(jù)平安;方案特性:通過前端負(fù)載均衡,合理分配Web壓力;通過文件/視頻效勞器與常規(guī)Web效勞器的別離,合理分配輕重?cái)?shù)據(jù)流;通過數(shù)據(jù)庫(kù)效勞器組,合理分配數(shù)據(jù)庫(kù)IO壓力;每臺(tái)Web效勞器通常只連接一臺(tái)數(shù)據(jù)庫(kù)效勞器,通過DEC的心跳檢測(cè),可在極短時(shí)間內(nèi)自動(dòng)切換至冗余數(shù)據(jù)庫(kù)效勞器;磁盤陣列的引入,大幅提升系統(tǒng)IO效率的同時(shí),極大增強(qiáng)了數(shù)據(jù)平安性。解決之道——環(huán)境篇1、操作系統(tǒng)2、Web效勞器3、Mysql4、PHP5、代理效勞器〔緩存效勞器〕解決之道——環(huán)境篇——操作系統(tǒng)操作系統(tǒng)的選擇,關(guān)注點(diǎn)在于是否適應(yīng)于搭建SiteEngine所需要的環(huán)境程序?系統(tǒng)本身占用的資源比;系統(tǒng)平安性;系統(tǒng)是否易于操作?策略:我們選擇FreeBSD,而且是最小化安裝以后的FreeBSD。解決之道——環(huán)境篇——Web效勞器Web效勞器很大一局部資源占用來自于處理Web請(qǐng)求,通常情況下這也就是Apache產(chǎn)生的壓力,Apache是世界使用排名第一的Web效勞器軟件。它可以運(yùn)行在幾乎所有廣泛使用的計(jì)算機(jī)平臺(tái)上。在高并發(fā)連接的情況下,Nginx是Apache效勞器不錯(cuò)的替代品。Nginx(“enginex”)是俄羅斯人編寫的一款高性能的HTTP和反向代理效勞器。在國(guó)內(nèi),已經(jīng)有新浪、搜狐通行證、網(wǎng)易新聞、網(wǎng)易博客、金山逍遙網(wǎng)、金山愛詞霸、校內(nèi)網(wǎng)、YUPOO相冊(cè)、豆瓣、迅雷看看等多家網(wǎng)站、頻道使用Nginx效勞器。Nginx的優(yōu)勢(shì):高并發(fā)連接:官方測(cè)試能夠支撐5萬(wàn)并發(fā)連接,在實(shí)際生產(chǎn)環(huán)境中跑到2~3萬(wàn)并發(fā)連接數(shù)。內(nèi)存消耗少:在3萬(wàn)并發(fā)連接下,開啟的10個(gè)Nginx進(jìn)程才消耗150M內(nèi)存〔15M*10=150M〕。內(nèi)置的健康檢查功能:如果NginxProxy后端的某臺(tái)Web效勞器宕機(jī)了,不會(huì)影響前端訪問。

策略:相對(duì)于老牌的Apache,我們選擇Ligd和Nginx這些具有更小的資源占用率和更高的負(fù)載能力的web效勞器。解決之道——環(huán)境篇——MysqlMySQL本身具備了很強(qiáng)的負(fù)載能力,MySQL優(yōu)化是一項(xiàng)很復(fù)雜的工作,因?yàn)檫@最終需要對(duì)系統(tǒng)優(yōu)化的很好理解。大家都知道數(shù)據(jù)庫(kù)工作就是大量的、短時(shí)的查詢和讀寫,除了程序開發(fā)時(shí)需要注意建立索引、提高查詢效率等軟件開發(fā)技巧之外,從硬件設(shè)施的角度影響MySQL執(zhí)行效率最主要來自于磁盤搜索、磁盤IO水平、CPU周期、內(nèi)存帶寬。根據(jù)效勞器上的硬件和軟件條件進(jìn)行MySQl優(yōu)化。MySQL優(yōu)化的核心在于系統(tǒng)資源的分配,這不等于無限制的給MySQL分配更多的資源。在MySQL配置文件中我們介紹幾個(gè)最值得關(guān)注的參數(shù):改變索引緩沖區(qū)長(zhǎng)度(key_buffer)改變表長(zhǎng)(read_buffer_size)設(shè)定翻開表的數(shù)目的最大值(table_cache)對(duì)緩長(zhǎng)查詢?cè)O(shè)定一個(gè)時(shí)間限制(long_query_time)如果條件允許,一般MySQL效勞器最好安裝在Linux操作系統(tǒng)中,而不是安裝在FreeBSD中。

策略:MySQL優(yōu)化需要根據(jù)業(yè)務(wù)系統(tǒng)的數(shù)據(jù)庫(kù)讀寫特性和效勞器硬件配置,制定不同的優(yōu)化方案,并且可以根據(jù)需要部署MySQL的主從結(jié)構(gòu)。解決之道——環(huán)境篇——PHP1、加載盡可能少的模塊;2、如果是在windows平臺(tái)下,盡可能使用IIS或者Nginx來替代我們平常用的Apache;3、安裝加速器〔都是通過緩存php代碼預(yù)編譯的結(jié)果和數(shù)據(jù)庫(kù)結(jié)果來提高php代碼的執(zhí)行速度〕

eAcceleratoreAccelerator是一個(gè)自由開放源碼php加速器,優(yōu)化和動(dòng)態(tài)內(nèi)容緩存,提高了性能php腳本的緩存性能,使得PHP腳本在編譯的狀態(tài)下,對(duì)效勞器的開銷幾乎完全消除。ApcAlternativePHPCache〔APC〕是PHP的一個(gè)免費(fèi)公開的優(yōu)化代碼緩存。它用來提供免費(fèi),公開并且強(qiáng)健的架構(gòu)來緩存和優(yōu)化PHP的中間代碼。memcachememcache是由DangaInteractive開發(fā)的,高性能的,分布式的內(nèi)存對(duì)象緩存系統(tǒng),用于在動(dòng)態(tài)應(yīng)用中減少數(shù)據(jù)庫(kù)負(fù)載,提升訪問速度。主要機(jī)制是通過在內(nèi)存里維護(hù)一個(gè)統(tǒng)一的巨大的hash表,Memcache能夠用來存儲(chǔ)各種格式的數(shù)據(jù),包括圖像、視頻、文件以及數(shù)據(jù)庫(kù)檢索的結(jié)果等Xcache國(guó)人開發(fā)的緩存器,策略:為PHP安裝加速器。解決之道——環(huán)境篇——代理效勞器SquidCache〔簡(jiǎn)稱為Squid〕是一個(gè)流行的自由軟件〔GNU通用公共許可證〕的代理效勞器和Web緩存效勞器。Squid有廣泛的用途,從作為網(wǎng)頁(yè)效勞器的前置cache效勞器緩存相關(guān)請(qǐng)求來提高Web效勞器的速度,到為一組人共享網(wǎng)絡(luò)資源而緩存萬(wàn)維網(wǎng),域名系統(tǒng)和其他網(wǎng)絡(luò)搜索,到通過過濾流量幫助網(wǎng)絡(luò)平安,到局域網(wǎng)通過代理上網(wǎng)。Squid主要設(shè)計(jì)用于在Unix一類系統(tǒng)運(yùn)行。

策略:安裝Squid反向代理效勞器,能夠大幅度提高效勞器效率。解決之道——環(huán)境篇——總結(jié)推薦的效勞器環(huán)境配置:操作系統(tǒng): FreeBSD

web效勞器: Nginx程序語(yǔ)言: PHP+ZendOptimizer+eAccelerator數(shù)據(jù)庫(kù): MySQL解決之道——SiteEngine篇SiteEngine歷史上為了解決高并發(fā)高負(fù)載做了那些工作:1、靜態(tài)化;2、緩存;3、內(nèi)存表;4、定長(zhǎng)表;5、盡可能少用join還有IN。解決之道——SiteEngine篇SiteEngine在實(shí)施高并發(fā)高負(fù)載中出現(xiàn)的問題:SiteEngine在前期的開展中,一直是面向通用型的中小網(wǎng)站來設(shè)計(jì)的。從底層上就有不適應(yīng)高并發(fā)高負(fù)載的機(jī)制存在。具體表現(xiàn)在:1、原有緩存功能,特別是類別的緩存無用武之地;2、無用的sql查詢和sql查詢的效率問題;3、多語(yǔ)言設(shè)計(jì)導(dǎo)致很多查詢都變得復(fù)雜,導(dǎo)致效率低下;4、Mysql中的查詢方法太多;5、前臺(tái)的動(dòng)態(tài)交互太少。解決之道——SiteEngine篇為了讓SiteEngine更好的適應(yīng)高并發(fā)高負(fù)載的環(huán)境。主要從以下幾個(gè)方面進(jìn)行改進(jìn):1、參加Memcache緩存技術(shù);2、開發(fā)一套精簡(jiǎn)版高效率的SiteEngine開發(fā)框架,專門應(yīng)對(duì)系統(tǒng)開發(fā);3、MySQL數(shù)據(jù)庫(kù)考慮轉(zhuǎn)為innodb數(shù)據(jù)引擎;4、前臺(tái)更大量的參加Ajax元素;5、改變類別模式或者改變類別算法,取消類別緩存機(jī)制;6、成立專門的研發(fā)部門,將工程開發(fā)和軟件研發(fā)分開;7、加強(qiáng)測(cè)試和團(tuán)隊(duì)合作。解決之道——測(cè)試篇1、測(cè)試方法2、測(cè)試用例3、壓力測(cè)試壓力測(cè)試是一種根本的質(zhì)量保證行為,它是每個(gè)重要軟件測(cè)試工作的一局部。壓力測(cè)試的根本思路很簡(jiǎn)單:不是在常規(guī)條件下運(yùn)行手動(dòng)或自動(dòng)測(cè)試,而是在計(jì)算機(jī)數(shù)量較少或系統(tǒng)資源匱乏的條件下運(yùn)行測(cè)試。通常要進(jìn)行壓力測(cè)試的資源包括內(nèi)部?jī)?nèi)存、CPU可用性、磁盤空間和網(wǎng)絡(luò)帶寬等。一般用并發(fā)來做壓力測(cè)試。壓力測(cè)試工具:webbench,ApacheBench等3、漏洞測(cè)試在我們的系統(tǒng)中漏洞主要包括:sql注入漏洞,xss跨站腳本攻擊等。平安方面還包括系統(tǒng)軟件,如操作系統(tǒng)漏洞,mysql、a

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論