PHP語言開發(fā)高并發(fā)的網(wǎng)站,需要加緩存,復(fù)雜邏輯走消息隊列異步處理,mysql查詢必須走索引,還搞不定就加機器分流,mysql配置升高并且一主多從,使用codis集群,增加消息隊列的消費者,如果還搞不定就隨機拒絕請求,當(dāng)然這是最后的退路。
成都創(chuàng)新互聯(lián)公司專注于企業(yè)全網(wǎng)整合營銷推廣、網(wǎng)站重做改版、阜寧網(wǎng)站定制設(shè)計、自適應(yīng)品牌網(wǎng)站建設(shè)、H5網(wǎng)站設(shè)計、商城網(wǎng)站建設(shè)、集團公司官網(wǎng)建設(shè)、外貿(mào)網(wǎng)站制作、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計等建站業(yè)務(wù),價格優(yōu)惠性價比高,為阜寧等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。
緩存
緩存是避免業(yè)務(wù)查詢過多的請求mysql,導(dǎo)致業(yè)務(wù)不可用,段氏根據(jù)場景來判斷是否需要使用codis集群,如果并發(fā)量沒有達(dá)到某個級別,16G的redis也可以,但是要避免redis在高并發(fā)下容易發(fā)生的緩存穿透,盡量做成高可用,并保證緩存實現(xiàn)的命中率。
消息隊列
這也是高并發(fā)情境下的殺手锏,削峰填谷,將耗時的業(yè)務(wù)邏輯直接以隊列的形式異步慢慢處理,防止請求過度積壓,導(dǎo)致的服務(wù)器不可用。
mysql優(yōu)化
有些場景下必須查詢mysql的,也應(yīng)該走索引,避免多表聯(lián)合查詢,甚至mysql的事務(wù)隔離級別都盡量的降低,或者直接去掉事務(wù),采用最終一致性的補償指明機制。升級mysql的配置,核心數(shù)和內(nèi)存的提升對查詢速度的優(yōu)化是顯而易見的,最好能一步到位的走一主多從,查詢路由到從服務(wù)器上。
隨機拒絕請求
這不是開玩笑,我們必須保證服務(wù)器可用,寧愿拒絕掉一些請求,也不能讓服務(wù)器大量請求阻塞握逗散,最終導(dǎo)致大家都用不了。
可以采碧基用數(shù)據(jù)庫緩存、事務(wù)緩存等技巧。還可以從架構(gòu)上把事務(wù)做合理的分配,花錢擴充你的硬件設(shè)施等。比如,阿里巴巴哪做從最初的1臺電腦逐步擴充到過萬臺電腦了。
與PHP程序關(guān)系也非常大,比如,你發(fā)現(xiàn)了網(wǎng)站反應(yīng)慢的第一因素是因為某個表非常大,你的網(wǎng)頁從那個庫表中讀寫時間非常長,可以考慮用一個原則把數(shù)據(jù)庫表分段,每一段存到不同的計算機上去保存,你的程序需要讀寫那個表的時候,先判斷要讀寫的內(nèi)容屬于哪一段的,然后再去從已經(jīng)建立了永久連接的清單中找到對應(yīng)段的連接來用。
阿里巴巴有個例子:每一種商品的屬性字段內(nèi)容打印出來就要5頁A4紙,160多萬種商品,如果你要從包含了悔緩謹(jǐn)商品屬性字段的那張表中進(jìn)行讀寫,該是多長時間?