先不废话了,上图
在这架构中,客户发送第一个请求包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,将该数据包交给浏览器,并由浏览器翻译并显示出来!