最近看了nginx以及tomcat的集群,做一下簡單總結吧
nginx 是一個http服務器,是有俄羅斯人發明的,目前主流的服務器,作為負載均衡服務器,性能非常好,最高支持5萬個並發連接數,在淘寶被廣泛使用
單個tomcat最大支持的用戶並發量默認是150,在測試過程中250左右開始會有性能的問題
舉個栗子,有3台tomcat,有N多請求同時經過nginx的時候,nginx作為一個路由,把請求分別分發給這3台tomcat,以此減少tomcat負重
tomcat 與 nginx 之間通過ajp協議,這個協議提供很高的通信速度以及性能
另外,nginx也能夠存放靜態資源,項目中會存在很多圖片,以及靜態頁面,如果把這些靜態資源放入nginx中,那麼性能會提高,速度是毫秒級別的,非常快
工作原理:
在upstream bakend 中配置多個tomcat服務器,每個請求按照不同的時間順序去請求不同的tomcat,如果在某一時段中有tomcat掛了,那麼會被自動剔除
ip_hash:主要用於解決session問題,使用後,每個用戶訪問的後端服務器就是固定的,session不會改變,這個也就是通常所說的粘性session,訪問速度快,只與一個節點上的服務器通信,缺點就是如果這個節點掛了,用戶的session信息也就沒了
*有粘性session那麼就又非粘性session,非粘性session指的就是session在多個tomcat之間復制,節點掛了也能訪問到,缺點就是在大並發的時候性能有影響
粘性和非粘性session都是基於msm的,也就是Memcached Session Manager; 話說tomcat和memcached 是無縫對接的
1 <Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager" 2 memcachedNodes="n1:host1.yourdomain.com:11211,n2:host2.yourdomain.com:11211" 3 sticky="false" 4 sessionBackupAsync="false" 5 lockingMode="uriPattern:/path1|/path2" 6 requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$" 7 transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory" 8 />
sticky="false" 指定為非粘性session
簡單示意圖