產(chǎn)品詳情
扣扣 陸陸陸貳捌玖陸壹
大帶寬是一定要的 我們機(jī)房的BGP三線單IP服務(wù)器 103.219.31.* 訪問速度穩(wěn)定
線路優(yōu)化 CPU:i7/至強(qiáng) 內(nèi)存:8/32 GB硬盤:500GB SAS 帶寬:G口/100Mbps獨(dú)享
用戶多,不代表你服務(wù)器訪問量大,訪問量大不一定你服務(wù)器壓力大!我們換成專業(yè)點(diǎn)的問題,高并發(fā)下怎么優(yōu)化能避免服務(wù)器壓力過大。
1,整個(gè)架構(gòu):可采用分布式架構(gòu),利用微服務(wù)架構(gòu)拆分服務(wù)部署在不同的服務(wù)節(jié)點(diǎn),避免單節(jié)點(diǎn)宕機(jī)引起的服務(wù)不可用!
2,數(shù)據(jù)庫:采用主從復(fù)制,讀寫分離,甚至是分庫分表,表數(shù)據(jù)根據(jù)查詢方式的不同采用不同的索引比如b tree,b,關(guān)鍵字段加索引,sql避免復(fù)合函數(shù),避免組合排序等,避免使用非索引字段作為條件分組,排序等!減少交互次數(shù),一定不要用select *!
3,加緩存:使用諸如memcache,redis,ehcache等緩存數(shù)據(jù)庫定義表,結(jié)果表等等,數(shù)據(jù)庫的中間數(shù)據(jù)放緩存,避免多次訪問修改表數(shù)據(jù)!登錄信息session等放緩存實(shí)現(xiàn)共享!諸如商品分類,省市社區(qū),年齡分類等不常改變的數(shù)據(jù),放緩存,不要放數(shù)據(jù)庫!
同時(shí)要避免緩存雪崩和穿透等問題的出現(xiàn)導(dǎo)致緩存崩潰!
4,增量統(tǒng)計(jì):不要實(shí)時(shí)統(tǒng)計(jì)大量的數(shù)據(jù),應(yīng)該采用晚間定時(shí)任務(wù)統(tǒng)計(jì),增量統(tǒng)計(jì)等方式提前進(jìn)行統(tǒng)計(jì),避免實(shí)時(shí)統(tǒng)計(jì)的內(nèi)存,CPU壓力!
5,加圖片服務(wù)器:圖片等大文件,一定要單獨(dú)經(jīng)過文件服務(wù)器,避免IO速度對動(dòng)態(tài)數(shù)據(jù)的影響!保證系統(tǒng)不會因?yàn)槲募罎ⅲ?br />
6,HTML文件,枚舉,靜態(tài)的方法返回值等靜態(tài)化處理,放入緩存!
7,負(fù)載均衡:使用nginx等對訪問量過大的服務(wù)采用負(fù)載均衡,實(shí)現(xiàn)服務(wù)集群,提高服務(wù)的并發(fā)數(shù),防止壓力過大導(dǎo)致單個(gè)服務(wù)的崩潰!
8,加入搜索引擎:對于sql中常出現(xiàn)的like,in等語句,使用lucence或者solr中間件,將必要的,依賴模糊搜索的字段和數(shù)據(jù)使用搜索引擎進(jìn)行存儲,提升搜索速度!#注意:全量數(shù)據(jù)和增量數(shù)據(jù)進(jìn)行定時(shí)任務(wù)更新!
9,使用消息中間件:對服務(wù)之間的數(shù)據(jù)傳輸,使用諸如rabbit mq,kafka等等分布式消息隊(duì)列異步傳輸,防止同步傳輸數(shù)據(jù)的阻塞和數(shù)據(jù)丟失!
10,拋棄tomcat:做web開發(fā),接觸早的應(yīng)用服務(wù)器就是tomcat了,但是tomcat的單個(gè)并發(fā)量只能不到1w!采取netty等actor模型的高性能應(yīng)用服務(wù)器!
11,多線程:現(xiàn)在的服務(wù)器都是多核心處理模式,如果代碼采用單線程,同步方式處理,極大的浪費(fèi)了CPU使用效率和執(zhí)行時(shí)間!
12,避免阻塞:避免bio,blockingqueue等常常引起長久阻塞的技術(shù),而改為nio等異步處理機(jī)制!
13,CDN加速:如果訪問量實(shí)在過大,可根據(jù)請求來源采用CDN分流技術(shù),避免大流量完成系統(tǒng)崩潰!
14,避免低效代碼:不要頻繁創(chuàng)建對象,引用,少用同步鎖,不要?jiǎng)?chuàng)建大量線程,不要多層for循環(huán)!
當(dāng)然還有更多的細(xì)節(jié)優(yōu)化技術(shù) 需要就天家扣扣扣扣 陸陸陸==貳捌玖陸壹