先不廢話了,上圖
在這架構中,客戶發送第一個請求包1.該請求包的格式如下
數據 | HTTP協議(方法GET) |
SIP:10.1.1.x |
MAC |
當該數據包到達Nginx服務器,如果該請求頁面爲靜態內容,則Nginx服務器直接返回應答請求數據包9;如果當該請求內容爲PHP頁面時,Nginx向Apache的分發器發送請求數據包2,該數據包格式如下:
數據 | HTTP協議(方法GET) |
SIP:192.168.10.11 |
MAC |
Apache的分發器得到該數據包後,通過算法進行RealServer的選擇,假設該次選擇結果爲Apache服務器1,則分發器僅數據包2的MAC地址發出數據包3,該數據包格式如下
數據 | HTTP協議(方法GET) |
SIP:192.168.10.11 |
SMAC:分發器 |
當數據包3到達Apache真實服務器,該服務器對用戶請求頁面進行處理,如果該請求需要調用數據庫,Apache服務器向MySql分發器發送請求數據包4,該數據包如下:
數據 | MySql |
SIP:192.168.10.21 |
MAC |
當MySql分發器接收到Apache的請求數據時,通過算法確定需要使用的MySql服務器(假設爲MysqlMaster),並向MySql真實服務器發送請求,該請求包5如下:
數據 | MySql |
SIP:192.168.10.252 |
MAC |
當MySqlMaster服務器接收到請求數據包5時,處理該請求並將得到的值打包返回MySql分發器,該數據包6(請求數據包5的迴應包)如下:
數據 | MySql |
SIP:192.168.10.31 |
MAC |
當MySql分發器服務器得到數據包6,則將數據包6的數據重新打包併發送出來,該數據包7(請求數據包4的迴應包)的格式如下:
數據 | MySql |
SIP:192.168.10.252 |
MAC |
當Apache真實服務器得到數據包7時,使用PHP代碼處理該包中的數據,並將最終得到的靜態頁面數據打包,返回Nginx服務器,該數據包8(請求數據包2的迴應包)的格式如下:
數據 | HTTP協議 |
SIP:192.168.10.251 |
MAC |
Nginx服務器得到Apache返回的靜態頁面後,將該靜態頁面數據傳遞給用戶,應答數據包9(請求數據包1的應答包)如下:
數據 | HTTP協議 |
SIP:192.168.10.11 |
MAC |
用戶計算機得到應答數據包9,將該數據包交給瀏覽器,並由瀏覽器翻譯並顯示出來!