亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于nginx、tomcat、redis的高性能Java Web開源架構(gòu)

        2014-04-29 00:00:00陳玲

        摘 要:Java Web最常用的服務(wù)器是Tomcat,但是Tomcat處理靜態(tài)資源能力有著缺陷,本文介紹了使用tomcat集群加nginx作為web服務(wù)器,同時(shí)nginx做負(fù)載均衡,加上redis內(nèi)存數(shù)據(jù)庫(kù)作為session存儲(chǔ)和數(shù)據(jù)庫(kù)緩存的架構(gòu)方案,所有這些技術(shù)均為開源軟件,免除了授權(quán)的問題。

        關(guān)鍵詞:Tomcat;nginx;redis;開源

        中圖分類號(hào):TP311.52

        Tomcat快速、高效、易于部署,并且開源,是Java Web最常用的開源服務(wù)器。但是在處理靜態(tài)資源上,Tomcat相對(duì)于現(xiàn)在流行的高性能Web服務(wù)器,如nginx、lighttpd尚有不小的差距。因此,在追求高并發(fā)、重負(fù)載的場(chǎng)合,可以在Tomcat集群前加上nginx處理靜態(tài)資源以及負(fù)載均衡。同時(shí),對(duì)于高并發(fā)的場(chǎng)合,數(shù)據(jù)庫(kù)的查詢性能很容易成為瓶頸,使用連接池技術(shù)加上內(nèi)存數(shù)據(jù)庫(kù)redis作緩存可以大幅度的提升查詢性能。

        1 Tomcat集群和調(diào)優(yōu)

        Tomcat建議安裝在64位Linux系統(tǒng)下,在32位系統(tǒng)中,即使某些操作系統(tǒng)可以使用超過4G,JVM的也限制了最多只能夠使用2G內(nèi)存。Tomcat容器的默認(rèn)配置吞吐量也不能夠滿足高并發(fā)服務(wù)的需要,因此需要更改Tomcat的配置,修改server.xml文件。

        URIEncoding=\"UTF-8\" minSpareThreads=\"25\" maxSpareThreads=\"75\"

        enableLookups=\"1\" disableUploadTimeout=\"true\" connectionTimeout=\"20000\"

        acceptCount=\"300\" maxThreads=\"300\"maxProcessors=\"1000\" minProcessors=\"5\"

        useURIValidationHack=\"1\" compression=\"on\"

        compressionMinSize=\"2048\"

        compressableMimeType=\"text/html,text/xml,text/javascript,text/css,text/plain\"

        redirectPort=\"8443\"

        />

        其中URIEncoding=”UTF-8”表示可以解析含有中文的URL,acceptCount是等待隊(duì)列,maxThreads為最大線程數(shù),即最大并發(fā)數(shù)。

        單個(gè)Tomcat處理能力有限,在現(xiàn)在的服務(wù)器配置情況下,常常不能夠利用完CPU和內(nèi)存就達(dá)到最大負(fù)載,此時(shí),可以使用Tomcat的縱向集群,即單臺(tái)服務(wù)器運(yùn)行多個(gè)Tomcat。如果還不能達(dá)到高并發(fā)的需要,那么就需要使用Tomcat的橫向集群,即多臺(tái)服務(wù)器運(yùn)行多個(gè)Tomcat。

        集群方案可以使用Tomcat自帶的cluster方式,多個(gè)Tomcat間自動(dòng)實(shí)時(shí)復(fù)制session信息,配置簡(jiǎn)單。但該方案的效率比較低,在高并發(fā)場(chǎng)合下表現(xiàn)并不好。另一種方案是利用nginx的基于訪問IP的hash路由策略,保證訪問的IP始終被路由到同一個(gè)tomcat上。以單服務(wù)器Tomcat集群為例,需要修改Tomcat的三處端口。首先是修改Tomcat的關(guān)閉端口,每個(gè)Tomcat不能重復(fù):

        然后修改Tomcat的監(jiān)聽端口,同樣不能重復(fù):

        redirectPort=\"8443\" />

        第三處端口修改Tomcat的連接端口:

        最后Engine元素增加jvmRoute屬性

        2 nginx作負(fù)載均衡和動(dòng)靜態(tài)分離

        nginx是一個(gè)高性能的HTTP和反向代理服務(wù)器,處理靜態(tài)資源的能力得到了眾多高并發(fā)Web站點(diǎn)的考驗(yàn),nginx可以按照調(diào)度規(guī)則實(shí)現(xiàn)動(dòng)態(tài)、靜態(tài)頁面的分離,可以按照輪詢、ip hash、URL hash、權(quán)重等多種方式對(duì)后端服務(wù)器做負(fù)載均衡。使用nginx在Tomcat的前端作反向代理,nginx處理如html、css、js、圖片等靜態(tài)資源,而將動(dòng)態(tài)的請(qǐng)求轉(zhuǎn)發(fā)給Tomcat集群進(jìn)行處理,從而充分的結(jié)合nginx和Tomcat的長(zhǎng)處,分別處理靜態(tài)和動(dòng)態(tài)資源。

        nginx的負(fù)載均衡配置配置如下所示:

        upstream web_server {

        #ip_hash;

        server 127.0.0.1:8080 max_fails=3 fail_timeout=30s;

        server 127.0.0.1:8081 max_fails=3 fail_timeout=30s;

        }

        其中參數(shù)max_fails=3,表示允許在30秒內(nèi)后端服務(wù)器有3次失敗,如果大于3次,則將該后端服務(wù)器標(biāo)記為不可用,該參數(shù)主要用過于對(duì)后端服務(wù)器進(jìn)行健康檢查。

        3 redis做session存儲(chǔ)

        Web服務(wù)集群最大的難點(diǎn)就是如何能在集群中的多個(gè)節(jié)點(diǎn)之間保持?jǐn)?shù)據(jù)的一致性,Session是這些數(shù)據(jù)中最重要的一塊。Tomcat集群可以通過Tomcat自帶的session復(fù)制,將session同步復(fù)制到每一個(gè)Tomcat中,但如果集群內(nèi)節(jié)點(diǎn)較多,容易引起session廣播風(fēng)暴。還有種方案是將session放到一個(gè)數(shù)據(jù)庫(kù)中集中存儲(chǔ),這就要求該數(shù)據(jù)庫(kù)具備非常高的性能,使用redis內(nèi)存數(shù)據(jù)庫(kù)可以很好的滿足Tomcat集群的需求。在Tomcat 的conf/context.xml 文件里增加如下內(nèi)容:

        host=\"localhost\" port=\"6379\"

        database=\"0\" maxInactiveInterval=\"60\" />

        4 redis用作數(shù)據(jù)緩存

        Web應(yīng)用并發(fā)數(shù)增大后,數(shù)據(jù)庫(kù)I/O容易成為整個(gè)系統(tǒng)的瓶頸,一般可以通過數(shù)據(jù)庫(kù)拆分,建立數(shù)據(jù)庫(kù)集群來解決該問題,但數(shù)據(jù)庫(kù)集群的建立無疑需要較大的成本,同時(shí)必須要由水平很高的DBA進(jìn)行實(shí)施。如果使用內(nèi)存數(shù)據(jù)庫(kù)對(duì)傳統(tǒng)數(shù)據(jù)庫(kù)做緩存,實(shí)現(xiàn)查詢緩存(以sql為key緩存查詢結(jié)果)和數(shù)據(jù)緩沖,由于內(nèi)存的訪問速度遠(yuǎn)遠(yuǎn)超過硬盤,可以極大的提升查詢效率。同時(shí)也可以將一些更新頻率較低但查詢頻率較高(如基礎(chǔ)數(shù)據(jù)表、配置文件)等數(shù)據(jù)在應(yīng)用啟動(dòng)時(shí)即加載到redis中。

        5 結(jié)束語

        本文描述了nginx+tomcat集群的配置方案,同時(shí)使用了redis內(nèi)存數(shù)據(jù)庫(kù)做session集中存儲(chǔ)和數(shù)據(jù)庫(kù)緩存,該方案可以應(yīng)對(duì)高并發(fā)和重負(fù)載的Web站點(diǎn)所需,并且使用的所有技術(shù)均為開源軟件,建議使用的服務(wù)器操作系統(tǒng)為L(zhǎng)inux,可以節(jié)省軟件使用的授權(quán)成本。

        參考文獻(xiàn):

        [1]曾超宇,李金香.Redis在高速緩存系統(tǒng)中的應(yīng)用[J].微型機(jī)與應(yīng)用,2013(12).

        [2]任世宗,李潤(rùn)知,張茜.基于Nginx的可擴(kuò)展負(fù)載均衡Web站點(diǎn)部署[J].中國(guó)教育網(wǎng)絡(luò),2014(08).

        作者單位:瀘州職業(yè)技術(shù)學(xué)院,四川瀘州 646005

        中文字幕一区二区黄色| 五月天久久国产你懂的| 久久综合给合久久狠狠狠9| 亚洲发给我的在线视频| 尤物在线观看一区蜜桃| 亚洲av无码成人专区片在线观看| 欧美日本国产三级在线| 一本久久综合亚洲鲁鲁五月夫| 亚洲国产精品国自产拍性色| 亚洲成a人无码| 在线免费观看国产精品| 91青青草在线观看视频| 真实夫妻露脸爱视频九色网| 天天燥日日燥| AV无码中文字幕不卡一二三区| 三级日本午夜在线观看| 香蕉成人伊视频在线观看| 人妻少妇精品中文字幕av蜜桃| 精品福利一区| 少妇被猛烈进入中文字幕 | 69堂在线无码视频2020| 东京热加勒比视频一区| 国产特级毛片aaaaaa视频| 亚洲精品老司机在线观看| 中文字幕二区三区在线| 一区二区三区精品少妇| 精品无码人妻一区二区三区品| 亚洲 暴爽 AV人人爽日日碰 | 久久AV中文综合一区二区| 在线免费观看毛视频亚洲精品| 97久人人做人人妻人人玩精品| 国产午夜福利短视频| 午夜视频免费观看一区二区| 国产熟女盗摄一区二区警花91| 特级av毛片免费观看| 在线视频青青草猎艳自拍69| 久久久人妻一区二区三区蜜桃d | 亚洲色图在线免费观看视频| 特级av毛片免费观看| 真实国产网爆门事件在线观看| 一本色道久久88加勒比综合|