詳解php處理大并發(fā)大流量大存儲(chǔ)
一、判斷大型網(wǎng)站的標(biāo)準(zhǔn)
1、pv(page views)網(wǎng)頁(yè)的瀏覽量
概念 一個(gè)網(wǎng)站所有的頁(yè)面,在24小時(shí)內(nèi)被訪問(wèn)的總的次數(shù)。千萬(wàn)級(jí)別,百萬(wàn)級(jí)別,
2、uv值(unique vistor)獨(dú)立訪客
概念:一個(gè)網(wǎng)站,在24小時(shí)內(nèi),有多少個(gè)用戶來(lái)訪問(wèn)我們的網(wǎng)站。達(dá)到10萬(wàn)
3、獨(dú)立ip,重點(diǎn)內(nèi)容
概念:一個(gè)網(wǎng)站,在24小時(shí)內(nèi),有多少個(gè)ip來(lái)訪問(wèn)我們的網(wǎng)站。
uv值約等于獨(dú)立ip.如果要考慮局域網(wǎng),uv值略大于獨(dú)立ip
二、大型網(wǎng)站帶來(lái)的一些問(wèn)題
1、大的并發(fā)
并發(fā)量:在同一時(shí)間點(diǎn)(1秒內(nèi)),有多少個(gè)用戶同時(shí)訪問(wèn)我們的網(wǎng)站。對(duì)同一個(gè)網(wǎng)址,同時(shí)刷新瀏覽器。達(dá)到500,就非常大了。
假如并發(fā)量是500,pv值是多少。500*3600*10
2、大流量
網(wǎng)站需要的大的帶寬。10G.
3、大的存儲(chǔ)
網(wǎng)站中的數(shù)據(jù)庫(kù),表的容量成海量趨勢(shì),GT級(jí)別,如何快速的查找出想要的數(shù)據(jù)。
三、大并發(fā)的解決方案
1、負(fù)載均衡器
硬件:f5-bigip 性能比較好,立竿見(jiàn)影,價(jià)格昂貴,一般適合于大型網(wǎng)站公司,網(wǎng)游公司。
軟件:
lvs(linux virtual server)linux虛擬服務(wù),加入到linux的內(nèi)核中。
nginx:可以做web服務(wù)器(apache),還可以做負(fù)載均衡。
2、負(fù)載均衡實(shí)現(xiàn)的方式
主要有:
輪詢技術(shù):客戶端請(qǐng)求服務(wù)器輪流轉(zhuǎn)發(fā)。
ip哈希:同一ip地址的客戶端,始終請(qǐng)求同一臺(tái)服務(wù)器。
最少連接:把請(qǐng)求轉(zhuǎn)發(fā)給最空閑的服務(wù)器。
3、集群
主要是解決計(jì)算機(jī)單點(diǎn)故障,在一個(gè)集群中的計(jì)算機(jī),只有一臺(tái)計(jì)算機(jī)工作,其他計(jì)算機(jī)處于休眠狀態(tài),監(jiān)視正在工作的計(jì)算機(jī),當(dāng)正在工作的計(jì)算機(jī)出現(xiàn)問(wèn)題,則休眠的計(jì)算機(jī)立刻接替工作。
四、大流量解決方案
1、防止我們的網(wǎng)站資源被盜鏈
可以采用一些非技術(shù)手段防止被盜鏈,在圖片上添加水印
2、減少http請(qǐng)求
主要手段就是合并js文件,css文件,背景圖片的文件。將瀏覽器需要的樣式文件或者js文件,合并成一個(gè)樣式文件或js文件。比如通過(guò)背景圖片舉個(gè)例子。
3、啟用壓縮
減少數(shù)據(jù)傳輸?shù)臄?shù)據(jù)量,常見(jiàn)的壓縮格式是:gzip,deflate.
4、通過(guò)瀏覽器緩存數(shù)據(jù)內(nèi)容
在網(wǎng)站中有一些資源,比如js文件,css文件,一些圖片文件,更新的頻率比較少。通過(guò)個(gè)設(shè)置http的cache-control expires屬性來(lái)進(jìn)行設(shè)置緩存,可以設(shè)置緩存的文件類(lèi)型,設(shè)置緩存的緩存周期,
5、可以把比較占用流量的一些資源,單獨(dú)組建一個(gè)服務(wù)器
比如圖片服務(wù)器,視頻服務(wù)器等。
五、大存儲(chǔ)解決方案
1、緩存技術(shù)
通過(guò)緩存技術(shù),達(dá)到不查詢數(shù)據(jù)庫(kù)或者少查詢數(shù)據(jù)庫(kù)的目的。
計(jì)算機(jī)的訪問(wèn)速度,內(nèi)存》硬盤(pán)文件》數(shù)據(jù)庫(kù)
緩存技術(shù)主要有:
磁盤(pán)緩存(頁(yè)面靜態(tài)化),把一個(gè)查詢數(shù)據(jù)庫(kù)的頁(yè)面變成一個(gè)不查詢數(shù)據(jù)庫(kù)的頁(yè)面
內(nèi)存緩存:把經(jīng)常查詢的數(shù)據(jù)保存到內(nèi)存里面,下次查詢數(shù)據(jù)時(shí)候直接在 內(nèi)存里面查詢。
(memcache/redis/mysql的memory引擎)
2、在設(shè)計(jì)表的時(shí)候,要滿足3范式
第一范式是:原子性,字段不能再分割了。只要是關(guān)系型數(shù)據(jù)庫(kù)就自動(dòng)滿足第一范式:
數(shù)據(jù)庫(kù)的分類(lèi):
關(guān)系型數(shù)據(jù)庫(kù):有行和 列的概念,二維表格。常見(jiàn)的關(guān)系型數(shù)據(jù)庫(kù):mysql,sql server,oracle,db2,
非關(guān)系型數(shù)據(jù)庫(kù)(nosql)面向集合和 文檔的,沒(méi)有行和列的概念常見(jiàn)的有redis/mongodb等。
第二范式:在一個(gè)表中不能有完全相同的記錄??梢酝ㄟ^(guò)設(shè)置一個(gè)主鍵。
第三范式:表中的字段不能冗余存儲(chǔ)。
3、要給表添加適當(dāng)?shù)乃饕?/p>
索引非常重要的,可以提高查詢速度。
常見(jiàn)索引有:主鍵索引,唯一索引,普通索引,全文索引,
4、要?jiǎng)?chuàng)建適當(dāng)?shù)拇鎯?chǔ)過(guò)程,函數(shù),觸發(fā)器等
5、讀寫(xiě)分離(主從服務(wù)器)
6、分表技術(shù)(垂直分割和水平分割)
7、分區(qū)技術(shù)
把一個(gè)表的數(shù)據(jù)內(nèi)容,在不同的 區(qū)域存儲(chǔ),
8、升級(jí)mysql服務(wù)器(添加配置:加大內(nèi)容,64位)
9、要對(duì)sql語(yǔ)句進(jìn)行調(diào)優(yōu)
select * from tablename 該語(yǔ)句不要使用,要按需查詢。需要哪個(gè)字段的數(shù)據(jù),就查詢哪個(gè)字段的數(shù)據(jù)。
10、對(duì)配置文件進(jìn)行優(yōu)化配置
比如配置mysql數(shù)據(jù)庫(kù)的并發(fā)量:
以上就是詳解php處理大并發(fā)、大流量、大存儲(chǔ)的詳細(xì)內(nèi)容,更多關(guān)于php的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
- PHP并發(fā)場(chǎng)景的三種解決方案代碼實(shí)例
- php并發(fā)加鎖問(wèn)題分析與設(shè)計(jì)代碼實(shí)例講解
- PHP解決高并發(fā)的優(yōu)化方案實(shí)例
- php多進(jìn)程模擬并發(fā)事務(wù)產(chǎn)生的問(wèn)題小結(jié)
- PHP利用Mysql鎖解決高并發(fā)的方法
- php curl批處理實(shí)現(xiàn)可控并發(fā)異步操作示例
- php處理?yè)屬?gòu)類(lèi)功能的高并發(fā)請(qǐng)求
- PHP+Redis 消息隊(duì)列 實(shí)現(xiàn)高并發(fā)下注冊(cè)人數(shù)統(tǒng)計(jì)的實(shí)例
- PHP開(kāi)發(fā)中解決并發(fā)問(wèn)題的幾種實(shí)現(xiàn)方法分析
- PHP使用Redis實(shí)現(xiàn)防止大并發(fā)下二次寫(xiě)入的方法
- php結(jié)合redis高并發(fā)下發(fā)帖、發(fā)微博的實(shí)現(xiàn)方法
相關(guān)文章
PHP入門(mén)教程之自定義函數(shù)用法詳解(創(chuàng)建,調(diào)用,變量,參數(shù),返回值等)
這篇文章主要介紹了PHP入門(mén)教程之自定義函數(shù)用法,結(jié)合實(shí)例形式分析了php關(guān)于自定義函數(shù)的創(chuàng)建、返回值、參數(shù)、調(diào)用方法以及全局變量、魔法常量的使用等相關(guān)技巧,需要的朋友可以參考下2016-09-09PHP單元測(cè)試PHPUnit簡(jiǎn)單用法示例
這篇文章主要介紹了PHP單元測(cè)試PHPUnit簡(jiǎn)單用法,結(jié)合實(shí)例形式分析了PHPUnit的安裝、單元測(cè)試簡(jiǎn)單操作技巧,需要的朋友可以參考下2018-07-07PHP對(duì)象、模式與實(shí)踐之高級(jí)特性分析
這篇文章主要介紹了PHP對(duì)象、模式與實(shí)踐之高級(jí)特性,結(jié)合實(shí)例形式分析了php面向?qū)ο蟪绦蛟O(shè)計(jì)中的靜態(tài)屬性和方法、抽象類(lèi)、接口、攔截器、克隆對(duì)象等概念與簡(jiǎn)單實(shí)現(xiàn)方法,需要的朋友可以參考下2016-12-12php更改目錄及子目錄下所有的文件后綴擴(kuò)展名的代碼
今天遇到要改變當(dāng)前目錄下指定類(lèi)型的文件類(lèi)型,本來(lái)想要用批處理來(lái)做這個(gè),結(jié)果沒(méi)找到合適。就自己去查了下資料,用Php來(lái)處理一下。2010-10-10關(guān)于php mvc開(kāi)發(fā)模式的感想
使用mvc開(kāi)發(fā)已經(jīng)有一段很長(zhǎng)時(shí)間了,發(fā)現(xiàn)了一些問(wèn)題。2011-06-06解析PHP中數(shù)組元素升序、降序以及重新排序的函數(shù)
本篇文章是對(duì)PHP中數(shù)組元素升序、降序以及重新排序的函數(shù)進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06PHP接收json 并將接收數(shù)據(jù)插入數(shù)據(jù)庫(kù)的實(shí)現(xiàn)代碼
這篇文章主要介紹了PHP接收json 并將接收數(shù)據(jù)插入數(shù)據(jù)庫(kù)的實(shí)現(xiàn)代碼,需要的朋友可以參考下2015-12-12