昨天爆火的“香菇藍(lán)瘦”H5游戲的意想不到的爆發(fā)給我在技術(shù)角度上提了很高的要求搀继。
解決高并發(fā)大流量大致算個(gè)偽需求,以現(xiàn)在的硬件條件和價(jià)格來(lái)看翠语,絕大多數(shù)應(yīng)用開(kāi)發(fā)出來(lái)不會(huì)遇上如此場(chǎng)景叽躯。
有幸在一個(gè)月內(nèi)兩次面對(duì)這樣的極端場(chǎng)景:
“香菇藍(lán)瘦”H5小游戲峰值日訪問(wèn)5百萬(wàn),并發(fā)上千肌括。應(yīng)用本身基本是純靜態(tài)险毁,動(dòng)態(tài)部分是初始化向微信請(qǐng)求openid,分享出去時(shí)還有個(gè)服務(wù)器的請(qǐng)求存儲(chǔ)分享記錄们童。
我的服務(wù)器是雙核4G畔况,很普通的機(jī)器,能用這樣的機(jī)器勉強(qiáng)撐住其實(shí)很屌了慧库。處理如此場(chǎng)景不只是純技術(shù)問(wèn)題跷跪,還有一些聰明的解決之道。說(shuō)下我的一些解決方案齐板。
1.靜態(tài)資源CDN吵瞻。大多數(shù)程序員都知道,似乎也沒(méi)什么好說(shuō)橡羞。
2.配置調(diào)優(yōu)卿泽。我用的是Tengnie作反向代理签夭,ngnix在高并發(fā)下性能不錯(cuò)第租。
3.因?yàn)镃DN的域名不能與源站相同慎宾,所以html的請(qǐng)求得處理得遠(yuǎn)精小越好趟据,甚至body里的代碼可以一并放在js加載之宿,而js可以放在CDN上比被。香菇游戲的html就只有3K泼舱,gzip壓縮后只有1.8k尺迂。
4.ngnix再做個(gè)html緩存噪裕,進(jìn)一步降低web容器的壓力膳音。
5.分享出去的鏈接放個(gè)其他域名的html作為著陸頁(yè)祭陷,這個(gè)著陸頁(yè)內(nèi)部跳轉(zhuǎn)到應(yīng)用地址兵志。而這個(gè)html再放到CDN上,進(jìn)一步減少壓力弧呐。