高並發發送:
1處:負載均衡
2處:資料庫
在APP伺服器多臺情況下,如果用戶登錄,session怎麼處理?
本文來源:凱哥Java(kaigejava)
如下圖:
說明:
如果用戶登錄的時候負載到01伺服器上,當用戶在操作其他的時候,如果被負載到02機器上。這個時候02機器上面就沒有當前用戶的session。用戶就會被轉跳到登陸頁面。
解決方案:
1:可以把用戶的session放置到cookie中
優點:解決了session沒有的問題
缺點:session放在了用戶的瀏覽器中,是不安全的
2:可以把用戶的session放置到資料庫中
優點:解決了session沒有的問題
缺點:當用戶量很大的時候,如果把session放置到資料庫中,會造成資料庫壓力過大。從而使資料庫運行不正常
3:可以把用戶的session放在緩存伺服器中
最好的解決的方案是:放在緩存伺服器中。這裡推薦兩種緩存伺服器:memcached、redis
要求:memcached/redis必須是集群
4:tomcat共享session
缺點:當tomcat數量過多的時候及其影響性能。所以不推薦
資料庫並發:
1 要求:隨著業務量的增大,資料庫庫承載能力也要增大
2 數據安全,不能丟失
3 支持備份+容災
高並發解決發展階段:
初級階段:系統或伺服器級別就誒接方案
總結一句話:初級階段懟硬體(伺服器級別)
接著隨著業務量的不斷增加,硬體成本水漲船高。就進入了第二階段:應用級別的解決方案
總結一句話:應用級別處理。
業務量繼續增加:進入第三階段:
增加了應用伺服器的數量,隨之而來的問題又來了。
問題1:用戶訪問ip多了,怎麼解決?
多臺應該伺服器。每臺對應的ip肯定不一樣。
問題2:資料庫出現了瓶頸,怎麼解決?
解決用戶IP多的辦法一:
使用DNS進行解析。
DNS定義:
DNS解析多ip思路:
循環復用DNS。
缺點:
終極解決方案:
負載均衡工作原理分析:
說明:
1:在用戶請求,轉發請求的功能
2:如果這一臺機器掛了
負載均衡服務會不 會繼續把請求轉發給這臺伺服器呢?
答案:不會
3:如果這一臺機器恢復正常了
負載均衡伺服器會不會把它添加回來呢?
答案:會的
三大功能
一:轉發
二:故障移除
三:恢復添加
負載均衡的種類:
1)一種是通過硬體來進行解決,常見的硬體有NetScaler、F5、Radware和Array等商用的負載均衡器,但是它們是比較昂貴的
2)一種是通過軟體來進行解決的,常見的軟體有LVS、Nginx、apache等,它們是基於Linux系統並且開源的負載均衡策略.