javaweb項目結構的演變

一開始的項目結構:

一個項目的初期訪問可能不大,所以一個tomcat可以處理所有的請求。

一個Tomcat在同一時間能處理的併發訪問量也就是200到300個。當這個項目的用戶越來越多的時候,一個Tomcat處理不過來所有的請求,所以有了Tomcat集羣。

集羣:不同的多臺服務器上面部署相同的服務模塊,通過分佈式調度軟件進行統一調度,對外提供服務。

Tomcat集羣出現後,又有了新的問題,有了Tomcat集羣之後怎麼把請求分到每一個Tomcat上?

這時候又出現了負載均衡技術,這個技術可以把所有的請求分配到每個tomcat上(請求的負載均衡)。最典型的負載均衡就是nginx。

瀏覽器向Tomcat發送的請求都會經過nginx,然後請求被ngnix分配到某一個Tomdcat上。

Tomcat集羣與負載均衡的出現解決了併發量大的問題。但是仍不能滿足需求,雖然大併發請求可以處理,但是又出現了新的問題——權限的問題。

權限問題:如果一個用戶發送了登錄請求,被nginx分配到了Tomcat1上,然後tomcat1記錄了用戶的登錄信息,但是用戶登錄後又發送了第二個請求,但是如果這個請求被分配到了Tomcat2上,這時Tomcat2上沒有用戶的登錄信息,請求可能不會被處理,或會被攔截。所以用戶登錄後,需要所有的Tomcat都能存儲這個用戶的登錄信息,不過以上圖的部署肯定做不到,這時候又出現了一個新的技術叫做分佈式緩存。典型的緩存庫是redis

這個緩存用來存儲Tomcat公用的信息,比如用戶的權限信息。當用戶發送登錄請求的時候,把登錄信息存儲到這個緩存裏,然後無論請求被分配到哪個Tomcat上,Tomcat都能讀取這個緩存裏的信息來獲取用戶的登錄信息。如下圖

 

隨着項目功能的擴展,項目會開發出來更多的模塊,更多的模塊和更大的集羣,導致項目的體積越來越臃腫,維護成本非常高。

因爲所有集羣上部署的是相同的服務模塊,(比如每個Tomcat裏部署的都有訂單模塊,用戶信息模塊,登錄模塊,商品模塊,用戶管理模塊等等)。如果一個模塊的功能改變,所有的Tomcat都需要去改變,會影響所有的模塊功能。所以可以把單個的模塊整合到一個Tomcat項目當中去,然後這個項目對外提這個模塊功能的服務。只要是用到了這個的模塊功能,只要去調用這個項目的服務就行了。

但是,單個模塊形成的項目,也需要集羣,因爲這個服務部署在Tomcat裏,這個功能的模塊也需要增大併發量。但是在修改這個模塊的時候,不會影響到其他模塊的工作。單模塊服務形成的集羣也需要對服務的調用進行負載均衡。這時候用的負載均衡叫做註冊中心,Zookeeper可以實現這個功能。

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章