cpu從32位提升到64位
內(nèi)存從64GB提升至256GB,比如緩存服務(wù)器
磁盤從HDD(Hard Disk Drive)提升為SSD(Solid State Drive,固態(tài)硬盤),針對有大量讀寫的應(yīng)用
磁盤擴(kuò)容,1TB擴(kuò)展到2TB,比如文件系統(tǒng)
千兆網(wǎng)卡提升至萬兆網(wǎng)卡
不管怎么提升硬件性能,硬件性能的提升也不可能永無止境,最終還是要靠分布式解決
在月湖等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供網(wǎng)站設(shè)計(jì)、網(wǎng)站制作 網(wǎng)站設(shè)計(jì)制作定制設(shè)計(jì),公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站建設(shè),營銷型網(wǎng)站,外貿(mào)網(wǎng)站建設(shè),月湖網(wǎng)站建設(shè)費(fèi)用合理。2.緩存 2.1 http緩存 @Autowired
HttpServletRequest request;
@Autowired
HttpServletResponse response;
//DateFormat format=new SimpleDateFormat(" yyyy HH:mm:ss 'GMT'", Locale.CHINA);
//當(dāng)前時(shí)間
//long now=System.currentTimeMillis()*1000*1000;
response.addHeader("Date",new Date().toString());
//過期時(shí)間http1.0支持
// response.addHeader("Expires", format.format(new Date(now+20*1000)));
//文檔生存時(shí)間http1.1支持
response.addHeader("Cache-Control","max-age=20");
2.2 nginx緩存在/usr/loca/nginx/conf/nginx.conf中加入一下代碼
location /static {
root /opt/static;
expires 1d; #1天
}
2.3 CDN緩存
2.4 應(yīng)用緩存內(nèi)存緩存
速度快,重啟后緩存丟失
磁盤緩存
速度稍慢,重啟后緩存不丟失
代碼組件:Guava,Ehcache
服務(wù)器:Redis,MemCache
http緩存->CDN->nginx->redis->DB
2.7 緩存的使用場景1.經(jīng)常要讀取的數(shù)據(jù)
2.頻繁訪問的數(shù)據(jù)
3.熱點(diǎn)數(shù)據(jù)緩存
4.IO瓶頸數(shù)據(jù)
5.計(jì)算昂貴的數(shù)據(jù)
6.無需實(shí)時(shí)更新的數(shù)據(jù)
緩存的目的是減少對后端服務(wù)的訪問,降低后端服務(wù)的壓力
可以服務(wù)器(tomcat)集群【用nginx轉(zhuǎn)發(fā)】、mysql集群降低并發(fā),可以負(fù)載均衡的就可以降低并發(fā)
4.拆分 4.1 數(shù)據(jù)庫垂直拆分把不同業(yè)務(wù)維度的表分到不同的數(shù)據(jù)庫
4.2 數(shù)據(jù)庫水平拆分把表的某些列分到一個(gè)數(shù)據(jù)庫,另一些列分到其他的數(shù)據(jù)庫
還可以用mycat讀寫分離
5.頁面靜態(tài)化對于一些訪問量大的,更新頻率較低的數(shù)據(jù),可直接定時(shí)生成靜態(tài)html頁面,供前段訪問
常用的 靜態(tài)化技術(shù):freemaker,velocity
定時(shí)任務(wù):每個(gè)5分鐘生成一次首頁的靜態(tài)頁面
頁面靜態(tài)化首先可以大大提升訪問速度,不需要去訪問數(shù)據(jù)庫或者緩存來獲取數(shù)據(jù),瀏覽器直接加載html頁即可
頁面靜態(tài)化可以提升網(wǎng)站穩(wěn)定性,如果程序或者數(shù)據(jù)庫出了問題,靜態(tài)頁面仍然可以正常訪問
RestTemplate restTemplate=new RestTemplate();
String str=restTemplate.getForObject("url",String.class);
url為你需要生成靜態(tài)頁面的地址,把str作為html存儲到nginx可以訪問的位置,頁面上其他的局部更新可以用ajax
6.動靜分離采用nginx實(shí)現(xiàn)動靜分離,nginx負(fù)責(zé)代理靜態(tài)資源,tomcat負(fù)責(zé)處理動態(tài)資源,nginx可為tomcat分擔(dān)壓力
redis并發(fā)5w左右,nginx并發(fā)5w左右,tomcat并發(fā)1000左右,mysql并發(fā)1000左右
7.消息隊(duì)列采用隊(duì)列是解決高并發(fā)大流量的利器
隊(duì)列的作用是:異步處理,流量削峰,系統(tǒng)解耦
異步處理:比如注冊成功了,發(fā)優(yōu)惠券、發(fā)短信、發(fā)紅吧等一些其他的操作可以入隊(duì)列異步處理
流量削峰:比如下單、秒殺等,用入隊(duì)的方式將流量削平,變成平緩請求進(jìn)行處理,避免系統(tǒng)崩潰
系統(tǒng)解耦:比如支付成功了,發(fā)消息通知物流系統(tǒng),而無需直接調(diào)用這些系統(tǒng)
隊(duì)列的應(yīng)用場景
不是所有的處理都必須實(shí)時(shí)處理
不是所有的請求都必須實(shí)時(shí)告訴用戶結(jié)果
不是所有的請求都必須100%一次性處理成功
保證最終一致性,不需要強(qiáng)一致性
常見的消息隊(duì)列:ActiveMQ,RabbitMQ,RocketMQ,Kafka
8.池化用一些池化技術(shù),減少資源消耗,提升系統(tǒng)性能
8.1 對象池通過復(fù)用對象,可以采用commons-pool2實(shí)現(xiàn),一般在開發(fā)框架中使用1
8.2 數(shù)據(jù)庫連接池Druid,DBCP,C3P0
8.3 redis連接池JedisPool
8.4 HttpClient連接池核心實(shí)現(xiàn)類:PoolingClientConnectionManager
8.5 線程池java提供java.util.concurrent可以實(shí)現(xiàn)線程池
9. 優(yōu)化 9.1 JVM參數(shù)調(diào)優(yōu) 9.2 Tomcat參數(shù)調(diào)優(yōu)(本質(zhì)上調(diào)優(yōu)JVM參數(shù)) 10.Java程序優(yōu)化不要重復(fù)創(chuàng)建太多對象
流、文件、連接 一定要記得在finally中關(guān)閉
少用重量級同步鎖synchronized,采用lock(讀不加鎖,寫加鎖)
不要再循環(huán)中使用try catch
多定義局部變量,少定義成員變量
主要有DBA修改配置文件參數(shù)
11.2 數(shù)據(jù)庫架構(gòu)優(yōu)化將數(shù)據(jù)庫服務(wù)器和應(yīng)用服務(wù)器分離
讀寫分離:主從架構(gòu),寫數(shù)據(jù)使用主庫,讀數(shù)據(jù)使用從庫,分擔(dān)讀寫壓力
分庫分表:擴(kuò)容數(shù)據(jù)庫,解決數(shù)據(jù)容量上限問題
建立合適的索引
建立索引的字段盡量的小,最好是數(shù)值
盡量在唯一性高的字段上創(chuàng)建索引,主見、序號等
BTREE索引(MySQL默認(rèn)):要求數(shù)據(jù)盡量不要重復(fù),且最好是數(shù)值,可以區(qū)域查詢
HSAH索引:要求數(shù)據(jù)盡量不要重復(fù),且最好是字符串,不可以區(qū)域查詢
位圖索引:要求數(shù)據(jù)盡量重復(fù),效率很好,比如字段是性別:男、女
聚簇索引:索引的位置順序和數(shù)據(jù)的位置順序一直,只能存放數(shù)據(jù),因此只存放少量
非聚簇索引:非聚簇索引利用聚簇索引進(jìn)行書簽查找,不存放數(shù)據(jù),只存放索引鍵值,因此存放的更多
避免索引失效
建立合適的索引
不要使用子查詢
…
solr, elasticsearch
12.Nginx優(yōu)化 12.1 優(yōu)化緩存(見前) 12.2 把圖片從nginx中獲取,減小tomcat后端壓力 12.3 調(diào)整配置文件參數(shù)worker processes 16;
gzip on;#開啟gzip壓縮輸出
events{
worker_connections 65535;#極限值65535
multi_accept on;#開啟多路連接
use epoll;#使用epoll模型
}
13.Linux優(yōu)化一般建議不要動,專業(yè)人員職責(zé)
優(yōu)化linux內(nèi)核參數(shù)
修改/etc/sysctl.conf
一般建議不要動,專業(yè)人員職責(zé)
機(jī)房、帶寬、路由器等方面優(yōu)化
網(wǎng)絡(luò)架構(gòu)更合理
壓縮變?。簤嚎s工具
多個(gè)js合并成一個(gè)js
用xxx.min.js代替xxx.js
壓縮變小
多個(gè)css合并成一個(gè)css
不要加載太多的js和css
js和css加載放在頁面的尾部,從用戶體驗(yàn)角度來看的
頁面上減少到服務(wù)器的請求數(shù):比如圖片可以放在不同的圖片服務(wù)器中(瀏覽器統(tǒng)一域名下大請求上限一般是6個(gè)),或nginx轉(zhuǎn)發(fā)
系統(tǒng)上線前需要對系統(tǒng)的各個(gè)環(huán)節(jié)進(jìn)行壓力測試,發(fā)現(xiàn)系統(tǒng)的瓶頸,然后調(diào)優(yōu),再進(jìn)行壓力測試,還需要考慮到其他的風(fēng)險(xiǎn)因素,比如網(wǎng)絡(luò)不穩(wěn)定、機(jī)房故障等
壓力測試工具:JMeter , LoadRunner
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧