就在課堂上對客戶機服務器模式的講解做一些自己的總結歸納,如下:
首先回答一下課上同學的提問
---三層架構中的中間件為什么能起到加強系統安全的作用呢?
三層結構中客戶端(理解為前台交互)沒有和服務端(理解無DB后台數據層)直接交涉,假設一下如果客戶端可以直接訪問服務端,客戶端和數據庫層緊密耦合,數據結構完全暴露(就比如網頁端之間查看源代碼就可以看見所操作的表結構)、也無法做到加密,而通過中間層則可以在傳輸過程中進行數據加密,進行數據篩選等一系列操作,相比之下一個是直接操作一個是處理之后再操作,顯然加入中間件之后顯得更加安全。
下面就京東圖書活動服務器崩潰的實例進行分析
客戶機服務器的特定環境是:
當海量客戶端用戶對服務器進行訪問操作。
客戶機服務器的面對的一個問題:
客戶端服務器出現了資源不對等,如何實現資源共享?
針對京東圖書活動的解決方案:
1增加服務器數量
-----咚鏘咚鏘咚咚鏘強東歐巴增加了三倍服務器,雖然效果可見一般但至少也能起到一定作用
2優化數據庫-連接池訪問數
------設置一個訪問數據庫額最大量,因為數據庫本身的服務能力是有限,所以可以給定限定,以MySQL為例,可能MySQL可以支持的並發連接數可能也就幾千個,在限定之外的訪問就需要另做處理但至少我們保證了限定內的用戶可以進行正常訪問。
3二層發展成三層-中間件篩選過濾:
----如消息隊列
京東圖書下單實時處理的,直接寫庫,所以導致數據庫壓力過大。而出國采用異步處理,中間添加隊列處理,在訪問限定之外就可排隊等待,使的重負載情況下的負載平衡,並減輕數據庫的壓力。如圖為16年京東的自主研發的有關於消息隊列中間件
京東11.11:京東中間件如何支撐起每一場大促
4 客戶端服務器模式由起初的二層變三層
----兩層和三層的區別:
兩層結構是客戶端程序直接訪問服務器的結構,在兩層體系結構中,表現層對數據庫進行直接操作,且大部分的商業處理邏輯也在表現層中實現。就如同在我們寫代碼前期,將所有的邏輯操作都放在jsp界面處理。
三層結構是在客戶端和服務器中間加了一個事務邏輯處理封裝的中間件作為溝通,這樣的結構就是三層結構。所以三層就是:表現層、商業邏輯層、數據層,表現層將主要提供與客戶的交互功能,數據層提供系統中的所有的數據保存載體,而商業邏輯層將整個系統中的商業處理邏輯整和在一起,各盡其職。
OK,寫到這里,就客戶端服務器模式的一個特定環境一個問題一個解決方案一個實例就總結完畢啦~